1
1
mirror of https://github.com/n8n-io/n8n.git synced 2024-09-11 21:17:50 +03:00

refactor: Upgrade to Prettier 3 (no-changelog) (#6947)

Supersedes https://github.com/n8n-io/n8n/pull/6937

Excluding fixtures and test workflow JSONs to avoid having to update
tests.
This commit is contained in:
Iván Ovejero 2023-08-16 17:13:57 +02:00 committed by GitHub
parent bb76c18073
commit 7ce5d8fd90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
55 changed files with 1314 additions and 1295 deletions

View File

@ -13,6 +13,3 @@ jobs:
uses: n8n-io/GH-actions-playground@v1 uses: n8n-io/GH-actions-playground@v1
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -2,3 +2,6 @@ coverage
dist dist
package.json package.json
.pnpm-lock.yml .pnpm-lock.yml
packages/nodes-base/nodes/**/test
cypress/fixtures
CHANGELOG.md

View File

@ -36,7 +36,8 @@ changes [here](https://github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-C
[how to run n8n in **Docker**](https://docs.n8n.io/hosting/installation/docker/) [how to run n8n in **Docker**](https://docs.n8n.io/hosting/installation/docker/)
## Start ## Start
You can try n8n without installing it using npx. You must have [Node.js](https://nodejs.org/en/) installed.
You can try n8n without installing it using npx. You must have [Node.js](https://nodejs.org/en/) installed.
From the terminal, run: From the terminal, run:
`npx n8n` `npx n8n`

View File

@ -82,14 +82,10 @@ describe('Canvas Actions', () => {
cy.get('.plus-endpoint').should('be.visible').click(); cy.get('.plus-endpoint').should('be.visible').click();
WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible'); WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible');
WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME); WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME);
cy.drag( cy.drag(WorkflowPage.getters.nodeCreatorNodeItems().first(), [100, 100], {
WorkflowPage.getters.nodeCreatorNodeItems().first(), realMouse: true,
[100, 100], abs: true,
{ });
realMouse: true,
abs: true
}
);
cy.get('body').type('{esc}'); cy.get('body').type('{esc}');
WorkflowPage.getters.canvasNodes().should('have.length', 2); WorkflowPage.getters.canvasNodes().should('have.length', 2);
WorkflowPage.getters.nodeConnections().should('have.length', 1); WorkflowPage.getters.nodeConnections().should('have.length', 1);
@ -100,14 +96,10 @@ describe('Canvas Actions', () => {
cy.get('.plus-endpoint').should('be.visible').click(); cy.get('.plus-endpoint').should('be.visible').click();
WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible'); WorkflowPage.getters.nodeCreatorSearchBar().should('be.visible');
WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME); WorkflowPage.getters.nodeCreatorSearchBar().type(CODE_NODE_NAME);
cy.drag( cy.drag(WorkflowPage.getters.nodeCreatorActionItems().first(), [100, 100], {
WorkflowPage.getters.nodeCreatorActionItems().first(), realMouse: true,
[100, 100], abs: true,
{ });
realMouse: true,
abs: true
}
);
WorkflowPage.getters.nodeCreatorCategoryItems().its('length').should('be.gt', 0); WorkflowPage.getters.nodeCreatorCategoryItems().its('length').should('be.gt', 0);
WorkflowPage.getters.canvasNodes().should('have.length', 1); WorkflowPage.getters.canvasNodes().should('have.length', 1);
WorkflowPage.getters.nodeConnections().should('have.length', 0); WorkflowPage.getters.nodeConnections().should('have.length', 0);

View File

@ -28,14 +28,9 @@ describe('NDV', () => {
ndv.actions.switchOutputMode('Table'); ndv.actions.switchOutputMode('Table');
// input to output // input to output
ndv.getters ndv.getters.inputTableRow(1).should('exist');
.inputTableRow(1)
.should('exist')
ndv.getters ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
ndv.getters.outputTableRow(4).invoke('attr', 'data-test-id').should('equal', 'hovering-item'); ndv.getters.outputTableRow(4).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
@ -88,16 +83,11 @@ describe('NDV', () => {
ndv.actions.selectInputNode('Set1'); ndv.actions.selectInputNode('Set1');
ndv.getters.backToCanvas().realHover(); // reset to default hover ndv.getters.backToCanvas().realHover(); // reset to default hover
ndv.getters ndv.getters.inputTableRow(1).should('have.text', '1000');
.inputTableRow(1)
.should('have.text', '1000')
ndv.getters ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
cy.wait(50); cy.wait(50);
ndv.getters.outputHoveringItem().should('have.text', '1000'); ndv.getters.outputHoveringItem().should('have.text', '1000');
ndv.getters.parameterExpressionPreview('value').should('include.text', '1000'); ndv.getters.parameterExpressionPreview('value').should('include.text', '1000');
@ -106,14 +96,9 @@ describe('NDV', () => {
ndv.actions.changeOutputRunSelector('1 of 2 (6 items)'); ndv.actions.changeOutputRunSelector('1 of 2 (6 items)');
ndv.getters.backToCanvas().realHover(); // reset to default hover ndv.getters.backToCanvas().realHover(); // reset to default hover
ndv.getters ndv.getters.inputTableRow(1).should('have.text', '1111');
.inputTableRow(1)
.should('have.text', '1111')
ndv.getters ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
cy.wait(50); cy.wait(50);
ndv.getters.outputHoveringItem().should('have.text', '1111'); ndv.getters.outputHoveringItem().should('have.text', '1111');
@ -146,27 +131,16 @@ describe('NDV', () => {
ndv.getters.inputRunSelector().find('input').should('include.value', '1 of 2 (6 items)'); ndv.getters.inputRunSelector().find('input').should('include.value', '1 of 2 (6 items)');
ndv.getters.outputRunSelector().find('input').should('include.value', '1 of 2 (6 items)'); ndv.getters.outputRunSelector().find('input').should('include.value', '1 of 2 (6 items)');
ndv.getters ndv.getters.inputTableRow(1).should('have.text', '1111');
.inputTableRow(1) ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.should('have.text', '1111')
ndv.getters
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.outputTableRow(1).should('have.text', '1111'); ndv.getters.outputTableRow(1).should('have.text', '1111');
ndv.getters.outputTableRow(1).realHover(); ndv.getters.outputTableRow(1).realHover();
ndv.getters.outputTableRow(3).should('have.text', '4444'); ndv.getters.outputTableRow(3).should('have.text', '4444');
ndv.getters.outputTableRow(3).realHover(); ndv.getters.outputTableRow(3).realHover();
ndv.getters ndv.getters.inputTableRow(3).should('have.text', '4444');
.inputTableRow(3) ndv.getters.inputTableRow(3).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.should('have.text', '4444')
ndv.getters
.inputTableRow(3)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.actions.changeOutputRunSelector('2 of 2 (6 items)'); ndv.actions.changeOutputRunSelector('2 of 2 (6 items)');
cy.wait(50); cy.wait(50);
@ -174,9 +148,7 @@ describe('NDV', () => {
ndv.getters.inputTableRow(1).should('have.text', '1000'); ndv.getters.inputTableRow(1).should('have.text', '1000');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
ndv.getters ndv.getters.outputTableRow(1).should('have.text', '1000');
.outputTableRow(1)
.should('have.text', '1000')
ndv.getters ndv.getters
.outputTableRow(1) .outputTableRow(1)
.should('have.text', '1000') .should('have.text', '1000')
@ -186,14 +158,9 @@ describe('NDV', () => {
ndv.getters.outputTableRow(3).should('have.text', '2000'); ndv.getters.outputTableRow(3).should('have.text', '2000');
ndv.getters.outputTableRow(3).realHover(); ndv.getters.outputTableRow(3).realHover();
ndv.getters ndv.getters.inputTableRow(3).should('have.text', '2000');
.inputTableRow(3)
.should('have.text', '2000')
ndv.getters ndv.getters.inputTableRow(3).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(3)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
}); });
it('resolves expression with default item when input node is not parent, while still pairing items', () => { it('resolves expression with default item when input node is not parent, while still pairing items', () => {
@ -215,42 +182,27 @@ describe('NDV', () => {
ndv.actions.switchOutputMode('Table'); ndv.actions.switchOutputMode('Table');
ndv.getters.backToCanvas().realHover(); // reset to default hover ndv.getters.backToCanvas().realHover(); // reset to default hover
ndv.getters ndv.getters.inputTableRow(1).should('have.text', '1111');
.inputTableRow(1)
.should('have.text', '1111')
ndv.getters ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
ndv.getters.outputHoveringItem().should('not.exist'); ndv.getters.outputHoveringItem().should('not.exist');
ndv.getters.parameterExpressionPreview('value').should('include.text', '1111'); ndv.getters.parameterExpressionPreview('value').should('include.text', '1111');
ndv.actions.selectInputNode('Code1'); ndv.actions.selectInputNode('Code1');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
ndv.getters ndv.getters.inputTableRow(1).should('have.text', '1000');
.inputTableRow(1)
.should('have.text', '1000')
ndv.getters ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.outputTableRow(1).should('have.text', '1000'); ndv.getters.outputTableRow(1).should('have.text', '1000');
ndv.getters.parameterExpressionPreview('value').should('include.text', '1000'); ndv.getters.parameterExpressionPreview('value').should('include.text', '1000');
ndv.actions.selectInputNode('Code'); ndv.actions.selectInputNode('Code');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
ndv.getters ndv.getters.inputTableRow(1).should('have.text', '6666');
.inputTableRow(1)
.should('have.text', '6666')
ndv.getters ndv.getters.inputTableRow(1).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(1)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.outputHoveringItem().should('not.exist'); ndv.getters.outputHoveringItem().should('not.exist');
ndv.getters.parameterExpressionPreview('value').should('include.text', '1000'); ndv.getters.parameterExpressionPreview('value').should('include.text', '1000');
@ -282,26 +234,16 @@ describe('NDV', () => {
ndv.getters.outputTableRow(1).should('have.text', '8888'); ndv.getters.outputTableRow(1).should('have.text', '8888');
ndv.getters.outputTableRow(1).realHover(); ndv.getters.outputTableRow(1).realHover();
ndv.getters ndv.getters.inputTableRow(5).should('have.text', '8888');
.inputTableRow(5)
.should('have.text', '8888')
ndv.getters ndv.getters.inputTableRow(5).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(5)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.getters.outputTableRow(2).should('have.text', '9999'); ndv.getters.outputTableRow(2).should('have.text', '9999');
ndv.getters.outputTableRow(2).realHover(); ndv.getters.outputTableRow(2).realHover();
ndv.getters ndv.getters.inputTableRow(6).should('have.text', '9999');
.inputTableRow(6)
.should('have.text', '9999')
ndv.getters ndv.getters.inputTableRow(6).invoke('attr', 'data-test-id').should('equal', 'hovering-item');
.inputTableRow(6)
.invoke('attr', 'data-test-id')
.should('equal', 'hovering-item');
ndv.actions.close(); ndv.actions.close();
@ -309,12 +251,12 @@ describe('NDV', () => {
ndv.actions.switchInputBranch('True Branch'); ndv.actions.switchInputBranch('True Branch');
ndv.actions.changeOutputRunSelector('1 of 2 (2 items)'); ndv.actions.changeOutputRunSelector('1 of 2 (2 items)');
ndv.getters.outputTableRow(1).should('have.text', '8888') ndv.getters.outputTableRow(1).should('have.text', '8888');
ndv.getters.outputTableRow(1).realHover(); ndv.getters.outputTableRow(1).realHover();
cy.wait(100); cy.wait(100);
ndv.getters.inputHoveringItem().should('not.exist'); ndv.getters.inputHoveringItem().should('not.exist');
ndv.getters.inputTableRow(1).should('have.text', '1111') ndv.getters.inputTableRow(1).should('have.text', '1111');
ndv.getters.inputTableRow(1).realHover(); ndv.getters.inputTableRow(1).realHover();
cy.wait(100); cy.wait(100);
ndv.getters.outputHoveringItem().should('not.exist'); ndv.getters.outputHoveringItem().should('not.exist');

View File

@ -18,7 +18,8 @@ export class CredentialsPage extends BasePage {
credentialDeleteButton: () => credentialDeleteButton: () =>
cy.getByTestId('action-toggle-dropdown').filter(':visible').contains('Delete'), cy.getByTestId('action-toggle-dropdown').filter(':visible').contains('Delete'),
sort: () => cy.getByTestId('resources-list-sort').first(), sort: () => cy.getByTestId('resources-list-sort').first(),
sortOption: (label: string) => cy.getByTestId('resources-list-sort-item').contains(label).first(), sortOption: (label: string) =>
cy.getByTestId('resources-list-sort-item').contains(label).first(),
filtersTrigger: () => cy.getByTestId('resources-list-filters-trigger'), filtersTrigger: () => cy.getByTestId('resources-list-filters-trigger'),
filtersDropdown: () => cy.getByTestId('resources-list-filters-dropdown'), filtersDropdown: () => cy.getByTestId('resources-list-filters-dropdown'),
}; };

View File

@ -10,10 +10,10 @@ export class MessageBox extends BasePage {
}; };
actions = { actions = {
confirm: () => { confirm: () => {
this.getters.confirm().click({ force: true}); this.getters.confirm().click({ force: true });
}, },
cancel: () => { cancel: () => {
this.getters.cancel().click({ force: true}); this.getters.cancel().click({ force: true });
}, },
}; };
} }

View File

@ -1,5 +1,5 @@
import { BasePage } from "./base"; import { BasePage } from './base';
import { WorkflowPage } from "./workflow"; import { WorkflowPage } from './workflow';
const workflowPage = new WorkflowPage(); const workflowPage = new WorkflowPage();
@ -14,10 +14,14 @@ export class WorkflowExecutionsTab extends BasePage {
failedExecutionListItems: () => cy.get('[data-test-execution-status="error"]'), failedExecutionListItems: () => cy.get('[data-test-execution-status="error"]'),
executionCard: (executionId: string) => cy.getByTestId(`execution-details-${executionId}`), executionCard: (executionId: string) => cy.getByTestId(`execution-details-${executionId}`),
executionPreviewDetails: () => cy.get('[data-test-id^="execution-preview-details-"]'), executionPreviewDetails: () => cy.get('[data-test-id^="execution-preview-details-"]'),
executionPreviewDetailsById: (executionId: string) => cy.getByTestId(`execution-preview-details-${executionId}`), executionPreviewDetailsById: (executionId: string) =>
executionPreviewTime: () => this.getters.executionPreviewDetails().find('[data-test-id="execution-time"]'), cy.getByTestId(`execution-preview-details-${executionId}`),
executionPreviewStatus: () => this.getters.executionPreviewDetails().find('[data-test-id="execution-preview-label"]'), executionPreviewTime: () =>
executionPreviewId: () => this.getters.executionPreviewDetails().find('[data-test-id="execution-preview-id"]'), this.getters.executionPreviewDetails().find('[data-test-id="execution-time"]'),
executionPreviewStatus: () =>
this.getters.executionPreviewDetails().find('[data-test-id="execution-preview-label"]'),
executionPreviewId: () =>
this.getters.executionPreviewDetails().find('[data-test-id="execution-preview-id"]'),
}; };
actions = { actions = {
toggleNodeEnabled: (nodeName: string) => { toggleNodeEnabled: (nodeName: string) => {
@ -25,7 +29,7 @@ export class WorkflowExecutionsTab extends BasePage {
cy.get('body').type('d', { force: true }); cy.get('body').type('d', { force: true });
}, },
createManualExecutions: (count: number) => { createManualExecutions: (count: number) => {
for (let i=0; i<count; i++) { for (let i = 0; i < count; i++) {
cy.intercept('POST', '/rest/workflows/run').as('workflowExecution'); cy.intercept('POST', '/rest/workflows/run').as('workflowExecution');
workflowPage.actions.executeWorkflow(); workflowPage.actions.executeWorkflow();
cy.wait('@workflowExecution'); cy.wait('@workflowExecution');
@ -36,6 +40,6 @@ export class WorkflowExecutionsTab extends BasePage {
}, },
switchToEditorTab: () => { switchToEditorTab: () => {
workflowPage.getters.editorTabButton().click(); workflowPage.getters.editorTabButton().click();
} },
}; };
}; }

View File

@ -221,7 +221,7 @@ export class WorkflowPage extends BasePage {
this.getters.workflowTagsInput().type(tag); this.getters.workflowTagsInput().type(tag);
this.getters.workflowTagsInput().type('{enter}'); this.getters.workflowTagsInput().type('{enter}');
}); });
cy.realPress('Tab') cy.realPress('Tab');
// For a brief moment the Element UI tag component shows the tags as(+X) string // For a brief moment the Element UI tag component shows the tags as(+X) string
// so we need to wait for it to disappear // so we need to wait for it to disappear
this.getters.workflowTagsContainer().should('not.contain', `+${tags.length}`); this.getters.workflowTagsContainer().should('not.contain', `+${tags.length}`);

File diff suppressed because one or more lines are too long

View File

@ -111,13 +111,13 @@ Cypress.Commands.add('drag', (selector, pos, options) => {
const newPosition = { const newPosition = {
x: options?.abs ? xDiff : originalLocation.right + xDiff, x: options?.abs ? xDiff : originalLocation.right + xDiff,
y: options?.abs ? yDiff : originalLocation.top + yDiff, y: options?.abs ? yDiff : originalLocation.top + yDiff,
} };
if(options?.realMouse) { if (options?.realMouse) {
element.realMouseDown(); element.realMouseDown();
element.realMouseMove(newPosition.x, newPosition.y); element.realMouseMove(newPosition.x, newPosition.y);
element.realMouseUp(); element.realMouseUp();
} else { } else {
element.trigger('mousedown', {force: true}); element.trigger('mousedown', { force: true });
element.trigger('mousemove', { element.trigger('mousemove', {
which: 1, which: 1,
pageX: newPosition.x, pageX: newPosition.x,
@ -129,7 +129,7 @@ Cypress.Commands.add('drag', (selector, pos, options) => {
// For some reason, mouseup isn't working when moving nodes // For some reason, mouseup isn't working when moving nodes
cy.get('body').click(newPosition.x, newPosition.y); cy.get('body').click(newPosition.x, newPosition.y);
} else { } else {
element.trigger('mouseup', {force: true}); element.trigger('mouseup', { force: true });
} }
} }
}); });

View File

@ -31,7 +31,11 @@ declare global {
grantBrowserPermissions(...permissions: string[]): void; grantBrowserPermissions(...permissions: string[]): void;
readClipboard(): Chainable<string>; readClipboard(): Chainable<string>;
paste(pastePayload: string): void; paste(pastePayload: string): void;
drag(selector: string | Cypress.Chainable<JQuery<HTMLElement>>, target: [number, number], options?: {abs?: boolean, index?: number, realMouse?: boolean}): void; drag(
selector: string | Cypress.Chainable<JQuery<HTMLElement>>,
target: [number, number],
options?: { abs?: boolean; index?: number; realMouse?: boolean },
): void;
draganddrop(draggableSelector: string, droppableSelector: string): void; draganddrop(draggableSelector: string, droppableSelector: string): void;
} }
} }

View File

@ -9,26 +9,26 @@ n8n is an extendable workflow automation tool. With a [fair-code](http://faircod
## Contents ## Contents
- [n8n - Workflow automation tool](#n8n---workflow-automation-tool) - [n8n - Workflow automation tool](#n8n---workflow-automation-tool)
- [Contents](#contents) - [Contents](#contents)
- [Demo](#demo) - [Demo](#demo)
- [Available integrations](#available-integrations) - [Available integrations](#available-integrations)
- [Documentation](#documentation) - [Documentation](#documentation)
- [Start n8n in Docker](#start-n8n-in-docker) - [Start n8n in Docker](#start-n8n-in-docker)
- [Start with tunnel](#start-with-tunnel) - [Start with tunnel](#start-with-tunnel)
- [Persist data](#persist-data) - [Persist data](#persist-data)
- [Start with other Database](#start-with-other-database) - [Start with other Database](#start-with-other-database)
- [Use with PostgresDB](#use-with-postgresdb) - [Use with PostgresDB](#use-with-postgresdb)
- [Use with MySQL](#use-with-mysql) - [Use with MySQL](#use-with-mysql)
- [Passing Sensitive Data via File](#passing-sensitive-data-via-file) - [Passing Sensitive Data via File](#passing-sensitive-data-via-file)
- [Example Setup with Lets Encrypt](#example-setup-with-lets-encrypt) - [Example Setup with Lets Encrypt](#example-setup-with-lets-encrypt)
- [Updating a running docker-compose instance](#updating-a-running-docker-compose-instance) - [Updating a running docker-compose instance](#updating-a-running-docker-compose-instance)
- [Setting Timezone](#setting-timezone) - [Setting Timezone](#setting-timezone)
- [Build Docker-Image](#build-docker-image) - [Build Docker-Image](#build-docker-image)
- [What does n8n mean and how do you pronounce it?](#what-does-n8n-mean-and-how-do-you-pronounce-it) - [What does n8n mean and how do you pronounce it?](#what-does-n8n-mean-and-how-do-you-pronounce-it)
- [Support](#support) - [Support](#support)
- [Jobs](#jobs) - [Jobs](#jobs)
- [Upgrading](#upgrading) - [Upgrading](#upgrading)
- [License](#license) - [License](#license)
## Demo ## Demo

View File

@ -52,7 +52,6 @@
"nock": "^13.3.2", "nock": "^13.3.2",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"p-limit": "^3.1.0", "p-limit": "^3.1.0",
"prettier": "^2.8.8",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"run-script-os": "^1.0.7", "run-script-os": "^1.0.7",
"start-server-and-test": "^2.0.0", "start-server-and-test": "^2.0.0",
@ -75,6 +74,7 @@
"@types/node": "^18.16.16", "@types/node": "^18.16.16",
"chokidar": "3.5.2", "chokidar": "3.5.2",
"jsonwebtoken": "9.0.0", "jsonwebtoken": "9.0.0",
"prettier": "^3.0.0",
"semver": "^7.5.4", "semver": "^7.5.4",
"tough-cookie": "^4.1.3", "tough-cookie": "^4.1.3",
"tslib": "^2.6.1", "tslib": "^2.6.1",

View File

@ -14,13 +14,13 @@ delete:
schema: schema:
type: string type: string
responses: responses:
"200": '200':
description: Operation successful. description: Operation successful.
content: content:
application/json: application/json:
schema: schema:
$ref: "../schemas/credential.yml" $ref: '../schemas/credential.yml'
"401": '401':
$ref: "../../../../shared/spec/responses/unauthorized.yml" $ref: '../../../../shared/spec/responses/unauthorized.yml'
"404": '404':
$ref: "../../../../shared/spec/responses/notFound.yml" $ref: '../../../../shared/spec/responses/notFound.yml'

View File

@ -17,14 +17,14 @@ properties:
data: data:
type: object type: object
writeOnly: true writeOnly: true
example: { token: "ada612vad6fa5df4adf5a5dsf4389adsf76da7s" } example: { token: 'ada612vad6fa5df4adf5a5dsf4389adsf76da7s' }
createdAt: createdAt:
type: string type: string
format: date-time format: date-time
readOnly: true readOnly: true
example: "2022-04-29T11:02:29.842Z" example: '2022-04-29T11:02:29.842Z'
updatedAt: updatedAt:
type: string type: string
format: date-time format: date-time
readOnly: true readOnly: true
example: "2022-04-29T11:02:29.842Z" example: '2022-04-29T11:02:29.842Z'

View File

@ -11,15 +11,15 @@ post:
content: content:
application/json: application/json:
schema: schema:
$ref: "../schemas/pull.yml" $ref: '../schemas/pull.yml'
responses: responses:
"200": '200':
description: Import result description: Import result
content: content:
application/json: application/json:
schema: schema:
$ref: "../schemas/importResult.yml" $ref: '../schemas/importResult.yml'
"400": '400':
$ref: "../../../../shared/spec/responses/badRequest.yml" $ref: '../../../../shared/spec/responses/badRequest.yml'
"409": '409':
$ref: "../../../../shared/spec/responses/conflict.yml" $ref: '../../../../shared/spec/responses/conflict.yml'

View File

@ -5,4 +5,4 @@ properties:
example: true example: true
variables: variables:
type: object type: object
example: { "foo": "bar" } example: { 'foo': 'bar' }

View File

@ -27,23 +27,23 @@ properties:
nodes: nodes:
type: array type: array
items: items:
$ref: "./node.yml" $ref: './node.yml'
connections: connections:
type: object type: object
example: { main: [{ node: "Jira", type: "main", index: 0 }] } example: { main: [{ node: 'Jira', type: 'main', index: 0 }] }
settings: settings:
$ref: "./workflowSettings.yml" $ref: './workflowSettings.yml'
staticData: staticData:
example: { lastId: 1 } example: { lastId: 1 }
nullable: true nullable: true
anyOf: anyOf:
- type: string - type: string
format: "jsonString" format: 'jsonString'
nullable: true nullable: true
- type: object - type: object
nullable: true nullable: true
tags: tags:
type: array type: array
items: items:
$ref: "./tag.yml" $ref: './tag.yml'
readOnly: true readOnly: true

View File

@ -55,7 +55,7 @@ paths:
/users/{id}: /users/{id}:
$ref: './handlers/users/spec/paths/users.id.yml' $ref: './handlers/users/spec/paths/users.id.yml'
/source-control/pull: /source-control/pull:
$ref: "./handlers/sourceControl/spec/paths/sourceControl.yml" $ref: './handlers/sourceControl/spec/paths/sourceControl.yml'
components: components:
schemas: schemas:
$ref: './shared/spec/schemas/_index.yml' $ref: './shared/spec/schemas/_index.yml'

View File

@ -1,8 +1,8 @@
NotFound: NotFound:
$ref: "./notFound.yml" $ref: './notFound.yml'
Unauthorized: Unauthorized:
$ref: "./unauthorized.yml" $ref: './unauthorized.yml'
BadRequest: BadRequest:
$ref: "./badRequest.yml" $ref: './badRequest.yml'
Conflict: Conflict:
$ref: "./conflict.yml" $ref: './conflict.yml'

View File

@ -23,9 +23,9 @@ CredentialType:
Audit: Audit:
$ref: './../../../handlers/audit/spec/schemas/audit.yml' $ref: './../../../handlers/audit/spec/schemas/audit.yml'
Pull: Pull:
$ref: "./../../../handlers/sourceControl/spec/schemas/pull.yml" $ref: './../../../handlers/sourceControl/spec/schemas/pull.yml'
ImportResult: ImportResult:
$ref: "./../../../handlers/sourceControl/spec/schemas/importResult.yml" $ref: './../../../handlers/sourceControl/spec/schemas/importResult.yml'
UserList: UserList:
$ref: './../../../handlers/users/spec/schemas/userList.yml' $ref: './../../../handlers/users/spec/schemas/userList.yml'
User: User:

View File

@ -1,283 +1,283 @@
export const xsdSamlSchemaAssertion20 = `<?xml version="1.0" encoding="US-ASCII"?> export const xsdSamlSchemaAssertion20 = `<?xml version="1.0" encoding="US-ASCII"?>
<schema <schema
targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion" targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
elementFormDefault="unqualified" elementFormDefault="unqualified"
attributeFormDefault="unqualified" attributeFormDefault="unqualified"
blockDefault="substitution" blockDefault="substitution"
version="2.0"> version="2.0">
<import namespace="http://www.w3.org/2000/09/xmldsig#" <import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/> schemaLocation="xmldsig-core-schema.xsd"/>
<import namespace="http://www.w3.org/2001/04/xmlenc#" <import namespace="http://www.w3.org/2001/04/xmlenc#"
schemaLocation="xenc-schema.xsd"/> schemaLocation="xenc-schema.xsd"/>
<annotation> <annotation>
<documentation> <documentation>
Document identifier: saml-schema-assertion-2.0 Document identifier: saml-schema-assertion-2.0
Location: http://docs.oasis-open.org/security/saml/v2.0/ Location: http://docs.oasis-open.org/security/saml/v2.0/
Revision history: Revision history:
V1.0 (November, 2002): V1.0 (November, 2002):
Initial Standard Schema. Initial Standard Schema.
V1.1 (September, 2003): V1.1 (September, 2003):
Updates within the same V1.0 namespace. Updates within the same V1.0 namespace.
V2.0 (March, 2005): V2.0 (March, 2005):
New assertion schema for SAML V2.0 namespace. New assertion schema for SAML V2.0 namespace.
</documentation> </documentation>
</annotation> </annotation>
<attributeGroup name="IDNameQualifiers"> <attributeGroup name="IDNameQualifiers">
<attribute name="NameQualifier" type="string" use="optional"/> <attribute name="NameQualifier" type="string" use="optional"/>
<attribute name="SPNameQualifier" type="string" use="optional"/> <attribute name="SPNameQualifier" type="string" use="optional"/>
</attributeGroup> </attributeGroup>
<element name="BaseID" type="saml:BaseIDAbstractType"/> <element name="BaseID" type="saml:BaseIDAbstractType"/>
<complexType name="BaseIDAbstractType" abstract="true"> <complexType name="BaseIDAbstractType" abstract="true">
<attributeGroup ref="saml:IDNameQualifiers"/> <attributeGroup ref="saml:IDNameQualifiers"/>
</complexType> </complexType>
<element name="NameID" type="saml:NameIDType"/> <element name="NameID" type="saml:NameIDType"/>
<complexType name="NameIDType"> <complexType name="NameIDType">
<simpleContent> <simpleContent>
<extension base="string"> <extension base="string">
<attributeGroup ref="saml:IDNameQualifiers"/> <attributeGroup ref="saml:IDNameQualifiers"/>
<attribute name="Format" type="anyURI" use="optional"/> <attribute name="Format" type="anyURI" use="optional"/>
<attribute name="SPProvidedID" type="string" use="optional"/> <attribute name="SPProvidedID" type="string" use="optional"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
<complexType name="EncryptedElementType"> <complexType name="EncryptedElementType">
<sequence> <sequence>
<element ref="xenc:EncryptedData"/> <element ref="xenc:EncryptedData"/>
<element ref="xenc:EncryptedKey" minOccurs="0" maxOccurs="unbounded"/> <element ref="xenc:EncryptedKey" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</complexType> </complexType>
<element name="EncryptedID" type="saml:EncryptedElementType"/> <element name="EncryptedID" type="saml:EncryptedElementType"/>
<element name="Issuer" type="saml:NameIDType"/> <element name="Issuer" type="saml:NameIDType"/>
<element name="AssertionIDRef" type="NCName"/> <element name="AssertionIDRef" type="NCName"/>
<element name="AssertionURIRef" type="anyURI"/> <element name="AssertionURIRef" type="anyURI"/>
<element name="Assertion" type="saml:AssertionType"/> <element name="Assertion" type="saml:AssertionType"/>
<complexType name="AssertionType"> <complexType name="AssertionType">
<sequence> <sequence>
<element ref="saml:Issuer"/> <element ref="saml:Issuer"/>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="saml:Subject" minOccurs="0"/> <element ref="saml:Subject" minOccurs="0"/>
<element ref="saml:Conditions" minOccurs="0"/> <element ref="saml:Conditions" minOccurs="0"/>
<element ref="saml:Advice" minOccurs="0"/> <element ref="saml:Advice" minOccurs="0"/>
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:Statement"/> <element ref="saml:Statement"/>
<element ref="saml:AuthnStatement"/> <element ref="saml:AuthnStatement"/>
<element ref="saml:AuthzDecisionStatement"/> <element ref="saml:AuthzDecisionStatement"/>
<element ref="saml:AttributeStatement"/> <element ref="saml:AttributeStatement"/>
</choice> </choice>
</sequence> </sequence>
<attribute name="Version" type="string" use="required"/> <attribute name="Version" type="string" use="required"/>
<attribute name="ID" type="ID" use="required"/> <attribute name="ID" type="ID" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/>
</complexType> </complexType>
<element name="Subject" type="saml:SubjectType"/> <element name="Subject" type="saml:SubjectType"/>
<complexType name="SubjectType"> <complexType name="SubjectType">
<choice> <choice>
<sequence> <sequence>
<choice> <choice>
<element ref="saml:BaseID"/> <element ref="saml:BaseID"/>
<element ref="saml:NameID"/> <element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/> <element ref="saml:EncryptedID"/>
</choice> </choice>
<element ref="saml:SubjectConfirmation" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:SubjectConfirmation" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/> <element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/>
</choice> </choice>
</complexType> </complexType>
<element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/> <element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/>
<complexType name="SubjectConfirmationType"> <complexType name="SubjectConfirmationType">
<sequence> <sequence>
<choice minOccurs="0"> <choice minOccurs="0">
<element ref="saml:BaseID"/> <element ref="saml:BaseID"/>
<element ref="saml:NameID"/> <element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/> <element ref="saml:EncryptedID"/>
</choice> </choice>
<element ref="saml:SubjectConfirmationData" minOccurs="0"/> <element ref="saml:SubjectConfirmationData" minOccurs="0"/>
</sequence> </sequence>
<attribute name="Method" type="anyURI" use="required"/> <attribute name="Method" type="anyURI" use="required"/>
</complexType> </complexType>
<element name="SubjectConfirmationData" type="saml:SubjectConfirmationDataType"/> <element name="SubjectConfirmationData" type="saml:SubjectConfirmationDataType"/>
<complexType name="SubjectConfirmationDataType" mixed="true"> <complexType name="SubjectConfirmationDataType" mixed="true">
<complexContent> <complexContent>
<restriction base="anyType"> <restriction base="anyType">
<sequence> <sequence>
<any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="NotBefore" type="dateTime" use="optional"/> <attribute name="NotBefore" type="dateTime" use="optional"/>
<attribute name="NotOnOrAfter" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>
<attribute name="Recipient" type="anyURI" use="optional"/> <attribute name="Recipient" type="anyURI" use="optional"/>
<attribute name="InResponseTo" type="NCName" use="optional"/> <attribute name="InResponseTo" type="NCName" use="optional"/>
<attribute name="Address" type="string" use="optional"/> <attribute name="Address" type="string" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</restriction> </restriction>
</complexContent> </complexContent>
</complexType> </complexType>
<complexType name="KeyInfoConfirmationDataType" mixed="false"> <complexType name="KeyInfoConfirmationDataType" mixed="false">
<complexContent> <complexContent>
<restriction base="saml:SubjectConfirmationDataType"> <restriction base="saml:SubjectConfirmationDataType">
<sequence> <sequence>
<element ref="ds:KeyInfo" maxOccurs="unbounded"/> <element ref="ds:KeyInfo" maxOccurs="unbounded"/>
</sequence> </sequence>
</restriction> </restriction>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="Conditions" type="saml:ConditionsType"/> <element name="Conditions" type="saml:ConditionsType"/>
<complexType name="ConditionsType"> <complexType name="ConditionsType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:Condition"/> <element ref="saml:Condition"/>
<element ref="saml:AudienceRestriction"/> <element ref="saml:AudienceRestriction"/>
<element ref="saml:OneTimeUse"/> <element ref="saml:OneTimeUse"/>
<element ref="saml:ProxyRestriction"/> <element ref="saml:ProxyRestriction"/>
</choice> </choice>
<attribute name="NotBefore" type="dateTime" use="optional"/> <attribute name="NotBefore" type="dateTime" use="optional"/>
<attribute name="NotOnOrAfter" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>
</complexType> </complexType>
<element name="Condition" type="saml:ConditionAbstractType"/> <element name="Condition" type="saml:ConditionAbstractType"/>
<complexType name="ConditionAbstractType" abstract="true"/> <complexType name="ConditionAbstractType" abstract="true"/>
<element name="AudienceRestriction" type="saml:AudienceRestrictionType"/> <element name="AudienceRestriction" type="saml:AudienceRestrictionType"/>
<complexType name="AudienceRestrictionType"> <complexType name="AudienceRestrictionType">
<complexContent> <complexContent>
<extension base="saml:ConditionAbstractType"> <extension base="saml:ConditionAbstractType">
<sequence> <sequence>
<element ref="saml:Audience" maxOccurs="unbounded"/> <element ref="saml:Audience" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="Audience" type="anyURI"/> <element name="Audience" type="anyURI"/>
<element name="OneTimeUse" type="saml:OneTimeUseType" /> <element name="OneTimeUse" type="saml:OneTimeUseType" />
<complexType name="OneTimeUseType"> <complexType name="OneTimeUseType">
<complexContent> <complexContent>
<extension base="saml:ConditionAbstractType"/> <extension base="saml:ConditionAbstractType"/>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="ProxyRestriction" type="saml:ProxyRestrictionType"/> <element name="ProxyRestriction" type="saml:ProxyRestrictionType"/>
<complexType name="ProxyRestrictionType"> <complexType name="ProxyRestrictionType">
<complexContent> <complexContent>
<extension base="saml:ConditionAbstractType"> <extension base="saml:ConditionAbstractType">
<sequence> <sequence>
<element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="Count" type="nonNegativeInteger" use="optional"/> <attribute name="Count" type="nonNegativeInteger" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="Advice" type="saml:AdviceType"/> <element name="Advice" type="saml:AdviceType"/>
<complexType name="AdviceType"> <complexType name="AdviceType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:AssertionIDRef"/> <element ref="saml:AssertionIDRef"/>
<element ref="saml:AssertionURIRef"/> <element ref="saml:AssertionURIRef"/>
<element ref="saml:Assertion"/> <element ref="saml:Assertion"/>
<element ref="saml:EncryptedAssertion"/> <element ref="saml:EncryptedAssertion"/>
<any namespace="##other" processContents="lax"/> <any namespace="##other" processContents="lax"/>
</choice> </choice>
</complexType> </complexType>
<element name="EncryptedAssertion" type="saml:EncryptedElementType"/> <element name="EncryptedAssertion" type="saml:EncryptedElementType"/>
<element name="Statement" type="saml:StatementAbstractType"/> <element name="Statement" type="saml:StatementAbstractType"/>
<complexType name="StatementAbstractType" abstract="true"/> <complexType name="StatementAbstractType" abstract="true"/>
<element name="AuthnStatement" type="saml:AuthnStatementType"/> <element name="AuthnStatement" type="saml:AuthnStatementType"/>
<complexType name="AuthnStatementType"> <complexType name="AuthnStatementType">
<complexContent> <complexContent>
<extension base="saml:StatementAbstractType"> <extension base="saml:StatementAbstractType">
<sequence> <sequence>
<element ref="saml:SubjectLocality" minOccurs="0"/> <element ref="saml:SubjectLocality" minOccurs="0"/>
<element ref="saml:AuthnContext"/> <element ref="saml:AuthnContext"/>
</sequence> </sequence>
<attribute name="AuthnInstant" type="dateTime" use="required"/> <attribute name="AuthnInstant" type="dateTime" use="required"/>
<attribute name="SessionIndex" type="string" use="optional"/> <attribute name="SessionIndex" type="string" use="optional"/>
<attribute name="SessionNotOnOrAfter" type="dateTime" use="optional"/> <attribute name="SessionNotOnOrAfter" type="dateTime" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="SubjectLocality" type="saml:SubjectLocalityType"/> <element name="SubjectLocality" type="saml:SubjectLocalityType"/>
<complexType name="SubjectLocalityType"> <complexType name="SubjectLocalityType">
<attribute name="Address" type="string" use="optional"/> <attribute name="Address" type="string" use="optional"/>
<attribute name="DNSName" type="string" use="optional"/> <attribute name="DNSName" type="string" use="optional"/>
</complexType> </complexType>
<element name="AuthnContext" type="saml:AuthnContextType"/> <element name="AuthnContext" type="saml:AuthnContextType"/>
<complexType name="AuthnContextType"> <complexType name="AuthnContextType">
<sequence> <sequence>
<choice> <choice>
<sequence> <sequence>
<element ref="saml:AuthnContextClassRef"/> <element ref="saml:AuthnContextClassRef"/>
<choice minOccurs="0"> <choice minOccurs="0">
<element ref="saml:AuthnContextDecl"/> <element ref="saml:AuthnContextDecl"/>
<element ref="saml:AuthnContextDeclRef"/> <element ref="saml:AuthnContextDeclRef"/>
</choice> </choice>
</sequence> </sequence>
<choice> <choice>
<element ref="saml:AuthnContextDecl"/> <element ref="saml:AuthnContextDecl"/>
<element ref="saml:AuthnContextDeclRef"/> <element ref="saml:AuthnContextDeclRef"/>
</choice> </choice>
</choice> </choice>
<element ref="saml:AuthenticatingAuthority" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:AuthenticatingAuthority" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</complexType> </complexType>
<element name="AuthnContextClassRef" type="anyURI"/> <element name="AuthnContextClassRef" type="anyURI"/>
<element name="AuthnContextDeclRef" type="anyURI"/> <element name="AuthnContextDeclRef" type="anyURI"/>
<element name="AuthnContextDecl" type="anyType"/> <element name="AuthnContextDecl" type="anyType"/>
<element name="AuthenticatingAuthority" type="anyURI"/> <element name="AuthenticatingAuthority" type="anyURI"/>
<element name="AuthzDecisionStatement" type="saml:AuthzDecisionStatementType"/> <element name="AuthzDecisionStatement" type="saml:AuthzDecisionStatementType"/>
<complexType name="AuthzDecisionStatementType"> <complexType name="AuthzDecisionStatementType">
<complexContent> <complexContent>
<extension base="saml:StatementAbstractType"> <extension base="saml:StatementAbstractType">
<sequence> <sequence>
<element ref="saml:Action" maxOccurs="unbounded"/> <element ref="saml:Action" maxOccurs="unbounded"/>
<element ref="saml:Evidence" minOccurs="0"/> <element ref="saml:Evidence" minOccurs="0"/>
</sequence> </sequence>
<attribute name="Resource" type="anyURI" use="required"/> <attribute name="Resource" type="anyURI" use="required"/>
<attribute name="Decision" type="saml:DecisionType" use="required"/> <attribute name="Decision" type="saml:DecisionType" use="required"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<simpleType name="DecisionType"> <simpleType name="DecisionType">
<restriction base="string"> <restriction base="string">
<enumeration value="Permit"/> <enumeration value="Permit"/>
<enumeration value="Deny"/> <enumeration value="Deny"/>
<enumeration value="Indeterminate"/> <enumeration value="Indeterminate"/>
</restriction> </restriction>
</simpleType> </simpleType>
<element name="Action" type="saml:ActionType"/> <element name="Action" type="saml:ActionType"/>
<complexType name="ActionType"> <complexType name="ActionType">
<simpleContent> <simpleContent>
<extension base="string"> <extension base="string">
<attribute name="Namespace" type="anyURI" use="required"/> <attribute name="Namespace" type="anyURI" use="required"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
<element name="Evidence" type="saml:EvidenceType"/> <element name="Evidence" type="saml:EvidenceType"/>
<complexType name="EvidenceType"> <complexType name="EvidenceType">
<choice maxOccurs="unbounded"> <choice maxOccurs="unbounded">
<element ref="saml:AssertionIDRef"/> <element ref="saml:AssertionIDRef"/>
<element ref="saml:AssertionURIRef"/> <element ref="saml:AssertionURIRef"/>
<element ref="saml:Assertion"/> <element ref="saml:Assertion"/>
<element ref="saml:EncryptedAssertion"/> <element ref="saml:EncryptedAssertion"/>
</choice> </choice>
</complexType> </complexType>
<element name="AttributeStatement" type="saml:AttributeStatementType"/> <element name="AttributeStatement" type="saml:AttributeStatementType"/>
<complexType name="AttributeStatementType"> <complexType name="AttributeStatementType">
<complexContent> <complexContent>
<extension base="saml:StatementAbstractType"> <extension base="saml:StatementAbstractType">
<choice maxOccurs="unbounded"> <choice maxOccurs="unbounded">
<element ref="saml:Attribute"/> <element ref="saml:Attribute"/>
<element ref="saml:EncryptedAttribute"/> <element ref="saml:EncryptedAttribute"/>
</choice> </choice>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="Attribute" type="saml:AttributeType"/> <element name="Attribute" type="saml:AttributeType"/>
<complexType name="AttributeType"> <complexType name="AttributeType">
<sequence> <sequence>
<element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="Name" type="string" use="required"/> <attribute name="Name" type="string" use="required"/>
<attribute name="NameFormat" type="anyURI" use="optional"/> <attribute name="NameFormat" type="anyURI" use="optional"/>
<attribute name="FriendlyName" type="string" use="optional"/> <attribute name="FriendlyName" type="string" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<element name="AttributeValue" type="anyType" nillable="true"/> <element name="AttributeValue" type="anyType" nillable="true"/>
<element name="EncryptedAttribute" type="saml:EncryptedElementType"/> <element name="EncryptedAttribute" type="saml:EncryptedElementType"/>
</schema>`; </schema>`;

View File

@ -1,336 +1,336 @@
export const xsdSamlSchemaMetadata20 = `<?xml version="1.0" encoding="UTF-8"?> export const xsdSamlSchemaMetadata20 = `<?xml version="1.0" encoding="UTF-8"?>
<schema <schema
targetNamespace="urn:oasis:names:tc:SAML:2.0:metadata" targetNamespace="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" elementFormDefault="unqualified"
attributeFormDefault="unqualified" attributeFormDefault="unqualified"
blockDefault="substitution" blockDefault="substitution"
version="2.0"> version="2.0">
<import namespace="http://www.w3.org/2000/09/xmldsig#" <import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/> schemaLocation="xmldsig-core-schema.xsd"/>
<import namespace="http://www.w3.org/2001/04/xmlenc#" <import namespace="http://www.w3.org/2001/04/xmlenc#"
schemaLocation="xenc-schema.xsd"/> schemaLocation="xenc-schema.xsd"/>
<import namespace="urn:oasis:names:tc:SAML:2.0:assertion" <import namespace="urn:oasis:names:tc:SAML:2.0:assertion"
schemaLocation="saml-schema-assertion-2.0.xsd"/> schemaLocation="saml-schema-assertion-2.0.xsd"/>
<import namespace="http://www.w3.org/XML/1998/namespace" <import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="xml.xsd"/> schemaLocation="xml.xsd"/>
<annotation> <annotation>
<documentation> <documentation>
Document identifier: saml-schema-metadata-2.0 Document identifier: saml-schema-metadata-2.0
Location: http://docs.oasis-open.org/security/saml/v2.0/ Location: http://docs.oasis-open.org/security/saml/v2.0/
Revision history: Revision history:
V2.0 (March, 2005): V2.0 (March, 2005):
Schema for SAML metadata, first published in SAML 2.0. Schema for SAML metadata, first published in SAML 2.0.
</documentation> </documentation>
</annotation> </annotation>
<simpleType name="entityIDType"> <simpleType name="entityIDType">
<restriction base="anyURI"> <restriction base="anyURI">
<maxLength value="1024"/> <maxLength value="1024"/>
</restriction> </restriction>
</simpleType> </simpleType>
<complexType name="localizedNameType"> <complexType name="localizedNameType">
<simpleContent> <simpleContent>
<extension base="string"> <extension base="string">
<attribute ref="xml:lang" use="required"/> <attribute ref="xml:lang" use="required"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
<complexType name="localizedURIType"> <complexType name="localizedURIType">
<simpleContent> <simpleContent>
<extension base="anyURI"> <extension base="anyURI">
<attribute ref="xml:lang" use="required"/> <attribute ref="xml:lang" use="required"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
<element name="Extensions" type="md:ExtensionsType"/> <element name="Extensions" type="md:ExtensionsType"/>
<complexType final="#all" name="ExtensionsType"> <complexType final="#all" name="ExtensionsType">
<sequence> <sequence>
<any namespace="##other" processContents="lax" maxOccurs="unbounded"/> <any namespace="##other" processContents="lax" maxOccurs="unbounded"/>
</sequence> </sequence>
</complexType> </complexType>
<complexType name="EndpointType"> <complexType name="EndpointType">
<sequence> <sequence>
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="Binding" type="anyURI" use="required"/> <attribute name="Binding" type="anyURI" use="required"/>
<attribute name="Location" type="anyURI" use="required"/> <attribute name="Location" type="anyURI" use="required"/>
<attribute name="ResponseLocation" type="anyURI" use="optional"/> <attribute name="ResponseLocation" type="anyURI" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<complexType name="IndexedEndpointType"> <complexType name="IndexedEndpointType">
<complexContent> <complexContent>
<extension base="md:EndpointType"> <extension base="md:EndpointType">
<attribute name="index" type="unsignedShort" use="required"/> <attribute name="index" type="unsignedShort" use="required"/>
<attribute name="isDefault" type="boolean" use="optional"/> <attribute name="isDefault" type="boolean" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="EntitiesDescriptor" type="md:EntitiesDescriptorType"/> <element name="EntitiesDescriptor" type="md:EntitiesDescriptorType"/>
<complexType name="EntitiesDescriptorType"> <complexType name="EntitiesDescriptorType">
<sequence> <sequence>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="md:Extensions" minOccurs="0"/> <element ref="md:Extensions" minOccurs="0"/>
<choice minOccurs="1" maxOccurs="unbounded"> <choice minOccurs="1" maxOccurs="unbounded">
<element ref="md:EntityDescriptor"/> <element ref="md:EntityDescriptor"/>
<element ref="md:EntitiesDescriptor"/> <element ref="md:EntitiesDescriptor"/>
</choice> </choice>
</sequence> </sequence>
<attribute name="validUntil" type="dateTime" use="optional"/> <attribute name="validUntil" type="dateTime" use="optional"/>
<attribute name="cacheDuration" type="duration" use="optional"/> <attribute name="cacheDuration" type="duration" use="optional"/>
<attribute name="ID" type="ID" use="optional"/> <attribute name="ID" type="ID" use="optional"/>
<attribute name="Name" type="string" use="optional"/> <attribute name="Name" type="string" use="optional"/>
</complexType> </complexType>
<element name="EntityDescriptor" type="md:EntityDescriptorType"/> <element name="EntityDescriptor" type="md:EntityDescriptorType"/>
<complexType name="EntityDescriptorType"> <complexType name="EntityDescriptorType">
<sequence> <sequence>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="md:Extensions" minOccurs="0"/> <element ref="md:Extensions" minOccurs="0"/>
<choice> <choice>
<choice maxOccurs="unbounded"> <choice maxOccurs="unbounded">
<element ref="md:RoleDescriptor"/> <element ref="md:RoleDescriptor"/>
<element ref="md:IDPSSODescriptor"/> <element ref="md:IDPSSODescriptor"/>
<element ref="md:SPSSODescriptor"/> <element ref="md:SPSSODescriptor"/>
<element ref="md:AuthnAuthorityDescriptor"/> <element ref="md:AuthnAuthorityDescriptor"/>
<element ref="md:AttributeAuthorityDescriptor"/> <element ref="md:AttributeAuthorityDescriptor"/>
<element ref="md:PDPDescriptor"/> <element ref="md:PDPDescriptor"/>
</choice> </choice>
<element ref="md:AffiliationDescriptor"/> <element ref="md:AffiliationDescriptor"/>
</choice> </choice>
<element ref="md:Organization" minOccurs="0"/> <element ref="md:Organization" minOccurs="0"/>
<element ref="md:ContactPerson" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:ContactPerson" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:AdditionalMetadataLocation" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AdditionalMetadataLocation" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="entityID" type="md:entityIDType" use="required"/> <attribute name="entityID" type="md:entityIDType" use="required"/>
<attribute name="validUntil" type="dateTime" use="optional"/> <attribute name="validUntil" type="dateTime" use="optional"/>
<attribute name="cacheDuration" type="duration" use="optional"/> <attribute name="cacheDuration" type="duration" use="optional"/>
<attribute name="ID" type="ID" use="optional"/> <attribute name="ID" type="ID" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<element name="Organization" type="md:OrganizationType"/> <element name="Organization" type="md:OrganizationType"/>
<complexType name="OrganizationType"> <complexType name="OrganizationType">
<sequence> <sequence>
<element ref="md:Extensions" minOccurs="0"/> <element ref="md:Extensions" minOccurs="0"/>
<element ref="md:OrganizationName" maxOccurs="unbounded"/> <element ref="md:OrganizationName" maxOccurs="unbounded"/>
<element ref="md:OrganizationDisplayName" maxOccurs="unbounded"/> <element ref="md:OrganizationDisplayName" maxOccurs="unbounded"/>
<element ref="md:OrganizationURL" maxOccurs="unbounded"/> <element ref="md:OrganizationURL" maxOccurs="unbounded"/>
</sequence> </sequence>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<element name="OrganizationName" type="md:localizedNameType"/> <element name="OrganizationName" type="md:localizedNameType"/>
<element name="OrganizationDisplayName" type="md:localizedNameType"/> <element name="OrganizationDisplayName" type="md:localizedNameType"/>
<element name="OrganizationURL" type="md:localizedURIType"/> <element name="OrganizationURL" type="md:localizedURIType"/>
<element name="ContactPerson" type="md:ContactType"/> <element name="ContactPerson" type="md:ContactType"/>
<complexType name="ContactType"> <complexType name="ContactType">
<sequence> <sequence>
<element ref="md:Extensions" minOccurs="0"/> <element ref="md:Extensions" minOccurs="0"/>
<element ref="md:Company" minOccurs="0"/> <element ref="md:Company" minOccurs="0"/>
<element ref="md:GivenName" minOccurs="0"/> <element ref="md:GivenName" minOccurs="0"/>
<element ref="md:SurName" minOccurs="0"/> <element ref="md:SurName" minOccurs="0"/>
<element ref="md:EmailAddress" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:EmailAddress" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:TelephoneNumber" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:TelephoneNumber" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="contactType" type="md:ContactTypeType" use="required"/> <attribute name="contactType" type="md:ContactTypeType" use="required"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<element name="Company" type="string"/> <element name="Company" type="string"/>
<element name="GivenName" type="string"/> <element name="GivenName" type="string"/>
<element name="SurName" type="string"/> <element name="SurName" type="string"/>
<element name="EmailAddress" type="anyURI"/> <element name="EmailAddress" type="anyURI"/>
<element name="TelephoneNumber" type="string"/> <element name="TelephoneNumber" type="string"/>
<simpleType name="ContactTypeType"> <simpleType name="ContactTypeType">
<restriction base="string"> <restriction base="string">
<enumeration value="technical"/> <enumeration value="technical"/>
<enumeration value="support"/> <enumeration value="support"/>
<enumeration value="administrative"/> <enumeration value="administrative"/>
<enumeration value="billing"/> <enumeration value="billing"/>
<enumeration value="other"/> <enumeration value="other"/>
</restriction> </restriction>
</simpleType> </simpleType>
<element name="AdditionalMetadataLocation" type="md:AdditionalMetadataLocationType"/> <element name="AdditionalMetadataLocation" type="md:AdditionalMetadataLocationType"/>
<complexType name="AdditionalMetadataLocationType"> <complexType name="AdditionalMetadataLocationType">
<simpleContent> <simpleContent>
<extension base="anyURI"> <extension base="anyURI">
<attribute name="namespace" type="anyURI" use="required"/> <attribute name="namespace" type="anyURI" use="required"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
<element name="RoleDescriptor" type="md:RoleDescriptorType"/> <element name="RoleDescriptor" type="md:RoleDescriptorType"/>
<complexType name="RoleDescriptorType" abstract="true"> <complexType name="RoleDescriptorType" abstract="true">
<sequence> <sequence>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="md:Extensions" minOccurs="0"/> <element ref="md:Extensions" minOccurs="0"/>
<element ref="md:KeyDescriptor" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:KeyDescriptor" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:Organization" minOccurs="0"/> <element ref="md:Organization" minOccurs="0"/>
<element ref="md:ContactPerson" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:ContactPerson" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="ID" type="ID" use="optional"/> <attribute name="ID" type="ID" use="optional"/>
<attribute name="validUntil" type="dateTime" use="optional"/> <attribute name="validUntil" type="dateTime" use="optional"/>
<attribute name="cacheDuration" type="duration" use="optional"/> <attribute name="cacheDuration" type="duration" use="optional"/>
<attribute name="protocolSupportEnumeration" type="md:anyURIListType" use="required"/> <attribute name="protocolSupportEnumeration" type="md:anyURIListType" use="required"/>
<attribute name="errorURL" type="anyURI" use="optional"/> <attribute name="errorURL" type="anyURI" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<simpleType name="anyURIListType"> <simpleType name="anyURIListType">
<list itemType="anyURI"/> <list itemType="anyURI"/>
</simpleType> </simpleType>
<element name="KeyDescriptor" type="md:KeyDescriptorType"/> <element name="KeyDescriptor" type="md:KeyDescriptorType"/>
<complexType name="KeyDescriptorType"> <complexType name="KeyDescriptorType">
<sequence> <sequence>
<element ref="ds:KeyInfo"/> <element ref="ds:KeyInfo"/>
<element ref="md:EncryptionMethod" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:EncryptionMethod" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="use" type="md:KeyTypes" use="optional"/> <attribute name="use" type="md:KeyTypes" use="optional"/>
</complexType> </complexType>
<simpleType name="KeyTypes"> <simpleType name="KeyTypes">
<restriction base="string"> <restriction base="string">
<enumeration value="encryption"/> <enumeration value="encryption"/>
<enumeration value="signing"/> <enumeration value="signing"/>
</restriction> </restriction>
</simpleType> </simpleType>
<element name="EncryptionMethod" type="xenc:EncryptionMethodType"/> <element name="EncryptionMethod" type="xenc:EncryptionMethodType"/>
<complexType name="SSODescriptorType" abstract="true"> <complexType name="SSODescriptorType" abstract="true">
<complexContent> <complexContent>
<extension base="md:RoleDescriptorType"> <extension base="md:RoleDescriptorType">
<sequence> <sequence>
<element ref="md:ArtifactResolutionService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:ArtifactResolutionService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:SingleLogoutService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:SingleLogoutService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:ManageNameIDService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:ManageNameIDService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="ArtifactResolutionService" type="md:IndexedEndpointType"/> <element name="ArtifactResolutionService" type="md:IndexedEndpointType"/>
<element name="SingleLogoutService" type="md:EndpointType"/> <element name="SingleLogoutService" type="md:EndpointType"/>
<element name="ManageNameIDService" type="md:EndpointType"/> <element name="ManageNameIDService" type="md:EndpointType"/>
<element name="NameIDFormat" type="anyURI"/> <element name="NameIDFormat" type="anyURI"/>
<element name="IDPSSODescriptor" type="md:IDPSSODescriptorType"/> <element name="IDPSSODescriptor" type="md:IDPSSODescriptorType"/>
<complexType name="IDPSSODescriptorType"> <complexType name="IDPSSODescriptorType">
<complexContent> <complexContent>
<extension base="md:SSODescriptorType"> <extension base="md:SSODescriptorType">
<sequence> <sequence>
<element ref="md:SingleSignOnService" maxOccurs="unbounded"/> <element ref="md:SingleSignOnService" maxOccurs="unbounded"/>
<element ref="md:NameIDMappingService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:NameIDMappingService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:AttributeProfile" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AttributeProfile" minOccurs="0" maxOccurs="unbounded"/>
<element ref="saml:Attribute" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:Attribute" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="WantAuthnRequestsSigned" type="boolean" use="optional"/> <attribute name="WantAuthnRequestsSigned" type="boolean" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="SingleSignOnService" type="md:EndpointType"/> <element name="SingleSignOnService" type="md:EndpointType"/>
<element name="NameIDMappingService" type="md:EndpointType"/> <element name="NameIDMappingService" type="md:EndpointType"/>
<element name="AssertionIDRequestService" type="md:EndpointType"/> <element name="AssertionIDRequestService" type="md:EndpointType"/>
<element name="AttributeProfile" type="anyURI"/> <element name="AttributeProfile" type="anyURI"/>
<element name="SPSSODescriptor" type="md:SPSSODescriptorType"/> <element name="SPSSODescriptor" type="md:SPSSODescriptorType"/>
<complexType name="SPSSODescriptorType"> <complexType name="SPSSODescriptorType">
<complexContent> <complexContent>
<extension base="md:SSODescriptorType"> <extension base="md:SSODescriptorType">
<sequence> <sequence>
<element ref="md:AssertionConsumerService" maxOccurs="unbounded"/> <element ref="md:AssertionConsumerService" maxOccurs="unbounded"/>
<element ref="md:AttributeConsumingService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AttributeConsumingService" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="AuthnRequestsSigned" type="boolean" use="optional"/> <attribute name="AuthnRequestsSigned" type="boolean" use="optional"/>
<attribute name="WantAssertionsSigned" type="boolean" use="optional"/> <attribute name="WantAssertionsSigned" type="boolean" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AssertionConsumerService" type="md:IndexedEndpointType"/> <element name="AssertionConsumerService" type="md:IndexedEndpointType"/>
<element name="AttributeConsumingService" type="md:AttributeConsumingServiceType"/> <element name="AttributeConsumingService" type="md:AttributeConsumingServiceType"/>
<complexType name="AttributeConsumingServiceType"> <complexType name="AttributeConsumingServiceType">
<sequence> <sequence>
<element ref="md:ServiceName" maxOccurs="unbounded"/> <element ref="md:ServiceName" maxOccurs="unbounded"/>
<element ref="md:ServiceDescription" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:ServiceDescription" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:RequestedAttribute" maxOccurs="unbounded"/> <element ref="md:RequestedAttribute" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="index" type="unsignedShort" use="required"/> <attribute name="index" type="unsignedShort" use="required"/>
<attribute name="isDefault" type="boolean" use="optional"/> <attribute name="isDefault" type="boolean" use="optional"/>
</complexType> </complexType>
<element name="ServiceName" type="md:localizedNameType"/> <element name="ServiceName" type="md:localizedNameType"/>
<element name="ServiceDescription" type="md:localizedNameType"/> <element name="ServiceDescription" type="md:localizedNameType"/>
<element name="RequestedAttribute" type="md:RequestedAttributeType"/> <element name="RequestedAttribute" type="md:RequestedAttributeType"/>
<complexType name="RequestedAttributeType"> <complexType name="RequestedAttributeType">
<complexContent> <complexContent>
<extension base="saml:AttributeType"> <extension base="saml:AttributeType">
<attribute name="isRequired" type="boolean" use="optional"/> <attribute name="isRequired" type="boolean" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AuthnAuthorityDescriptor" type="md:AuthnAuthorityDescriptorType"/> <element name="AuthnAuthorityDescriptor" type="md:AuthnAuthorityDescriptorType"/>
<complexType name="AuthnAuthorityDescriptorType"> <complexType name="AuthnAuthorityDescriptorType">
<complexContent> <complexContent>
<extension base="md:RoleDescriptorType"> <extension base="md:RoleDescriptorType">
<sequence> <sequence>
<element ref="md:AuthnQueryService" maxOccurs="unbounded"/> <element ref="md:AuthnQueryService" maxOccurs="unbounded"/>
<element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AuthnQueryService" type="md:EndpointType"/> <element name="AuthnQueryService" type="md:EndpointType"/>
<element name="PDPDescriptor" type="md:PDPDescriptorType"/> <element name="PDPDescriptor" type="md:PDPDescriptorType"/>
<complexType name="PDPDescriptorType"> <complexType name="PDPDescriptorType">
<complexContent> <complexContent>
<extension base="md:RoleDescriptorType"> <extension base="md:RoleDescriptorType">
<sequence> <sequence>
<element ref="md:AuthzService" maxOccurs="unbounded"/> <element ref="md:AuthzService" maxOccurs="unbounded"/>
<element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AuthzService" type="md:EndpointType"/> <element name="AuthzService" type="md:EndpointType"/>
<element name="AttributeAuthorityDescriptor" type="md:AttributeAuthorityDescriptorType"/> <element name="AttributeAuthorityDescriptor" type="md:AttributeAuthorityDescriptorType"/>
<complexType name="AttributeAuthorityDescriptorType"> <complexType name="AttributeAuthorityDescriptorType">
<complexContent> <complexContent>
<extension base="md:RoleDescriptorType"> <extension base="md:RoleDescriptorType">
<sequence> <sequence>
<element ref="md:AttributeService" maxOccurs="unbounded"/> <element ref="md:AttributeService" maxOccurs="unbounded"/>
<element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AssertionIDRequestService" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:NameIDFormat" minOccurs="0" maxOccurs="unbounded"/>
<element ref="md:AttributeProfile" minOccurs="0" maxOccurs="unbounded"/> <element ref="md:AttributeProfile" minOccurs="0" maxOccurs="unbounded"/>
<element ref="saml:Attribute" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:Attribute" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AttributeService" type="md:EndpointType"/> <element name="AttributeService" type="md:EndpointType"/>
<element name="AffiliationDescriptor" type="md:AffiliationDescriptorType"/> <element name="AffiliationDescriptor" type="md:AffiliationDescriptorType"/>
<complexType name="AffiliationDescriptorType"> <complexType name="AffiliationDescriptorType">
<sequence> <sequence>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="md:Extensions" minOccurs="0"/> <element ref="md:Extensions" minOccurs="0"/>
<element ref="md:AffiliateMember" maxOccurs="unbounded"/> <element ref="md:AffiliateMember" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="affiliationOwnerID" type="md:entityIDType" use="required"/> <attribute name="affiliationOwnerID" type="md:entityIDType" use="required"/>
<attribute name="validUntil" type="dateTime" use="optional"/> <attribute name="validUntil" type="dateTime" use="optional"/>
<attribute name="cacheDuration" type="duration" use="optional"/> <attribute name="cacheDuration" type="duration" use="optional"/>
<attribute name="ID" type="ID" use="optional"/> <attribute name="ID" type="ID" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/> <anyAttribute namespace="##other" processContents="lax"/>
</complexType> </complexType>
<element name="AffiliateMember" type="md:entityIDType"/> <element name="AffiliateMember" type="md:entityIDType"/>
</schema>`; </schema>`;

View File

@ -1,302 +1,302 @@
export const xsdSamlSchemaProtocol20 = `<?xml version="1.0" encoding="UTF-8"?> export const xsdSamlSchemaProtocol20 = `<?xml version="1.0" encoding="UTF-8"?>
<schema <schema
targetNamespace="urn:oasis:names:tc:SAML:2.0:protocol" targetNamespace="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
elementFormDefault="unqualified" elementFormDefault="unqualified"
attributeFormDefault="unqualified" attributeFormDefault="unqualified"
blockDefault="substitution" blockDefault="substitution"
version="2.0"> version="2.0">
<import namespace="urn:oasis:names:tc:SAML:2.0:assertion" <import namespace="urn:oasis:names:tc:SAML:2.0:assertion"
schemaLocation="saml-schema-assertion-2.0.xsd"/> schemaLocation="saml-schema-assertion-2.0.xsd"/>
<import namespace="http://www.w3.org/2000/09/xmldsig#" <import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/> schemaLocation="xmldsig-core-schema.xsd"/>
<annotation> <annotation>
<documentation> <documentation>
Document identifier: saml-schema-protocol-2.0 Document identifier: saml-schema-protocol-2.0
Location: http://docs.oasis-open.org/security/saml/v2.0/ Location: http://docs.oasis-open.org/security/saml/v2.0/
Revision history: Revision history:
V1.0 (November, 2002): V1.0 (November, 2002):
Initial Standard Schema. Initial Standard Schema.
V1.1 (September, 2003): V1.1 (September, 2003):
Updates within the same V1.0 namespace. Updates within the same V1.0 namespace.
V2.0 (March, 2005): V2.0 (March, 2005):
New protocol schema based in a SAML V2.0 namespace. New protocol schema based in a SAML V2.0 namespace.
</documentation> </documentation>
</annotation> </annotation>
<complexType name="RequestAbstractType" abstract="true"> <complexType name="RequestAbstractType" abstract="true">
<sequence> <sequence>
<element ref="saml:Issuer" minOccurs="0"/> <element ref="saml:Issuer" minOccurs="0"/>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="samlp:Extensions" minOccurs="0"/> <element ref="samlp:Extensions" minOccurs="0"/>
</sequence> </sequence>
<attribute name="ID" type="ID" use="required"/> <attribute name="ID" type="ID" use="required"/>
<attribute name="Version" type="string" use="required"/> <attribute name="Version" type="string" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/>
<attribute name="Destination" type="anyURI" use="optional"/> <attribute name="Destination" type="anyURI" use="optional"/>
<attribute name="Consent" type="anyURI" use="optional"/> <attribute name="Consent" type="anyURI" use="optional"/>
</complexType> </complexType>
<element name="Extensions" type="samlp:ExtensionsType"/> <element name="Extensions" type="samlp:ExtensionsType"/>
<complexType name="ExtensionsType"> <complexType name="ExtensionsType">
<sequence> <sequence>
<any namespace="##other" processContents="lax" maxOccurs="unbounded"/> <any namespace="##other" processContents="lax" maxOccurs="unbounded"/>
</sequence> </sequence>
</complexType> </complexType>
<complexType name="StatusResponseType"> <complexType name="StatusResponseType">
<sequence> <sequence>
<element ref="saml:Issuer" minOccurs="0"/> <element ref="saml:Issuer" minOccurs="0"/>
<element ref="ds:Signature" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/>
<element ref="samlp:Extensions" minOccurs="0"/> <element ref="samlp:Extensions" minOccurs="0"/>
<element ref="samlp:Status"/> <element ref="samlp:Status"/>
</sequence> </sequence>
<attribute name="ID" type="ID" use="required"/> <attribute name="ID" type="ID" use="required"/>
<attribute name="InResponseTo" type="NCName" use="optional"/> <attribute name="InResponseTo" type="NCName" use="optional"/>
<attribute name="Version" type="string" use="required"/> <attribute name="Version" type="string" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/>
<attribute name="Destination" type="anyURI" use="optional"/> <attribute name="Destination" type="anyURI" use="optional"/>
<attribute name="Consent" type="anyURI" use="optional"/> <attribute name="Consent" type="anyURI" use="optional"/>
</complexType> </complexType>
<element name="Status" type="samlp:StatusType"/> <element name="Status" type="samlp:StatusType"/>
<complexType name="StatusType"> <complexType name="StatusType">
<sequence> <sequence>
<element ref="samlp:StatusCode"/> <element ref="samlp:StatusCode"/>
<element ref="samlp:StatusMessage" minOccurs="0"/> <element ref="samlp:StatusMessage" minOccurs="0"/>
<element ref="samlp:StatusDetail" minOccurs="0"/> <element ref="samlp:StatusDetail" minOccurs="0"/>
</sequence> </sequence>
</complexType> </complexType>
<element name="StatusCode" type="samlp:StatusCodeType"/> <element name="StatusCode" type="samlp:StatusCodeType"/>
<complexType name="StatusCodeType"> <complexType name="StatusCodeType">
<sequence> <sequence>
<element ref="samlp:StatusCode" minOccurs="0"/> <element ref="samlp:StatusCode" minOccurs="0"/>
</sequence> </sequence>
<attribute name="Value" type="anyURI" use="required"/> <attribute name="Value" type="anyURI" use="required"/>
</complexType> </complexType>
<element name="StatusMessage" type="string"/> <element name="StatusMessage" type="string"/>
<element name="StatusDetail" type="samlp:StatusDetailType"/> <element name="StatusDetail" type="samlp:StatusDetailType"/>
<complexType name="StatusDetailType"> <complexType name="StatusDetailType">
<sequence> <sequence>
<any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</complexType> </complexType>
<element name="AssertionIDRequest" type="samlp:AssertionIDRequestType"/> <element name="AssertionIDRequest" type="samlp:AssertionIDRequestType"/>
<complexType name="AssertionIDRequestType"> <complexType name="AssertionIDRequestType">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<element ref="saml:AssertionIDRef" maxOccurs="unbounded"/> <element ref="saml:AssertionIDRef" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="SubjectQuery" type="samlp:SubjectQueryAbstractType"/> <element name="SubjectQuery" type="samlp:SubjectQueryAbstractType"/>
<complexType name="SubjectQueryAbstractType" abstract="true"> <complexType name="SubjectQueryAbstractType" abstract="true">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<element ref="saml:Subject"/> <element ref="saml:Subject"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AuthnQuery" type="samlp:AuthnQueryType"/> <element name="AuthnQuery" type="samlp:AuthnQueryType"/>
<complexType name="AuthnQueryType"> <complexType name="AuthnQueryType">
<complexContent> <complexContent>
<extension base="samlp:SubjectQueryAbstractType"> <extension base="samlp:SubjectQueryAbstractType">
<sequence> <sequence>
<element ref="samlp:RequestedAuthnContext" minOccurs="0"/> <element ref="samlp:RequestedAuthnContext" minOccurs="0"/>
</sequence> </sequence>
<attribute name="SessionIndex" type="string" use="optional"/> <attribute name="SessionIndex" type="string" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="RequestedAuthnContext" type="samlp:RequestedAuthnContextType"/> <element name="RequestedAuthnContext" type="samlp:RequestedAuthnContextType"/>
<complexType name="RequestedAuthnContextType"> <complexType name="RequestedAuthnContextType">
<choice> <choice>
<element ref="saml:AuthnContextClassRef" maxOccurs="unbounded"/> <element ref="saml:AuthnContextClassRef" maxOccurs="unbounded"/>
<element ref="saml:AuthnContextDeclRef" maxOccurs="unbounded"/> <element ref="saml:AuthnContextDeclRef" maxOccurs="unbounded"/>
</choice> </choice>
<attribute name="Comparison" type="samlp:AuthnContextComparisonType" use="optional"/> <attribute name="Comparison" type="samlp:AuthnContextComparisonType" use="optional"/>
</complexType> </complexType>
<simpleType name="AuthnContextComparisonType"> <simpleType name="AuthnContextComparisonType">
<restriction base="string"> <restriction base="string">
<enumeration value="exact"/> <enumeration value="exact"/>
<enumeration value="minimum"/> <enumeration value="minimum"/>
<enumeration value="maximum"/> <enumeration value="maximum"/>
<enumeration value="better"/> <enumeration value="better"/>
</restriction> </restriction>
</simpleType> </simpleType>
<element name="AttributeQuery" type="samlp:AttributeQueryType"/> <element name="AttributeQuery" type="samlp:AttributeQueryType"/>
<complexType name="AttributeQueryType"> <complexType name="AttributeQueryType">
<complexContent> <complexContent>
<extension base="samlp:SubjectQueryAbstractType"> <extension base="samlp:SubjectQueryAbstractType">
<sequence> <sequence>
<element ref="saml:Attribute" minOccurs="0" maxOccurs="unbounded"/> <element ref="saml:Attribute" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AuthzDecisionQuery" type="samlp:AuthzDecisionQueryType"/> <element name="AuthzDecisionQuery" type="samlp:AuthzDecisionQueryType"/>
<complexType name="AuthzDecisionQueryType"> <complexType name="AuthzDecisionQueryType">
<complexContent> <complexContent>
<extension base="samlp:SubjectQueryAbstractType"> <extension base="samlp:SubjectQueryAbstractType">
<sequence> <sequence>
<element ref="saml:Action" maxOccurs="unbounded"/> <element ref="saml:Action" maxOccurs="unbounded"/>
<element ref="saml:Evidence" minOccurs="0"/> <element ref="saml:Evidence" minOccurs="0"/>
</sequence> </sequence>
<attribute name="Resource" type="anyURI" use="required"/> <attribute name="Resource" type="anyURI" use="required"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="AuthnRequest" type="samlp:AuthnRequestType"/> <element name="AuthnRequest" type="samlp:AuthnRequestType"/>
<complexType name="AuthnRequestType"> <complexType name="AuthnRequestType">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<element ref="saml:Subject" minOccurs="0"/> <element ref="saml:Subject" minOccurs="0"/>
<element ref="samlp:NameIDPolicy" minOccurs="0"/> <element ref="samlp:NameIDPolicy" minOccurs="0"/>
<element ref="saml:Conditions" minOccurs="0"/> <element ref="saml:Conditions" minOccurs="0"/>
<element ref="samlp:RequestedAuthnContext" minOccurs="0"/> <element ref="samlp:RequestedAuthnContext" minOccurs="0"/>
<element ref="samlp:Scoping" minOccurs="0"/> <element ref="samlp:Scoping" minOccurs="0"/>
</sequence> </sequence>
<attribute name="ForceAuthn" type="boolean" use="optional"/> <attribute name="ForceAuthn" type="boolean" use="optional"/>
<attribute name="IsPassive" type="boolean" use="optional"/> <attribute name="IsPassive" type="boolean" use="optional"/>
<attribute name="ProtocolBinding" type="anyURI" use="optional"/> <attribute name="ProtocolBinding" type="anyURI" use="optional"/>
<attribute name="AssertionConsumerServiceIndex" type="unsignedShort" use="optional"/> <attribute name="AssertionConsumerServiceIndex" type="unsignedShort" use="optional"/>
<attribute name="AssertionConsumerServiceURL" type="anyURI" use="optional"/> <attribute name="AssertionConsumerServiceURL" type="anyURI" use="optional"/>
<attribute name="AttributeConsumingServiceIndex" type="unsignedShort" use="optional"/> <attribute name="AttributeConsumingServiceIndex" type="unsignedShort" use="optional"/>
<attribute name="ProviderName" type="string" use="optional"/> <attribute name="ProviderName" type="string" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="NameIDPolicy" type="samlp:NameIDPolicyType"/> <element name="NameIDPolicy" type="samlp:NameIDPolicyType"/>
<complexType name="NameIDPolicyType"> <complexType name="NameIDPolicyType">
<attribute name="Format" type="anyURI" use="optional"/> <attribute name="Format" type="anyURI" use="optional"/>
<attribute name="SPNameQualifier" type="string" use="optional"/> <attribute name="SPNameQualifier" type="string" use="optional"/>
<attribute name="AllowCreate" type="boolean" use="optional"/> <attribute name="AllowCreate" type="boolean" use="optional"/>
</complexType> </complexType>
<element name="Scoping" type="samlp:ScopingType"/> <element name="Scoping" type="samlp:ScopingType"/>
<complexType name="ScopingType"> <complexType name="ScopingType">
<sequence> <sequence>
<element ref="samlp:IDPList" minOccurs="0"/> <element ref="samlp:IDPList" minOccurs="0"/>
<element ref="samlp:RequesterID" minOccurs="0" maxOccurs="unbounded"/> <element ref="samlp:RequesterID" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="ProxyCount" type="nonNegativeInteger" use="optional"/> <attribute name="ProxyCount" type="nonNegativeInteger" use="optional"/>
</complexType> </complexType>
<element name="RequesterID" type="anyURI"/> <element name="RequesterID" type="anyURI"/>
<element name="IDPList" type="samlp:IDPListType"/> <element name="IDPList" type="samlp:IDPListType"/>
<complexType name="IDPListType"> <complexType name="IDPListType">
<sequence> <sequence>
<element ref="samlp:IDPEntry" maxOccurs="unbounded"/> <element ref="samlp:IDPEntry" maxOccurs="unbounded"/>
<element ref="samlp:GetComplete" minOccurs="0"/> <element ref="samlp:GetComplete" minOccurs="0"/>
</sequence> </sequence>
</complexType> </complexType>
<element name="IDPEntry" type="samlp:IDPEntryType"/> <element name="IDPEntry" type="samlp:IDPEntryType"/>
<complexType name="IDPEntryType"> <complexType name="IDPEntryType">
<attribute name="ProviderID" type="anyURI" use="required"/> <attribute name="ProviderID" type="anyURI" use="required"/>
<attribute name="Name" type="string" use="optional"/> <attribute name="Name" type="string" use="optional"/>
<attribute name="Loc" type="anyURI" use="optional"/> <attribute name="Loc" type="anyURI" use="optional"/>
</complexType> </complexType>
<element name="GetComplete" type="anyURI"/> <element name="GetComplete" type="anyURI"/>
<element name="Response" type="samlp:ResponseType"/> <element name="Response" type="samlp:ResponseType"/>
<complexType name="ResponseType"> <complexType name="ResponseType">
<complexContent> <complexContent>
<extension base="samlp:StatusResponseType"> <extension base="samlp:StatusResponseType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:Assertion"/> <element ref="saml:Assertion"/>
<element ref="saml:EncryptedAssertion"/> <element ref="saml:EncryptedAssertion"/>
</choice> </choice>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="ArtifactResolve" type="samlp:ArtifactResolveType"/> <element name="ArtifactResolve" type="samlp:ArtifactResolveType"/>
<complexType name="ArtifactResolveType"> <complexType name="ArtifactResolveType">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<element ref="samlp:Artifact"/> <element ref="samlp:Artifact"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="Artifact" type="string"/> <element name="Artifact" type="string"/>
<element name="ArtifactResponse" type="samlp:ArtifactResponseType"/> <element name="ArtifactResponse" type="samlp:ArtifactResponseType"/>
<complexType name="ArtifactResponseType"> <complexType name="ArtifactResponseType">
<complexContent> <complexContent>
<extension base="samlp:StatusResponseType"> <extension base="samlp:StatusResponseType">
<sequence> <sequence>
<any namespace="##any" processContents="lax" minOccurs="0"/> <any namespace="##any" processContents="lax" minOccurs="0"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="ManageNameIDRequest" type="samlp:ManageNameIDRequestType"/> <element name="ManageNameIDRequest" type="samlp:ManageNameIDRequestType"/>
<complexType name="ManageNameIDRequestType"> <complexType name="ManageNameIDRequestType">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<choice> <choice>
<element ref="saml:NameID"/> <element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/> <element ref="saml:EncryptedID"/>
</choice> </choice>
<choice> <choice>
<element ref="samlp:NewID"/> <element ref="samlp:NewID"/>
<element ref="samlp:NewEncryptedID"/> <element ref="samlp:NewEncryptedID"/>
<element ref="samlp:Terminate"/> <element ref="samlp:Terminate"/>
</choice> </choice>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="NewID" type="string"/> <element name="NewID" type="string"/>
<element name="NewEncryptedID" type="saml:EncryptedElementType"/> <element name="NewEncryptedID" type="saml:EncryptedElementType"/>
<element name="Terminate" type="samlp:TerminateType"/> <element name="Terminate" type="samlp:TerminateType"/>
<complexType name="TerminateType"/> <complexType name="TerminateType"/>
<element name="ManageNameIDResponse" type="samlp:StatusResponseType"/> <element name="ManageNameIDResponse" type="samlp:StatusResponseType"/>
<element name="LogoutRequest" type="samlp:LogoutRequestType"/> <element name="LogoutRequest" type="samlp:LogoutRequestType"/>
<complexType name="LogoutRequestType"> <complexType name="LogoutRequestType">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<choice> <choice>
<element ref="saml:BaseID"/> <element ref="saml:BaseID"/>
<element ref="saml:NameID"/> <element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/> <element ref="saml:EncryptedID"/>
</choice> </choice>
<element ref="samlp:SessionIndex" minOccurs="0" maxOccurs="unbounded"/> <element ref="samlp:SessionIndex" minOccurs="0" maxOccurs="unbounded"/>
</sequence> </sequence>
<attribute name="Reason" type="string" use="optional"/> <attribute name="Reason" type="string" use="optional"/>
<attribute name="NotOnOrAfter" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="SessionIndex" type="string"/> <element name="SessionIndex" type="string"/>
<element name="LogoutResponse" type="samlp:StatusResponseType"/> <element name="LogoutResponse" type="samlp:StatusResponseType"/>
<element name="NameIDMappingRequest" type="samlp:NameIDMappingRequestType"/> <element name="NameIDMappingRequest" type="samlp:NameIDMappingRequestType"/>
<complexType name="NameIDMappingRequestType"> <complexType name="NameIDMappingRequestType">
<complexContent> <complexContent>
<extension base="samlp:RequestAbstractType"> <extension base="samlp:RequestAbstractType">
<sequence> <sequence>
<choice> <choice>
<element ref="saml:BaseID"/> <element ref="saml:BaseID"/>
<element ref="saml:NameID"/> <element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/> <element ref="saml:EncryptedID"/>
</choice> </choice>
<element ref="samlp:NameIDPolicy"/> <element ref="samlp:NameIDPolicy"/>
</sequence> </sequence>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
<element name="NameIDMappingResponse" type="samlp:NameIDMappingResponseType"/> <element name="NameIDMappingResponse" type="samlp:NameIDMappingResponseType"/>
<complexType name="NameIDMappingResponseType"> <complexType name="NameIDMappingResponseType">
<complexContent> <complexContent>
<extension base="samlp:StatusResponseType"> <extension base="samlp:StatusResponseType">
<choice> <choice>
<element ref="saml:NameID"/> <element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/> <element ref="saml:EncryptedID"/>
</choice> </choice>
</extension> </extension>
</complexContent> </complexContent>
</complexType> </complexType>
</schema>`; </schema>`;

View File

@ -2,9 +2,9 @@
<head> <head>
<title>n8n - OAuth Callback</title> <title>n8n - OAuth Callback</title>
<style> <style>
body { font-family: 'Open Sans', sans-serif; padding: 10px;} body { font-family: 'Open Sans', sans-serif; padding: 10px;} details.error { margin-bottom:
details.error { margin-bottom: 20px; } 20px; } pre.reason { background: #f7f7f7; border: 1px solid #ddd; border-radius: 3px; padding:
pre.reason { background: #f7f7f7; border: 1px solid #ddd; border-radius: 3px; padding: 10px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap;} 10px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap;}
</style> </style>
</head> </head>
<body> <body>
@ -12,12 +12,12 @@
<h4>Error: {{error.message}}</h4> <h4>Error: {{error.message}}</h4>
<details class='error'> <details class='error'>
<summary>More details</summary> <summary>More details</summary>
{{#if error.reason}}<pre class="reason">{{error.reason}}</pre>{{/if}} {{#if error.reason}}<pre class='reason'>{{error.reason}}</pre>{{/if}}
</details> </details>
{{/if}} {{/if}}
Failed to connect. The window can be closed now. Failed to connect. The window can be closed now.
<script> <script>
(function messageParent() { window.opener?.postMessage('error', '*'); })(); (function messageParent() { window.opener?.postMessage('error', '*'); })();
</script> </script>
</body> </body>
</html> </html>

View File

@ -13,5 +13,5 @@
#storybook-root > div:not([class]) > *, #storybook-root > div:not([class]) > *,
#storybook-root > * { #storybook-root > * {
margin: var(--spacing-5xs); margin: var(--spacing-5xs);
} }

View File

@ -196,7 +196,8 @@
height: var.$checkbox-input-height; height: var.$checkbox-input-height;
background-color: var.$checkbox-background-color; background-color: var.$checkbox-background-color;
z-index: var.$index-normal; z-index: var.$index-normal;
transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46), transition:
border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),
background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46); background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);
&:hover { &:hover {

View File

@ -134,7 +134,9 @@
cursor: head; cursor: head;
width: 4px; width: 4px;
height: 4px; height: 4px;
box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, 0.3), box-shadow:
0 0 0 1.5px #fff,
inset 0 0 1px 1px rgba(0, 0, 0, 0.3),
0 0 1px 2px rgba(0, 0, 0, 0.4); 0 0 1px 2px rgba(0, 0, 0, 0.4);
border-radius: 50%; border-radius: 50%;
transform: translate(-2px, -2px); transform: translate(-2px, -2px);

View File

@ -79,10 +79,16 @@
} }
.collapse-transition { .collapse-transition {
transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out; transition:
0.3s height ease-in-out,
0.3s padding-top ease-in-out,
0.3s padding-bottom ease-in-out;
} }
.horizontal-collapse-transition { .horizontal-collapse-transition {
transition: 0.3s width ease-in-out, 0.3s padding-left ease-in-out, 0.3s padding-right ease-in-out; transition:
0.3s width ease-in-out,
0.3s padding-left ease-in-out,
0.3s padding-right ease-in-out;
} }
.el-list-enter-active, .el-list-enter-active,

View File

@ -10,7 +10,8 @@
$all-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); $all-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
$fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1); $fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1);
$fade-linear-transition: opacity 200ms linear; $fade-linear-transition: opacity 200ms linear;
$md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), $md-fade-transition:
transform 300ms cubic-bezier(0.23, 1, 0.32, 1),
opacity 300ms cubic-bezier(0.23, 1, 0.32, 1); opacity 300ms cubic-bezier(0.23, 1, 0.32, 1);
$border-transition-base: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); $border-transition-base: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
$color-transition-base: color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); $color-transition-base: color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
@ -199,9 +200,13 @@ $focus-outline-width: 2px;
/* Box shadow /* Box shadow
-------------------------- */ -------------------------- */
/// boxShadow|1|Shadow|1 /// boxShadow|1|Shadow|1
$box-shadow-base: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04); $box-shadow-base:
0 2px 4px rgba(0, 0, 0, 0.12),
0 0 6px rgba(0, 0, 0, 0.04);
// boxShadow|1|Shadow|1 // boxShadow|1|Shadow|1
$box-shadow-dark: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.12); $box-shadow-dark:
0 2px 4px rgba(0, 0, 0, 0.12),
0 0 6px rgba(0, 0, 0, 0.12);
/// boxShadow|1|Shadow|1 /// boxShadow|1|Shadow|1
$box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1); $box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1);

View File

@ -4,152 +4,152 @@
$directions: rtl, ltr, ttb, btt; $directions: rtl, ltr, ttb, btt;
@include mixins.b(drawer) { @include mixins.b(drawer) {
position: absolute; position: absolute;
box-sizing: border-box; box-sizing: border-box;
background-color: var.$dialog-background-color; background-color: var.$dialog-background-color;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-shadow: 0px 6px 16px rgb(68 28 23 / 6%); box-shadow: 0px 6px 16px rgb(68 28 23 / 6%);
overflow: hidden; overflow: hidden;
transition: all 0.3s; transition: all 0.3s;
@each $direction in $directions { @each $direction in $directions {
.#{$direction} { .#{$direction} {
transform: translate(0, 0); transform: translate(0, 0);
} }
} }
&__sr-focus:focus { &__sr-focus:focus {
outline: none !important; outline: none !important;
} }
&__header { &__header {
align-items: center; align-items: center;
color: rgb(114, 118, 123); color: rgb(114, 118, 123);
display: flex; display: flex;
margin-bottom: 32px; margin-bottom: 32px;
padding: var.$dialog-padding-primary; padding: var.$dialog-padding-primary;
padding-bottom: 0; padding-bottom: 0;
& > :first-child { & > :first-child {
flex: 1; flex: 1;
} }
} }
&__title { &__title {
margin: 0; margin: 0;
flex: 1; flex: 1;
line-height: inherit; line-height: inherit;
font-size: 1rem; font-size: 1rem;
} }
@include mixins.e(footer) { @include mixins.e(footer) {
padding: var.$dialog-padding-primary; padding: var.$dialog-padding-primary;
padding-top: 10px; padding-top: 10px;
text-align: right; text-align: right;
} }
&__close-btn { &__close-btn {
display: inline-flex; display: inline-flex;
border: none; border: none;
cursor: pointer; cursor: pointer;
font-size: getCssVar('font-size-extra-large'); font-size: getCssVar('font-size-extra-large');
color: inherit; color: inherit;
background-color: transparent; background-color: transparent;
outline: none; outline: none;
&:focus, &:focus,
&:hover { &:hover {
i { i {
color: getCssVar('color-primary'); color: getCssVar('color-primary');
} }
} }
} }
&__body { &__body {
flex: 1; flex: 1;
padding: 0; padding: 0;
overflow: auto; overflow: auto;
& > * { & > * {
box-sizing: border-box; box-sizing: border-box;
} }
} }
&.ltr, &.ltr,
&.rtl { &.rtl {
height: 100%; height: 100%;
top: 0; top: 0;
bottom: 0; bottom: 0;
} }
&.ttb, &.ttb,
&.btt { &.btt {
width: 100%; width: 100%;
left: 0; left: 0;
right: 0; right: 0;
} }
&.ltr { &.ltr {
left: 0; left: 0;
} }
&.rtl { &.rtl {
right: 0; right: 0;
} }
&.ttb { &.ttb {
top: 0; top: 0;
} }
&.btt { &.btt {
bottom: 0; bottom: 0;
} }
} }
.el-drawer-fade { .el-drawer-fade {
&-enter-active, &-enter-active,
&-leave-active { &-leave-active {
transition: all 0.3s; transition: all 0.3s;
} }
&-enter-from, &-enter-from,
&-enter-active, &-enter-active,
&-enter-to, &-enter-to,
&-leave-from, &-leave-from,
&-leave-active, &-leave-active,
&-leave-to { &-leave-to {
overflow: hidden !important; overflow: hidden !important;
} }
&-enter-from, &-enter-from,
&-leave-to { &-leave-to {
opacity: 0; opacity: 0;
} }
&-enter-to, &-enter-to,
&-leave-from { &-leave-from {
opacity: 1; opacity: 1;
} }
&-enter-from, &-enter-from,
&-leave-to { &-leave-to {
@each $direction in $directions { @each $direction in $directions {
.#{$direction} { .#{$direction} {
@if $direction == ltr { @if $direction == ltr {
transform: translateX(-100%); transform: translateX(-100%);
} }
@if $direction == rtl { @if $direction == rtl {
transform: translateX(100%); transform: translateX(100%);
} }
@if $direction == ttb { @if $direction == ttb {
transform: translateY(-100%); transform: translateY(-100%);
} }
@if $direction == btt { @if $direction == btt {
transform: translateY(100%); transform: translateY(100%);
} }
} }
} }
} }
} }

View File

@ -2,7 +2,8 @@
@font-face { @font-face {
font-family: 'element-icons'; font-family: 'element-icons';
src: url('#{var.$font-path}/element-icons.woff') format('woff'), src:
url('#{var.$font-path}/element-icons.woff') format('woff'),
/* chrome, firefox */ url('#{var.$font-path}/element-icons.ttf') format('truetype'); /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ /* chrome, firefox */ url('#{var.$font-path}/element-icons.ttf') format('truetype'); /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
font-weight: normal; font-weight: normal;
font-display: var.$font-display; font-display: var.$font-display;
@ -42,7 +43,7 @@
svg { svg {
height: 1em; height: 1em;
width: 1em; width: 1em;
} }
} }
.el-icon-ice-cream-round:before { .el-icon-ice-cream-round:before {

View File

@ -13,7 +13,10 @@
list-style: none; list-style: none;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
transition: border-color 0.3s, background-color 0.3s, color 0.3s; transition:
border-color 0.3s,
background-color 0.3s,
color 0.3s;
box-sizing: border-box; box-sizing: border-box;
white-space: nowrap; white-space: nowrap;
border-radius: var.$menu-item-border-radius; border-radius: var.$menu-item-border-radius;

View File

@ -13,7 +13,10 @@
top: 20px; top: 20px;
transform: translateX(-50%); transform: translateX(-50%);
background-color: var.$message-background-color; background-color: var.$message-background-color;
transition: opacity 0.3s, transform 0.4s, top 0.4s; transition:
opacity 0.3s,
transform 0.4s,
top 0.4s;
overflow: hidden; overflow: hidden;
padding: var.$message-padding; padding: var.$message-padding;
display: flex; display: flex;

View File

@ -39,17 +39,16 @@
} }
@function joinVarName($list) { @function joinVarName($list) {
$name: '--' + 'el'; $name: '--' + 'el';
@each $item in $list { @each $item in $list {
@if $item != '' { @if $item != '' {
$name: $name + '-' + $item; $name: $name + '-' + $item;
} }
} }
@return $name; @return $name;
} }
// getCssVarName('button', 'text-color') => '--el-button-text-color' // getCssVarName('button', 'text-color') => '--el-button-text-color'
@function getCssVarName($args...) { @function getCssVarName($args...) {
@return joinVarName($args); @return joinVarName($args);
} }

View File

@ -11,7 +11,13 @@
position: fixed; position: fixed;
background-color: var.$color-white; background-color: var.$color-white;
box-shadow: var.$notification-shadow; box-shadow: var.$notification-shadow;
transition: opacity 0.3s, transform 0.3s, left 0.3s, right 0.3s, top 0.4s, bottom 0.3s; transition:
opacity 0.3s,
transform 0.3s,
left 0.3s,
right 0.3s,
top 0.4s,
bottom 0.3s;
overflow: hidden; overflow: hidden;
&.right { &.right {

View File

@ -259,7 +259,6 @@
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
.more::before { .more::before {
line-height: 30px; line-height: 30px;
} }
@ -313,7 +312,6 @@
} }
} }
//@mixin pagination-button { //@mixin pagination-button {
// display: flex; // display: flex;
// justify-content: center; // justify-content: center;

View File

@ -124,7 +124,6 @@
} }
} }
&[data-popper-placement^='bottom'] .el-popper__arrow { &[data-popper-placement^='bottom'] .el-popper__arrow {
border-bottom-color: transparent; border-bottom-color: transparent;

View File

@ -63,7 +63,9 @@
box-sizing: border-box; box-sizing: border-box;
background: var.$switch-off-color; background: var.$switch-off-color;
cursor: pointer; cursor: pointer;
transition: border-color 0.1s, background-color 0.1s; transition:
border-color 0.1s,
background-color 0.1s;
vertical-align: middle; vertical-align: middle;
&:after { &:after {

View File

@ -179,7 +179,8 @@
> .el-tabs__header .el-tabs__item { > .el-tabs__header .el-tabs__item {
border-bottom: 1px solid transparent; border-bottom: 1px solid transparent;
border-left: 1px solid var(--border-color-base); border-left: 1px solid var(--border-color-base);
transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transition:
color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),
padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
&:first-child { &:first-child {
border-left: none; border-left: none;
@ -211,7 +212,9 @@
@include mixins.m(border-card) { @include mixins.m(border-card) {
background: var.$color-white; background: var.$color-white;
border: 1px solid var(--border-color-base); border: 1px solid var(--border-color-base);
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); box-shadow:
0 2px 4px 0 rgba(0, 0, 0, 0.12),
0 0 6px 0 rgba(0, 0, 0, 0.04);
> .el-tabs__content { > .el-tabs__content {
padding: 15px; padding: 15px;

View File

@ -20,7 +20,9 @@
transition: 0.2s; transition: 0.2s;
} }
.demo-block.hover { .demo-block.hover {
box-shadow: 0 0 8px 0 rgba(232, 237, 250, 0.6), 0 2px 4px 0 rgba(232, 237, 250, 0.5); box-shadow:
0 0 8px 0 rgba(232, 237, 250, 0.6),
0 2px 4px 0 rgba(232, 237, 250, 0.5);
} }
.demo-block code { .demo-block code {
font-family: Menlo, Monaco, Consolas, Courier, monospace; font-family: Menlo, Monaco, Consolas, Courier, monospace;
@ -305,7 +307,9 @@
right: 0; right: 0;
height: 2px; height: 2px;
width: 0; width: 0;
transition: width 0.2s, opacity 0.4s; transition:
width 0.2s,
opacity 0.4s;
opacity: 1; opacity: 1;
z-index: 999999; z-index: 999999;
} }
@ -943,7 +947,9 @@
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' preserveAspectRatio='none' viewBox='0 0 100 100'><path d='M0 98 L100 0 L100 1 L1 98' fill='%23FCC3C3' /></svg>"); background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' preserveAspectRatio='none' viewBox='0 0 100 100'><path d='M0 98 L100 0 L100 1 L1 98' fill='%23FCC3C3' /></svg>");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: 50%; background-position: 50%;
background-size: 100% 100%, auto; background-size:
100% 100%,
auto;
} }
.demo-color-box-lite { .demo-color-box-lite {
color: #303133; color: #303133;
@ -1189,7 +1195,13 @@ ul.language-list li {
} }
.icon-list li span { .icon-list li span {
line-height: normal; line-height: normal;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, font-family:
Helvetica Neue,
Helvetica,
PingFang SC,
Hiragino Sans GB,
Microsoft YaHei,
SimSun,
sans-serif; sans-serif;
color: #99a9bf; color: #99a9bf;
transition: color 0.15s linear; transition: color 0.15s linear;
@ -1811,7 +1823,13 @@ html {
margin: 0; margin: 0;
padding: 0; padding: 0;
height: 100%; height: 100%;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, font-family:
Helvetica Neue,
Helvetica,
PingFang SC,
Hiragino Sans GB,
Microsoft YaHei,
SimSun,
sans-serif; sans-serif;
font-weight: 400; font-weight: 400;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
@ -1972,7 +1990,8 @@ textarea {
@font-face { @font-face {
font-family: icomoon; font-family: icomoon;
src: url(data:application/vnd.ms-fontobject;base64,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); src: url(data:application/vnd.ms-fontobject;base64,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);
src: url(data:application/vnd.ms-fontobject;base64,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#iefix) src:
url(data:application/vnd.ms-fontobject;base64,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#iefix)
format('embedded-opentype'), format('embedded-opentype'),
url(data:font/ttf;base64,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) url(data:font/ttf;base64,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)
format('truetype'), format('truetype'),

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<html> <html>
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />

View File

@ -10,9 +10,51 @@
window.REST_ENDPOINT = '{{REST_ENDPOINT}}'; window.REST_ENDPOINT = '{{REST_ENDPOINT}}';
</script> </script>
<% if(!isDev){ %> <% if(!isDev){ %>
<script type="text/javascript" src='https://cdn-rs.n8n.io/v1/ra.min.js'></script> <script type="text/javascript" src="https://cdn-rs.n8n.io/v1/ra.min.js"></script>
<% } %> <% } %>
<script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script> <script>
!(function (t, e) {
var o, n, p, r;
e.__SV ||
((window.posthog = e),
(e._i = []),
(e.init = function (i, s, a) {
function g(t, e) {
var o = e.split('.');
2 == o.length && ((t = t[o[0]]), (e = o[1])),
(t[e] = function () {
t.push([e].concat(Array.prototype.slice.call(arguments, 0)));
});
}
((p = t.createElement('script')).type = 'text/javascript'),
(p.async = !0),
(p.src = s.api_host + '/static/array.js'),
(r = t.getElementsByTagName('script')[0]).parentNode.insertBefore(p, r);
var u = e;
for (
void 0 !== a ? (u = e[a] = []) : (a = 'posthog'),
u.people = u.people || [],
u.toString = function (t) {
var e = 'posthog';
return 'posthog' !== a && (e += '.' + a), t || (e += ' (stub)'), e;
},
u.people.toString = function () {
return u.toString(1) + '.people (stub)';
},
o =
'capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags'.split(
' ',
),
n = 0;
n < o.length;
n++
)
g(u, o[n]);
e._i.push([i, s, a]);
}),
(e.__SV = 1));
})(document, window.posthog || []);
</script>
<title>n8n.io - Workflow Automation</title> <title>n8n.io - Workflow Automation</title>
</head> </head>

View File

@ -65,7 +65,7 @@
"n8n-workflow": "workspace:*", "n8n-workflow": "workspace:*",
"normalize-wheel": "^1.0.1", "normalize-wheel": "^1.0.1",
"pinia": "^2.1.6", "pinia": "^2.1.6",
"prettier": "^2.8.8", "prettier": "^3.0.0",
"stream-browserify": "^3.0.0", "stream-browserify": "^3.0.0",
"timeago.js": "^4.0.2", "timeago.js": "^4.0.2",
"uuid": "^8.3.2", "uuid": "^8.3.2",

View File

@ -188,7 +188,6 @@
} }
.tags-container { .tags-container {
.el-select-tags-wrapper .el-tag { .el-select-tags-wrapper .el-tag {
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
@ -222,15 +221,18 @@
cursor: not-allowed; cursor: not-allowed;
color: var(--color-foreground-dark); color: var(--color-foreground-dark);
} }
.el-input__inner, .el-input__inner::placeholder { .el-input__inner,
.el-input__inner::placeholder {
opacity: 1; opacity: 1;
color: var(--color-foreground-dark); color: var(--color-foreground-dark);
} }
} }
.el-select .el-input:not(.is-disabled ) .el-input__icon { .el-select .el-input:not(.is-disabled) .el-input__icon {
color: var(--color-text-dark); color: var(--color-text-dark);
} }
.el-input .el-input__inner { text-align: center; } .el-input .el-input__inner {
text-align: center;
}
.el-input:not(.is-disabled) .el-input__inner { .el-input:not(.is-disabled) .el-input__inner {
&, &,
&:hover, &:hover,

View File

@ -507,4 +507,3 @@ After changing the dynamic text file:
If a `headerText` section was changed, re-run `pnpm build:translations` in `/nodes-base`. If a `headerText` section was changed, re-run `pnpm build:translations` in `/nodes-base`.
> **Note**: To translate base and dynamic text simultaneously, run three terminals following the steps from both sections (first terminal running only once) and browse `http://localhost:8080`. > **Note**: To translate base and dynamic text simultaneously, run three terminals following the steps from both sections (first terminal running only once) and browse `http://localhost:8080`.

View File

@ -10,7 +10,8 @@
// Custom autocomplete item type icons // Custom autocomplete item type icons
// 1. Native and n8n extension functions: // 1. Native and n8n extension functions:
.cm-completionIcon-extension-function, .cm-completionIcon-native-function { .cm-completionIcon-extension-function,
.cm-completionIcon-native-function {
&::after { &::after {
content: 'ƒ'; content: 'ƒ';
} }

View File

@ -3,7 +3,7 @@ import { resolve } from 'path';
import { defineConfig, mergeConfig } from 'vite'; import { defineConfig, mergeConfig } from 'vite';
import { defineConfig as defineVitestConfig } from 'vitest/config'; import { defineConfig as defineVitestConfig } from 'vitest/config';
import { sentryVitePlugin } from '@sentry/vite-plugin'; import { sentryVitePlugin } from '@sentry/vite-plugin';
import { ViteEjsPlugin } from "vite-plugin-ejs"; import { ViteEjsPlugin } from 'vite-plugin-ejs';
import packageJSON from './package.json'; import packageJSON from './package.json';

View File

@ -1,6 +1,6 @@
![n8n.io - Workflow Automation](https://user-images.githubusercontent.com/65276001/173571060-9f2f6d7b-bac0-43b6-bdb2-001da9694058.png) ![n8n.io - Workflow Automation](https://user-images.githubusercontent.com/65276001/173571060-9f2f6d7b-bac0-43b6-bdb2-001da9694058.png)
# n8n-node-dev # n8n-node-dev
Currently very simple and not very sophisticated CLI which makes it easier Currently very simple and not very sophisticated CLI which makes it easier
to create credentials and nodes in TypeScript for n8n. to create credentials and nodes in TypeScript for n8n.
@ -131,14 +131,12 @@ Method is called when the workflow gets executed
- `execute`: Executed once no matter how many items - `execute`: Executed once no matter how many items
By default, `execute` should always be used, especially when creating a By default, `execute` should always be used, especially when creating a
third-party integration. The reason for this is that it provides much more third-party integration. The reason for this is that it provides much more
flexibility and allows, for example, returning a different number of items than flexibility and allows, for example, returning a different number of items than
it received as input. This becomes crucial when a node needs to query data such as _return it received as input. This becomes crucial when a node needs to query data such as _return
all users_. In such cases, the node typically receives only one input item but returns as all users_. In such cases, the node typically receives only one input item but returns as
many items as there are users. Therefore, when in doubt, it is recommended to use `execute`! many items as there are users. Therefore, when in doubt, it is recommended to use `execute`!
**Trigger node** **Trigger node**
Method is called once when the workflow gets activated. It can then trigger workflow runs and provide the necessary data by itself. Method is called once when the workflow gets activated. It can then trigger workflow runs and provide the necessary data by itself.

View File

@ -32,5 +32,5 @@
} }
] ]
}, },
"alias": ["Tweet"] "alias": ["Tweet"]
} }

View File

@ -9,10 +9,7 @@
"name": "On clicking 'execute'", "name": "On clicking 'execute'",
"type": "n8n-nodes-base.manualTrigger", "type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1, "typeVersion": 1,
"position": [ "position": [820, 380]
820,
380
]
}, },
{ {
"parameters": { "parameters": {
@ -35,10 +32,7 @@
"name": "Airtable", "name": "Airtable",
"type": "n8n-nodes-base.airtable", "type": "n8n-nodes-base.airtable",
"typeVersion": 1, "typeVersion": 1,
"position": [ "position": [1020, 380],
1020,
380
],
"credentials": { "credentials": {
"airtableApi": { "airtableApi": {
"id": "20", "id": "20",

View File

@ -136,8 +136,7 @@ describe('Type Validation', () => {
).toEqual(true); ).toEqual(true);
// Invalid value: // Invalid value:
expect(validateFieldType('json', ['one', 'two'], 'object').valid).toEqual(false); expect(validateFieldType('json', ['one', 'two'], 'object').valid).toEqual(false);
// eslint-disable-next-line prettier/prettier expect(validateFieldType('json', ['one', 'two'], 'object').valid).toEqual(false);
expect(validateFieldType('json', ["one", "two"], 'object').valid).toEqual(false);
expect(validateFieldType('json', '1', 'object').valid).toEqual(false); expect(validateFieldType('json', '1', 'object').valid).toEqual(false);
expect(validateFieldType('json', '[1]', 'object').valid).toEqual(false); expect(validateFieldType('json', '[1]', 'object').valid).toEqual(false);
expect(validateFieldType('json', '1.1', 'object').valid).toEqual(false); expect(validateFieldType('json', '1.1', 'object').valid).toEqual(false);

View File

@ -1,4 +1,4 @@
lockfileVersion: '6.1' lockfileVersion: '6.0'
settings: settings:
autoInstallPeers: true autoInstallPeers: true
@ -11,6 +11,7 @@ overrides:
'@types/node': ^18.16.16 '@types/node': ^18.16.16
chokidar: 3.5.2 chokidar: 3.5.2
jsonwebtoken: 9.0.0 jsonwebtoken: 9.0.0
prettier: ^3.0.0
semver: ^7.5.4 semver: ^7.5.4
tough-cookie: ^4.1.3 tough-cookie: ^4.1.3
tslib: ^2.6.1 tslib: ^2.6.1
@ -91,9 +92,6 @@ importers:
p-limit: p-limit:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0 version: 3.1.0
prettier:
specifier: ^2.8.8
version: 2.8.8
rimraf: rimraf:
specifier: ^5.0.1 specifier: ^5.0.1
version: 5.0.1 version: 5.0.1
@ -887,8 +885,8 @@ importers:
specifier: ^2.1.6 specifier: ^2.1.6
version: 2.1.6(typescript@5.1.6)(vue@3.3.4) version: 2.1.6(typescript@5.1.6)(vue@3.3.4)
prettier: prettier:
specifier: ^2.8.8 specifier: ^3.0.0
version: 2.8.8 version: 3.0.0
stream-browserify: stream-browserify:
specifier: ^3.0.0 specifier: ^3.0.0
version: 3.0.0 version: 3.0.0
@ -4966,7 +4964,7 @@ packages:
less-loader: 11.1.3(less@4.1.3)(webpack@5.75.0) less-loader: 11.1.3(less@4.1.3)(webpack@5.75.0)
postcss: 8.4.27 postcss: 8.4.27
postcss-loader: 7.3.3(postcss@8.4.27)(webpack@5.75.0) postcss-loader: 7.3.3(postcss@8.4.27)(webpack@5.75.0)
prettier: 2.8.8 prettier: 3.0.0
react: 17.0.2 react: 17.0.2
react-dom: 18.2.0(react@17.0.2) react-dom: 18.2.0(react@17.0.2)
resolve-url-loader: 5.0.0 resolve-url-loader: 5.0.0
@ -5280,7 +5278,7 @@ packages:
jscodeshift: 0.14.0(@babel/preset-env@7.22.9) jscodeshift: 0.14.0(@babel/preset-env@7.22.9)
leven: 3.1.0 leven: 3.1.0
ora: 5.4.1 ora: 5.4.1
prettier: 2.8.8 prettier: 3.0.0
prompts: 2.4.2 prompts: 2.4.2
puppeteer-core: 2.1.1 puppeteer-core: 2.1.1
read-pkg-up: 7.0.1 read-pkg-up: 7.0.1
@ -5331,7 +5329,7 @@ packages:
globby: 11.1.0 globby: 11.1.0
jscodeshift: 0.14.0(@babel/preset-env@7.22.9) jscodeshift: 0.14.0(@babel/preset-env@7.22.9)
lodash: 4.17.21 lodash: 4.17.21
prettier: 2.8.8 prettier: 3.0.0
recast: 0.23.3 recast: 0.23.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -17147,16 +17145,10 @@ packages:
fast-diff: 1.2.0 fast-diff: 1.2.0
dev: true dev: true
/prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
hasBin: true
/prettier@3.0.0: /prettier@3.0.0:
resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dev: true
/pretty-bytes@5.6.0: /pretty-bytes@5.6.0:
resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}

View File

@ -4,7 +4,7 @@ import fs from 'fs';
import path from 'path'; import path from 'path';
import { execSync } from 'child_process'; import { execSync } from 'child_process';
const prettier = path.resolve('node_modules', 'prettier', 'bin-prettier.js'); const prettier = path.resolve('node_modules', '.bin', 'prettier');
if (!fs.existsSync(prettier)) { if (!fs.existsSync(prettier)) {
throw new Error( throw new Error(