250 lines
6.5 KiB
TypeScript
Executable File
250 lines
6.5 KiB
TypeScript
Executable File
import { randomString, setGlobalState } from 'n8n-workflow';
|
|
import { defineStore } from 'pinia';
|
|
import { computed, ref } from 'vue';
|
|
|
|
import { STORES } from './constants';
|
|
|
|
const { VUE_APP_URL_BASE_API } = import.meta.env;
|
|
|
|
export type RootStoreState = {
|
|
baseUrl: string;
|
|
restEndpoint: string;
|
|
defaultLocale: string;
|
|
endpointForm: string;
|
|
endpointFormTest: string;
|
|
endpointFormWaiting: string;
|
|
endpointMcp: string;
|
|
endpointMcpTest: string;
|
|
endpointWebhook: string;
|
|
endpointWebhookTest: string;
|
|
endpointWebhookWaiting: string;
|
|
timezone: string;
|
|
executionTimeout: number;
|
|
maxExecutionTimeout: number;
|
|
versionCli: string;
|
|
oauthCallbackUrls: object;
|
|
n8nMetadata: {
|
|
[key: string]: string | number | undefined;
|
|
};
|
|
pushRef: string;
|
|
urlBaseWebhook: string;
|
|
urlBaseEditor: string;
|
|
instanceId: string;
|
|
binaryDataMode: 'default' | 'filesystem' | 's3';
|
|
};
|
|
|
|
export const useRootStore = defineStore(STORES.ROOT, () => {
|
|
const state = ref<RootStoreState>({
|
|
baseUrl: VUE_APP_URL_BASE_API ?? window.BASE_PATH,
|
|
restEndpoint:
|
|
!window.REST_ENDPOINT || window.REST_ENDPOINT === '{{REST_ENDPOINT}}'
|
|
? 'rest'
|
|
: window.REST_ENDPOINT,
|
|
defaultLocale: 'en',
|
|
endpointForm: 'form',
|
|
endpointFormTest: 'form-test',
|
|
endpointFormWaiting: 'form-waiting',
|
|
endpointMcp: 'mcp',
|
|
endpointMcpTest: 'mcp-test',
|
|
endpointWebhook: 'webhook',
|
|
endpointWebhookTest: 'webhook-test',
|
|
endpointWebhookWaiting: 'webhook-waiting',
|
|
timezone: 'America/New_York',
|
|
executionTimeout: -1,
|
|
maxExecutionTimeout: Number.MAX_SAFE_INTEGER,
|
|
versionCli: '0.0.0',
|
|
oauthCallbackUrls: {},
|
|
n8nMetadata: {},
|
|
pushRef: randomString(10).toLowerCase(),
|
|
urlBaseWebhook: 'http://localhost:5678/',
|
|
urlBaseEditor: 'http://localhost:5678',
|
|
instanceId: '',
|
|
binaryDataMode: 'default',
|
|
});
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// #region Computed
|
|
// ---------------------------------------------------------------------------
|
|
|
|
const baseUrl = computed(() => state.value.baseUrl);
|
|
|
|
const formUrl = computed(() => `${state.value.urlBaseWebhook}${state.value.endpointForm}`);
|
|
|
|
const formTestUrl = computed(() => `${state.value.urlBaseEditor}${state.value.endpointFormTest}`);
|
|
|
|
const formWaitingUrl = computed(
|
|
() => `${state.value.urlBaseEditor}${state.value.endpointFormWaiting}`,
|
|
);
|
|
|
|
const webhookUrl = computed(() => `${state.value.urlBaseWebhook}${state.value.endpointWebhook}`);
|
|
|
|
const webhookTestUrl = computed(
|
|
() => `${state.value.urlBaseEditor}${state.value.endpointWebhookTest}`,
|
|
);
|
|
|
|
const webhookWaitingUrl = computed(
|
|
() => `${state.value.urlBaseEditor}${state.value.endpointWebhookWaiting}`,
|
|
);
|
|
|
|
const mcpUrl = computed(() => `${state.value.urlBaseWebhook}${state.value.endpointMcp}`);
|
|
|
|
const mcpTestUrl = computed(() => `${state.value.urlBaseEditor}${state.value.endpointMcpTest}`);
|
|
|
|
const pushRef = computed(() => state.value.pushRef);
|
|
|
|
const binaryDataMode = computed(() => state.value.binaryDataMode);
|
|
|
|
const defaultLocale = computed(() => state.value.defaultLocale);
|
|
|
|
const urlBaseEditor = computed(() => state.value.urlBaseEditor);
|
|
|
|
const instanceId = computed(() => state.value.instanceId);
|
|
|
|
const versionCli = computed(() => state.value.versionCli);
|
|
|
|
const OAuthCallbackUrls = computed(() => state.value.oauthCallbackUrls);
|
|
|
|
const restUrl = computed(() => `${state.value.baseUrl}${state.value.restEndpoint}`);
|
|
|
|
const executionTimeout = computed(() => state.value.executionTimeout);
|
|
|
|
const maxExecutionTimeout = computed(() => state.value.maxExecutionTimeout);
|
|
|
|
const timezone = computed(() => state.value.timezone);
|
|
|
|
const restApiContext = computed(() => ({
|
|
baseUrl: restUrl.value,
|
|
pushRef: state.value.pushRef,
|
|
}));
|
|
|
|
// #endregion
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// #region Methods
|
|
// ---------------------------------------------------------------------------
|
|
|
|
const setUrlBaseWebhook = (value: string) => {
|
|
const url = value.endsWith('/') ? value : `${value}/`;
|
|
state.value.urlBaseWebhook = url;
|
|
};
|
|
|
|
const setUrlBaseEditor = (value: string) => {
|
|
const url = value.endsWith('/') ? value : `${value}/`;
|
|
state.value.urlBaseEditor = url;
|
|
};
|
|
|
|
const setEndpointForm = (value: string) => {
|
|
state.value.endpointForm = value;
|
|
};
|
|
|
|
const setEndpointFormTest = (value: string) => {
|
|
state.value.endpointFormTest = value;
|
|
};
|
|
|
|
const setEndpointFormWaiting = (value: string) => {
|
|
state.value.endpointFormWaiting = value;
|
|
};
|
|
|
|
const setEndpointWebhook = (value: string) => {
|
|
state.value.endpointWebhook = value;
|
|
};
|
|
|
|
const setEndpointWebhookTest = (value: string) => {
|
|
state.value.endpointWebhookTest = value;
|
|
};
|
|
|
|
const setEndpointWebhookWaiting = (value: string) => {
|
|
state.value.endpointWebhookWaiting = value;
|
|
};
|
|
|
|
const setEndpointMcp = (value: string) => {
|
|
state.value.endpointMcp = value;
|
|
};
|
|
|
|
const setEndpointMcpTest = (value: string) => {
|
|
state.value.endpointMcpTest = value;
|
|
};
|
|
|
|
const setTimezone = (value: string) => {
|
|
state.value.timezone = value;
|
|
setGlobalState({ defaultTimezone: value });
|
|
};
|
|
|
|
const setExecutionTimeout = (value: number) => {
|
|
state.value.executionTimeout = value;
|
|
};
|
|
|
|
const setMaxExecutionTimeout = (value: number) => {
|
|
state.value.maxExecutionTimeout = value;
|
|
};
|
|
|
|
const setVersionCli = (value: string) => {
|
|
state.value.versionCli = value;
|
|
};
|
|
|
|
const setInstanceId = (value: string) => {
|
|
state.value.instanceId = value;
|
|
};
|
|
|
|
const setOauthCallbackUrls = (value: RootStoreState['oauthCallbackUrls']) => {
|
|
state.value.oauthCallbackUrls = value;
|
|
};
|
|
|
|
const setN8nMetadata = (value: RootStoreState['n8nMetadata']) => {
|
|
state.value.n8nMetadata = value;
|
|
};
|
|
|
|
const setDefaultLocale = (value: string) => {
|
|
state.value.defaultLocale = value;
|
|
};
|
|
|
|
const setBinaryDataMode = (value: RootStoreState['binaryDataMode']) => {
|
|
state.value.binaryDataMode = value;
|
|
};
|
|
|
|
// #endregion
|
|
|
|
return {
|
|
baseUrl,
|
|
formUrl,
|
|
formTestUrl,
|
|
formWaitingUrl,
|
|
mcpUrl,
|
|
mcpTestUrl,
|
|
webhookUrl,
|
|
webhookTestUrl,
|
|
webhookWaitingUrl,
|
|
restUrl,
|
|
restApiContext,
|
|
urlBaseEditor,
|
|
versionCli,
|
|
instanceId,
|
|
pushRef,
|
|
defaultLocale,
|
|
binaryDataMode,
|
|
OAuthCallbackUrls,
|
|
executionTimeout,
|
|
maxExecutionTimeout,
|
|
timezone,
|
|
setUrlBaseWebhook,
|
|
setUrlBaseEditor,
|
|
setEndpointForm,
|
|
setEndpointFormTest,
|
|
setEndpointFormWaiting,
|
|
setEndpointWebhook,
|
|
setEndpointWebhookTest,
|
|
setEndpointWebhookWaiting,
|
|
setEndpointMcp,
|
|
setEndpointMcpTest,
|
|
setTimezone,
|
|
setExecutionTimeout,
|
|
setMaxExecutionTimeout,
|
|
setVersionCli,
|
|
setInstanceId,
|
|
setOauthCallbackUrls,
|
|
setN8nMetadata,
|
|
setDefaultLocale,
|
|
setBinaryDataMode,
|
|
};
|
|
});
|