n8n-editor-ui 1.110.1 → 1.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/assets/{AddDataStoreModal-D3j8deoq.css → AddDataStoreModal-B7jBhCjt.css} +5 -3
  2. package/dist/assets/{AddDataStoreModal-BXMe2_Yo.js → AddDataStoreModal-CLYFuWF4.js} +19 -9
  3. package/dist/assets/{AnimatedSpinner-CxbOZIWM.js → AnimatedSpinner-D7Nt5ZAz.js} +2 -1
  4. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-D-tU5Nsg.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BzK1dfc7.js} +2 -1
  5. package/dist/assets/{AuthView-ty01eojq.js → AuthView-Db8T18BU.js} +3 -2
  6. package/dist/assets/{ChangePasswordView-nmwMP1GF.js → ChangePasswordView-Clb7ta4t.js} +4 -3
  7. package/dist/assets/CollectionParameter-BGBoLgV2.js +5 -0
  8. package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CSmXlf80.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-BG5somV-.js} +2 -1
  9. package/dist/assets/{CredentialsView-IHneFweR.js → CredentialsView-CydHAPfb.js} +11 -9
  10. package/dist/assets/{DataStoreActions.vue_vue_type_script_setup_true_lang-Dug6Q9SH.js → DataStoreActions.vue_vue_type_script_setup_true_lang-qftEof1u.js} +7 -2
  11. package/dist/assets/{DataStoreDetailsView-DSpK3R_L.css → DataStoreDetailsView-C8fMxukz.css} +103 -82
  12. package/dist/assets/{DataStoreDetailsView-BZ7cLl6L.js → DataStoreDetailsView-DZK3pYSP.js} +1271 -696
  13. package/dist/assets/{DataStoreView-CzuM5UmJ.js → DataStoreView-CT0OnFLR.js} +14 -29
  14. package/dist/assets/{DemoFooter-CTFaju55.js → DemoFooter-DHwNRr6t.js} +7 -6
  15. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-DirQeoxa.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Y97PdUKW.js} +2 -1
  16. package/dist/assets/{EntityNotFound-SgHEB5Zx.js → EntityNotFound-BDjIF_1D.js} +2 -1
  17. package/dist/assets/{EntityUnAuthorised-Ba1UjrRW.js → EntityUnAuthorised-Dz3DXm1-.js} +2 -1
  18. package/dist/assets/{ErrorView-DR_boVdR.js → ErrorView-BH0St5KC.js} +2 -1
  19. package/dist/assets/{EvaluationsRootView-DutxuCnH.js → EvaluationsRootView-CnJlr4OF.js} +2 -1
  20. package/dist/assets/{EvaluationsView-ClUUTcAC.js → EvaluationsView-DABp8z-m.js} +4 -3
  21. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-_0D6TWFX.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-gCj_FZH6.js} +3 -2
  22. package/dist/assets/{ExecutionsView-gF8JMKIq.js → ExecutionsView-CivgrlFE.js} +14 -12
  23. package/dist/assets/{ExecutionsView-DpVZbkhT.css → ExecutionsView-GKNLT5Ec.css} +1 -1
  24. package/dist/assets/{FixedCollectionParameter-DTkvAml6.css → FixedCollectionParameter-Dg7ZadcB.css} +18 -18
  25. package/dist/assets/{FixedCollectionParameter-D9zye2vX.js → FixedCollectionParameter-l8xC6wRw.js} +7 -3
  26. package/dist/assets/{ForgotMyPasswordView-EkWEVktJ.js → ForgotMyPasswordView-WF87QWAH.js} +4 -3
  27. package/dist/assets/{InfoAccordion-u7XlbH6a.js → InfoAccordion-8iWJ2sSU.js} +2 -1
  28. package/dist/assets/{InsightsChartAverageRuntime-CoBgniUR.js → InsightsChartAverageRuntime-BEd6XJn6.js} +5 -4
  29. package/dist/assets/{InsightsChartFailed-Dn6SuM16.js → InsightsChartFailed-CVwzK3ch.js} +5 -4
  30. package/dist/assets/{InsightsChartFailureRate-CJl1j0ob.js → InsightsChartFailureRate-BeA77_lp.js} +5 -4
  31. package/dist/assets/{InsightsChartTimeSaved-B5DjojXI.js → InsightsChartTimeSaved-DkgR7j7U.js} +5 -4
  32. package/dist/assets/{InsightsChartTotal-T1SFp7S-.js → InsightsChartTotal--1QxzvAZ.js} +5 -4
  33. package/dist/assets/{InsightsDashboard-CCDahAm5.js → InsightsDashboard-cHCzH4ZY.js} +13 -11
  34. package/dist/assets/{InsightsPaywall-Cp82bMTp.js → InsightsPaywall-neQ9PmYP.js} +2 -1
  35. package/dist/assets/{InsightsSummary-I5vKNG0I.js → InsightsSummary-BekdjOxv.js} +4 -2
  36. package/dist/assets/{InsightsTableWorkflows-D1U89HJ4.js → InsightsTableWorkflows-LMO-UU8h.js} +5 -4
  37. package/dist/assets/{Logo-DHG_oEvt.js → Logo-DXNRuN8z.js} +2 -1
  38. package/dist/assets/{LogsPanel-CvmnM4bL.js → LogsPanel-2GQHQFmh.js} +38 -23
  39. package/dist/assets/{LogsPanel-BinqqXXh.css → LogsPanel-CUsQIBpC.css} +17 -17
  40. package/dist/assets/{MainHeader-pDg5KXTB.css → MainHeader-6lIHYgJG.css} +16 -16
  41. package/dist/assets/{MainHeader-CTxGLJsC.js → MainHeader-BlBek00C.js} +14 -13
  42. package/dist/assets/{MainSidebar-D_xwIVsL.js → MainSidebar-qdHg8D5V.js} +3 -2
  43. package/dist/assets/{NodeCreation-iNUuiza-.js → NodeCreation-DO5k3aK3.js} +4 -3
  44. package/dist/assets/{NodeCreator-DMpMHPcz.js → NodeCreator-C3Pmrqkh.js} +4 -6
  45. package/dist/assets/{NodeDetailsView-BKEGFeZ7.js → NodeDetailsView-BACft9ex.js} +18 -17
  46. package/dist/assets/{NodeDetailsView-CjdovDgq.css → NodeDetailsView-CBYV4Rrz.css} +11 -11
  47. package/dist/assets/{NodeDetailsViewV2-XPdbzrLu.js → NodeDetailsViewV2--1S2eK5u.js} +14 -13
  48. package/dist/assets/{NodeView-Bj14aKtm.js → NodeView-BRwQ5Cqs.js} +185 -113
  49. package/dist/assets/{NodeView-BRa11kAq.css → NodeView-Chs2u0U9.css} +70 -31
  50. package/dist/assets/{PageViewLayout--7SkYsc9.js → PageViewLayout-DldtilHz.js} +2 -1
  51. package/dist/assets/{PrebuiltAgentTemplatesView-B7fK6krA.js → PrebuiltAgentTemplatesView-ChyN8J2x.js} +3 -2
  52. package/dist/assets/{ProjectBreadcrumb-BxMwihEP.js → ProjectBreadcrumb-9uWmVmc7.js} +2 -1
  53. package/dist/assets/{ProjectHeader-CVfPUZNI.js → ProjectHeader-CWapIKXf.js} +93 -23
  54. package/dist/assets/{ProjectSettings-t9C-Ly49.js → ProjectSettings-BlYXGYRx.js} +5 -3
  55. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-zVio8c2n.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DjpouOrH.js} +2 -1
  56. package/dist/assets/{ResourcesListLayout-O-Z59wTE.js → ResourcesListLayout-CfDIFGjS.js} +7 -6
  57. package/dist/assets/{ResourcesListLayout-B5eMf4SI.css → ResourcesListLayout-vTwRIDRz.css} +8 -8
  58. package/dist/assets/{RunDataJson-0J6_FxmM.js → RunDataJson-CTm3-xdY.js} +4 -3
  59. package/dist/assets/{RunDataJsonActions-ZbUSwg32.js → RunDataJsonActions-B_yBOGYB.js} +2 -1
  60. package/dist/assets/{RunDataParsedAiContent-Byf4f3hM.js → RunDataParsedAiContent-Cg9vUI0v.js} +3 -2
  61. package/dist/assets/{RunDataSearch-CyCbN9Nc.js → RunDataSearch-DPt2MvbI.js} +2 -1
  62. package/dist/assets/{RunDataTable-Rj0zhULj.js → RunDataTable-DHVRSqQT.js} +2 -1
  63. package/dist/assets/{SamlOnboarding-UDfF4zGH.js → SamlOnboarding-CN_xGqen.js} +4 -3
  64. package/dist/assets/{SelectedItemsInfo-CfUb0ZrI.css → SelectedItemsInfo-Dl4uynXs.css} +5 -3
  65. package/dist/assets/{SelectedItemsInfo-64VntNmH.js → SelectedItemsInfo-DzoCyQOW.js} +12 -7
  66. package/dist/assets/{SettingsApiView-BMYiuOCY.js → SettingsApiView-BIKCRKGM.js} +2 -1
  67. package/dist/assets/{SettingsCommunityNodesView-BULfnkhp.js → SettingsCommunityNodesView-ClWYmDB8.js} +7 -4
  68. package/dist/assets/{SettingsExternalSecrets-DgYPNKtM.js → SettingsExternalSecrets-D58JxT3V.js} +2 -1
  69. package/dist/assets/{SettingsLdapView-B64PusRO.js → SettingsLdapView-uImCjvMm.js} +2 -1
  70. package/dist/assets/{SettingsLogStreamingView-DiDxOEmg.js → SettingsLogStreamingView-DUn62Yq4.js} +2 -1
  71. package/dist/assets/{SettingsPersonalView-TP__Drcl.js → SettingsPersonalView-DGiCMsXu.js} +2 -1
  72. package/dist/assets/{SettingsSourceControl-FiqxT6qx.js → SettingsSourceControl-CVik5czR.js} +2 -1
  73. package/dist/assets/{SettingsSso-e5ntwax1.js → SettingsSso-BQkWpsdO.js} +2 -1
  74. package/dist/assets/{SettingsUsageAndPlan-BiNhzaI3.js → SettingsUsageAndPlan-BuwgmEka.js} +2 -1
  75. package/dist/assets/{SettingsUsersView-g3odVDFj.js → SettingsUsersView-DCmtHeMa.js} +2 -1
  76. package/dist/assets/{SettingsView-5M3uETdg.js → SettingsView-CrBThv_a.js} +2 -1
  77. package/dist/assets/{SetupView-DOX9lfRU.js → SetupView-CES8Gnnv.js} +4 -3
  78. package/dist/assets/{SetupWorkflowCredentialsButton-DMIEMB5C.js → SetupWorkflowCredentialsButton-Bjhx_rck.js} +2 -1
  79. package/dist/assets/{SetupWorkflowFromTemplateView-DEJsN9PM.js → SetupWorkflowFromTemplateView-C8kmCc7J.js} +4 -3
  80. package/dist/assets/{SigninView-FKXG_00n.js → SigninView-24xKsh_S.js} +4 -3
  81. package/dist/assets/{SignoutView-ppJ6lbCU.js → SignoutView-DgFIUUyh.js} +2 -1
  82. package/dist/assets/{SignupView-CmcH1BYL.js → SignupView-BckB-uUh.js} +4 -3
  83. package/dist/assets/{TableBase-DBeBHkOY.js → TableBase-CQEzJfeN.js} +2 -1
  84. package/dist/assets/{Tags-CdXa3Xx9.js → Tags-DbX-5_Fk.js} +2 -2
  85. package/dist/assets/{TemplateDetails-BxvljQA3.js → TemplateDetails-BGraOFbY.js} +3 -2
  86. package/dist/assets/{TemplateList-CV9csLUI.js → TemplateList-5P1N08U1.js} +2 -1
  87. package/dist/assets/{TemplatesCollectionView-4dKgKAQR.js → TemplatesCollectionView-D2-SU0eR.js} +7 -7
  88. package/dist/assets/{TemplatesSearchView-taSkU7cY.js → TemplatesSearchView-ncBXTfOM.js} +4 -3
  89. package/dist/assets/{TemplatesView-CXSlz1M1.js → TemplatesView-DO7HuUts.js} +2 -1
  90. package/dist/assets/{TemplatesWorkflowView-C-x3Aov1.js → TemplatesWorkflowView-BvrjU4RD.js} +7 -7
  91. package/dist/assets/{TriggerPanel-C-c5cPsc.js → TriggerPanel-BFQ6veDz.js} +10 -8
  92. package/dist/assets/{VariablesView-Bh0OeH4s.css → VariablesView-BHcrNXsw.css} +6 -6
  93. package/dist/assets/{VariablesView-C3mX49G9.js → VariablesView-BVzruwEA.js} +17 -14
  94. package/dist/assets/{WorkerView-DYK4TcTw.js → WorkerView-DRM6mgWJ.js} +9 -6
  95. package/dist/assets/{WorkflowActivator-DZIgVvgL.js → WorkflowActivator-BOt1oNlm.js} +4 -3
  96. package/dist/assets/{WorkflowExecutionsInfoAccordion-CivRIQhL.js → WorkflowExecutionsInfoAccordion-BjZUTKcs.js} +3 -2
  97. package/dist/assets/{WorkflowExecutionsLandingPage-kBAMGqy2.js → WorkflowExecutionsLandingPage-ENKxL7Yh.js} +4 -3
  98. package/dist/assets/{WorkflowExecutionsPreview-Bnd5-B-d.js → WorkflowExecutionsPreview-Cdgg29u5.js} +5 -4
  99. package/dist/assets/{WorkflowExecutionsView-CIfisPDk.js → WorkflowExecutionsView-t3W7WuAy.js} +9 -9
  100. package/dist/assets/{WorkflowHistory-JXOUdJnK.js → WorkflowHistory--OLvuBs1.js} +3 -2
  101. package/dist/assets/{WorkflowOnboardingView-Dc1KYhGC.js → WorkflowOnboardingView-C8y96ur1.js} +2 -1
  102. package/dist/assets/{WorkflowPreview-BF9SI0vn.js → WorkflowPreview-C1XHoZmU.js} +2 -1
  103. package/dist/assets/{WorkflowsView-CTnvp65F.js → WorkflowsView-B9rxI0No.js} +272 -62
  104. package/dist/assets/{WorkflowsView-BuvoAeDm.css → WorkflowsView-MF9XcT0u.css} +186 -0
  105. package/dist/assets/{canvas-DbK7UyVG.js → canvas-D2PwiGnN.js} +1 -1
  106. package/dist/assets/{chartjs.utils-DIRvJRrn.js → chartjs.utils-B6sz8yOh.js} +2 -2
  107. package/dist/assets/{core-Br-UFy15.js → core-Be7WBA6o.js} +2 -1
  108. package/dist/assets/{en-DdNgUrpa.js → en-CJyn5rnO.js} +32 -25
  109. package/dist/assets/{global-link-actions--TiC75iP.js → global-link-actions-B9WsUojd.js} +1 -1
  110. package/dist/assets/index-4g2Akj0I.js +13861 -0
  111. package/dist/assets/{index-DXNU_2Fk.css → index-B7wrqKiF.css} +8207 -8184
  112. package/dist/assets/{index--OJ5nhDf.js → index-BJG79OsS.js} +326678 -342011
  113. package/dist/assets/{index-D2apwRup.js → index-LOlKxvn4.js} +2 -1
  114. package/dist/assets/loadDefaultEn-DNiURDi9.js +8 -0
  115. package/dist/assets/{pickBy-BljOBsPy.js → pickBy-BMn768eW.js} +1 -1
  116. package/dist/assets/{readyToRunWorkflows.store-Dhb8bhvk.js → readyToRunWorkflows.store-HSpbq3Bf.js} +2 -1
  117. package/dist/assets/readyToRunWorkflowsV2.store-DcRVIsRt.js +138 -0
  118. package/dist/assets/sqlite3-DBpDb1lf.wasm +0 -0
  119. package/dist/assets/sqlite3-opfs-async-proxy-CYRFPDln.js +579 -0
  120. package/dist/assets/sqlite3-worker1-bundler-friendly-DF3WqBKq.js +11289 -0
  121. package/dist/assets/{templateActions-B4GEcBXU.js → templateActions-DR_XHPc4.js} +1 -1
  122. package/dist/assets/{useBeforeUnload-ZtUpNFCu.js → useBeforeUnload-DmAaB1v5.js} +2 -1
  123. package/dist/assets/{useExecutionDebugging-Bve-aaKO.js → useExecutionDebugging-B8xDxcb6.js} +2 -1
  124. package/dist/assets/{useImportCurlCommand-CAuor9Pu.js → useImportCurlCommand-BaN8fxqM.js} +2 -1
  125. package/dist/assets/{useProjectPages-CH519D2j.js → useProjectPages-B-oTYbCo.js} +2 -1
  126. package/dist/assets/{usePushConnection-Db77V5LR.js → usePushConnection-Bcd2_XWM.js} +36 -22
  127. package/dist/assets/{useWorkflowActivate-7Rw9KyzM.js → useWorkflowActivate-BDE2t3MM.js} +2 -1
  128. package/dist/assets/worker-DZxlyUFA.js +11826 -0
  129. package/dist/index.html +4 -3
  130. package/index.html +1 -1
  131. package/package.json +1 -1
  132. package/vite/i18n-locales-hmr-helpers.ts +19 -0
  133. package/vite.config.mts +33 -6
  134. package/dist/assets/CollectionParameter-CQji5w8u.js +0 -4
  135. package/dist/assets/Tag-BQAJRKFE.js +0 -32
  136. package/dist/assets/Tag-Cg-Hqs2H.css +0 -153
  137. package/dist/assets/dataStore.store-HuymAG46.js +0 -288
package/dist/index.html CHANGED
@@ -7,14 +7,15 @@
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
8
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
9
9
  <link rel="icon" href="/{{BASE_PATH}}/favicon.ico" />
10
- <script src="/{{BASE_PATH}}/{{REST_ENDPOINT}}/config.js"></script>
10
+ %CONFIG_TAGS%
11
11
  <link rel="stylesheet" href="/{{BASE_PATH}}/static/prefers-color-scheme.css">
12
12
  <script src="/{{BASE_PATH}}/static/base-path.js" type="text/javascript"></script>
13
13
  <script src="/{{BASE_PATH}}/static/posthog.init.js" type="text/javascript"></script>
14
14
 
15
15
  <title>n8n.io - Workflow Automation</title>
16
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index--OJ5nhDf.js"></script>
17
- <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-DXNU_2Fk.css">
16
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-BJG79OsS.js"></script>
17
+ <link rel="modulepreload" crossorigin href="/{{BASE_PATH}}/assets/index-4g2Akj0I.js">
18
+ <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-B7wrqKiF.css">
18
19
  </head>
19
20
  <body>
20
21
  <noscript>
package/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
7
7
  <link rel="icon" href="/favicon.ico" />
8
- %CONFIG_SCRIPT%
8
+ %CONFIG_TAGS%
9
9
  <link rel="stylesheet" href="/{{BASE_PATH}}/static/prefers-color-scheme.css">
10
10
  <script src="/{{BASE_PATH}}/static/base-path.js" type="text/javascript"></script>
11
11
  <script src="/{{BASE_PATH}}/static/posthog.init.js" type="text/javascript"></script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-editor-ui",
3
- "version": "1.110.1",
3
+ "version": "1.112.0",
4
4
  "description": "Workflow Editor UI for n8n",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -0,0 +1,19 @@
1
+ import { sep as pathSep } from 'path';
2
+
3
+ export const isLocaleFile = (file: string): boolean =>
4
+ file.endsWith('.json') && file.includes(`${pathSep}locales${pathSep}`);
5
+
6
+ export const extractLocale = (file: string): string | null => {
7
+ const match = file.match(new RegExp(`${pathSep}locales${pathSep}([^${pathSep}]+)\\.json$`));
8
+ return match?.[1] ?? null;
9
+ };
10
+
11
+ export const sendLocaleUpdate = (server: any, file: string): void => {
12
+ if (!isLocaleFile(file)) return;
13
+ const locale = extractLocale(file);
14
+ server.ws.send({
15
+ type: 'custom',
16
+ event: 'n8n:locale-update',
17
+ data: { locales: locale ? [locale] : [], file },
18
+ });
19
+ };
package/vite.config.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import vue from '@vitejs/plugin-vue';
2
- import { posix as pathPosix, resolve } from 'path';
2
+ import { posix as pathPosix, resolve, sep as pathSep } from 'path';
3
3
  import { defineConfig, mergeConfig, type UserConfig } from 'vite';
4
4
  import { viteStaticCopy } from 'vite-plugin-static-copy';
5
5
  import { nodePolyfills } from 'vite-plugin-node-polyfills';
@@ -12,6 +12,7 @@ import components from 'unplugin-vue-components/vite';
12
12
  import browserslistToEsbuild from 'browserslist-to-esbuild';
13
13
  import legacy from '@vitejs/plugin-legacy';
14
14
  import browserslist from 'browserslist';
15
+ import { isLocaleFile, sendLocaleUpdate } from './vite/i18n-locales-hmr-helpers';
15
16
 
16
17
  const publicPath = process.env.VUE_APP_PUBLIC_PATH || '/';
17
18
 
@@ -24,6 +25,8 @@ const packagesDir = resolve(__dirname, '..', '..');
24
25
  const alias = [
25
26
  { find: '@', replacement: resolve(__dirname, 'src') },
26
27
  { find: 'stream', replacement: 'stream-browserify' },
28
+ // Ensure bare imports resolve to sources (not dist)
29
+ { find: '@n8n/i18n', replacement: resolve(packagesDir, 'frontend', '@n8n', 'i18n', 'src') },
27
30
  {
28
31
  find: /^@n8n\/chat(.+)$/,
29
32
  replacement: resolve(packagesDir, 'frontend', '@n8n', 'chat', 'src$1'),
@@ -126,17 +129,41 @@ const plugins: UserConfig['plugins'] = [
126
129
  {
127
130
  name: 'Insert config script',
128
131
  transformIndexHtml: (html, ctx) => {
129
- const replacement = ctx.server
130
- ? '' // Skip when using Vite dev server
131
- : '<script src="/{{BASE_PATH}}/{{REST_ENDPOINT}}/config.js"></script>';
132
-
133
- return html.replace('%CONFIG_SCRIPT%', replacement);
132
+ // Skip config tags when using Vite dev server. Otherwise the BE
133
+ // will replace it with the actual config script in cli/src/commands/start.ts.
134
+ return ctx.server
135
+ ? html
136
+ .replace('%CONFIG_TAGS%', '')
137
+ .replaceAll('/{{BASE_PATH}}', '//localhost:5678')
138
+ .replaceAll('/{{REST_ENDPOINT}}', '/rest')
139
+ : html;
134
140
  },
135
141
  },
136
142
  // For sanitize-html
137
143
  nodePolyfills({
138
144
  include: ['fs', 'path', 'url', 'util', 'timers'],
139
145
  }),
146
+ {
147
+ name: 'i18n-locales-hmr',
148
+ configureServer(server) {
149
+ const localesDir = resolve(packagesDir, 'frontend', '@n8n', 'i18n', 'src', 'locales');
150
+ server.watcher.add(localesDir);
151
+
152
+ // Only emit for add/unlink; change events are handled in handleHotUpdate
153
+ server.watcher.on('all', (event, file) => {
154
+ if ((event === 'add' || event === 'unlink') && isLocaleFile(file)) {
155
+ sendLocaleUpdate(server, file);
156
+ }
157
+ });
158
+ },
159
+ handleHotUpdate(ctx) {
160
+ const { file, server } = ctx;
161
+ if (!isLocaleFile(file)) return;
162
+ sendLocaleUpdate(server, file);
163
+ // Swallow default HMR for this file to prevent full page reloads
164
+ return [];
165
+ },
166
+ },
140
167
  ];
141
168
 
142
169
  const { RELEASE: release } = process.env;
@@ -1,4 +0,0 @@
1
- import { gC as _sfc_main } from "./index--OJ5nhDf.js";
2
- export {
3
- _sfc_main as default
4
- };
@@ -1,32 +0,0 @@
1
- import { d as defineComponent, h as createElementBlock, g as openBlock, K as mergeProps, X as renderSlot, t as toDisplayString, _ as _export_sfc } from "./index--OJ5nhDf.js";
2
- const _hoisted_1 = { key: 1 };
3
- const _sfc_main = /* @__PURE__ */ defineComponent({
4
- ...{ name: "N8nTag" },
5
- __name: "Tag",
6
- props: {
7
- text: {},
8
- clickable: { type: Boolean, default: true }
9
- },
10
- setup(__props) {
11
- return (_ctx, _cache) => {
12
- return openBlock(), createElementBlock("span", mergeProps({
13
- class: ["n8n-tag", _ctx.$style.tag, { [_ctx.$style.clickable]: _ctx.clickable }]
14
- }, _ctx.$attrs), [
15
- _ctx.$slots["tag"] ? renderSlot(_ctx.$slots, "tag", { key: 0 }) : (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(_ctx.text), 1))
16
- ], 16);
17
- };
18
- }
19
- });
20
- const tag = "_tag_49pvx_123";
21
- const clickable = "_clickable_49pvx_138";
22
- const style0 = {
23
- tag,
24
- clickable
25
- };
26
- const cssModules = {
27
- "$style": style0
28
- };
29
- const Tag = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
30
- export {
31
- Tag as T
32
- };
@@ -1,153 +0,0 @@
1
- /* BEM support Func
2
- -------------------------- */
3
- /* Transition
4
- -------------------------- */
5
- /* Color
6
- -------------------------- */
7
- /* Link
8
- -------------------------- */
9
- /* Border
10
- -------------------------- */
11
- /* Outline
12
- -------------------------- */
13
- /* Box shadow
14
- -------------------------- */
15
- /* Fill
16
- -------------------------- */
17
- /* Typography
18
- -------------------------- */
19
- /* z-index
20
- -------------------------- */
21
- /* Disable base
22
- -------------------------- */
23
- /* Icon
24
- -------------------------- */
25
- /* Checkbox
26
- -------------------------- */
27
- /* Radio
28
- -------------------------- */
29
- /* Select
30
- -------------------------- */
31
- /* Alert
32
- -------------------------- */
33
- /* MessageBox
34
- -------------------------- */
35
- /* Message
36
- -------------------------- */
37
- /* Notification
38
- -------------------------- */
39
- /* Input
40
- -------------------------- */
41
- /* Cascader
42
- -------------------------- */
43
- /* Group
44
- -------------------------- */
45
- /* Tab
46
- -------------------------- */
47
- /* Button
48
- -------------------------- */
49
- /* cascader
50
- -------------------------- */
51
- /* Switch
52
- -------------------------- */
53
- /* Dialog
54
- -------------------------- */
55
- /* Table
56
- -------------------------- */
57
- /* Pagination
58
- -------------------------- */
59
- /* Popup
60
- -------------------------- */
61
- /* Popover
62
- -------------------------- */
63
- /* Tooltip
64
- -------------------------- */
65
- /* Tag
66
- -------------------------- */
67
- /* Tree
68
- -------------------------- */
69
- /* Dropdown
70
- -------------------------- */
71
- /* Badge
72
- -------------------------- */
73
- /* Card
74
- --------------------------*/
75
- /* Slider
76
- --------------------------*/
77
- /* Steps
78
- --------------------------*/
79
- /* Menu
80
- --------------------------*/
81
- /* Rate
82
- --------------------------*/
83
- /* DatePicker
84
- --------------------------*/
85
- /* Loading
86
- --------------------------*/
87
- /* Scrollbar
88
- --------------------------*/
89
- /* Carousel
90
- --------------------------*/
91
- /* Collapse
92
- --------------------------*/
93
- /* Transfer
94
- --------------------------*/
95
- /* Header
96
- --------------------------*/
97
- /* Footer
98
- --------------------------*/
99
- /* Main
100
- --------------------------*/
101
- /* Timeline
102
- --------------------------*/
103
- /* Backtop
104
- --------------------------*/
105
- /* Link
106
- --------------------------*/
107
- /* Calendar
108
- --------------------------*/
109
- /* Form
110
- -------------------------- */
111
- /* Avatar
112
- --------------------------*/
113
- /* Break-point
114
- --------------------------*/
115
- /* Break-points
116
- -------------------------- */
117
- /* Scrollbar
118
- -------------------------- */
119
- /* Placeholder
120
- -------------------------- */
121
- /* BEM
122
- -------------------------- */
123
- ._tag_49pvx_123 {
124
- display: -webkit-box;
125
- display: -ms-flexbox;
126
- display: flex;
127
- -webkit-box-align: center;
128
- -ms-flex-align: center;
129
- align-items: center;
130
- -webkit-box-pack: center;
131
- -ms-flex-pack: center;
132
- justify-content: center;
133
- min-width: -webkit-max-content;
134
- min-width: -moz-max-content;
135
- min-width: max-content;
136
- height: var(--tag-height);
137
- padding: var(--tag-padding);
138
- line-height: var(--tag-line-height);
139
- color: var(--tag-text-color);
140
- background-color: var(--tag-background-color);
141
- border: 1px solid var(--tag-border-color);
142
- border-radius: var(--tag-border-radius);
143
- font-size: var(--tag-font-size);
144
- -webkit-transition: background-color 0.3s ease;
145
- transition: background-color 0.3s ease;
146
- }
147
- ._tag_49pvx_123._clickable_49pvx_138 {
148
- cursor: pointer;
149
- }
150
- ._tag_49pvx_123._clickable_49pvx_138:hover {
151
- background-color: var(--tag-background-hover-color);
152
- border-color: var(--tag-border-hover-color);
153
- }
@@ -1,288 +0,0 @@
1
- import { f6 as makeRestApiRequest, $ as defineStore, at as useRootStore, au as useProjectsStore, r as ref, gG as DATA_STORE_STORE } from "./index--OJ5nhDf.js";
2
- const fetchDataStoresApi = async (context, projectId, options, filter) => {
3
- const apiEndpoint = projectId ? `/projects/${projectId}/data-tables` : "/data-tables-global";
4
- return await makeRestApiRequest(
5
- context,
6
- "GET",
7
- apiEndpoint,
8
- {
9
- options: options ?? void 0,
10
- filter: filter ?? void 0
11
- }
12
- );
13
- };
14
- const createDataStoreApi = async (context, name, projectId, columns) => {
15
- return await makeRestApiRequest(
16
- context,
17
- "POST",
18
- `/projects/${projectId}/data-tables`,
19
- {
20
- name,
21
- columns: []
22
- }
23
- );
24
- };
25
- const deleteDataStoreApi = async (context, dataStoreId, projectId) => {
26
- return await makeRestApiRequest(
27
- context,
28
- "DELETE",
29
- `/projects/${projectId}/data-tables/${dataStoreId}`,
30
- {
31
- dataStoreId,
32
- projectId
33
- }
34
- );
35
- };
36
- const updateDataStoreApi = async (context, dataStoreId, name, projectId) => {
37
- return await makeRestApiRequest(
38
- context,
39
- "PATCH",
40
- `/projects/${projectId}/data-tables/${dataStoreId}`,
41
- {
42
- name
43
- }
44
- );
45
- };
46
- const addDataStoreColumnApi = async (context, dataStoreId, projectId, column) => {
47
- return await makeRestApiRequest(
48
- context,
49
- "POST",
50
- `/projects/${projectId}/data-tables/${dataStoreId}/columns`,
51
- {
52
- ...column
53
- }
54
- );
55
- };
56
- const deleteDataStoreColumnApi = async (context, dataStoreId, projectId, columnId) => {
57
- return await makeRestApiRequest(
58
- context,
59
- "DELETE",
60
- `/projects/${projectId}/data-tables/${dataStoreId}/columns/${columnId}`
61
- );
62
- };
63
- const moveDataStoreColumnApi = async (context, dataStoreId, projectId, columnId, targetIndex) => {
64
- return await makeRestApiRequest(
65
- context,
66
- "PATCH",
67
- `/projects/${projectId}/data-tables/${dataStoreId}/columns/${columnId}/move`,
68
- {
69
- targetIndex
70
- }
71
- );
72
- };
73
- const getDataStoreRowsApi = async (context, dataStoreId, projectId, options) => {
74
- return await makeRestApiRequest(context, "GET", `/projects/${projectId}/data-tables/${dataStoreId}/rows`, {
75
- ...options ?? {}
76
- });
77
- };
78
- const insertDataStoreRowApi = async (context, dataStoreId, row, projectId) => {
79
- return await makeRestApiRequest(
80
- context,
81
- "POST",
82
- `/projects/${projectId}/data-tables/${dataStoreId}/insert`,
83
- {
84
- returnData: true,
85
- data: [row]
86
- }
87
- );
88
- };
89
- const updateDataStoreRowsApi = async (context, dataStoreId, rowId, rowData, projectId) => {
90
- return await makeRestApiRequest(
91
- context,
92
- "PATCH",
93
- `/projects/${projectId}/data-tables/${dataStoreId}/rows`,
94
- {
95
- filter: { id: rowId },
96
- data: rowData
97
- }
98
- );
99
- };
100
- const deleteDataStoreRowsApi = async (context, dataStoreId, rowIds, projectId) => {
101
- return await makeRestApiRequest(
102
- context,
103
- "DELETE",
104
- `/projects/${projectId}/data-tables/${dataStoreId}/rows`,
105
- {
106
- ids: rowIds.join(",")
107
- }
108
- );
109
- };
110
- const reorderItem = (items, oldIndex, newIndex) => {
111
- return items.map((item) => {
112
- if (item.index === oldIndex) return { ...item, index: newIndex };
113
- if (oldIndex < newIndex && item.index > oldIndex && item.index <= newIndex) {
114
- return { ...item, index: item.index - 1 };
115
- }
116
- if (oldIndex > newIndex && item.index >= newIndex && item.index < oldIndex) {
117
- return { ...item, index: item.index + 1 };
118
- }
119
- return item;
120
- });
121
- };
122
- const useDataStoreStore = defineStore(DATA_STORE_STORE, () => {
123
- const rootStore = useRootStore();
124
- const projectStore = useProjectsStore();
125
- const dataStores = ref([]);
126
- const totalCount = ref(0);
127
- const fetchDataStores = async (projectId, page, pageSize) => {
128
- const response = await fetchDataStoresApi(rootStore.restApiContext, projectId, {
129
- skip: (page - 1) * pageSize,
130
- take: pageSize
131
- });
132
- dataStores.value = response.data;
133
- totalCount.value = response.count;
134
- };
135
- const createDataStore = async (name, projectId) => {
136
- const newStore = await createDataStoreApi(rootStore.restApiContext, name, projectId);
137
- if (!newStore.project && projectId) {
138
- const project = await projectStore.fetchProject(projectId);
139
- if (project) {
140
- newStore.project = project;
141
- }
142
- }
143
- dataStores.value.push(newStore);
144
- totalCount.value += 1;
145
- return newStore;
146
- };
147
- const deleteDataStore = async (datastoreId, projectId) => {
148
- const deleted = await deleteDataStoreApi(rootStore.restApiContext, datastoreId, projectId);
149
- if (deleted) {
150
- dataStores.value = dataStores.value.filter((store) => store.id !== datastoreId);
151
- totalCount.value -= 1;
152
- }
153
- return deleted;
154
- };
155
- const deleteDataStoreColumn = async (datastoreId, projectId, columnId) => {
156
- const deleted = await deleteDataStoreColumnApi(
157
- rootStore.restApiContext,
158
- datastoreId,
159
- projectId,
160
- columnId
161
- );
162
- if (deleted) {
163
- const index = dataStores.value.findIndex((store) => store.id === datastoreId);
164
- if (index !== -1) {
165
- dataStores.value[index].columns = dataStores.value[index].columns.filter(
166
- (col) => col.id !== columnId
167
- );
168
- }
169
- }
170
- return deleted;
171
- };
172
- const updateDataStore = async (datastoreId, name, projectId) => {
173
- const updated = await updateDataStoreApi(
174
- rootStore.restApiContext,
175
- datastoreId,
176
- name,
177
- projectId
178
- );
179
- if (updated) {
180
- const index = dataStores.value.findIndex((store) => store.id === datastoreId);
181
- if (index !== -1) {
182
- dataStores.value[index] = { ...dataStores.value[index], name };
183
- }
184
- }
185
- return updated;
186
- };
187
- const fetchDataStoreDetails = async (datastoreId, projectId) => {
188
- const response = await fetchDataStoresApi(rootStore.restApiContext, projectId, void 0, {
189
- projectId,
190
- id: datastoreId
191
- });
192
- if (response.data.length > 0) {
193
- dataStores.value = response.data;
194
- return response.data[0];
195
- }
196
- return null;
197
- };
198
- const fetchOrFindDataStore = async (datastoreId, projectId) => {
199
- const existingStore = dataStores.value.find((store) => store.id === datastoreId);
200
- if (existingStore) {
201
- return existingStore;
202
- }
203
- return await fetchDataStoreDetails(datastoreId, projectId);
204
- };
205
- const addDataStoreColumn = async (datastoreId, projectId, column) => {
206
- const newColumn = await addDataStoreColumnApi(
207
- rootStore.restApiContext,
208
- datastoreId,
209
- projectId,
210
- column
211
- );
212
- if (newColumn) {
213
- const index = dataStores.value.findIndex((store) => store.id === datastoreId);
214
- if (index !== -1) {
215
- dataStores.value[index].columns.push(newColumn);
216
- }
217
- }
218
- return newColumn;
219
- };
220
- const moveDataStoreColumn = async (datastoreId, projectId, columnId, targetIndex) => {
221
- const moved = await moveDataStoreColumnApi(
222
- rootStore.restApiContext,
223
- datastoreId,
224
- projectId,
225
- columnId,
226
- targetIndex
227
- );
228
- if (moved) {
229
- const dsIndex = dataStores.value.findIndex((store) => store.id === datastoreId);
230
- const fromIndex = dataStores.value[dsIndex].columns.findIndex((col) => col.id === columnId);
231
- dataStores.value[dsIndex].columns = reorderItem(
232
- dataStores.value[dsIndex].columns,
233
- fromIndex,
234
- targetIndex
235
- );
236
- }
237
- return moved;
238
- };
239
- const fetchDataStoreContent = async (datastoreId, projectId, page, pageSize, sortBy) => {
240
- return await getDataStoreRowsApi(rootStore.restApiContext, datastoreId, projectId, {
241
- skip: (page - 1) * pageSize,
242
- take: pageSize,
243
- sortBy
244
- });
245
- };
246
- const insertEmptyRow = async (dataStore) => {
247
- const inserted = await insertDataStoreRowApi(
248
- rootStore.restApiContext,
249
- dataStore.id,
250
- {},
251
- dataStore.projectId
252
- );
253
- return inserted[0];
254
- };
255
- const updateRow = async (dataStoreId, projectId, rowId, rowData) => {
256
- return await updateDataStoreRowsApi(
257
- rootStore.restApiContext,
258
- dataStoreId,
259
- rowId,
260
- rowData,
261
- projectId
262
- );
263
- };
264
- const deleteRows = async (dataStoreId, projectId, rowIds) => {
265
- return await deleteDataStoreRowsApi(rootStore.restApiContext, dataStoreId, rowIds, projectId);
266
- };
267
- return {
268
- dataStores,
269
- totalCount,
270
- fetchDataStores,
271
- createDataStore,
272
- deleteDataStore,
273
- updateDataStore,
274
- fetchDataStoreDetails,
275
- fetchOrFindDataStore,
276
- addDataStoreColumn,
277
- deleteDataStoreColumn,
278
- moveDataStoreColumn,
279
- fetchDataStoreContent,
280
- insertEmptyRow,
281
- updateRow,
282
- deleteRows
283
- };
284
- });
285
- export {
286
- reorderItem as r,
287
- useDataStoreStore as u
288
- };