diff --git a/CHANGELOG.md b/CHANGELOG.md index 38c765cb5e6fa..3bcc6f99c00df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +# [0.228.0](https://github.com/n8n-io/n8n/compare/n8n@0.227.0...n8n@0.228.0) (2023-05-11) + + +### Bug Fixes + +* **AWS Rekognition Node:** Fix all different action type ([#6136](https://github.com/n8n-io/n8n/issues/6136)) ([22b82a4](https://github.com/n8n-io/n8n/commit/22b82a43a24bb8415eb8f4a941b05647ef8904c2)) +* **core:** Ensure DB repositories are initialized before the DB migrations are run ([#6220](https://github.com/n8n-io/n8n/issues/6220)) ([500c0eb](https://github.com/n8n-io/n8n/commit/500c0ebce34dc2d21a531176dee965a70abec5f8)) +* **core:** Move nodeExecute InternalHook calls to hookFunctionsSave ([#6193](https://github.com/n8n-io/n8n/issues/6193)) ([f00b2ae](https://github.com/n8n-io/n8n/commit/f00b2ae3eaa225e483abc8defdc58d27b7d2c5e8)) +* Correctly save executions that failed when polling as error instead of new ([#6192](https://github.com/n8n-io/n8n/issues/6192)) ([06948b5](https://github.com/n8n-io/n8n/commit/06948b5ba5775b4f03d1ce46d57a461014317d51)) +* **editor:** Add loading skeletons to Executions list page ([#6184](https://github.com/n8n-io/n8n/issues/6184)) ([eae3a55](https://github.com/n8n-io/n8n/commit/eae3a55cc6b87bc8998d18d3d32d0d03013996b1)) +* **editor:** Display SSO entry in Settings on Cloud ([#6181](https://github.com/n8n-io/n8n/issues/6181)) ([b0a1899](https://github.com/n8n-io/n8n/commit/b0a1899e7141e5726d4fcbca6bba47e8e4b5cef7)) +* **editor:** Fix polling trigger check for `runData` ([#6130](https://github.com/n8n-io/n8n/issues/6130)) ([80831cd](https://github.com/n8n-io/n8n/commit/80831cd7c60f77557c37317600690a289d966448)) +* **editor:** Fix viewing and downloading of binary data ([#6218](https://github.com/n8n-io/n8n/issues/6218)) ([b9779c3](https://github.com/n8n-io/n8n/commit/b9779c32936c8b5e2385226ecab1025ff88d7044)) +* **editor:** Flag issues only on workflow activation ([#6127](https://github.com/n8n-io/n8n/issues/6127)) ([1b49c17](https://github.com/n8n-io/n8n/commit/1b49c17f38e97547430c407e21284b0c508469fa)) +* **editor:** Remove duplicate mapping of `item.json` key in data pinning ([#6135](https://github.com/n8n-io/n8n/issues/6135)) ([91fee0c](https://github.com/n8n-io/n8n/commit/91fee0ca667f233c0bde0dc6089bbed7d7db5b5f)) +* **editor:** Show the correct actions count in the nodes list ([#6183](https://github.com/n8n-io/n8n/issues/6183)) ([751e132](https://github.com/n8n-io/n8n/commit/751e132968470144cfca1c1b7ca22caf2c4c1de4)) +* **editor:** Update and add design system checkbox component to Editor ([#6178](https://github.com/n8n-io/n8n/issues/6178)) ([13c143e](https://github.com/n8n-io/n8n/commit/13c143eb6df41457fbd361674f2063b983a0e077)) +* **editor:** Update and fix storybook (was failing to run in local dev mode) ([#6180](https://github.com/n8n-io/n8n/issues/6180)) ([1e6a75f](https://github.com/n8n-io/n8n/commit/1e6a75f3416cdfcce1299dc9d242e23d0ea97ad3)) +* **FTP Node:** Use filename instead of remote filepath for downloaded binary data ([#6170](https://github.com/n8n-io/n8n/issues/6170)) ([be08933](https://github.com/n8n-io/n8n/commit/be089331b372e029ab5516b91e63a2d5d9033719)) +* **Google Sheets Node:** Upgrade xlsx to address CVE-2023-30533 ([#6172](https://github.com/n8n-io/n8n/issues/6172)) ([45dc985](https://github.com/n8n-io/n8n/commit/45dc985af742b049dc5673cf972da704d1f1f220)) +* **HTTP Request Node:** Correctly doesn't redirect on non GET method ([#6132](https://github.com/n8n-io/n8n/issues/6132)) ([3f5c606](https://github.com/n8n-io/n8n/commit/3f5c6062542f3b2b8a02cf0820e03da3f01d8bf2)) +* **MySQL Node:** Node should return date types as strings ([#6169](https://github.com/n8n-io/n8n/issues/6169)) ([5d77ec7](https://github.com/n8n-io/n8n/commit/5d77ec76e3c47fe9f9d7f31fe6c03827685ec576)) +* **Postgres Node:** Always return TIMESTAMP and TIMESTAMPZ as ISO string ([#6145](https://github.com/n8n-io/n8n/issues/6145)) ([0eb4d9f](https://github.com/n8n-io/n8n/commit/0eb4d9fc16aad1d1a350ba074c4b86712fbd90a1)) +* Prevent overflow when rendering expression hints ([#6214](https://github.com/n8n-io/n8n/issues/6214)) ([c717771](https://github.com/n8n-io/n8n/commit/c7177719e5f60813f4d15f7f97f1b4f253e29b07)) +* Prevent unnecessary error messages also for data loaded flag ([#6201](https://github.com/n8n-io/n8n/issues/6201)) ([d5e62ff](https://github.com/n8n-io/n8n/commit/d5e62ff096ddefd52dae742166fe92ceef17ded6)) + + +### Features + +* **Airtable Node:** Access token support ([#6160](https://github.com/n8n-io/n8n/issues/6160)) ([f9fd820](https://github.com/n8n-io/n8n/commit/f9fd82040ac09914a03e5b9f8f84fce5f6a99835)) +* **Code Node:** Add Python support ([#4295](https://github.com/n8n-io/n8n/issues/4295)) ([35c8510](https://github.com/n8n-io/n8n/commit/35c8510ab6d607fe59056a4aa1d8d148e194d12c)) +* **core:** Improve health check ([#6205](https://github.com/n8n-io/n8n/issues/6205)) ([9e7b9fb](https://github.com/n8n-io/n8n/commit/9e7b9fb443046c73135efb70d0d1894207125f66)) +* Create NPM node ([#6177](https://github.com/n8n-io/n8n/issues/6177)) ([f3bc6f1](https://github.com/n8n-io/n8n/commit/f3bc6f19b68f6bd4bd99614f60bd6833bd15813f)) +* **Date & Time Node:** Overhaul of the node ([#5904](https://github.com/n8n-io/n8n/issues/5904)) ([7d1d1f7](https://github.com/n8n-io/n8n/commit/7d1d1f7872163cecb468c317670da2d8b89a7651)) +* **HubSpot Node:** Overhaul the HubSpot Node ([#4337](https://github.com/n8n-io/n8n/issues/4337)) ([2913e67](https://github.com/n8n-io/n8n/commit/2913e676e639757cdf1a513ad35a7df0e494fa6f)) +* **JotForm Trigger Node:** Add support for hipaa-api.jotform.com ([#6171](https://github.com/n8n-io/n8n/issues/6171)) ([3074f42](https://github.com/n8n-io/n8n/commit/3074f42b3b98cf0dbdc13ad7b927d6b7fc726fab)) +* **Kafka Trigger Node:** Add non-parallel execution ([#6175](https://github.com/n8n-io/n8n/issues/6175)) ([814ea51](https://github.com/n8n-io/n8n/commit/814ea5185ce82e0a7687b41161602b45f92bee93)) + + + # [0.227.0](https://github.com/n8n-io/n8n/compare/n8n@0.226.0...n8n@0.227.0) (2023-05-03) diff --git a/package.json b/package.json index f3117e3b155c5..9479fcff472bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "n8n", - "version": "0.227.0", + "version": "0.228.0", "private": true, "homepage": "https://n8n.io", "engines": { @@ -80,7 +80,6 @@ "tslib": "^2.5.0", "ts-node": "^10.9.1", "typescript": "^5.0.3", - "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", "xml2js": "^0.5.0", "cpy@8>globby": "^11.1.0", "qqjs>globby": "^11.1.0" diff --git a/packages/cli/package.json b/packages/cli/package.json index 39112605e2851..a153189ba5552 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "n8n", - "version": "0.227.0", + "version": "0.228.0", "description": "n8n Workflow Automation Tool", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", diff --git a/packages/cli/src/NodeTypes.ts b/packages/cli/src/NodeTypes.ts index b2dfb4d2d8f66..8bb2335355df9 100644 --- a/packages/cli/src/NodeTypes.ts +++ b/packages/cli/src/NodeTypes.ts @@ -13,7 +13,9 @@ import { LoadNodesAndCredentials } from './LoadNodesAndCredentials'; @Service() export class NodeTypes implements INodeTypes { - constructor(private nodesAndCredentials: LoadNodesAndCredentials) { + constructor(private nodesAndCredentials: LoadNodesAndCredentials) {} + + init() { // Some nodeTypes need to get special parameters applied like the // polling nodes the polling times this.applySpecialNodeParameters(); diff --git a/packages/cli/src/commands/BaseCommand.ts b/packages/cli/src/commands/BaseCommand.ts index e629458b91b1a..2368918a5705d 100644 --- a/packages/cli/src/commands/BaseCommand.ts +++ b/packages/cli/src/commands/BaseCommand.ts @@ -1,7 +1,6 @@ import { Command } from '@oclif/command'; import { ExitError } from '@oclif/errors'; import { Container } from 'typedi'; -import type { INodeTypes } from 'n8n-workflow'; import { LoggerProxy, ErrorReporterProxy as ErrorReporter, sleep } from 'n8n-workflow'; import type { IUserSettings } from 'n8n-core'; import { BinaryDataManager, UserSettings } from 'n8n-core'; @@ -31,7 +30,7 @@ export abstract class BaseCommand extends Command { protected loadNodesAndCredentials: LoadNodesAndCredentials; - protected nodeTypes: INodeTypes; + protected nodeTypes: NodeTypes; protected userSettings: IUserSettings; @@ -51,6 +50,7 @@ export abstract class BaseCommand extends Command { this.loadNodesAndCredentials = Container.get(LoadNodesAndCredentials); await this.loadNodesAndCredentials.init(); this.nodeTypes = Container.get(NodeTypes); + this.nodeTypes.init(); const credentialTypes = Container.get(CredentialTypes); CredentialsOverwrites(credentialTypes); diff --git a/packages/core/package.json b/packages/core/package.json index 699e12149c62b..5df23866e6fce 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "n8n-core", - "version": "0.166.0", + "version": "0.167.0", "description": "Core functionality of n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", diff --git a/packages/core/src/WorkflowExecute.ts b/packages/core/src/WorkflowExecute.ts index 072105c76a6e8..88411e4f93cbb 100644 --- a/packages/core/src/WorkflowExecute.ts +++ b/packages/core/src/WorkflowExecute.ts @@ -199,10 +199,11 @@ export class WorkflowExecute { if (node && pinData && pinData[node.name]) { incomingData.push(pinData[node.name]); } else { - incomingData.push( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - runData[connection.node][runIndex].data![connection.type][connection.index]!, - ); + const nodeIncomingData = + runData[connection.node][runIndex]?.data?.[connection.type][connection.index]; + if (nodeIncomingData) { + incomingData.push(nodeIncomingData); + } } incomingSourceData.main.push({ diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 27e945f2198d8..0b7f495fb1635 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -1,6 +1,6 @@ { "name": "n8n-design-system", - "version": "0.63.0", + "version": "0.64.0", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", "author": { diff --git a/packages/design-system/src/components/N8nColorPicker/ColorPicker.stories.ts b/packages/design-system/src/components/N8nColorPicker/ColorPicker.stories.ts new file mode 100644 index 0000000000000..65ac0d6dfe561 --- /dev/null +++ b/packages/design-system/src/components/N8nColorPicker/ColorPicker.stories.ts @@ -0,0 +1,59 @@ +import { action } from '@storybook/addon-actions'; +import type { StoryFn } from '@storybook/vue'; +import N8nColorPicker from './ColorPicker.vue'; + +export default { + title: 'Atoms/ColorPicker', + component: N8nColorPicker, + argTypes: { + disabled: { + control: 'boolean', + }, + size: { + control: 'select', + options: ['mini', 'small', 'medium', 'large'], + }, + showAlpha: { + control: 'boolean', + }, + colorFormat: { + control: 'select', + options: ['hsl', 'hsv', 'hex', 'rgb'], + }, + popperClass: { + control: 'text', + }, + predefine: { + control: 'array', + }, + }, +}; + +const methods = { + onChange: action('change'), + onActiveChange: action('active-change'), + onInput: action('input'), +}; + +const DefaultTemplate: StoryFn = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { + N8nColorPicker, + }, + data: () => ({ + color: null, + }), + template: + '', + methods, +}); + +export const Default = DefaultTemplate.bind({}); +Default.args = { + disabled: false, + size: 'medium', + showAlpha: false, + colorFormat: '', + popperClass: '', + showInput: true, +}; diff --git a/packages/design-system/src/components/N8nColorPicker/ColorPicker.vue b/packages/design-system/src/components/N8nColorPicker/ColorPicker.vue new file mode 100644 index 0000000000000..5a52c6d109350 --- /dev/null +++ b/packages/design-system/src/components/N8nColorPicker/ColorPicker.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/packages/design-system/src/components/N8nColorPicker/__tests__/ColorPicker.spec.ts b/packages/design-system/src/components/N8nColorPicker/__tests__/ColorPicker.spec.ts new file mode 100644 index 0000000000000..0367928bc4beb --- /dev/null +++ b/packages/design-system/src/components/N8nColorPicker/__tests__/ColorPicker.spec.ts @@ -0,0 +1,16 @@ +import { render } from '@testing-library/vue'; +import N8nColorPicker from '../ColorPicker.vue'; + +describe('components', () => { + describe('N8nColorPicker', () => { + it('should render with input', () => { + const { container } = render(N8nColorPicker); + expect(container).toMatchSnapshot(); + }); + + it('should render without input', () => { + const { container } = render(N8nColorPicker, { props: { showInput: false } }); + expect(container).toMatchSnapshot(); + }); + }); +}); diff --git a/packages/design-system/src/components/N8nColorPicker/__tests__/__snapshots__/ColorPicker.spec.ts.snap b/packages/design-system/src/components/N8nColorPicker/__tests__/__snapshots__/ColorPicker.spec.ts.snap new file mode 100644 index 0000000000000..1e4756cfee719 --- /dev/null +++ b/packages/design-system/src/components/N8nColorPicker/__tests__/__snapshots__/ColorPicker.spec.ts.snap @@ -0,0 +1,269 @@ +// Vitest Snapshot v1 + +exports[`components > N8nColorPicker > should render with input 1`] = ` +
+ +
+ +
+ + + + +
+ +