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,6 +36,7 @@ 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:

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(),
[100, 100],
{
realMouse: true, realMouse: true,
abs: 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(),
[100, 100],
{
realMouse: true, realMouse: true,
abs: 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,14 +83,9 @@ 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);
@ -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

@ -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

@ -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,7 +12,7 @@
<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.

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

@ -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;

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

@ -52,4 +52,3 @@
@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

@ -137,8 +137,6 @@ it received as input. This becomes crucial when a node needs to query data such
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

@ -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(