n8n-editor-ui 1.78.0 → 1.80.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.
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-eVUE5od5.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-HxDJGUtE.js} +1 -1
- package/dist/assets/{AuthView-D1tEXMXA.js → AuthView-1Ttsioyp.js} +2 -2
- package/dist/assets/{CanvasChat-BLb-TUbz.js → CanvasChat-Dr5nHlH3.js} +5 -4
- package/dist/assets/{CanvasControls-BN3S3-fQ.js → CanvasControls-B_BXMBED.js} +1 -1
- package/dist/assets/{ChangePasswordView-V1JTrEew.js → ChangePasswordView-D4RXBXA7.js} +3 -3
- package/dist/assets/CollectionParameter-MoTW3Wf1.js +4 -0
- package/dist/assets/{ConcurrentExecutionsHeader-BNA8q-8c.js → ConcurrentExecutionsHeader-BfwpFWPS.js} +2 -2
- package/dist/assets/{CredentialsView-AQksN2m1.js → CredentialsView-Dy_wyl7y.js} +23 -14
- package/dist/assets/{ErrorView-CLT4S_BD.js → ErrorView-Di2BOFlv.js} +1 -1
- package/dist/assets/{ExecutionsView-qI0J-9KP.js → ExecutionsView-C3oFIgdV.js} +5 -5
- package/dist/assets/{FileSaver.min-B-zoCBIE.js → FileSaver.min-BRpBjOSK.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-DQeeV-mE.js → FixedCollectionParameter-CGAtcElH.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-BYvqdrhp.js → ForgotMyPasswordView-y2S4L_Qv.js} +3 -3
- package/dist/assets/{Logo-CmkNIoey.js → Logo-Bkouvy_1.js} +1 -1
- package/dist/assets/{MainHeader-rUYFpqrO.js → MainHeader-DAJVzGfz.js} +10 -9
- package/dist/assets/{MainSidebar-B9_KVa79.js → MainSidebar-BMvCTHpo.js} +10 -10
- package/dist/assets/{MainSidebar-Djaxwdmm.css → MainSidebar-BQVC8zBU.css} +13 -13
- package/dist/assets/{NodeCreation-CWLKVrNb.js → NodeCreation-RijXMQEI.js} +4 -4
- package/dist/assets/{NodeCreator-CzIIkTTW.js → NodeCreator-DPcMScWo.js} +5 -4
- package/dist/assets/{NodeViewSwitcher-Det3o0gl.css → NodeViewSwitcher-9WCdidKb.css} +23 -23
- package/dist/assets/{NodeViewSwitcher-BUNM0KZ6.js → NodeViewSwitcher-OANBinrW.js} +80 -71
- package/dist/assets/{ProjectCardBadge-BbA_Exq8.js → ProjectCardBadge-J4JiadWD.js} +1 -1
- package/dist/assets/{ProjectHeader-DlgpDOwX.js → ProjectHeader-1XMrORbM.js} +1 -1
- package/dist/assets/{ProjectSettings-DqEtmmAS.js → ProjectSettings-DAi3BTpr.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DL91BcV8.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-BFoY0mfR.js} +7 -4
- package/dist/assets/{ResourcesListLayout-D2ZxA1Uw.js → ResourcesListLayout-D9faOv_l.js} +219 -99
- package/dist/assets/{ResourcesListLayout-CvrwoZYS.css → ResourcesListLayout-uz7NOpr0.css} +40 -16
- package/dist/assets/{useRunWorkflow-B-O5w0ED.js → RunDataAi-C3Gkhfg0.js} +4 -320
- package/dist/assets/{RunDataJson-UkDmIQKn.js → RunDataJson-tRUXhQ8S.js} +16 -14
- package/dist/assets/{RunDataJsonActions-BqDvrghZ.js → RunDataJsonActions-CA6Z-ZGx.js} +4 -5
- package/dist/assets/{RunDataSearch-UNQ4_4vM.js → RunDataSearch-3I6ueGp8.js} +1 -1
- package/dist/assets/{RunDataTable-BdbNPKnU.js → RunDataTable-DXtM72HW.js} +2 -2
- package/dist/assets/{SamlOnboarding-Rzkh3AGB.js → SamlOnboarding-XQAt1qyf.js} +3 -3
- package/dist/assets/{SettingsApiView-C27ofqQf.js → SettingsApiView-BUCwQ023.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-CWp_YPSH.js → SettingsCommunityNodesView-CO8Bnp-a.js} +5 -4
- package/dist/assets/{SettingsExternalSecrets-BytZbZef.js → SettingsExternalSecrets-Cqj1VwAC.js} +1 -1
- package/dist/assets/{SettingsLdapView-DvNozRM0.js → SettingsLdapView-C5-rNRHJ.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-C4Y3N6rF.js → SettingsLogStreamingView-CfzEG7ya.js} +1 -1
- package/dist/assets/{SettingsPersonalView--Z9y3dtC.js → SettingsPersonalView-BZB75NCV.js} +1 -1
- package/dist/assets/{SettingsSourceControl-BElByx3w.js → SettingsSourceControl-BCNGnerk.js} +1 -1
- package/dist/assets/{SettingsSso-DUOhZeok.js → SettingsSso-BIDfLpvX.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-DTw2vCOM.js → SettingsUsageAndPlan-B3AoC5ui.js} +1 -1
- package/dist/assets/{SettingsUsersView-B2lC671-.js → SettingsUsersView-Bd8u_dWP.js} +1 -1
- package/dist/assets/{SettingsView-tGXgBeZb.js → SettingsView-BgUUmcYQ.js} +1 -1
- package/dist/assets/{SetupView-BB-PMekL.js → SetupView-DkcAeKcx.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-B7i_jYti.js → SetupWorkflowCredentialsButton-CgICpCKX.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-Co52TGFE.js → SetupWorkflowFromTemplateView-9kgsp5eR.js} +3 -3
- package/dist/assets/{SigninView-B8lcx39e.js → SigninView-p0p2Wsjx.js} +3 -3
- package/dist/assets/{SignoutView-CamkX68g.js → SignoutView-6qFcyBHO.js} +1 -1
- package/dist/assets/{SignupView-D9e7FiEj.js → SignupView-B9icrcu8.js} +3 -3
- package/dist/assets/{TemplateDetails-C0RPBtYu.js → TemplateDetails-BOHIrTqk.js} +1 -1
- package/dist/assets/{TemplateList-B6jscn2o.js → TemplateList-73LLdbNJ.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-9fi4vQ1-.js → TemplatesCollectionView-BqyOlCUu.js} +5 -5
- package/dist/assets/{TemplatesSearchView-VlRyjuTl.js → TemplatesSearchView-nL4pBM1O.js} +3 -3
- package/dist/assets/{TemplatesView-CgQelQ-w.js → TemplatesView-C3n69lEL.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-BhhfuZZ9.js → TemplatesWorkflowView-DJhhG1uU.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-Cv4ImQQb.js → TestDefinitionEditView-B7Yku4Yg.js} +11 -17
- package/dist/assets/{TestDefinitionListView-CywmtGBZ.js → TestDefinitionListView-xSYrBXDt.js} +1 -1
- package/dist/assets/{TestDefinitionRootView-BhZESeJD.js → TestDefinitionRootView-C_2OO4vg.js} +1 -1
- package/dist/assets/{VariablesView-CIfrpJdg.css → VariablesView-BFkUG61Z.css} +5 -5
- package/dist/assets/{VariablesView-B_Ju8Kay.js → VariablesView-DzO7okYK.js} +21 -12
- package/dist/assets/{WorkerView-Lif0hJie.js → WorkerView-B-GM2PnB.js} +6 -5
- package/dist/assets/{WorkflowActivator-Bv0WPJm3.js → WorkflowActivator-Bd_Lvcdj.js} +11 -5
- package/dist/assets/{WorkflowActivator-brtYjIty.css → WorkflowActivator-CE8UyVw2.css} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-DitIU6bv.js → WorkflowExecutionsInfoAccordion-CYpfdTlZ.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-vuyCAPrk.js → WorkflowExecutionsLandingPage-Ce03KsyM.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DN_WSVD_.js → WorkflowExecutionsPreview-S9QjNkrU.js} +5 -5
- package/dist/assets/{WorkflowExecutionsView-BhFMyj3l.js → WorkflowExecutionsView-IgYJKRy2.js} +5 -5
- package/dist/assets/{WorkflowHistory-XSHcXPVZ.js → WorkflowHistory-Clbhytld.js} +3 -3
- package/dist/assets/{WorkflowOnboardingView-DdujIOw8.js → WorkflowOnboardingView-BfwDAozz.js} +1 -1
- package/dist/assets/{WorkflowPreview-YDi-9g3Y.js → WorkflowPreview-CR_8gGVk.js} +1 -1
- package/dist/assets/{WorkflowsView-BLTTQnV3.js → WorkflowsView-DhJmVrpz.js} +206 -75
- package/dist/assets/_commonjs-dynamic-modules-TGKdzP3c.js +6 -0
- package/dist/assets/{easyAiWorkflowUtils-WSNP3eeS.js → easyAiWorkflowUtils-DR9xMMTB.js} +2 -2
- package/dist/assets/global-link-actions-BnYGl3Vl.js +5 -0
- package/dist/assets/import-curl-Bkz3KGtP.js +5 -0
- package/dist/assets/{index-BwoviwZU.js → index-RIkMj045.js} +1898 -1752
- package/dist/assets/{index-DFFkAkMx.css → index-xKO0gQfI.css} +23 -19
- package/dist/assets/pickBy-L31B05hi.js +16 -0
- package/dist/assets/pushConnection.store-IZqFPTug.js +238 -0
- package/dist/assets/{templateActions-CDiqnge9.js → templateActions-Dxsd5OiK.js} +1 -1
- package/dist/assets/{useBeforeUnload-BQCxN-bM.js → useBeforeUnload-Bz5jh_QU.js} +1 -1
- package/dist/assets/{useCanvasOperations-CKa4_bqL.css → useCanvasMapping-DeC609A4.css} +213 -160
- package/dist/assets/{useCanvasOperations-DQSiUE8i.js → useCanvasMapping-eE1iPx8T.js} +3377 -3174
- package/dist/assets/{useExecutionDebugging-BlSzHQ7f.js → useExecutionDebugging-0CcRxVaH.js} +1 -1
- package/dist/assets/{useExecutionHelpers-DpNwTiuj.js → useExecutionHelpers-DeMd4c8O.js} +1 -1
- package/dist/assets/useImportCurlCommand-CvS5FUhb.js +9055 -0
- package/dist/assets/{usePushConnection-ioPocbvz.js → usePushConnection-PppTtKCd.js} +4 -3
- package/dist/assets/useRunWorkflow-Bjok868-.js +616 -0
- package/dist/assets/{useWorkflowActivate-CbVB4JlR.js → useWorkflowActivate-DJ8wir2K.js} +6 -5
- package/dist/index.html +2 -2
- package/dist/tree-sitter-bash.wasm +0 -0
- package/dist/tree-sitter.wasm +0 -0
- package/package.json +1 -1
- package/vite.config.mts +14 -1
- package/dist/assets/CollectionParameter-C28x26Fy.js +0 -4
- package/dist/assets/pushConnection.store-BlMyXexG.js +0 -117
- package/dist/assets/usePinnedData-E0jv55-6.js +0 -274
- /package/dist/assets/{useRunWorkflow-DWoFsQdi.css → RunDataAi-DWoFsQdi.css} +0 -0
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/vite.config.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import vue from '@vitejs/plugin-vue';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
3
|
import { defineConfig, mergeConfig } from 'vite';
|
|
4
|
+
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
|
4
5
|
import svgLoader from 'vite-svg-loader';
|
|
5
6
|
|
|
6
7
|
import { vitestConfig } from '@n8n/frontend-vitest-config';
|
|
@@ -63,6 +64,12 @@ const plugins = [
|
|
|
63
64
|
}),
|
|
64
65
|
],
|
|
65
66
|
}),
|
|
67
|
+
viteStaticCopy({
|
|
68
|
+
targets: [
|
|
69
|
+
{ src: resolve('node_modules/web-tree-sitter/tree-sitter.wasm'), dest: '' },
|
|
70
|
+
{ src: resolve('node_modules/curlconverter/dist/tree-sitter-bash.wasm'), dest: '' },
|
|
71
|
+
],
|
|
72
|
+
}),
|
|
66
73
|
vue(),
|
|
67
74
|
svgLoader(),
|
|
68
75
|
legacy({
|
|
@@ -73,6 +80,7 @@ const plugins = [
|
|
|
73
80
|
];
|
|
74
81
|
|
|
75
82
|
const { RELEASE: release } = process.env;
|
|
83
|
+
const target = browserslistToEsbuild(browsers);
|
|
76
84
|
|
|
77
85
|
export default mergeConfig(
|
|
78
86
|
defineConfig({
|
|
@@ -100,7 +108,12 @@ export default mergeConfig(
|
|
|
100
108
|
build: {
|
|
101
109
|
minify: !!release,
|
|
102
110
|
sourcemap: !!release,
|
|
103
|
-
target
|
|
111
|
+
target,
|
|
112
|
+
},
|
|
113
|
+
optimizeDeps: {
|
|
114
|
+
esbuildOptions: {
|
|
115
|
+
target,
|
|
116
|
+
},
|
|
104
117
|
},
|
|
105
118
|
worker: {
|
|
106
119
|
format: 'es',
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { C as createEventBus, R as defineStore, S as STORES, Z as useRootStore, p as useSettingsStore, q as computed, r as ref, W as TIME } from "./index-BwoviwZU.js";
|
|
2
|
-
const globalLinkActionsEventBus = createEventBus();
|
|
3
|
-
const usePushConnectionStore = defineStore(STORES.PUSH, () => {
|
|
4
|
-
const rootStore = useRootStore();
|
|
5
|
-
const settingsStore = useSettingsStore();
|
|
6
|
-
const pushRef = computed(() => rootStore.pushRef);
|
|
7
|
-
const pushSource = ref(null);
|
|
8
|
-
const reconnectTimeout = ref(null);
|
|
9
|
-
const connectRetries = ref(0);
|
|
10
|
-
const lostConnection = ref(false);
|
|
11
|
-
const outgoingQueue = ref([]);
|
|
12
|
-
const isConnectionOpen = ref(false);
|
|
13
|
-
const onMessageReceivedHandlers = ref([]);
|
|
14
|
-
const addEventListener = (handler) => {
|
|
15
|
-
onMessageReceivedHandlers.value.push(handler);
|
|
16
|
-
return () => {
|
|
17
|
-
const index = onMessageReceivedHandlers.value.indexOf(handler);
|
|
18
|
-
if (index !== -1) {
|
|
19
|
-
onMessageReceivedHandlers.value.splice(index, 1);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
function onConnectionError() {
|
|
24
|
-
pushDisconnect();
|
|
25
|
-
connectRetries.value++;
|
|
26
|
-
reconnectTimeout.value = setTimeout(
|
|
27
|
-
attemptReconnect,
|
|
28
|
-
Math.min(connectRetries.value * 2e3, 8 * TIME.SECOND)
|
|
29
|
-
// maximum 8 seconds backoff
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
function pushDisconnect() {
|
|
33
|
-
if (pushSource.value !== null) {
|
|
34
|
-
pushSource.value.removeEventListener("error", onConnectionError);
|
|
35
|
-
pushSource.value.removeEventListener("close", onConnectionError);
|
|
36
|
-
pushSource.value.removeEventListener("message", pushMessageReceived);
|
|
37
|
-
if (pushSource.value.readyState < 2) pushSource.value.close();
|
|
38
|
-
pushSource.value = null;
|
|
39
|
-
}
|
|
40
|
-
isConnectionOpen.value = false;
|
|
41
|
-
}
|
|
42
|
-
function pushConnect() {
|
|
43
|
-
pushDisconnect();
|
|
44
|
-
if (reconnectTimeout.value) {
|
|
45
|
-
clearTimeout(reconnectTimeout.value);
|
|
46
|
-
reconnectTimeout.value = null;
|
|
47
|
-
}
|
|
48
|
-
const useWebSockets = settingsStore.pushBackend === "websocket";
|
|
49
|
-
const restUrl = rootStore.restUrl;
|
|
50
|
-
const url = `/push?pushRef=${pushRef.value}`;
|
|
51
|
-
if (useWebSockets) {
|
|
52
|
-
const { protocol, host } = window.location;
|
|
53
|
-
const baseUrl = restUrl.startsWith("http") ? restUrl.replace(/^http/, "ws") : `${protocol === "https:" ? "wss" : "ws"}://${host + restUrl}`;
|
|
54
|
-
pushSource.value = new WebSocket(`${baseUrl}${url}`);
|
|
55
|
-
} else {
|
|
56
|
-
pushSource.value = new EventSource(`${restUrl}${url}`, { withCredentials: true });
|
|
57
|
-
}
|
|
58
|
-
pushSource.value.addEventListener("open", onConnectionSuccess, false);
|
|
59
|
-
pushSource.value.addEventListener("message", pushMessageReceived, false);
|
|
60
|
-
pushSource.value.addEventListener(useWebSockets ? "close" : "error", onConnectionError, false);
|
|
61
|
-
}
|
|
62
|
-
function attemptReconnect() {
|
|
63
|
-
pushConnect();
|
|
64
|
-
}
|
|
65
|
-
function serializeAndSend(message) {
|
|
66
|
-
if (pushSource.value && "send" in pushSource.value) {
|
|
67
|
-
pushSource.value.send(JSON.stringify(message));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function onConnectionSuccess() {
|
|
71
|
-
isConnectionOpen.value = true;
|
|
72
|
-
connectRetries.value = 0;
|
|
73
|
-
lostConnection.value = false;
|
|
74
|
-
rootStore.setPushConnectionActive();
|
|
75
|
-
pushSource.value?.removeEventListener("open", onConnectionSuccess);
|
|
76
|
-
if (outgoingQueue.value.length) {
|
|
77
|
-
for (const message of outgoingQueue.value) {
|
|
78
|
-
serializeAndSend(message);
|
|
79
|
-
}
|
|
80
|
-
outgoingQueue.value = [];
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
function send(message) {
|
|
84
|
-
if (!isConnectionOpen.value) {
|
|
85
|
-
outgoingQueue.value.push(message);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
serializeAndSend(message);
|
|
89
|
-
}
|
|
90
|
-
async function pushMessageReceived(event) {
|
|
91
|
-
let receivedData;
|
|
92
|
-
try {
|
|
93
|
-
receivedData = JSON.parse(event.data);
|
|
94
|
-
} catch (error) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
onMessageReceivedHandlers.value.forEach((handler) => handler(receivedData));
|
|
98
|
-
}
|
|
99
|
-
const clearQueue = () => {
|
|
100
|
-
outgoingQueue.value = [];
|
|
101
|
-
};
|
|
102
|
-
return {
|
|
103
|
-
pushRef,
|
|
104
|
-
pushSource,
|
|
105
|
-
isConnectionOpen,
|
|
106
|
-
onMessageReceivedHandlers,
|
|
107
|
-
addEventListener,
|
|
108
|
-
pushConnect,
|
|
109
|
-
pushDisconnect,
|
|
110
|
-
send,
|
|
111
|
-
clearQueue
|
|
112
|
-
};
|
|
113
|
-
});
|
|
114
|
-
export {
|
|
115
|
-
globalLinkActionsEventBus as g,
|
|
116
|
-
usePushConnectionStore as u
|
|
117
|
-
};
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
import { gi as baseSlice, gj as toString, bo as useNodeTypesStore, q as computed, l as unref, eM as isSubNodeType, Z as useRootStore, T as useWorkflowsStore, a as useToast, gk as PIN_DATA_NODE_TYPES_DENYLIST, bg as getNodeOutputs, bh as NodeConnectionType, gl as jsonStringify, gm as toMegaBytes, gn as stringSizeInBytes, ch as jsonParse, g as useI18n, aj as useTelemetry, aT as useExternalHooks, eN as useDataSchema, go as MAX_PINNED_DATA_SIZE, gp as MAX_WORKFLOW_SIZE, gq as MAX_EXPECTED_REQUEST_SIZE } from "./index-BwoviwZU.js";
|
|
2
|
-
function castSlice(array, start, end) {
|
|
3
|
-
var length = array.length;
|
|
4
|
-
end = end === void 0 ? length : end;
|
|
5
|
-
return !start && end >= length ? array : baseSlice(array, start, end);
|
|
6
|
-
}
|
|
7
|
-
var rsAstralRange$1 = "\\ud800-\\udfff", rsComboMarksRange$1 = "\\u0300-\\u036f", reComboHalfMarksRange$1 = "\\ufe20-\\ufe2f", rsComboSymbolsRange$1 = "\\u20d0-\\u20ff", rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1, rsVarRange$1 = "\\ufe0e\\ufe0f";
|
|
8
|
-
var rsZWJ$1 = "\\u200d";
|
|
9
|
-
var reHasUnicode = RegExp("[" + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + "]");
|
|
10
|
-
function hasUnicode(string) {
|
|
11
|
-
return reHasUnicode.test(string);
|
|
12
|
-
}
|
|
13
|
-
function asciiToArray(string) {
|
|
14
|
-
return string.split("");
|
|
15
|
-
}
|
|
16
|
-
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsVarRange = "\\ufe0e\\ufe0f";
|
|
17
|
-
var rsAstral = "[" + rsAstralRange + "]", rsCombo = "[" + rsComboRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsZWJ = "\\u200d";
|
|
18
|
-
var reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
|
|
19
|
-
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
|
|
20
|
-
function unicodeToArray(string) {
|
|
21
|
-
return string.match(reUnicode) || [];
|
|
22
|
-
}
|
|
23
|
-
function stringToArray(string) {
|
|
24
|
-
return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
|
|
25
|
-
}
|
|
26
|
-
function createCaseFirst(methodName) {
|
|
27
|
-
return function(string) {
|
|
28
|
-
string = toString(string);
|
|
29
|
-
var strSymbols = hasUnicode(string) ? stringToArray(string) : void 0;
|
|
30
|
-
var chr = strSymbols ? strSymbols[0] : string.charAt(0);
|
|
31
|
-
var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
|
|
32
|
-
return chr[methodName]() + trailing;
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
var upperFirst = createCaseFirst("toUpperCase");
|
|
36
|
-
function capitalize(string) {
|
|
37
|
-
return upperFirst(toString(string).toLowerCase());
|
|
38
|
-
}
|
|
39
|
-
function useNodeType(options = {}) {
|
|
40
|
-
const nodeTypesStore = useNodeTypesStore();
|
|
41
|
-
const nodeType = computed(() => {
|
|
42
|
-
if (options.nodeType) {
|
|
43
|
-
return unref(options.nodeType);
|
|
44
|
-
}
|
|
45
|
-
const activeNode = unref(options.node);
|
|
46
|
-
if (activeNode) {
|
|
47
|
-
return nodeTypesStore.getNodeType(activeNode.type, activeNode.typeVersion);
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
-
});
|
|
51
|
-
const isSubNodeType$1 = computed(() => isSubNodeType(nodeType.value));
|
|
52
|
-
const isMultipleOutputsNodeType = computed(() => {
|
|
53
|
-
const outputs = nodeType.value?.outputs;
|
|
54
|
-
if (typeof outputs === "string") return false;
|
|
55
|
-
return (outputs ?? []).length > 1;
|
|
56
|
-
});
|
|
57
|
-
return {
|
|
58
|
-
nodeType,
|
|
59
|
-
isSubNodeType: isSubNodeType$1,
|
|
60
|
-
isMultipleOutputsNodeType
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
function usePinnedData(node, options = {}) {
|
|
64
|
-
const rootStore = useRootStore();
|
|
65
|
-
const workflowsStore = useWorkflowsStore();
|
|
66
|
-
const toast = useToast();
|
|
67
|
-
const i18n = useI18n();
|
|
68
|
-
const telemetry = useTelemetry();
|
|
69
|
-
const externalHooks = useExternalHooks();
|
|
70
|
-
const { getInputDataWithPinned } = useDataSchema();
|
|
71
|
-
const { isSubNodeType: isSubNodeType2, isMultipleOutputsNodeType } = useNodeType({
|
|
72
|
-
node
|
|
73
|
-
});
|
|
74
|
-
const data = computed(() => {
|
|
75
|
-
const targetNode = unref(node);
|
|
76
|
-
return targetNode ? workflowsStore.pinDataByNodeName(targetNode.name) : void 0;
|
|
77
|
-
});
|
|
78
|
-
const hasData = computed(() => {
|
|
79
|
-
const targetNode = unref(node);
|
|
80
|
-
return !!targetNode && typeof data.value !== "undefined";
|
|
81
|
-
});
|
|
82
|
-
const isValidNodeType = computed(() => {
|
|
83
|
-
const targetNode = unref(node);
|
|
84
|
-
return !!targetNode && !isSubNodeType2.value && !isMultipleOutputsNodeType.value && !PIN_DATA_NODE_TYPES_DENYLIST.includes(targetNode.type);
|
|
85
|
-
});
|
|
86
|
-
function canPinNode(checkDataEmpty = false, outputIndex) {
|
|
87
|
-
const targetNode = unref(node);
|
|
88
|
-
if (targetNode === null || PIN_DATA_NODE_TYPES_DENYLIST.includes(targetNode.type)) return false;
|
|
89
|
-
const nodeType = useNodeTypesStore().getNodeType(targetNode.type, targetNode.typeVersion);
|
|
90
|
-
const dataToPin = getInputDataWithPinned(targetNode);
|
|
91
|
-
if (!nodeType || checkDataEmpty && dataToPin.length === 0) return false;
|
|
92
|
-
const workflow = workflowsStore.getCurrentWorkflow();
|
|
93
|
-
const outputs = getNodeOutputs(workflow, targetNode, nodeType).map(
|
|
94
|
-
(output) => typeof output === "string" ? { type: output } : output
|
|
95
|
-
);
|
|
96
|
-
const mainOutputs = outputs.filter(
|
|
97
|
-
(output) => output.type === NodeConnectionType.Main && output.category !== "error"
|
|
98
|
-
);
|
|
99
|
-
let indexAcceptable = true;
|
|
100
|
-
if (outputIndex !== void 0) {
|
|
101
|
-
const output = outputs[outputIndex];
|
|
102
|
-
if (outputs[outputIndex] === void 0) return false;
|
|
103
|
-
indexAcceptable = output.type === NodeConnectionType.Main && output.category !== "error";
|
|
104
|
-
}
|
|
105
|
-
return mainOutputs.length === 1 && indexAcceptable;
|
|
106
|
-
}
|
|
107
|
-
function isValidJSON(data2) {
|
|
108
|
-
try {
|
|
109
|
-
JSON.parse(data2);
|
|
110
|
-
return true;
|
|
111
|
-
} catch (error) {
|
|
112
|
-
const title = i18n.baseText("runData.editOutputInvalid");
|
|
113
|
-
const toRemove = new RegExp(/JSON\.parse:|of the JSON data/, "g");
|
|
114
|
-
const message = error.message.replace(toRemove, "").trim();
|
|
115
|
-
const positionMatchRegEx = /at position (\d+)/;
|
|
116
|
-
const positionMatch = error.message.match(positionMatchRegEx);
|
|
117
|
-
error.message = message.charAt(0).toUpperCase() + message.slice(1);
|
|
118
|
-
error.message = error.message.replace(
|
|
119
|
-
"Unexpected token ' in JSON",
|
|
120
|
-
i18n.baseText("runData.editOutputInvalid.singleQuote")
|
|
121
|
-
);
|
|
122
|
-
if (positionMatch) {
|
|
123
|
-
const position = parseInt(positionMatch[1], 10);
|
|
124
|
-
const lineBreaksUpToPosition = (data2.slice(0, position).match(/\n/g) || []).length;
|
|
125
|
-
error.message = error.message.replace(
|
|
126
|
-
positionMatchRegEx,
|
|
127
|
-
i18n.baseText("runData.editOutputInvalid.atPosition", {
|
|
128
|
-
interpolate: {
|
|
129
|
-
position: `${position}`
|
|
130
|
-
}
|
|
131
|
-
})
|
|
132
|
-
);
|
|
133
|
-
error.message = `${i18n.baseText("runData.editOutputInvalid.onLine", {
|
|
134
|
-
interpolate: {
|
|
135
|
-
line: `${lineBreaksUpToPosition + 1}`
|
|
136
|
-
}
|
|
137
|
-
})} ${error.message}`;
|
|
138
|
-
}
|
|
139
|
-
toast.showError(error, title);
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
function getMaxPinnedDataSize() {
|
|
144
|
-
return window.maxPinnedDataSize ?? MAX_PINNED_DATA_SIZE;
|
|
145
|
-
}
|
|
146
|
-
function isValidSize(data2) {
|
|
147
|
-
const targetNode = unref(node);
|
|
148
|
-
if (!targetNode) {
|
|
149
|
-
return false;
|
|
150
|
-
}
|
|
151
|
-
if (typeof data2 === "object") data2 = JSON.stringify(data2);
|
|
152
|
-
const { pinData: currentPinData, ...workflow } = workflowsStore.getCurrentWorkflow();
|
|
153
|
-
const workflowJson = jsonStringify(workflow, { replaceCircularRefs: true });
|
|
154
|
-
const newPinData = { ...currentPinData, [targetNode.name]: data2 };
|
|
155
|
-
const newPinDataSize = workflowsStore.getPinDataSize(newPinData);
|
|
156
|
-
if (newPinDataSize > getMaxPinnedDataSize()) {
|
|
157
|
-
toast.showError(
|
|
158
|
-
new Error(
|
|
159
|
-
i18n.baseText("ndv.pinData.error.tooLarge.description", {
|
|
160
|
-
interpolate: {
|
|
161
|
-
size: toMegaBytes(newPinDataSize),
|
|
162
|
-
limit: toMegaBytes(getMaxPinnedDataSize())
|
|
163
|
-
}
|
|
164
|
-
})
|
|
165
|
-
),
|
|
166
|
-
i18n.baseText("ndv.pinData.error.tooLarge.title")
|
|
167
|
-
);
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
const workflowSize = stringSizeInBytes(workflowJson) + newPinDataSize;
|
|
171
|
-
const limit = MAX_WORKFLOW_SIZE - MAX_EXPECTED_REQUEST_SIZE;
|
|
172
|
-
if (workflowSize > limit) {
|
|
173
|
-
toast.showError(
|
|
174
|
-
new Error(
|
|
175
|
-
i18n.baseText("ndv.pinData.error.tooLargeWorkflow.description", {
|
|
176
|
-
interpolate: { size: toMegaBytes(workflowSize), limit: toMegaBytes(limit) }
|
|
177
|
-
})
|
|
178
|
-
),
|
|
179
|
-
i18n.baseText("ndv.pinData.error.tooLargeWorkflow.title")
|
|
180
|
-
);
|
|
181
|
-
return false;
|
|
182
|
-
}
|
|
183
|
-
return true;
|
|
184
|
-
}
|
|
185
|
-
function onSetDataSuccess({ source }) {
|
|
186
|
-
const targetNode = unref(node);
|
|
187
|
-
const displayMode = unref(options.displayMode);
|
|
188
|
-
const runIndex = unref(options.runIndex);
|
|
189
|
-
const telemetryPayload = {
|
|
190
|
-
pinning_source: source,
|
|
191
|
-
node_type: targetNode?.type,
|
|
192
|
-
push_ref: rootStore.pushRef,
|
|
193
|
-
data_size: stringSizeInBytes(data.value),
|
|
194
|
-
view: displayMode,
|
|
195
|
-
run_index: runIndex
|
|
196
|
-
};
|
|
197
|
-
void externalHooks.run("runData.onDataPinningSuccess", telemetryPayload);
|
|
198
|
-
telemetry.track("Ndv data pinning success", telemetryPayload);
|
|
199
|
-
}
|
|
200
|
-
function onSetDataError({
|
|
201
|
-
errorType,
|
|
202
|
-
source
|
|
203
|
-
}) {
|
|
204
|
-
const targetNode = unref(node);
|
|
205
|
-
const displayMode = unref(options.displayMode);
|
|
206
|
-
const runIndex = unref(options.runIndex);
|
|
207
|
-
telemetry.track("Ndv data pinning failure", {
|
|
208
|
-
pinning_source: source,
|
|
209
|
-
node_type: targetNode?.type,
|
|
210
|
-
push_ref: rootStore.pushRef,
|
|
211
|
-
data_size: stringSizeInBytes(data.value),
|
|
212
|
-
view: displayMode,
|
|
213
|
-
run_index: runIndex,
|
|
214
|
-
error_type: errorType
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
function setData(data2, source) {
|
|
218
|
-
const targetNode = unref(node);
|
|
219
|
-
if (!targetNode) {
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
if (typeof data2 === "string") {
|
|
223
|
-
if (!isValidJSON(data2)) {
|
|
224
|
-
onSetDataError({ errorType: "invalid-json", source });
|
|
225
|
-
throw new Error("Invalid JSON");
|
|
226
|
-
}
|
|
227
|
-
data2 = jsonParse(data2);
|
|
228
|
-
}
|
|
229
|
-
if (!isValidSize(data2)) {
|
|
230
|
-
onSetDataError({ errorType: "data-too-large", source });
|
|
231
|
-
throw new Error("Data too large");
|
|
232
|
-
}
|
|
233
|
-
workflowsStore.pinData({ node: targetNode, data: data2 });
|
|
234
|
-
onSetDataSuccess({ source });
|
|
235
|
-
}
|
|
236
|
-
function onUnsetData({ source }) {
|
|
237
|
-
const targetNode = unref(node);
|
|
238
|
-
const runIndex = unref(options.runIndex);
|
|
239
|
-
telemetry.track("User unpinned ndv data", {
|
|
240
|
-
node_type: targetNode?.type,
|
|
241
|
-
push_ref: rootStore.pushRef,
|
|
242
|
-
run_index: runIndex,
|
|
243
|
-
source,
|
|
244
|
-
data_size: stringSizeInBytes(data.value)
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
function unsetData(source) {
|
|
248
|
-
const targetNode = unref(node);
|
|
249
|
-
if (!targetNode) {
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
onUnsetData({ source });
|
|
253
|
-
workflowsStore.unpinData({ node: targetNode });
|
|
254
|
-
}
|
|
255
|
-
return {
|
|
256
|
-
data,
|
|
257
|
-
hasData,
|
|
258
|
-
isValidNodeType,
|
|
259
|
-
canPinNode,
|
|
260
|
-
setData,
|
|
261
|
-
onSetDataSuccess,
|
|
262
|
-
onSetDataError,
|
|
263
|
-
unsetData,
|
|
264
|
-
onUnsetData,
|
|
265
|
-
isValidJSON,
|
|
266
|
-
isValidSize
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
export {
|
|
270
|
-
useNodeType as a,
|
|
271
|
-
upperFirst as b,
|
|
272
|
-
capitalize as c,
|
|
273
|
-
usePinnedData as u
|
|
274
|
-
};
|
|
File without changes
|