From ef87da4c193a08e089e48044906a4f5ce9959a22 Mon Sep 17 00:00:00 2001 From: Alex Grozav Date: Thu, 6 Feb 2025 12:44:30 +0200 Subject: [PATCH] feat: Add reusable frontend `composables` package (#13077) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ --- codecov.yml | 1 + packages/design-system/.eslintrc.js | 10 +- packages/design-system/package.json | 8 +- .../N8nKeyboardShortcut.vue | 2 +- .../components/N8nUserStack/UserStack.test.ts | 3 +- .../design-system/src/{main.ts => index.ts} | 1 - packages/design-system/tsconfig.json | 23 +- packages/design-system/vite.config.mts | 30 +- packages/editor-ui/.eslintrc.js | 10 +- packages/editor-ui/package.json | 4 + .../src/components/CanvasControls.vue | 2 +- packages/editor-ui/src/components/Node.vue | 3 +- .../src/components/NodeDetailsView.vue | 2 +- packages/editor-ui/src/components/Sticky.vue | 2 +- .../src/components/canvas/Canvas.test.ts | 2 +- .../src/components/canvas/Canvas.vue | 3 +- .../src/composables/useCanvasMouseSelect.ts | 2 +- .../src/composables/useCanvasPanning.ts | 2 +- .../src/composables/useDebugInfo.test.ts | 2 +- .../editor-ui/src/composables/useDebugInfo.ts | 2 +- .../src/composables/useHistoryHelper.ts | 2 +- .../src/composables/useKeybindings.ts | 2 +- .../editor-ui/src/composables/useNodeBase.ts | 2 +- packages/editor-ui/src/views/NodeView.vue | 2 +- packages/editor-ui/tsconfig.json | 23 +- packages/editor-ui/vite.config.mts | 8 +- .../frontend/@n8n/composables/.eslintrc.cjs | 3 + packages/frontend/@n8n/composables/.gitignore | 24 + packages/frontend/@n8n/composables/README.md | 24 + .../frontend/@n8n/composables/biome.jsonc | 4 + .../frontend/@n8n/composables/package.json | 46 ++ .../@n8n/composables/src/__tests__/setup.ts | 4 + .../frontend/@n8n/composables/src/shims.d.ts | 1 + .../composables/src}/useDeviceSupport.test.ts | 2 +- .../@n8n/composables/src}/useDeviceSupport.ts | 0 .../frontend/@n8n/composables/tsconfig.json | 10 + .../frontend/@n8n/composables/tsup.config.ts | 11 + .../frontend/@n8n/composables/vite.config.ts | 4 + .../frontend/tooling/eslint-config/index.cjs | 14 + .../frontend/tooling/eslint-config/index.d.ts | 3 + .../tooling/eslint-config/package.json | 23 + .../tooling/typescript-config/package.json | 18 + .../tooling/typescript-config/tsconfig.json | 13 + .../frontend/tooling/vitest-config/index.d.ts | 3 + .../frontend/tooling/vitest-config/index.mjs | 30 + .../tooling/vitest-config/package.json | 27 + pnpm-lock.yaml | 566 +++++++++++------- pnpm-workspace.yaml | 8 + turbo.json | 2 + 49 files changed, 684 insertions(+), 309 deletions(-) rename packages/design-system/src/{main.ts => index.ts} (74%) create mode 100644 packages/frontend/@n8n/composables/.eslintrc.cjs create mode 100644 packages/frontend/@n8n/composables/.gitignore create mode 100644 packages/frontend/@n8n/composables/README.md create mode 100644 packages/frontend/@n8n/composables/biome.jsonc create mode 100644 packages/frontend/@n8n/composables/package.json create mode 100644 packages/frontend/@n8n/composables/src/__tests__/setup.ts create mode 100644 packages/frontend/@n8n/composables/src/shims.d.ts rename packages/{design-system/src/composables => frontend/@n8n/composables/src}/useDeviceSupport.test.ts (98%) rename packages/{design-system/src/composables => frontend/@n8n/composables/src}/useDeviceSupport.ts (100%) create mode 100644 packages/frontend/@n8n/composables/tsconfig.json create mode 100644 packages/frontend/@n8n/composables/tsup.config.ts create mode 100644 packages/frontend/@n8n/composables/vite.config.ts create mode 100644 packages/frontend/tooling/eslint-config/index.cjs create mode 100644 packages/frontend/tooling/eslint-config/index.d.ts create mode 100644 packages/frontend/tooling/eslint-config/package.json create mode 100644 packages/frontend/tooling/typescript-config/package.json create mode 100644 packages/frontend/tooling/typescript-config/tsconfig.json create mode 100644 packages/frontend/tooling/vitest-config/index.d.ts create mode 100644 packages/frontend/tooling/vitest-config/index.mjs create mode 100644 packages/frontend/tooling/vitest-config/package.json diff --git a/codecov.yml b/codecov.yml index 362ebcb760..dfcd2b0d9c 100644 --- a/codecov.yml +++ b/codecov.yml @@ -46,6 +46,7 @@ component_management: - packages/@n8n/codemirror-lang/** - packages/design-system/** - packages/editor-ui/** + - packages/frontend/** - component_id: nodes_packages name: Nodes paths: diff --git a/packages/design-system/.eslintrc.js b/packages/design-system/.eslintrc.js index deece11c63..99d5ff4c6e 100644 --- a/packages/design-system/.eslintrc.js +++ b/packages/design-system/.eslintrc.js @@ -1,13 +1,9 @@ -const sharedOptions = require('@n8n_io/eslint-config/shared'); +const { createFrontendEslintConfig } = require('@n8n/frontend-eslint-config'); /** * @type {import('@types/eslint').ESLint.ConfigData} */ -module.exports = { - extends: ['@n8n_io/eslint-config/frontend'], - - ...sharedOptions(__dirname, 'frontend'), - +module.exports = createFrontendEslintConfig(__dirname, { rules: { // TODO: Remove these 'import/no-default-export': 'warn', @@ -44,4 +40,4 @@ module.exports = { }, }, ], -}; +}); diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 730593efbd..f9b569a677 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -1,8 +1,8 @@ { "name": "n8n-design-system", "version": "1.67.0", - "main": "src/main.ts", - "import": "src/main.ts", + "main": "src/index.ts", + "import": "src/index.ts", "scripts": { "dev": "pnpm run storybook", "clean": "rimraf dist .turbo", @@ -19,6 +19,9 @@ "lintfix": "eslint src --ext .js,.ts,.vue --fix" }, "devDependencies": { + "@n8n/frontend-eslint-config": "workspace:*", + "@n8n/frontend-typescript-config": "workspace:*", + "@n8n/frontend-vitest-config": "workspace:*", "@n8n/storybook": "workspace:*", "@testing-library/jest-dom": "^6.6.3", "@testing-library/user-event": "^14.6.0", @@ -41,6 +44,7 @@ "vue-tsc": "catalog:frontend" }, "dependencies": { + "@n8n/composables": "workspace:*", "@fortawesome/fontawesome-svg-core": "^1.2.36", "@fortawesome/free-solid-svg-icons": "^5.15.4", "@fortawesome/vue-fontawesome": "^3.0.3", diff --git a/packages/design-system/src/components/N8nKeyboardShortcut/N8nKeyboardShortcut.vue b/packages/design-system/src/components/N8nKeyboardShortcut/N8nKeyboardShortcut.vue index 77bbc2d8c0..ea237e5531 100644 --- a/packages/design-system/src/components/N8nKeyboardShortcut/N8nKeyboardShortcut.vue +++ b/packages/design-system/src/components/N8nKeyboardShortcut/N8nKeyboardShortcut.vue @@ -1,7 +1,7 @@