n8n-editor-ui 1.18.1 → 1.18.2
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/.turbo/turbo-build.log +44 -44
- package/dist/assets/{CanvasControls-9693cb18.js → CanvasControls-6e03b599.js} +2 -2
- package/dist/assets/{CanvasControls-9693cb18.js.map → CanvasControls-6e03b599.js.map} +1 -1
- package/dist/assets/{CredentialsView-ff501c21.js → CredentialsView-7fc541bb.js} +2 -2
- package/dist/assets/{CredentialsView-ff501c21.js.map → CredentialsView-7fc541bb.js.map} +1 -1
- package/dist/assets/{ExecutionFilter-9839fa2f.js → ExecutionFilter-4dcfda5f.js} +2 -2
- package/dist/assets/{ExecutionFilter-9839fa2f.js.map → ExecutionFilter-4dcfda5f.js.map} +1 -1
- package/dist/assets/{ExecutionPreview-ee3acb1c.js → ExecutionPreview-8436d908.js} +2 -2
- package/dist/assets/{ExecutionPreview-ee3acb1c.js.map → ExecutionPreview-8436d908.js.map} +1 -1
- package/dist/assets/{ExecutionsInfoAccordion-55c2a107.js → ExecutionsInfoAccordion-021dc499.js} +2 -2
- package/dist/assets/{ExecutionsInfoAccordion-55c2a107.js.map → ExecutionsInfoAccordion-021dc499.js.map} +1 -1
- package/dist/assets/{ExecutionsLandingPage-97aa7e15.js → ExecutionsLandingPage-3d48310c.js} +2 -2
- package/dist/assets/{ExecutionsLandingPage-97aa7e15.js.map → ExecutionsLandingPage-3d48310c.js.map} +1 -1
- package/dist/assets/{ExecutionsList-cf5f6b88.js → ExecutionsList-a1b490e4.js} +2 -2
- package/dist/assets/ExecutionsList-a1b490e4.js.map +1 -0
- package/dist/assets/{ExecutionsView-5ae73302.js → ExecutionsView-7703b595.js} +2 -2
- package/dist/assets/{ExecutionsView-5ae73302.js.map → ExecutionsView-7703b595.js.map} +1 -1
- package/dist/assets/{FixedCollectionParameter-78836f67.js → FixedCollectionParameter-90a3210f.js} +2 -2
- package/dist/assets/{FixedCollectionParameter-78836f67.js.map → FixedCollectionParameter-90a3210f.js.map} +1 -1
- package/dist/assets/{MainHeader-408d9087.js → MainHeader-7eaf030e.js} +2 -2
- package/dist/assets/{MainHeader-408d9087.js.map → MainHeader-7eaf030e.js.map} +1 -1
- package/dist/assets/{MainSidebar-5f622fc9.js → MainSidebar-b0a38e3c.js} +2 -2
- package/dist/assets/{MainSidebar-5f622fc9.js.map → MainSidebar-b0a38e3c.js.map} +1 -1
- package/dist/assets/{NodeCreation-0715d8da.js → NodeCreation-787a187a.js} +2 -2
- package/dist/assets/{NodeCreation-0715d8da.js.map → NodeCreation-787a187a.js.map} +1 -1
- package/dist/assets/{NodeCreator-96b100ef.js → NodeCreator-6f839eb9.js} +2 -2
- package/dist/assets/{NodeCreator-96b100ef.js.map → NodeCreator-6f839eb9.js.map} +1 -1
- package/dist/assets/{NodeView-5651414a.js → NodeView-ef40797d.js} +2 -2
- package/dist/assets/{NodeView-5651414a.js.map → NodeView-ef40797d.js.map} +1 -1
- package/dist/assets/{ResourcesListLayout-df5d1ba9.js → ResourcesListLayout-88dfcefc.js} +2 -2
- package/dist/assets/{ResourcesListLayout-df5d1ba9.js.map → ResourcesListLayout-88dfcefc.js.map} +1 -1
- package/dist/assets/{RunDataAi-97c7f732.js → RunDataAi-8d5bd68e.js} +2 -2
- package/dist/assets/{RunDataAi-97c7f732.js.map → RunDataAi-8d5bd68e.js.map} +1 -1
- package/dist/assets/{RunDataJson-df1dc721.js → RunDataJson-a3e1ca39.js} +2 -2
- package/dist/assets/{RunDataJson-df1dc721.js.map → RunDataJson-a3e1ca39.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-25336578.js → RunDataJsonActions-6b0ffebb.js} +2 -2
- package/dist/assets/{RunDataJsonActions-25336578.js.map → RunDataJsonActions-6b0ffebb.js.map} +1 -1
- package/dist/assets/{RunDataSchema-101b201c.js → RunDataSchema-60c0baf0.js} +2 -2
- package/dist/assets/{RunDataSchema-101b201c.js.map → RunDataSchema-60c0baf0.js.map} +1 -1
- package/dist/assets/{RunDataTable-17daf3ee.js → RunDataTable-dcf4902d.js} +2 -2
- package/dist/assets/{RunDataTable-17daf3ee.js.map → RunDataTable-dcf4902d.js.map} +1 -1
- package/dist/assets/{SettingsApiView-e4fc36d4.js → SettingsApiView-667aa889.js} +2 -2
- package/dist/assets/{SettingsApiView-e4fc36d4.js.map → SettingsApiView-667aa889.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-32ccd1bd.js → SettingsCommunityNodesView-27bf1a31.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-32ccd1bd.js.map → SettingsCommunityNodesView-27bf1a31.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-b409d644.js → SettingsExternalSecrets-7996830e.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-b409d644.js.map → SettingsExternalSecrets-7996830e.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-09162f67.js → SettingsFakeDoorView-3d488495.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-09162f67.js.map → SettingsFakeDoorView-3d488495.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-5fa4c1a5.js → SettingsSourceControl-1c188575.js} +2 -2
- package/dist/assets/{SettingsSourceControl-5fa4c1a5.js.map → SettingsSourceControl-1c188575.js.map} +1 -1
- package/dist/assets/{SettingsSso-0616c11d.js → SettingsSso-b6867d69.js} +2 -2
- package/dist/assets/{SettingsSso-0616c11d.js.map → SettingsSso-b6867d69.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-5c377b5a.js → SettingsUsersView-df9ac304.js} +2 -2
- package/dist/assets/{SettingsUsersView-5c377b5a.js.map → SettingsUsersView-df9ac304.js.map} +1 -1
- package/dist/assets/{SettingsView-97e1b2e3.js → SettingsView-f00add58.js} +2 -2
- package/dist/assets/{SettingsView-97e1b2e3.js.map → SettingsView-f00add58.js.map} +1 -1
- package/dist/assets/{SigninView-3a4f05d7.js → SigninView-bb78c29d.js} +2 -2
- package/dist/assets/{SigninView-3a4f05d7.js.map → SigninView-bb78c29d.js.map} +1 -1
- package/dist/assets/{TemplateDetails-afb767a3.js → TemplateDetails-e6bea627.js} +2 -2
- package/dist/assets/{TemplateDetails-afb767a3.js.map → TemplateDetails-e6bea627.js.map} +1 -1
- package/dist/assets/{TemplateList-8ab2d9d4.js → TemplateList-f0b309ec.js} +2 -2
- package/dist/assets/{TemplateList-8ab2d9d4.js.map → TemplateList-f0b309ec.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-278d0d0c.js → TemplatesCollectionView-c11299ee.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-278d0d0c.js.map → TemplatesCollectionView-c11299ee.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-75c82b34.js → TemplatesSearchView-822c8b1c.js} +2 -2
- package/dist/assets/{TemplatesSearchView-75c82b34.js.map → TemplatesSearchView-822c8b1c.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-8d955f12.js → TemplatesWorkflowView-349f3155.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-8d955f12.js.map → TemplatesWorkflowView-349f3155.js.map} +1 -1
- package/dist/assets/{VariablesView-b222c8d4.js → VariablesView-f075cbd4.js} +2 -2
- package/dist/assets/{VariablesView-b222c8d4.js.map → VariablesView-f075cbd4.js.map} +1 -1
- package/dist/assets/{WorkerView-55c8d5d4.js → WorkerView-5b9d29af.js} +2 -2
- package/dist/assets/{WorkerView-55c8d5d4.js.map → WorkerView-5b9d29af.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-8fba9207.js → WorkflowActivator-163f4fb5.js} +2 -2
- package/dist/assets/{WorkflowActivator-8fba9207.js.map → WorkflowActivator-163f4fb5.js.map} +1 -1
- package/dist/assets/{WorkflowsView-323b177e.js → WorkflowsView-bf74dadd.js} +2 -2
- package/dist/assets/{WorkflowsView-323b177e.js.map → WorkflowsView-bf74dadd.js.map} +1 -1
- package/dist/assets/{executionsHelpers-f6f8f8af.js → executionsHelpers-a9dfda49.js} +2 -2
- package/dist/assets/{executionsHelpers-f6f8f8af.js.map → executionsHelpers-a9dfda49.js.map} +1 -1
- package/dist/assets/{index-1f0f487e.js → index-ac03fd2d.js} +3 -3
- package/dist/assets/{index-1f0f487e.js.map → index-ac03fd2d.js.map} +1 -1
- package/dist/assets/{pushConnection-4f2192a6.js → pushConnection-a1ddc3b4.js} +2 -2
- package/dist/assets/{pushConnection-4f2192a6.js.map → pushConnection-a1ddc3b4.js.map} +1 -1
- package/dist/assets/{workflowActivate-417a26ee.js → workflowActivate-c971eb19.js} +2 -2
- package/dist/assets/{workflowActivate-417a26ee.js.map → workflowActivate-c971eb19.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/ExecutionsList-cf5f6b88.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsApiView-e4fc36d4.js","sources":["../../src/views/SettingsApiView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.api') }}\n\t\t\t\t<span :style=\"{ fontSize: 'var(--font-size-s)', color: 'var(--color-text-light)' }\">\n\t\t\t\t\t({{ $locale.baseText('beta') }})\n\t\t\t\t</span>\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<div v-if=\"apiKey\">\n\t\t\t<p class=\"mb-s\">\n\t\t\t\t<n8n-info-tip :bold=\"false\">\n\t\t\t\t\t<i18n-t keypath=\"settings.api.view.info\" tag=\"span\">\n\t\t\t\t\t\t<template #apiAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/api\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.api')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #webhookAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/integrations/core-nodes/n8n-nodes-base.webhook/\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.webhook')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</p>\n\t\t\t<n8n-card class=\"mb-4xs\" :class=\"$style.card\">\n\t\t\t\t<span :class=\"$style.delete\">\n\t\t\t\t\t<n8n-link @click=\"showDeleteModal\" :bold=\"true\">\n\t\t\t\t\t\t{{ $locale.baseText('generic.delete') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</span>\n\t\t\t\t<div>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.api.view.myKey')\"\n\t\t\t\t\t\t:value=\"apiKey\"\n\t\t\t\t\t\t:copy-button-text=\"$locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t\t:toast-title=\"$locale.baseText('settings.api.view.copy.toast')\"\n\t\t\t\t\t\t:redactValue=\"true\"\n\t\t\t\t\t\t@copy=\"onCopy\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</n8n-card>\n\t\t\t<div :class=\"$style.hint\">\n\t\t\t\t<n8n-text size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(`settings.api.view.${swaggerUIEnabled ? 'tryapi' : 'more-details'}`)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-text>\n\t\t\t\t{{ ' ' }}\n\t\t\t\t<n8n-link :to=\"apiDocsURL\" :newWindow=\"true\" size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(\n\t\t\t\t\t\t\t`settings.api.view.${swaggerUIEnabled ? 'apiPlayground' : 'external-docs'}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-link>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"isTrialing\"\n\t\t\t:heading=\"$locale.baseText('settings.api.trial.upgradePlan.title')\"\n\t\t\t:description=\"$locale.baseText('settings.api.trial.upgradePlan.description')\"\n\t\t\t:buttonText=\"$locale.baseText('settings.api.trial.upgradePlan.cta')\"\n\t\t\t@click:button=\"onUpgrade\"\n\t\t/>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"mounted && !isLoadingCloudPlans\"\n\t\t\t:buttonText=\"\n\t\t\t\t$locale.baseText(\n\t\t\t\t\tloading ? 'settings.api.create.button.loading' : 'settings.api.create.button',\n\t\t\t\t)\n\t\t\t\"\n\t\t\t:description=\"$locale.baseText('settings.api.create.description')\"\n\t\t\t@click:button=\"createApiKey\"\n\t\t/>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IUser } from '@/Interface';\nimport { useToast, useMessage } from '@/composables';\n\nimport CopyInput from '@/components/CopyInput.vue';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useRootStore } from '@/stores/n8nRoot.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useCloudPlanStore } from '@/stores/cloudPlan.store';\nimport { DOCS_DOMAIN, MODAL_CONFIRM } from '@/constants';\n\nexport default defineComponent({\n\tname: 'SettingsApiView',\n\tcomponents: {\n\t\tCopyInput,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t\t...useUIStore(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tmounted: false,\n\t\t\tapiKey: '',\n\t\t\tswaggerUIEnabled: false,\n\t\t\tapiDocsURL: '',\n\t\t};\n\t},\n\tmounted() {\n\t\tvoid this.getApiKey();\n\t\tconst baseUrl = this.rootStore.baseUrl;\n\t\tconst apiPath = this.settingsStore.publicApiPath;\n\t\tconst latestVersion = this.settingsStore.publicApiLatestVersion;\n\t\tthis.swaggerUIEnabled = this.settingsStore.isSwaggerUIEnabled;\n\t\tthis.apiDocsURL = this.swaggerUIEnabled\n\t\t\t? `${baseUrl}${apiPath}/v${latestVersion}/docs`\n\t\t\t: `https://${DOCS_DOMAIN}/api/api-reference/`;\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUsersStore, useCloudPlanStore, useUIStore),\n\t\tcurrentUser(): IUser | null {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisTrialing(): boolean {\n\t\t\treturn this.cloudPlanStore.userIsTrialing;\n\t\t},\n\t\tisLoadingCloudPlans(): boolean {\n\t\t\treturn this.cloudPlanStore.state.loadingPlan;\n\t\t},\n\t},\n\tmethods: {\n\t\tonUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-n8n-api', 'upgrade-api', 'redirect');\n\t\t},\n\t\tasync showDeleteModal() {\n\t\t\tconst confirmed = await this.confirm(\n\t\t\t\tthis.$locale.baseText('settings.api.delete.description'),\n\t\t\t\tthis.$locale.baseText('settings.api.delete.title'),\n\t\t\t\t{\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText('settings.api.delete.button'),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText('generic.cancel'),\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (confirmed === MODAL_CONFIRM) {\n\t\t\t\tawait this.deleteApiKey();\n\t\t\t}\n\t\t},\n\t\tasync getApiKey() {\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.getApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.view.error'));\n\t\t\t} finally {\n\t\t\t\tthis.mounted = true;\n\t\t\t}\n\t\t},\n\t\tasync createApiKey() {\n\t\t\tthis.loading = true;\n\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.createApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.create.error'));\n\t\t\t} finally {\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.$telemetry.track('User clicked create API key button');\n\t\t\t}\n\t\t},\n\t\tasync deleteApiKey() {\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.deleteApiKey();\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.api.delete.toast'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t\tthis.apiKey = '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.delete.error'));\n\t\t\t} finally {\n\t\t\t\tthis.$telemetry.track('User clicked delete API key button');\n\t\t\t}\n\t\t},\n\t\tonCopy() {\n\t\t\tthis.$telemetry.track('User clicked copy API key button');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.card {\n\tposition: relative;\n}\n\n.delete {\n\tposition: absolute;\n\tdisplay: inline-block;\n\ttop: var(--spacing-s);\n\tright: var(--spacing-s);\n}\n\n.hint {\n\tcolor: var(--color-text-light);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","CopyInput","useToast","useMessage","useUIStore","baseUrl","apiPath","latestVersion","DOCS_DOMAIN","mapStores","useRootStore","useSettingsStore","useUsersStore","useCloudPlanStore","MODAL_CONFIRM","error","_resolveComponent","_normalizeClass","_ctx","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_normalizeStyle","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_n8n_info_tip","_component_i18n_t","_hoisted_3","_component_n8n_link","_component_CopyInput","_component_n8n_text","_component_n8n_action_box","_createBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsApiView-667aa889.js","sources":["../../src/views/SettingsApiView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.api') }}\n\t\t\t\t<span :style=\"{ fontSize: 'var(--font-size-s)', color: 'var(--color-text-light)' }\">\n\t\t\t\t\t({{ $locale.baseText('beta') }})\n\t\t\t\t</span>\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<div v-if=\"apiKey\">\n\t\t\t<p class=\"mb-s\">\n\t\t\t\t<n8n-info-tip :bold=\"false\">\n\t\t\t\t\t<i18n-t keypath=\"settings.api.view.info\" tag=\"span\">\n\t\t\t\t\t\t<template #apiAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/api\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.api')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #webhookAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/integrations/core-nodes/n8n-nodes-base.webhook/\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.webhook')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</p>\n\t\t\t<n8n-card class=\"mb-4xs\" :class=\"$style.card\">\n\t\t\t\t<span :class=\"$style.delete\">\n\t\t\t\t\t<n8n-link @click=\"showDeleteModal\" :bold=\"true\">\n\t\t\t\t\t\t{{ $locale.baseText('generic.delete') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</span>\n\t\t\t\t<div>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.api.view.myKey')\"\n\t\t\t\t\t\t:value=\"apiKey\"\n\t\t\t\t\t\t:copy-button-text=\"$locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t\t:toast-title=\"$locale.baseText('settings.api.view.copy.toast')\"\n\t\t\t\t\t\t:redactValue=\"true\"\n\t\t\t\t\t\t@copy=\"onCopy\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</n8n-card>\n\t\t\t<div :class=\"$style.hint\">\n\t\t\t\t<n8n-text size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(`settings.api.view.${swaggerUIEnabled ? 'tryapi' : 'more-details'}`)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-text>\n\t\t\t\t{{ ' ' }}\n\t\t\t\t<n8n-link :to=\"apiDocsURL\" :newWindow=\"true\" size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(\n\t\t\t\t\t\t\t`settings.api.view.${swaggerUIEnabled ? 'apiPlayground' : 'external-docs'}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-link>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"isTrialing\"\n\t\t\t:heading=\"$locale.baseText('settings.api.trial.upgradePlan.title')\"\n\t\t\t:description=\"$locale.baseText('settings.api.trial.upgradePlan.description')\"\n\t\t\t:buttonText=\"$locale.baseText('settings.api.trial.upgradePlan.cta')\"\n\t\t\t@click:button=\"onUpgrade\"\n\t\t/>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"mounted && !isLoadingCloudPlans\"\n\t\t\t:buttonText=\"\n\t\t\t\t$locale.baseText(\n\t\t\t\t\tloading ? 'settings.api.create.button.loading' : 'settings.api.create.button',\n\t\t\t\t)\n\t\t\t\"\n\t\t\t:description=\"$locale.baseText('settings.api.create.description')\"\n\t\t\t@click:button=\"createApiKey\"\n\t\t/>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IUser } from '@/Interface';\nimport { useToast, useMessage } from '@/composables';\n\nimport CopyInput from '@/components/CopyInput.vue';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useRootStore } from '@/stores/n8nRoot.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useCloudPlanStore } from '@/stores/cloudPlan.store';\nimport { DOCS_DOMAIN, MODAL_CONFIRM } from '@/constants';\n\nexport default defineComponent({\n\tname: 'SettingsApiView',\n\tcomponents: {\n\t\tCopyInput,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t\t...useUIStore(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tmounted: false,\n\t\t\tapiKey: '',\n\t\t\tswaggerUIEnabled: false,\n\t\t\tapiDocsURL: '',\n\t\t};\n\t},\n\tmounted() {\n\t\tvoid this.getApiKey();\n\t\tconst baseUrl = this.rootStore.baseUrl;\n\t\tconst apiPath = this.settingsStore.publicApiPath;\n\t\tconst latestVersion = this.settingsStore.publicApiLatestVersion;\n\t\tthis.swaggerUIEnabled = this.settingsStore.isSwaggerUIEnabled;\n\t\tthis.apiDocsURL = this.swaggerUIEnabled\n\t\t\t? `${baseUrl}${apiPath}/v${latestVersion}/docs`\n\t\t\t: `https://${DOCS_DOMAIN}/api/api-reference/`;\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUsersStore, useCloudPlanStore, useUIStore),\n\t\tcurrentUser(): IUser | null {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisTrialing(): boolean {\n\t\t\treturn this.cloudPlanStore.userIsTrialing;\n\t\t},\n\t\tisLoadingCloudPlans(): boolean {\n\t\t\treturn this.cloudPlanStore.state.loadingPlan;\n\t\t},\n\t},\n\tmethods: {\n\t\tonUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-n8n-api', 'upgrade-api', 'redirect');\n\t\t},\n\t\tasync showDeleteModal() {\n\t\t\tconst confirmed = await this.confirm(\n\t\t\t\tthis.$locale.baseText('settings.api.delete.description'),\n\t\t\t\tthis.$locale.baseText('settings.api.delete.title'),\n\t\t\t\t{\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText('settings.api.delete.button'),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText('generic.cancel'),\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (confirmed === MODAL_CONFIRM) {\n\t\t\t\tawait this.deleteApiKey();\n\t\t\t}\n\t\t},\n\t\tasync getApiKey() {\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.getApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.view.error'));\n\t\t\t} finally {\n\t\t\t\tthis.mounted = true;\n\t\t\t}\n\t\t},\n\t\tasync createApiKey() {\n\t\t\tthis.loading = true;\n\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.createApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.create.error'));\n\t\t\t} finally {\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.$telemetry.track('User clicked create API key button');\n\t\t\t}\n\t\t},\n\t\tasync deleteApiKey() {\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.deleteApiKey();\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.api.delete.toast'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t\tthis.apiKey = '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.delete.error'));\n\t\t\t} finally {\n\t\t\t\tthis.$telemetry.track('User clicked delete API key button');\n\t\t\t}\n\t\t},\n\t\tonCopy() {\n\t\t\tthis.$telemetry.track('User clicked copy API key button');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.card {\n\tposition: relative;\n}\n\n.delete {\n\tposition: absolute;\n\tdisplay: inline-block;\n\ttop: var(--spacing-s);\n\tright: var(--spacing-s);\n}\n\n.hint {\n\tcolor: var(--color-text-light);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","CopyInput","useToast","useMessage","useUIStore","baseUrl","apiPath","latestVersion","DOCS_DOMAIN","mapStores","useRootStore","useSettingsStore","useUsersStore","useCloudPlanStore","MODAL_CONFIRM","error","_resolveComponent","_normalizeClass","_ctx","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_normalizeStyle","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_n8n_info_tip","_component_i18n_t","_hoisted_3","_component_n8n_link","_component_CopyInput","_component_n8n_text","_component_n8n_action_box","_createBlock"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{aB as C,n as f,e3 as D,_ as v,u as L,v as w,aC as O,aF as S,g5 as x,g6 as V,aD as j}from"./n8n-6b07beca.js";import{m as A}from"./pinia-af9c3f71.js";import{d as I,g as l,o as t,i as s,n as o,h as n,j as c,w as i,b as k,s as y,t as r,O as N,a9 as b,q as P}from"./vendor-f46c350a.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import{p as $}from"./pushConnection-4f2192a6.js";import"./lodash-es-bad8e3ee.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./flatted-8b14da7d.js";import"./@vueuse/core-9fb50532.js";import"./uuid-cf522c50.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-5b4468a6.js";import"./@jsplumb/browser-ui-715581dc.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./index-1f0f487e.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./chart.js-58383f81.js";const z=I({name:"CommunityPackageCard",props:{communityPackage:{type:Object},loading:{type:Boolean,default:!1}},data(){return{packageActions:[{label:this.$locale.baseText("settings.communityNodes.viewDocsAction.label"),value:C.VIEW_DOCS,type:"external-link"},{label:this.$locale.baseText("settings.communityNodes.uninstallAction.label"),value:C.UNINSTALL}]}},computed:{...A(f)},methods:{async onAction(e){switch(e){case C.VIEW_DOCS:this.$telemetry.track("user clicked to browse the cnr package documentation",{package_name:this.communityPackage.packageName,package_version:this.communityPackage.installedVersion}),window.open(`${D}${this.communityPackage.packageName}`,"_blank");break;case C.UNINSTALL:this.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);break}},onUpdateClick(){this.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName)}}}),R="_cardContainer_14eyd_5",Y="_packageCard_14eyd_13",G="_cardSkeleton_14eyd_14",K="_loader_14eyd_28",H="_cardInfoContainer_14eyd_39",Q="_cardTitle_14eyd_44",q="_cardSubtitle_14eyd_51",F="_cardControlsContainer_14eyd_56",W="_cardActions_14eyd_62",J={cardContainer:R,packageCard:Y,cardSkeleton:G,loader:K,cardInfoContainer:H,cardTitle:Q,cardSubtitle:q,cardControlsContainer:F,cardActions:W},X={key:0};function Z(e,d,a,_,M,U){const h=l("n8n-loading"),m=l("n8n-text"),g=l("n8n-icon"),u=l("n8n-tooltip"),p=l("n8n-button"),B=l("n8n-action-toggle");return t(),s("div",{class:o(e.$style.cardContainer)},[e.loading?(t(),s("div",{key:0,class:o(e.$style.cardSkeleton)},[n(h,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"]),n(h,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"])],2)):(t(),s("div",{key:1,class:o(e.$style.packageCard)},[c("div",{class:o(e.$style.cardInfoContainer)},[c("div",{class:o(e.$style.cardTitle)},[n(m,{bold:!0,size:"large"},{default:i(()=>[y(r(e.communityPackage.packageName),1)]),_:1})],2),c("div",{class:o(e.$style.cardSubtitle)},[n(m,{bold:!0,size:"small",color:"text-light"},{default:i(()=>[y(r(e.$locale.baseText("settings.communityNodes.packageNodes.label",{adjustToNumber:e.communityPackage.installedNodes.length}))+": ",1)]),_:1}),n(m,{size:"small",color:"text-light"},{default:i(()=>[(t(!0),s(N,null,b(e.communityPackage.installedNodes,(T,E)=>(t(),s("span",{key:T.name},[y(r(T.name),1),E!=e.communityPackage.installedNodes.length-1?(t(),s("span",X,",")):P("",!0)]))),128))]),_:1})],2)],2),c("div",{class:o(e.$style.cardControlsContainer)},[n(m,{bold:!0,size:"large",color:"text-light"},{default:i(()=>[y(" v"+r(e.communityPackage.installedVersion),1)]),_:1}),e.communityPackage.failedLoading===!0?(t(),k(u,{key:0,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.failedToLoad.tooltip")),1)]),default:i(()=>[n(g,{icon:"exclamation-triangle",color:"danger",size:"large"})]),_:1})):e.communityPackage.updateAvailable?(t(),k(u,{key:1,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.updateAvailable.tooltip")),1)]),default:i(()=>[n(p,{type:"outline",label:"Update",onClick:e.onUpdateClick},null,8,["onClick"])]),_:1})):(t(),k(u,{key:2,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.upToDate.tooltip")),1)]),default:i(()=>[n(g,{icon:"check-circle",color:"text-light",size:"large"})]),_:1})),c("div",{class:o(e.$style.cardActions)},[n(B,{actions:e.packageActions,onAction:e.onAction},null,8,["actions","onAction"])],2)],2)],2))],2)}const ee={$style:J},te=v(z,[["render",Z],["__cssModules",ee]]),oe=31,ae=I({name:"SettingsCommunityNodesView",mixins:[$],components:{CommunityPackageCard:te},setup(e){var d,a;return{...L(),...(a=(d=$).setup)==null?void 0:a.call(d,e)}},data(){return{loading:!1}},async mounted(){this.pushConnect();try{this.loading=!0,await this.communityNodesStore.fetchInstalledPackages();const e=this.communityNodesStore.getInstalledPackages,d=e.filter(a=>a.updateAvailable);this.$telemetry.track("user viewed cnr settings page",{num_of_packages_installed:e.length,installed_packages:e.map(a=>({package_name:a.packageName,package_version:a.installedVersion,package_nodes:a.installedNodes.map(_=>`${_.name}-v${_.latestVersion}`),is_update_available:a.updateAvailable!==void 0})),packages_to_update:d.map(a=>({package_name:a.packageName,package_version_current:a.installedVersion,package_version_available:a.updateAvailable})),number_of_updates_available:d.length})}catch(e){this.showError(e,this.$locale.baseText("settings.communityNodes.fetchError.title"),this.$locale.baseText("settings.communityNodes.fetchError.message"))}finally{this.loading=!1}try{await this.communityNodesStore.fetchAvailableCommunityPackageCount()}finally{this.loading=!1}},beforeUnmount(){this.pushDisconnect()},computed:{...A(O,w,f),getEmptyStateDescription(){const e=this.communityNodesStore.availablePackageCount;return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.description.desktop"):e<oe?this.$locale.baseText("settings.communityNodes.empty.description.no-packages",{interpolate:{docURL:S}}):this.$locale.baseText("settings.communityNodes.empty.description",{interpolate:{docURL:S,count:(Math.floor(e/10)*10).toString()}})},getEmptyStateButtonText(){return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.button.desktop"):this.shouldShowInstallButton?this.$locale.baseText("settings.communityNodes.empty.installPackageLabel"):""},shouldShowInstallButton(){return this.settingsStore.isDesktopDeployment||this.settingsStore.isNpmAvailable},actionBoxConfig(){return this.settingsStore.isNpmAvailable?this.settingsStore.isQueueModeEnabled?{calloutText:this.$locale.baseText("settings.communityNodes.queueMode.warning",{interpolate:{docURL:V}}),calloutTheme:"warning",hideButton:!0}:{calloutText:"",calloutTheme:"",hideButton:!1}:{calloutText:this.$locale.baseText("settings.communityNodes.npmUnavailable.warning",{interpolate:{npmUrl:x}}),calloutTheme:"warning",hideButton:!0}}},methods:{onClickEmptyStateButton(){if(this.settingsStore.isDesktopDeployment)return this.goToUpgrade();this.openInstallModal()},goToUpgrade(){this.uiStore.goToUpgrade("community-nodes","upgrade-community-nodes")},openInstallModal(){const e={is_empty_state:this.communityNodesStore.getInstalledPackages.length===0};this.$telemetry.track("user clicked cnr install button",e),this.$externalHooks().run("settingsCommunityNodesView.openInstallModal",e),this.uiStore.openModal(j)}}}),ne="_container_12ljj_5",se="_headingContainer_12ljj_13",ie="_loadingContainer_12ljj_18",le="_actionBoxContainer_12ljj_23",ce="_cardsContainer_12ljj_27",re={container:ne,headingContainer:se,loadingContainer:ie,actionBoxContainer:le,cardsContainer:ce};function de(e,d,a,_,M,U){const h=l("n8n-heading"),m=l("n8n-button"),g=l("n8n-action-box"),u=l("community-package-card");return t(),s("div",{class:o(e.$style.container)},[c("div",{class:o(e.$style.headingContainer)},[n(h,{size:"2xlarge"},{default:i(()=>[y(r(e.$locale.baseText("settings.communityNodes")),1)]),_:1}),!e.settingsStore.isQueueModeEnabled&&e.communityNodesStore.getInstalledPackages.length>0&&!e.loading?(t(),k(m,{key:0,label:e.$locale.baseText("settings.communityNodes.installModal.installButton.label"),size:"large",onClick:e.openInstallModal},null,8,["label","onClick"])):P("",!0)],2),e.settingsStore.isQueueModeEnabled?(t(),s("div",{key:0,class:o(e.$style.actionBoxContainer)},[n(g,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,calloutText:e.actionBoxConfig.calloutText,calloutTheme:e.actionBoxConfig.calloutTheme},null,8,["heading","description","calloutText","calloutTheme"])],2)):e.loading?(t(),s("div",{key:1,class:o(e.$style.cardsContainer)},[(t(),s(N,null,b(2,p=>n(u,{key:"index-"+p,loading:!0})),64))],2)):e.communityNodesStore.getInstalledPackages.length===0?(t(),s("div",{key:2,class:o(e.$style.actionBoxContainer)},[n(g,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,buttonText:e.getEmptyStateButtonText,calloutText:e.actionBoxConfig.calloutText,calloutTheme:e.actionBoxConfig.calloutTheme,"onClick:button":e.onClickEmptyStateButton},null,8,["heading","description","buttonText","calloutText","calloutTheme","onClick:button"])],2)):(t(),s("div",{key:3,class:o(e.$style.cardsContainer)},[(t(!0),s(N,null,b(e.communityNodesStore.getInstalledPackages,p=>(t(),k(u,{key:p.packageName,communityPackage:p},null,8,["communityPackage"]))),128))],2))],2)}const me={$style:re},Ye=v(ae,[["render",de],["__cssModules",me]]);export{Ye as default};
|
|
2
|
-
//# sourceMappingURL=SettingsCommunityNodesView-
|
|
1
|
+
import{aB as C,n as f,e3 as D,_ as v,u as L,v as w,aC as O,aF as S,g5 as x,g6 as V,aD as j}from"./n8n-6b07beca.js";import{m as A}from"./pinia-af9c3f71.js";import{d as I,g as l,o as t,i as s,n as o,h as n,j as c,w as i,b as k,s as y,t as r,O as N,a9 as b,q as P}from"./vendor-f46c350a.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import{p as $}from"./pushConnection-a1ddc3b4.js";import"./lodash-es-bad8e3ee.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./flatted-8b14da7d.js";import"./@vueuse/core-9fb50532.js";import"./uuid-cf522c50.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-5b4468a6.js";import"./@jsplumb/browser-ui-715581dc.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./index-ac03fd2d.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./chart.js-58383f81.js";const z=I({name:"CommunityPackageCard",props:{communityPackage:{type:Object},loading:{type:Boolean,default:!1}},data(){return{packageActions:[{label:this.$locale.baseText("settings.communityNodes.viewDocsAction.label"),value:C.VIEW_DOCS,type:"external-link"},{label:this.$locale.baseText("settings.communityNodes.uninstallAction.label"),value:C.UNINSTALL}]}},computed:{...A(f)},methods:{async onAction(e){switch(e){case C.VIEW_DOCS:this.$telemetry.track("user clicked to browse the cnr package documentation",{package_name:this.communityPackage.packageName,package_version:this.communityPackage.installedVersion}),window.open(`${D}${this.communityPackage.packageName}`,"_blank");break;case C.UNINSTALL:this.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);break}},onUpdateClick(){this.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName)}}}),R="_cardContainer_14eyd_5",Y="_packageCard_14eyd_13",G="_cardSkeleton_14eyd_14",K="_loader_14eyd_28",H="_cardInfoContainer_14eyd_39",Q="_cardTitle_14eyd_44",q="_cardSubtitle_14eyd_51",F="_cardControlsContainer_14eyd_56",W="_cardActions_14eyd_62",J={cardContainer:R,packageCard:Y,cardSkeleton:G,loader:K,cardInfoContainer:H,cardTitle:Q,cardSubtitle:q,cardControlsContainer:F,cardActions:W},X={key:0};function Z(e,d,a,_,M,U){const h=l("n8n-loading"),m=l("n8n-text"),g=l("n8n-icon"),u=l("n8n-tooltip"),p=l("n8n-button"),B=l("n8n-action-toggle");return t(),s("div",{class:o(e.$style.cardContainer)},[e.loading?(t(),s("div",{key:0,class:o(e.$style.cardSkeleton)},[n(h,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"]),n(h,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"])],2)):(t(),s("div",{key:1,class:o(e.$style.packageCard)},[c("div",{class:o(e.$style.cardInfoContainer)},[c("div",{class:o(e.$style.cardTitle)},[n(m,{bold:!0,size:"large"},{default:i(()=>[y(r(e.communityPackage.packageName),1)]),_:1})],2),c("div",{class:o(e.$style.cardSubtitle)},[n(m,{bold:!0,size:"small",color:"text-light"},{default:i(()=>[y(r(e.$locale.baseText("settings.communityNodes.packageNodes.label",{adjustToNumber:e.communityPackage.installedNodes.length}))+": ",1)]),_:1}),n(m,{size:"small",color:"text-light"},{default:i(()=>[(t(!0),s(N,null,b(e.communityPackage.installedNodes,(T,E)=>(t(),s("span",{key:T.name},[y(r(T.name),1),E!=e.communityPackage.installedNodes.length-1?(t(),s("span",X,",")):P("",!0)]))),128))]),_:1})],2)],2),c("div",{class:o(e.$style.cardControlsContainer)},[n(m,{bold:!0,size:"large",color:"text-light"},{default:i(()=>[y(" v"+r(e.communityPackage.installedVersion),1)]),_:1}),e.communityPackage.failedLoading===!0?(t(),k(u,{key:0,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.failedToLoad.tooltip")),1)]),default:i(()=>[n(g,{icon:"exclamation-triangle",color:"danger",size:"large"})]),_:1})):e.communityPackage.updateAvailable?(t(),k(u,{key:1,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.updateAvailable.tooltip")),1)]),default:i(()=>[n(p,{type:"outline",label:"Update",onClick:e.onUpdateClick},null,8,["onClick"])]),_:1})):(t(),k(u,{key:2,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.upToDate.tooltip")),1)]),default:i(()=>[n(g,{icon:"check-circle",color:"text-light",size:"large"})]),_:1})),c("div",{class:o(e.$style.cardActions)},[n(B,{actions:e.packageActions,onAction:e.onAction},null,8,["actions","onAction"])],2)],2)],2))],2)}const ee={$style:J},te=v(z,[["render",Z],["__cssModules",ee]]),oe=31,ae=I({name:"SettingsCommunityNodesView",mixins:[$],components:{CommunityPackageCard:te},setup(e){var d,a;return{...L(),...(a=(d=$).setup)==null?void 0:a.call(d,e)}},data(){return{loading:!1}},async mounted(){this.pushConnect();try{this.loading=!0,await this.communityNodesStore.fetchInstalledPackages();const e=this.communityNodesStore.getInstalledPackages,d=e.filter(a=>a.updateAvailable);this.$telemetry.track("user viewed cnr settings page",{num_of_packages_installed:e.length,installed_packages:e.map(a=>({package_name:a.packageName,package_version:a.installedVersion,package_nodes:a.installedNodes.map(_=>`${_.name}-v${_.latestVersion}`),is_update_available:a.updateAvailable!==void 0})),packages_to_update:d.map(a=>({package_name:a.packageName,package_version_current:a.installedVersion,package_version_available:a.updateAvailable})),number_of_updates_available:d.length})}catch(e){this.showError(e,this.$locale.baseText("settings.communityNodes.fetchError.title"),this.$locale.baseText("settings.communityNodes.fetchError.message"))}finally{this.loading=!1}try{await this.communityNodesStore.fetchAvailableCommunityPackageCount()}finally{this.loading=!1}},beforeUnmount(){this.pushDisconnect()},computed:{...A(O,w,f),getEmptyStateDescription(){const e=this.communityNodesStore.availablePackageCount;return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.description.desktop"):e<oe?this.$locale.baseText("settings.communityNodes.empty.description.no-packages",{interpolate:{docURL:S}}):this.$locale.baseText("settings.communityNodes.empty.description",{interpolate:{docURL:S,count:(Math.floor(e/10)*10).toString()}})},getEmptyStateButtonText(){return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.button.desktop"):this.shouldShowInstallButton?this.$locale.baseText("settings.communityNodes.empty.installPackageLabel"):""},shouldShowInstallButton(){return this.settingsStore.isDesktopDeployment||this.settingsStore.isNpmAvailable},actionBoxConfig(){return this.settingsStore.isNpmAvailable?this.settingsStore.isQueueModeEnabled?{calloutText:this.$locale.baseText("settings.communityNodes.queueMode.warning",{interpolate:{docURL:V}}),calloutTheme:"warning",hideButton:!0}:{calloutText:"",calloutTheme:"",hideButton:!1}:{calloutText:this.$locale.baseText("settings.communityNodes.npmUnavailable.warning",{interpolate:{npmUrl:x}}),calloutTheme:"warning",hideButton:!0}}},methods:{onClickEmptyStateButton(){if(this.settingsStore.isDesktopDeployment)return this.goToUpgrade();this.openInstallModal()},goToUpgrade(){this.uiStore.goToUpgrade("community-nodes","upgrade-community-nodes")},openInstallModal(){const e={is_empty_state:this.communityNodesStore.getInstalledPackages.length===0};this.$telemetry.track("user clicked cnr install button",e),this.$externalHooks().run("settingsCommunityNodesView.openInstallModal",e),this.uiStore.openModal(j)}}}),ne="_container_12ljj_5",se="_headingContainer_12ljj_13",ie="_loadingContainer_12ljj_18",le="_actionBoxContainer_12ljj_23",ce="_cardsContainer_12ljj_27",re={container:ne,headingContainer:se,loadingContainer:ie,actionBoxContainer:le,cardsContainer:ce};function de(e,d,a,_,M,U){const h=l("n8n-heading"),m=l("n8n-button"),g=l("n8n-action-box"),u=l("community-package-card");return t(),s("div",{class:o(e.$style.container)},[c("div",{class:o(e.$style.headingContainer)},[n(h,{size:"2xlarge"},{default:i(()=>[y(r(e.$locale.baseText("settings.communityNodes")),1)]),_:1}),!e.settingsStore.isQueueModeEnabled&&e.communityNodesStore.getInstalledPackages.length>0&&!e.loading?(t(),k(m,{key:0,label:e.$locale.baseText("settings.communityNodes.installModal.installButton.label"),size:"large",onClick:e.openInstallModal},null,8,["label","onClick"])):P("",!0)],2),e.settingsStore.isQueueModeEnabled?(t(),s("div",{key:0,class:o(e.$style.actionBoxContainer)},[n(g,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,calloutText:e.actionBoxConfig.calloutText,calloutTheme:e.actionBoxConfig.calloutTheme},null,8,["heading","description","calloutText","calloutTheme"])],2)):e.loading?(t(),s("div",{key:1,class:o(e.$style.cardsContainer)},[(t(),s(N,null,b(2,p=>n(u,{key:"index-"+p,loading:!0})),64))],2)):e.communityNodesStore.getInstalledPackages.length===0?(t(),s("div",{key:2,class:o(e.$style.actionBoxContainer)},[n(g,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,buttonText:e.getEmptyStateButtonText,calloutText:e.actionBoxConfig.calloutText,calloutTheme:e.actionBoxConfig.calloutTheme,"onClick:button":e.onClickEmptyStateButton},null,8,["heading","description","buttonText","calloutText","calloutTheme","onClick:button"])],2)):(t(),s("div",{key:3,class:o(e.$style.cardsContainer)},[(t(!0),s(N,null,b(e.communityNodesStore.getInstalledPackages,p=>(t(),k(u,{key:p.packageName,communityPackage:p},null,8,["communityPackage"]))),128))],2))],2)}const me={$style:re},Ye=v(ae,[["render",de],["__cssModules",me]]);export{Ye as default};
|
|
2
|
+
//# sourceMappingURL=SettingsCommunityNodesView-27bf1a31.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsCommunityNodesView-32ccd1bd.js","sources":["../../src/components/CommunityPackageCard.vue","../../src/views/SettingsCommunityNodesView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.cardContainer\">\n\t\t<div v-if=\"loading\" :class=\"$style.cardSkeleton\">\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t</div>\n\t\t<div v-else :class=\"$style.packageCard\">\n\t\t\t<div :class=\"$style.cardInfoContainer\">\n\t\t\t\t<div :class=\"$style.cardTitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"large\">{{ communityPackage.packageName }}</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.cardSubtitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('settings.communityNodes.packageNodes.label', {\n\t\t\t\t\t\t\t\tadjustToNumber: communityPackage.installedNodes.length,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}: \n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<span v-for=\"(node, index) in communityPackage.installedNodes\" :key=\"node.name\">\n\t\t\t\t\t\t\t{{ node.name\n\t\t\t\t\t\t\t}}<span v-if=\"index != communityPackage.installedNodes.length - 1\">,</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardControlsContainer\">\n\t\t\t\t<n8n-text :bold=\"true\" size=\"large\" color=\"text-light\">\n\t\t\t\t\tv{{ communityPackage.installedVersion }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-tooltip v-if=\"communityPackage.failedLoading === true\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.failedToLoad.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"exclamation-triangle\" color=\"danger\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else-if=\"communityPackage.updateAvailable\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.updateAvailable.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-button type=\"outline\" label=\"Update\" @click=\"onUpdateClick\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.upToDate.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"check-circle\" color=\"text-light\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<div :class=\"$style.cardActions\">\n\t\t\t\t\t<n8n-action-toggle :actions=\"packageActions\" @action=\"onAction\"></n8n-action-toggle>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useUIStore } from '@/stores/ui.store';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { NPM_PACKAGE_DOCS_BASE_URL, COMMUNITY_PACKAGE_MANAGE_ACTIONS } from '@/constants';\n\nexport default defineComponent({\n\tname: 'CommunityPackageCard',\n\tprops: {\n\t\tcommunityPackage: {\n\t\t\ttype: Object as () => PublicInstalledPackage,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpackageActions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.viewDocsAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS,\n\t\t\t\t\ttype: 'external-link',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.uninstallAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t},\n\tmethods: {\n\t\tasync onAction(value: string) {\n\t\t\tswitch (value) {\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS:\n\t\t\t\t\tthis.$telemetry.track('user clicked to browse the cnr package documentation', {\n\t\t\t\t\t\tpackage_name: this.communityPackage.packageName,\n\t\t\t\t\t\tpackage_version: this.communityPackage.installedVersion,\n\t\t\t\t\t});\n\t\t\t\t\twindow.open(`${NPM_PACKAGE_DOCS_BASE_URL}${this.communityPackage.packageName}`, '_blank');\n\t\t\t\t\tbreak;\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL:\n\t\t\t\t\tthis.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tonUpdateClick() {\n\t\t\tthis.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardContainer {\n\tdisplay: flex;\n\tpadding: var(--spacing-s);\n\tborder: var(--border-width-base) var(--border-style-base) var(--color-info-tint-1);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-background-xlight);\n}\n\n.packageCard,\n.cardSkeleton {\n\tdisplay: flex;\n\tflex-basis: 100%;\n\tjustify-content: space-between;\n}\n\n.packageCard {\n\talign-items: center;\n}\n\n.cardSkeleton {\n\tflex-direction: column;\n}\n\n.loader {\n\twidth: 50%;\n\ttransform: scaleY(-1);\n\n\t&:last-child {\n\t\twidth: 70%;\n\n\t\tdiv {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n.cardInfoContainer {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.cardTitle {\n\tflex-basis: 100%;\n\n\tspan {\n\t\tline-height: 1;\n\t}\n}\n\n.cardSubtitle {\n\tmargin-top: 2px;\n\tpadding-right: var(--spacing-m);\n}\n\n.cardControlsContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--spacing-3xs);\n}\n\n.cardActions {\n\tpadding-left: var(--spacing-3xs);\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.headingContainer\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.communityNodes') }}</n8n-heading>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"\n\t\t\t\t\t!settingsStore.isQueueModeEnabled &&\n\t\t\t\t\tcommunityNodesStore.getInstalledPackages.length > 0 &&\n\t\t\t\t\t!loading\n\t\t\t\t\"\n\t\t\t\t:label=\"$locale.baseText('settings.communityNodes.installModal.installButton.label')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t@click=\"openInstallModal\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-if=\"settingsStore.isQueueModeEnabled\" :class=\"$style.actionBoxContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:calloutText=\"actionBoxConfig.calloutText\"\n\t\t\t\t:calloutTheme=\"actionBoxConfig.calloutTheme\"\n\t\t\t/>\n\t\t</div>\n\t\t<div :class=\"$style.cardsContainer\" v-else-if=\"loading\">\n\t\t\t<community-package-card\n\t\t\t\tv-for=\"n in 2\"\n\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t:loading=\"true\"\n\t\t\t></community-package-card>\n\t\t</div>\n\t\t<div\n\t\t\tv-else-if=\"communityNodesStore.getInstalledPackages.length === 0\"\n\t\t\t:class=\"$style.actionBoxContainer\"\n\t\t>\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:buttonText=\"getEmptyStateButtonText\"\n\t\t\t\t:calloutText=\"actionBoxConfig.calloutText\"\n\t\t\t\t:calloutTheme=\"actionBoxConfig.calloutTheme\"\n\t\t\t\t@click:button=\"onClickEmptyStateButton\"\n\t\t\t/>\n\t\t</div>\n\t\t<div :class=\"$style.cardsContainer\" v-else>\n\t\t\t<community-package-card\n\t\t\t\tv-for=\"communityPackage in communityNodesStore.getInstalledPackages\"\n\t\t\t\t:key=\"communityPackage.packageName\"\n\t\t\t\t:communityPackage=\"communityPackage\"\n\t\t\t></community-package-card>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport {\n\tCOMMUNITY_PACKAGE_INSTALL_MODAL_KEY,\n\tCOMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_NPM_INSTALLATION_URL,\n} from '@/constants';\nimport CommunityPackageCard from '@/components/CommunityPackageCard.vue';\nimport { useToast } from '@/composables';\nimport { pushConnection } from '@/mixins/pushConnection';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\n\nimport { useCommunityNodesStore } from '@/stores/communityNodes.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { defineComponent } from 'vue';\n\nconst PACKAGE_COUNT_THRESHOLD = 31;\n\nexport default defineComponent({\n\tname: 'SettingsCommunityNodesView',\n\tmixins: [pushConnection],\n\tcomponents: {\n\t\tCommunityPackageCard,\n\t},\n\tsetup(props) {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-misused-promises\n\t\t\t...pushConnection.setup?.(props),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t};\n\t},\n\tasync mounted() {\n\t\t// The push connection is needed here to receive `reloadNodeType` and `removeNodeType` events when community nodes are installed, updated, or removed.\n\t\tthis.pushConnect();\n\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tawait this.communityNodesStore.fetchInstalledPackages();\n\n\t\t\tconst installedPackages: PublicInstalledPackage[] =\n\t\t\t\tthis.communityNodesStore.getInstalledPackages;\n\t\t\tconst packagesToUpdate: PublicInstalledPackage[] = installedPackages.filter(\n\t\t\t\t(p) => p.updateAvailable,\n\t\t\t);\n\t\t\tthis.$telemetry.track('user viewed cnr settings page', {\n\t\t\t\tnum_of_packages_installed: installedPackages.length,\n\t\t\t\tinstalled_packages: installedPackages.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version: p.installedVersion,\n\t\t\t\t\t\tpackage_nodes: p.installedNodes.map((node) => `${node.name}-v${node.latestVersion}`),\n\t\t\t\t\t\tis_update_available: p.updateAvailable !== undefined,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tpackages_to_update: packagesToUpdate.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version_current: p.installedVersion,\n\t\t\t\t\t\tpackage_version_available: p.updateAvailable,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tnumber_of_updates_available: packagesToUpdate.length,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror,\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.title'),\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.message'),\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t\ttry {\n\t\t\tawait this.communityNodesStore.fetchAvailableCommunityPackageCount();\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tthis.pushDisconnect();\n\t},\n\tcomputed: {\n\t\t...mapStores(useCommunityNodesStore, useSettingsStore, useUIStore),\n\t\tgetEmptyStateDescription(): string {\n\t\t\tconst packageCount = this.communityNodesStore.availablePackageCount;\n\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.description.desktop');\n\t\t\t}\n\n\t\t\treturn packageCount < PACKAGE_COUNT_THRESHOLD\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.description.no-packages', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t},\n\t\t\t\t })\n\t\t\t\t: this.$locale.baseText('settings.communityNodes.empty.description', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t\tcount: (Math.floor(packageCount / 10) * 10).toString(),\n\t\t\t\t\t\t},\n\t\t\t\t });\n\t\t},\n\t\tgetEmptyStateButtonText(): string {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.button.desktop');\n\t\t\t}\n\n\t\t\treturn this.shouldShowInstallButton\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.installPackageLabel')\n\t\t\t\t: '';\n\t\t},\n\t\tshouldShowInstallButton(): boolean {\n\t\t\treturn this.settingsStore.isDesktopDeployment || this.settingsStore.isNpmAvailable;\n\t\t},\n\t\tactionBoxConfig(): {\n\t\t\tcalloutText: string;\n\t\t\tcalloutTheme: 'warning' | string;\n\t\t\thideButton: boolean;\n\t\t} {\n\t\t\tif (!this.settingsStore.isNpmAvailable) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.npmUnavailable.warning', {\n\t\t\t\t\t\tinterpolate: { npmUrl: COMMUNITY_NODES_NPM_INSTALLATION_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.settingsStore.isQueueModeEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.queueMode.warning', {\n\t\t\t\t\t\tinterpolate: { docURL: COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcalloutText: '',\n\t\t\t\tcalloutTheme: '',\n\t\t\t\thideButton: false,\n\t\t\t};\n\t\t},\n\t},\n\tmethods: {\n\t\tonClickEmptyStateButton(): void {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.goToUpgrade();\n\t\t\t}\n\n\t\t\tthis.openInstallModal();\n\t\t},\n\t\tgoToUpgrade(): void {\n\t\t\tvoid this.uiStore.goToUpgrade('community-nodes', 'upgrade-community-nodes');\n\t\t},\n\t\topenInstallModal(): void {\n\t\t\tconst telemetryPayload = {\n\t\t\t\tis_empty_state: this.communityNodesStore.getInstalledPackages.length === 0,\n\t\t\t};\n\t\t\tthis.$telemetry.track('user clicked cnr install button', telemetryPayload);\n\n\t\t\tvoid this.$externalHooks().run(\n\t\t\t\t'settingsCommunityNodesView.openInstallModal',\n\t\t\t\ttelemetryPayload,\n\t\t\t);\n\t\t\tthis.uiStore.openModal(COMMUNITY_PACKAGE_INSTALL_MODAL_KEY);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\tpadding-right: var(--spacing-2xs);\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.headingContainer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.loadingContainer {\n\tdisplay: flex;\n\tgap: var(--spacing-xs);\n}\n\n.actionBoxContainer {\n\ttext-align: center;\n}\n\n.cardsContainer {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","COMMUNITY_PACKAGE_MANAGE_ACTIONS","mapStores","useUIStore","value","NPM_PACKAGE_DOCS_BASE_URL","_resolveComponent","_normalizeClass","_ctx","_openBlock","_createElementBlock","_component_n8n_loading","_createVNode","_component_n8n_text","_createElementVNode","_withCtx","_createTextVNode","_toDisplayString","_Fragment","_renderList","node","index","_hoisted_1","_createCommentVNode","_createBlock","_component_n8n_tooltip","_component_n8n_icon","_component_n8n_button","_component_n8n_action_toggle","PACKAGE_COUNT_THRESHOLD","_sfc_main","pushConnection","CommunityPackageCard","props","useToast","_b","_a","installedPackages","packagesToUpdate","p","error","useCommunityNodesStore","useSettingsStore","packageCount","COMMUNITY_NODES_INSTALLATION_DOCS_URL","COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL","COMMUNITY_NODES_NPM_INSTALLATION_URL","telemetryPayload","COMMUNITY_PACKAGE_INSTALL_MODAL_KEY","_component_community_package_card","_component_n8n_action_box","n","communityPackage"],"mappings":"43CAsEA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,uBACN,MAAO,CACN,iBAAkB,CACjB,KAAM,MACP,EACA,QAAS,CACR,KAAM,QACN,QAAS,EACV,CACD,EACA,MAAO,CACC,MAAA,CACN,eAAgB,CACf,CACC,MAAO,KAAK,QAAQ,SAAS,8CAA8C,EAC3E,MAAOC,EAAiC,UACxC,KAAM,eACP,EACA,CACC,MAAO,KAAK,QAAQ,SAAS,+CAA+C,EAC5E,MAAOA,EAAiC,SACzC,CACD,CAAA,CAEF,EACA,SAAU,CACT,GAAGC,EAAUC,CAAU,CACxB,EACA,QAAS,CACR,MAAM,SAASC,EAAe,CAC7B,OAAQA,EAAO,CACd,KAAKH,EAAiC,UAChC,KAAA,WAAW,MAAM,uDAAwD,CAC7E,aAAc,KAAK,iBAAiB,YACpC,gBAAiB,KAAK,iBAAiB,gBAAA,CACvC,EACM,OAAA,KAAK,GAAGI,CAAyB,GAAG,KAAK,iBAAiB,WAAW,GAAI,QAAQ,EACxF,MACD,KAAKJ,EAAiC,UACrC,KAAK,QAAQ,0CAA0C,KAAK,iBAAiB,WAAW,EACxF,KAGF,CACD,EACA,eAAgB,CACf,KAAK,QAAQ,uCAAuC,KAAK,iBAAiB,WAAW,CACtF,CACD,CACD,CAAC,ygBAvHAK,EA2DM,mBAAA,4BA1DMC,EAAOC,EAAA,OAAA,aAAA,CAAA,EAAA,CAAQA,EAAA,SAAAC,IAAAC,EAAE,MAAO,CAAA,IAAA,EAClC,MAA4DH,EAAAC,EAAA,OAAA,YAAA,CAAA,EAAA,GAAhBG,EAAG,CAAE,MAAOJ,EAAAC,EAAA,OAAA,MAAA,EAAA,QAAA,IACxD,KAAA,CAAA,EAAc,KAAK,EAAA,CAAA,OAAA,CAAA,EAAAI,EAAyBD,EAAG,CAAE,MAAOJ,EAAAC,EAAA,OAAA,MAAA,EAAA,QAAA,UAEzD,EAAA,KAAA,EAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,IAAAC,MAAoB,MAAO,CAAA,IAAA,EAC1B,MAmBMF,EAAAC,EAAA,OAAA,WAAA,CAAA,EAAA,UAlBL,MAEMD,EAAAC,EAAA,OAAA,iBAAA,CAAA,EAAA,UADL,MAAiFD,EAAAC,EAAA,OAAA,SAAA,CAAA,EAAA,GAArDK,EAAO,CAAA,KAAA,6EAEpC,CAAA,CAAM,EAAA,CAAA,EAAAC,EAAA,MAAA,CACL,MAMWP,EAAAC,EAAA,OAAA,YAAA,CAAA,EAAA,GANiBK,EAAO,CAAC,KAAK,GAAA,KAAA,6BAEkD,QAAAE,EAAA,IAAA,CAI3FC,EAAAC,EAAAT,EAAA,QAAA,SAAA,6CAAA,CAAA,eAAAA,EAAA,iBAAA,eAAA,qBACA,EAAA,CAAA,CAAA,IAA6BK,EAAY,CAAA,KAAA,6CAC6BJ,EAAA,EAAK,EAAIC,EAAAQ,EAAA,KAAAC,EAAAX,EAAA,iBAAA,eAAA,CAAAY,EAAAC,6BAE/D,EAAA,CAAAL,EAAAC,EAAZG,EAAyE,IAAA,EAAA,CAAA,EAAAC,GAAAb,EAAA,iBAAA,eAAA,OAAA,GAAAC,EAAA,EAAAC,EAAA,OAAAY,EAAA,GAAA,GAAAC,EAAA,GAAA,EAAA,mBAK/E,EAAA,CAAA,CAAM,EAAA,CAAA,EAAAT,EAAA,MAAA,CACL,MAEWP,EAAAC,EAAA,OAAA,qBAAA,CAAA,EAAA,GAFiBK,EAAO,CAAC,KAAK,GAAA,KAAA,+FAGtB,EAAA,CAAA,CAAA,EAAkDL,EAAA,iBAAA,gBAAA,IAAAC,EAAA,EAACe,EAAKC,EAAA,CAAA,IAAA,EAC/D,UAAO,KAAA,EAAA,gBAKkDX,EAAA,MAAA,KAAAG,EAAAT,EAAA,QAAA,SAAA,8CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,UAAtDO,EAAC,IAAA,CAAAH,EAA6Bc,EAAQ,CAAC,KAAK,uBAAA,MAAA,0BAEnC,EAAA,CAAA,CAAA,GAAAlB,EAAA,iBAAA,iBAAAC,IAA4Ce,EAAKC,EAAA,CAAA,IAAA,EAC7D,UAAO,KAAA,EAAA,gBAKiDX,EAAA,MAAA,KAAAG,EAAAT,EAAA,QAAA,SAAA,iDAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAnD,QAAAO,EAAC,IAAS,CAAAH,EAAOe,EAAQ,CAAE,KAAA,UAAA,MAAA,2DAEf,CAAA,IAAAlB,EAAA,EAACe,EAAKC,EAAA,CAAA,IAAA,EACvB,UAAO,KAAA,EAAA,gBAK8CX,EAAA,MAAA,KAAAG,EAAAT,EAAA,QAAA,SAAA,0CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAlD,QAAAO,EAAC,IAAc,CAAAH,EAAOc,EAAY,CAAC,KAAK,eAAA,MAAA,8BAEvD,EAAA,CAAA,CAAW,GAAAZ,EAAA,MAAA,CACV,MAAoFP,EAAAC,EAAA,OAAA,WAAA,CAAA,EAAA,GAA9BoB,EAAQ,CAAA,QAAApB,EAAA,mJCe7DqB,GAA0B,GAEhCC,GAAe9B,EAAgB,CAC9B,KAAM,6BACN,OAAQ,CAAC+B,CAAc,EACvB,WAAY,CACX,qBAAAC,EACD,EACA,MAAMC,EAAO,SACL,MAAA,CACN,GAAGC,EAAS,EAEZ,IAAGC,GAAAC,EAAAL,GAAe,QAAf,YAAAI,EAAA,KAAAC,EAAuBH,EAAK,CAEjC,EACA,MAAO,CACC,MAAA,CACN,QAAS,EAAA,CAEX,EACA,MAAM,SAAU,CAEf,KAAK,YAAY,EAEb,GAAA,CACH,KAAK,QAAU,GACT,MAAA,KAAK,oBAAoB,yBAEzB,MAAAI,EACL,KAAK,oBAAoB,qBACpBC,EAA6CD,EAAkB,OACnEE,GAAMA,EAAE,eAAA,EAEL,KAAA,WAAW,MAAM,gCAAiC,CACtD,0BAA2BF,EAAkB,OAC7C,mBAAoBA,EAAkB,IAAKE,IACnC,CACN,aAAcA,EAAE,YAChB,gBAAiBA,EAAE,iBACnB,cAAeA,EAAE,eAAe,IAAKnB,GAAS,GAAGA,EAAK,IAAI,KAAKA,EAAK,aAAa,EAAE,EACnF,oBAAqBmB,EAAE,kBAAoB,MAAA,EAE5C,EACD,mBAAoBD,EAAiB,IAAKC,IAClC,CACN,aAAcA,EAAE,YAChB,wBAAyBA,EAAE,iBAC3B,0BAA2BA,EAAE,eAAA,EAE9B,EACD,4BAA6BD,EAAiB,MAAA,CAC9C,QACOE,EAAO,CACV,KAAA,UACJA,EACA,KAAK,QAAQ,SAAS,0CAA0C,EAChE,KAAK,QAAQ,SAAS,4CAA4C,CAAA,CACnE,QACC,CACD,KAAK,QAAU,EAChB,CACI,GAAA,CACG,MAAA,KAAK,oBAAoB,qCAAoC,QAClE,CACD,KAAK,QAAU,EAChB,CACD,EACA,eAAgB,CACf,KAAK,eAAe,CACrB,EACA,SAAU,CACT,GAAGtC,EAAUuC,EAAwBC,EAAkBvC,CAAU,EACjE,0BAAmC,CAC5B,MAAAwC,EAAe,KAAK,oBAAoB,sBAE1C,OAAA,KAAK,cAAc,oBACf,KAAK,QAAQ,SAAS,2DAA2D,EAGlFA,EAAed,GACnB,KAAK,QAAQ,SAAS,wDAAyD,CAC/E,YAAa,CACZ,OAAQe,CACT,CACC,CAAA,EACD,KAAK,QAAQ,SAAS,4CAA6C,CACnE,YAAa,CACZ,OAAQA,EACR,OAAQ,KAAK,MAAMD,EAAe,EAAE,EAAI,IAAI,SAAS,CACtD,CAAA,CACC,CACL,EACA,yBAAkC,CAC7B,OAAA,KAAK,cAAc,oBACf,KAAK,QAAQ,SAAS,sDAAsD,EAG7E,KAAK,wBACT,KAAK,QAAQ,SAAS,mDAAmD,EACzE,EACJ,EACA,yBAAmC,CAClC,OAAO,KAAK,cAAc,qBAAuB,KAAK,cAAc,cACrE,EACA,iBAIE,CACG,OAAC,KAAK,cAAc,eAUpB,KAAK,cAAc,mBACf,CACN,YAAa,KAAK,QAAQ,SAAS,4CAA6C,CAC/E,YAAa,CAAE,OAAQE,CAA6C,CAAA,CACpE,EACD,aAAc,UACd,WAAY,EAAA,EAIP,CACN,YAAa,GACb,aAAc,GACd,WAAY,EAAA,EAtBL,CACN,YAAa,KAAK,QAAQ,SAAS,iDAAkD,CACpF,YAAa,CAAE,OAAQC,CAAqC,CAAA,CAC5D,EACD,aAAc,UACd,WAAY,EAAA,CAmBf,CACD,EACA,QAAS,CACR,yBAAgC,CAC3B,GAAA,KAAK,cAAc,oBACtB,OAAO,KAAK,cAGb,KAAK,iBAAiB,CACvB,EACA,aAAoB,CACd,KAAK,QAAQ,YAAY,kBAAmB,yBAAyB,CAC3E,EACA,kBAAyB,CACxB,MAAMC,EAAmB,CACxB,eAAgB,KAAK,oBAAoB,qBAAqB,SAAW,CAAA,EAErE,KAAA,WAAW,MAAM,kCAAmCA,CAAgB,EAEpE,KAAK,iBAAiB,IAC1B,8CACAA,CAAA,EAEI,KAAA,QAAQ,UAAUC,CAAmC,CAC3D,CACD,CACD,CAAC,sVArLMC,EAAA3C,EAAA,wBAAA,sBAhDL,MAYMC,EAAAC,EAAA,OAAA,SAAA,CAAA,EAAA,UAXL,MAAAD,EAA2FC,EAAzE,OAAA,gBAAA,CAAA,EAAA,MAAa,KAAQ,SAAA,EAAA,CAAA,QAAAO,EAAA,IAAA,4DAEzB,CAAA,EAAsG,CAAAP,EAAA,cAAO,oBAKlHA,EAAA,oBAAA,qBAAA,OAAA,GAAA,CAAAA,EAAA,SAAAC,EAAA,EAAAe,EAAQG,EAAQ,CACxB,IAAI,EACH,MAAKnB,EAAE,QAAgB,SAAA,0DAAA,EAAA,KAAA,iEAGfe,EAAc,GAAA,EAAA,CAAA,EAAA,CAAA,EAA0Bf,EAAA,cAAA,oBAAAC,EAAA,EAAAC,EAAE,MAAO,CAAA,IAAA,EAC3D,MAKEH,EAAAC,EAAA,OAAA,kBAAA,CAAA,EAAA,GAHW0C,EAAE,CACb,UAAa,QAA2B,SAAA,qCAAA,EACxC,YAAY1C,EAAE,yBAAA,YAAAA,EAAA,gBAAA,yDAGqC,KAAA,EAAA,CAAA,UAAA,cAAA,cAAA,cAAA,CAAA,CAAA,EAAA,CAAA,GAAAA,EAAA,SAAAC,MAAzC,MAAO,CAAA,IAAA,UACnBD,EAI0B,OAAA,cAAA,CAAA,EAAA,MAFPE,EAAAQ,EAAA,KAAAC,EAAA,EAAAgC,GACjBvC,EAAaqC,EAAA,CAAA,IAAA,SAAAE,cAIJ,EAAA,EAAA,EAAA,EAAA,CAAA,GAAA3C,EAAA,oBAAA,qBAAA,SAAA,GAAAC,EAAA,IACH,MAAO,CAAA,IAAA,EAEf,MAOEF,EAAAC,EAAA,OAAA,kBAAA,CAAA,EAAA,GALW0C,EAAE,CACb,UAAY,QAAuB,SAAA,qCAAA,EACnC,YAAa1C,EAAA,yBACb,WAAYA,EAAE,wBACd,YAAcA,EAAA,gBAAA,YAAA,aAAAA,EAAA,gBAAA,iEAGjB,UAMM,cAAA,aAAA,cAAA,eAAA,gBAAA,CAAA,CAAA,EAAA,CAAA,IAAAC,MANO,MAAO,CAAA,IAAA,UACnBD,EAI0B,OAAA,cAAA,CAAA,EAAA,IAFnB,EAA4B,EAAAE,EAAAQ,EAAA,KAAAC,EAAAX,EAAA,oBAAA,qBAAA4C,IACjC3C,EAAA,EAAkBe,EAAgByB,EAAA,CAAA,IAAAG,EAAA"}
|
|
1
|
+
{"version":3,"file":"SettingsCommunityNodesView-27bf1a31.js","sources":["../../src/components/CommunityPackageCard.vue","../../src/views/SettingsCommunityNodesView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.cardContainer\">\n\t\t<div v-if=\"loading\" :class=\"$style.cardSkeleton\">\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t</div>\n\t\t<div v-else :class=\"$style.packageCard\">\n\t\t\t<div :class=\"$style.cardInfoContainer\">\n\t\t\t\t<div :class=\"$style.cardTitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"large\">{{ communityPackage.packageName }}</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.cardSubtitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('settings.communityNodes.packageNodes.label', {\n\t\t\t\t\t\t\t\tadjustToNumber: communityPackage.installedNodes.length,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}: \n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<span v-for=\"(node, index) in communityPackage.installedNodes\" :key=\"node.name\">\n\t\t\t\t\t\t\t{{ node.name\n\t\t\t\t\t\t\t}}<span v-if=\"index != communityPackage.installedNodes.length - 1\">,</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardControlsContainer\">\n\t\t\t\t<n8n-text :bold=\"true\" size=\"large\" color=\"text-light\">\n\t\t\t\t\tv{{ communityPackage.installedVersion }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-tooltip v-if=\"communityPackage.failedLoading === true\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.failedToLoad.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"exclamation-triangle\" color=\"danger\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else-if=\"communityPackage.updateAvailable\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.updateAvailable.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-button type=\"outline\" label=\"Update\" @click=\"onUpdateClick\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.upToDate.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"check-circle\" color=\"text-light\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<div :class=\"$style.cardActions\">\n\t\t\t\t\t<n8n-action-toggle :actions=\"packageActions\" @action=\"onAction\"></n8n-action-toggle>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useUIStore } from '@/stores/ui.store';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { NPM_PACKAGE_DOCS_BASE_URL, COMMUNITY_PACKAGE_MANAGE_ACTIONS } from '@/constants';\n\nexport default defineComponent({\n\tname: 'CommunityPackageCard',\n\tprops: {\n\t\tcommunityPackage: {\n\t\t\ttype: Object as () => PublicInstalledPackage,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpackageActions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.viewDocsAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS,\n\t\t\t\t\ttype: 'external-link',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.uninstallAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t},\n\tmethods: {\n\t\tasync onAction(value: string) {\n\t\t\tswitch (value) {\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS:\n\t\t\t\t\tthis.$telemetry.track('user clicked to browse the cnr package documentation', {\n\t\t\t\t\t\tpackage_name: this.communityPackage.packageName,\n\t\t\t\t\t\tpackage_version: this.communityPackage.installedVersion,\n\t\t\t\t\t});\n\t\t\t\t\twindow.open(`${NPM_PACKAGE_DOCS_BASE_URL}${this.communityPackage.packageName}`, '_blank');\n\t\t\t\t\tbreak;\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL:\n\t\t\t\t\tthis.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tonUpdateClick() {\n\t\t\tthis.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardContainer {\n\tdisplay: flex;\n\tpadding: var(--spacing-s);\n\tborder: var(--border-width-base) var(--border-style-base) var(--color-info-tint-1);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-background-xlight);\n}\n\n.packageCard,\n.cardSkeleton {\n\tdisplay: flex;\n\tflex-basis: 100%;\n\tjustify-content: space-between;\n}\n\n.packageCard {\n\talign-items: center;\n}\n\n.cardSkeleton {\n\tflex-direction: column;\n}\n\n.loader {\n\twidth: 50%;\n\ttransform: scaleY(-1);\n\n\t&:last-child {\n\t\twidth: 70%;\n\n\t\tdiv {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n.cardInfoContainer {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.cardTitle {\n\tflex-basis: 100%;\n\n\tspan {\n\t\tline-height: 1;\n\t}\n}\n\n.cardSubtitle {\n\tmargin-top: 2px;\n\tpadding-right: var(--spacing-m);\n}\n\n.cardControlsContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--spacing-3xs);\n}\n\n.cardActions {\n\tpadding-left: var(--spacing-3xs);\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.headingContainer\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.communityNodes') }}</n8n-heading>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"\n\t\t\t\t\t!settingsStore.isQueueModeEnabled &&\n\t\t\t\t\tcommunityNodesStore.getInstalledPackages.length > 0 &&\n\t\t\t\t\t!loading\n\t\t\t\t\"\n\t\t\t\t:label=\"$locale.baseText('settings.communityNodes.installModal.installButton.label')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t@click=\"openInstallModal\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-if=\"settingsStore.isQueueModeEnabled\" :class=\"$style.actionBoxContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:calloutText=\"actionBoxConfig.calloutText\"\n\t\t\t\t:calloutTheme=\"actionBoxConfig.calloutTheme\"\n\t\t\t/>\n\t\t</div>\n\t\t<div :class=\"$style.cardsContainer\" v-else-if=\"loading\">\n\t\t\t<community-package-card\n\t\t\t\tv-for=\"n in 2\"\n\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t:loading=\"true\"\n\t\t\t></community-package-card>\n\t\t</div>\n\t\t<div\n\t\t\tv-else-if=\"communityNodesStore.getInstalledPackages.length === 0\"\n\t\t\t:class=\"$style.actionBoxContainer\"\n\t\t>\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:buttonText=\"getEmptyStateButtonText\"\n\t\t\t\t:calloutText=\"actionBoxConfig.calloutText\"\n\t\t\t\t:calloutTheme=\"actionBoxConfig.calloutTheme\"\n\t\t\t\t@click:button=\"onClickEmptyStateButton\"\n\t\t\t/>\n\t\t</div>\n\t\t<div :class=\"$style.cardsContainer\" v-else>\n\t\t\t<community-package-card\n\t\t\t\tv-for=\"communityPackage in communityNodesStore.getInstalledPackages\"\n\t\t\t\t:key=\"communityPackage.packageName\"\n\t\t\t\t:communityPackage=\"communityPackage\"\n\t\t\t></community-package-card>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport {\n\tCOMMUNITY_PACKAGE_INSTALL_MODAL_KEY,\n\tCOMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_NPM_INSTALLATION_URL,\n} from '@/constants';\nimport CommunityPackageCard from '@/components/CommunityPackageCard.vue';\nimport { useToast } from '@/composables';\nimport { pushConnection } from '@/mixins/pushConnection';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\n\nimport { useCommunityNodesStore } from '@/stores/communityNodes.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { defineComponent } from 'vue';\n\nconst PACKAGE_COUNT_THRESHOLD = 31;\n\nexport default defineComponent({\n\tname: 'SettingsCommunityNodesView',\n\tmixins: [pushConnection],\n\tcomponents: {\n\t\tCommunityPackageCard,\n\t},\n\tsetup(props) {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-misused-promises\n\t\t\t...pushConnection.setup?.(props),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t};\n\t},\n\tasync mounted() {\n\t\t// The push connection is needed here to receive `reloadNodeType` and `removeNodeType` events when community nodes are installed, updated, or removed.\n\t\tthis.pushConnect();\n\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tawait this.communityNodesStore.fetchInstalledPackages();\n\n\t\t\tconst installedPackages: PublicInstalledPackage[] =\n\t\t\t\tthis.communityNodesStore.getInstalledPackages;\n\t\t\tconst packagesToUpdate: PublicInstalledPackage[] = installedPackages.filter(\n\t\t\t\t(p) => p.updateAvailable,\n\t\t\t);\n\t\t\tthis.$telemetry.track('user viewed cnr settings page', {\n\t\t\t\tnum_of_packages_installed: installedPackages.length,\n\t\t\t\tinstalled_packages: installedPackages.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version: p.installedVersion,\n\t\t\t\t\t\tpackage_nodes: p.installedNodes.map((node) => `${node.name}-v${node.latestVersion}`),\n\t\t\t\t\t\tis_update_available: p.updateAvailable !== undefined,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tpackages_to_update: packagesToUpdate.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version_current: p.installedVersion,\n\t\t\t\t\t\tpackage_version_available: p.updateAvailable,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tnumber_of_updates_available: packagesToUpdate.length,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror,\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.title'),\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.message'),\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t\ttry {\n\t\t\tawait this.communityNodesStore.fetchAvailableCommunityPackageCount();\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tthis.pushDisconnect();\n\t},\n\tcomputed: {\n\t\t...mapStores(useCommunityNodesStore, useSettingsStore, useUIStore),\n\t\tgetEmptyStateDescription(): string {\n\t\t\tconst packageCount = this.communityNodesStore.availablePackageCount;\n\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.description.desktop');\n\t\t\t}\n\n\t\t\treturn packageCount < PACKAGE_COUNT_THRESHOLD\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.description.no-packages', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t},\n\t\t\t\t })\n\t\t\t\t: this.$locale.baseText('settings.communityNodes.empty.description', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t\tcount: (Math.floor(packageCount / 10) * 10).toString(),\n\t\t\t\t\t\t},\n\t\t\t\t });\n\t\t},\n\t\tgetEmptyStateButtonText(): string {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.button.desktop');\n\t\t\t}\n\n\t\t\treturn this.shouldShowInstallButton\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.installPackageLabel')\n\t\t\t\t: '';\n\t\t},\n\t\tshouldShowInstallButton(): boolean {\n\t\t\treturn this.settingsStore.isDesktopDeployment || this.settingsStore.isNpmAvailable;\n\t\t},\n\t\tactionBoxConfig(): {\n\t\t\tcalloutText: string;\n\t\t\tcalloutTheme: 'warning' | string;\n\t\t\thideButton: boolean;\n\t\t} {\n\t\t\tif (!this.settingsStore.isNpmAvailable) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.npmUnavailable.warning', {\n\t\t\t\t\t\tinterpolate: { npmUrl: COMMUNITY_NODES_NPM_INSTALLATION_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.settingsStore.isQueueModeEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.queueMode.warning', {\n\t\t\t\t\t\tinterpolate: { docURL: COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcalloutText: '',\n\t\t\t\tcalloutTheme: '',\n\t\t\t\thideButton: false,\n\t\t\t};\n\t\t},\n\t},\n\tmethods: {\n\t\tonClickEmptyStateButton(): void {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.goToUpgrade();\n\t\t\t}\n\n\t\t\tthis.openInstallModal();\n\t\t},\n\t\tgoToUpgrade(): void {\n\t\t\tvoid this.uiStore.goToUpgrade('community-nodes', 'upgrade-community-nodes');\n\t\t},\n\t\topenInstallModal(): void {\n\t\t\tconst telemetryPayload = {\n\t\t\t\tis_empty_state: this.communityNodesStore.getInstalledPackages.length === 0,\n\t\t\t};\n\t\t\tthis.$telemetry.track('user clicked cnr install button', telemetryPayload);\n\n\t\t\tvoid this.$externalHooks().run(\n\t\t\t\t'settingsCommunityNodesView.openInstallModal',\n\t\t\t\ttelemetryPayload,\n\t\t\t);\n\t\t\tthis.uiStore.openModal(COMMUNITY_PACKAGE_INSTALL_MODAL_KEY);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\tpadding-right: var(--spacing-2xs);\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.headingContainer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.loadingContainer {\n\tdisplay: flex;\n\tgap: var(--spacing-xs);\n}\n\n.actionBoxContainer {\n\ttext-align: center;\n}\n\n.cardsContainer {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","COMMUNITY_PACKAGE_MANAGE_ACTIONS","mapStores","useUIStore","value","NPM_PACKAGE_DOCS_BASE_URL","_resolveComponent","_normalizeClass","_ctx","_openBlock","_createElementBlock","_component_n8n_loading","_createVNode","_component_n8n_text","_createElementVNode","_withCtx","_createTextVNode","_toDisplayString","_Fragment","_renderList","node","index","_hoisted_1","_createCommentVNode","_createBlock","_component_n8n_tooltip","_component_n8n_icon","_component_n8n_button","_component_n8n_action_toggle","PACKAGE_COUNT_THRESHOLD","_sfc_main","pushConnection","CommunityPackageCard","props","useToast","_b","_a","installedPackages","packagesToUpdate","p","error","useCommunityNodesStore","useSettingsStore","packageCount","COMMUNITY_NODES_INSTALLATION_DOCS_URL","COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL","COMMUNITY_NODES_NPM_INSTALLATION_URL","telemetryPayload","COMMUNITY_PACKAGE_INSTALL_MODAL_KEY","_component_community_package_card","_component_n8n_action_box","n","communityPackage"],"mappings":"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"}
|
package/dist/assets/{SettingsExternalSecrets-b409d644.js → SettingsExternalSecrets-7996830e.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ab as P,n as $,u as I,dt as K,an as N,du as W,_ as X}from"./n8n-6b07beca.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import{_ as Y,o as G}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsExternalSecrets-
|
|
1
|
+
import{ab as P,n as $,u as I,dt as K,an as N,du as W,_ as X}from"./n8n-6b07beca.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import{_ as Y,o as G}from"./index-ac03fd2d.js";import{D as H}from"./luxon-19e1de07.js";import{d as O,a1 as J,c as _,z as L,g as i,o as s,b as x,w as a,j as d,h as l,n as u,p as t,s as v,t as c,q as Q,i as y,A as Z,O as ee,a9 as te}from"./vendor-f46c350a.js";import"./lodash-es-bad8e3ee.js";import"./esprima-next-8c7e8ff9.js";import"./pinia-af9c3f71.js";import"./flatted-8b14da7d.js";import"./@vueuse/core-9fb50532.js";import"./uuid-cf522c50.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-5b4468a6.js";import"./@jsplumb/browser-ui-715581dc.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./chart.js-58383f81.js";const ne=O({__name:"ExternalSecretsProviderCard.ee",props:{provider:{type:Object,required:!0}},setup(C){const e=C,m=P(),n=N(),f=$(),b=I(),{provider:o}=J(e),p=_(()=>o.value.data),{connectionState:g,initialConnectionState:E,normalizedProviderData:w,testConnection:h,setConnectionState:k}=K(o,p),S=_(()=>[{value:"setup",label:n.baseText("settings.externalSecrets.card.actionDropdown.setup")},...e.provider.connected?[{value:"reload",label:n.baseText("settings.externalSecrets.card.actionDropdown.reload")}]:[]]),M=_(()=>e.provider.connected||Object.keys(e.provider.data).length>0),U=_(r=>H.fromISO(e.provider.connectedAt).toFormat("dd LLL yyyy"));L(()=>{k(e.provider.state)});async function z(){return e.provider.connected?!0:(await m.getProvider(e.provider.name),await Z(),await h()!=="error")}function B(){f.openModalWithData({name:W,data:{name:e.provider.name}})}async function R(){try{await m.reloadProvider(e.provider.name),b.showMessage({title:n.baseText("settings.externalSecrets.card.reload.success.title"),message:n.baseText("settings.externalSecrets.card.reload.success.description",{interpolate:{provider:e.provider.displayName}}),type:"success"})}catch(r){b.showError(r,n.baseText("error"))}}async function V(r){switch(r){case"setup":B();break;case"reload":await R();break}}return(r,D)=>{const A=i("n8n-text"),j=i("n8n-action-toggle"),q=i("n8n-button"),F=i("n8n-card");return s(),x(F,{class:u(r.$style.card)},{default:a(()=>[d("div",{class:u(r.$style.cardBody)},[l(Y,{class:u(r.$style.cardImage),provider:t(o)},null,8,["class","provider"]),d("div",{class:u(r.$style.cardContent)},[l(A,{bold:""},{default:a(()=>[v(c(t(o).displayName),1)]),_:1}),t(o).connected?(s(),x(A,{key:0,color:"text-light",size:"small"},{default:a(()=>{var T;return[d("span",null,c(t(n).baseText("settings.externalSecrets.card.secretsCount",{interpolate:{count:`${(T=t(m).secrets[t(o).name])==null?void 0:T.length}`}})),1),v(" | "),d("span",null,c(t(n).baseText("settings.externalSecrets.card.connectedAt",{interpolate:{date:U.value}})),1)]}),_:1})):Q("",!0)],2),M.value?(s(),y("div",{key:0,class:u(r.$style.cardActions)},[l(G,{provider:t(o),beforeUpdate:z,disabled:t(g)==="error"&&!t(o).connected},null,8,["provider","disabled"]),l(j,{class:"ml-s",theme:"dark",actions:S.value,onAction:V},null,8,["actions"])],2)):(s(),x(q,{key:1,type:"tertiary",onClick:D[0]||(D[0]=T=>B())},{default:a(()=>[v(c(t(n).baseText("settings.externalSecrets.card.setUp")),1)]),_:1}))],2)]),_:1},8,["class"])}}}),re="_card_63ubk_5",oe="_cardImage_63ubk_10",se="_cardBody_63ubk_15",ae="_cardContent_63ubk_21",ce="_cardActions_63ubk_28",ie={card:re,cardImage:oe,cardBody:se,cardContent:ae,cardActions:ce},de={$style:ie},le=X(ne,[["__cssModules",de]]),pe={class:"pb-3xl"},me={key:0,"data-test-id":"external-secrets-content-licensed"},ue=["href"],_e=["href"],Ke=O({__name:"SettingsExternalSecrets",setup(C){const e=N(),m=$(),n=P(),f=I(),b=_(()=>[...n.providers].sort((p,g)=>g.name.localeCompare(p.name)));L(()=>{try{n.fetchAllSecrets(),n.getProviders()}catch(p){f.showError(p,e.baseText("error"))}});function o(){m.goToUpgrade("external-secrets","upgrade-external-secrets")}return(p,g)=>{const E=i("n8n-heading"),w=i("n8n-callout"),h=i("i18n-t"),k=i("n8n-action-box");return s(),y("div",pe,[l(E,{size:"2xlarge"},{default:a(()=>[v(c(t(e).baseText("settings.externalSecrets.title")),1)]),_:1}),t(n).isEnterpriseExternalSecretsEnabled?(s(),y("div",me,[l(w,{theme:"secondary",class:"mt-2xl mb-l"},{default:a(()=>[v(c(t(e).baseText("settings.externalSecrets.info"))+" ",1),d("a",{href:t(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(t(e).baseText("settings.externalSecrets.info.link")),9,ue)]),_:1}),(s(!0),y(ee,null,te(b.value,S=>(s(),x(le,{key:S.name,provider:S},null,8,["provider"]))),128))])):(s(),x(k,{key:1,class:"mt-2xl mb-l","data-test-id":"external-secrets-content-unlicensed",buttonText:t(e).baseText("settings.externalSecrets.actionBox.buttonText"),onClick:o},{heading:a(()=>[d("span",null,c(t(e).baseText("settings.externalSecrets.actionBox.title")),1)]),description:a(()=>[l(h,{keypath:"settings.externalSecrets.actionBox.description"},{link:a(()=>[d("a",{href:t(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(t(e).baseText("settings.externalSecrets.actionBox.description.link")),9,_e)]),_:1})]),_:1},8,["buttonText"]))])}}});export{Ke as default};
|
|
2
|
+
//# sourceMappingURL=SettingsExternalSecrets-7996830e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsExternalSecrets-b409d644.js","sources":["../../src/components/ExternalSecretsProviderCard.ee.vue","../../src/views/SettingsExternalSecrets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType, Ref } from 'vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\nimport ExternalSecretsProviderImage from '@/components/ExternalSecretsProviderImage.ee.vue';\nimport ExternalSecretsProviderConnectionSwitch from '@/components/ExternalSecretsProviderConnectionSwitch.ee.vue';\nimport { useExternalSecretsStore, useUIStore } from '@/stores';\nimport { useExternalSecretsProvider, useI18n, useToast } from '@/composables';\nimport { EXTERNAL_SECRETS_PROVIDER_MODAL_KEY } from '@/constants';\nimport { DateTime } from 'luxon';\nimport { computed, nextTick, onMounted, toRefs } from 'vue';\n\nconst props = defineProps({\n\tprovider: {\n\t\ttype: Object as PropType<ExternalSecretsProvider>,\n\t\trequired: true,\n\t},\n});\n\nconst externalSecretsStore = useExternalSecretsStore();\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst { provider } = toRefs(props) as Ref<ExternalSecretsProvider>;\nconst providerData = computed(() => provider.value.data);\nconst {\n\tconnectionState,\n\tinitialConnectionState,\n\tnormalizedProviderData,\n\ttestConnection,\n\tsetConnectionState,\n} = useExternalSecretsProvider(provider, providerData);\n\nconst actionDropdownOptions = computed(() => [\n\t{\n\t\tvalue: 'setup',\n\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.setup'),\n\t},\n\t...(props.provider.connected\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'reload',\n\t\t\t\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.reload'),\n\t\t\t\t},\n\t\t ]\n\t\t: []),\n]);\n\nconst canConnect = computed(() => {\n\treturn props.provider.connected || Object.keys(props.provider.data).length > 0;\n});\n\nconst formattedDate = computed((provider: ExternalSecretsProvider) => {\n\treturn DateTime.fromISO(props.provider.connectedAt).toFormat('dd LLL yyyy');\n});\n\nonMounted(() => {\n\tsetConnectionState(props.provider.state);\n});\n\nasync function onBeforeConnectionUpdate() {\n\tif (props.provider.connected) {\n\t\treturn true;\n\t}\n\n\tawait externalSecretsStore.getProvider(props.provider.name);\n\tawait nextTick();\n\tconst status = await testConnection();\n\n\treturn status !== 'error';\n}\n\nfunction openExternalSecretProvider() {\n\tuiStore.openModalWithData({\n\t\tname: EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,\n\t\tdata: { name: props.provider.name },\n\t});\n}\n\nasync function reloadProvider() {\n\ttry {\n\t\tawait externalSecretsStore.reloadProvider(props.provider.name);\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('settings.externalSecrets.card.reload.success.title'),\n\t\t\tmessage: i18n.baseText('settings.externalSecrets.card.reload.success.description', {\n\t\t\t\tinterpolate: { provider: props.provider.displayName },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n}\n\nasync function onActionDropdownClick(id: string) {\n\tswitch (id) {\n\t\tcase 'setup':\n\t\t\topenExternalSecretProvider();\n\t\t\tbreak;\n\t\tcase 'reload':\n\t\t\tawait reloadProvider();\n\t\t\tbreak;\n\t}\n}\n</script>\n\n<template>\n\t<n8n-card :class=\"$style.card\">\n\t\t<div :class=\"$style.cardBody\">\n\t\t\t<ExternalSecretsProviderImage :class=\"$style.cardImage\" :provider=\"provider\" />\n\t\t\t<div :class=\"$style.cardContent\">\n\t\t\t\t<n8n-text bold>{{ provider.displayName }}</n8n-text>\n\t\t\t\t<n8n-text color=\"text-light\" size=\"small\" v-if=\"provider.connected\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.secretsCount', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tcount: `${externalSecretsStore.secrets[provider.name]?.length}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t\t|\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.connectedAt', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tdate: formattedDate,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardActions\" v-if=\"canConnect\">\n\t\t\t\t<ExternalSecretsProviderConnectionSwitch\n\t\t\t\t\t:provider=\"provider\"\n\t\t\t\t\t:beforeUpdate=\"onBeforeConnectionUpdate\"\n\t\t\t\t\t:disabled=\"connectionState === 'error' && !provider.connected\"\n\t\t\t\t/>\n\t\t\t\t<n8n-action-toggle\n\t\t\t\t\tclass=\"ml-s\"\n\t\t\t\t\ttheme=\"dark\"\n\t\t\t\t\t:actions=\"actionDropdownOptions\"\n\t\t\t\t\t@action=\"onActionDropdownClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<n8n-button v-else type=\"tertiary\" @click=\"openExternalSecretProvider()\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.card.setUp') }}\n\t\t\t</n8n-button>\n\t\t</div>\n\t</n8n-card>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n\tposition: relative;\n\tmargin-bottom: var(--spacing-2xs);\n}\n\n.cardImage {\n\twidth: 28px;\n\theight: 28px;\n}\n\n.cardBody {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.cardContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: var(--spacing-s);\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { useUIStore } from '@/stores/ui.store';\nimport { useI18n, useMessage, useToast } from '@/composables';\nimport { useExternalSecretsStore } from '@/stores';\nimport { computed, onMounted } from 'vue';\nimport ExternalSecretsProviderCard from '@/components/ExternalSecretsProviderCard.ee.vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\n\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst externalSecretsStore = useExternalSecretsStore();\nconst message = useMessage();\nconst toast = useToast();\n\nconst sortedProviders = computed(() => {\n\treturn ([...externalSecretsStore.providers] as ExternalSecretsProvider[]).sort((a, b) => {\n\t\treturn b.name.localeCompare(a.name);\n\t});\n});\n\nonMounted(() => {\n\ttry {\n\t\tvoid externalSecretsStore.fetchAllSecrets();\n\t\tvoid externalSecretsStore.getProviders();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n});\n\nfunction goToUpgrade() {\n\tvoid uiStore.goToUpgrade('external-secrets', 'upgrade-external-secrets');\n}\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.externalSecrets.title') }}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"externalSecretsStore.isEnterpriseExternalSecretsEnabled\"\n\t\t\tdata-test-id=\"external-secrets-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" class=\"mt-2xl mb-l\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info') }}\n\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info.link') }}\n\t\t\t\t</a>\n\t\t\t</n8n-callout>\n\t\t\t<ExternalSecretsProviderCard\n\t\t\t\tv-for=\"provider in sortedProviders\"\n\t\t\t\t:key=\"provider.name\"\n\t\t\t\t:provider=\"provider\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tclass=\"mt-2xl mb-l\"\n\t\t\tdata-test-id=\"external-secrets-content-unlicensed\"\n\t\t\t:buttonText=\"i18n.baseText('settings.externalSecrets.actionBox.buttonText')\"\n\t\t\t@click=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.externalSecrets.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t<i18n-t keypath=\"settings.externalSecrets.actionBox.description\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.actionBox.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n"],"names":["externalSecretsStore","useExternalSecretsStore","i18n","useI18n","uiStore","useUIStore","toast","useToast","provider","toRefs","props","providerData","computed","connectionState","initialConnectionState","normalizedProviderData","testConnection","setConnectionState","useExternalSecretsProvider","actionDropdownOptions","canConnect","formattedDate","DateTime","onMounted","onBeforeConnectionUpdate","nextTick","openExternalSecretProvider","EXTERNAL_SECRETS_PROVIDER_MODAL_KEY","reloadProvider","error","onActionDropdownClick","id","sortedProviders","a","b","goToUpgrade"],"mappings":"u9CAkBMA,EAAuBC,IACvBC,EAAOC,IACPC,EAAUC,IACVC,EAAQC,IAER,CAAE,SAAAC,CAAA,EAAaC,EAAOC,CAAK,EAC3BC,EAAeC,EAAS,IAAMJ,EAAS,MAAM,IAAI,EACjD,CACL,gBAAAK,EACA,uBAAAC,EACA,uBAAAC,EACA,eAAAC,EACA,mBAAAC,CAAA,EACGC,EAA2BV,EAAUG,CAAY,EAE/CQ,EAAwBP,EAAS,IAAM,CAC5C,CACC,MAAO,QACP,MAAOV,EAAK,SAAS,oDAAoD,CAC1E,EACA,GAAIQ,EAAM,SAAS,UAChB,CACA,CACC,MAAO,SACP,MAAOR,EAAK,SAAS,qDAAqD,CAC3E,CAAA,EAEA,CAAC,CAAA,CACJ,EAEKkB,EAAaR,EAAS,IACpBF,EAAM,SAAS,WAAa,OAAO,KAAKA,EAAM,SAAS,IAAI,EAAE,OAAS,CAC7E,EAEKW,EAAgBT,EAAUJ,GACxBc,EAAS,QAAQZ,EAAM,SAAS,WAAW,EAAE,SAAS,aAAa,CAC1E,EAEDa,EAAU,IAAM,CACIN,EAAAP,EAAM,SAAS,KAAK,CAAA,CACvC,EAED,eAAec,GAA2B,CACrC,OAAAd,EAAM,SAAS,UACX,IAGR,MAAMV,EAAqB,YAAYU,EAAM,SAAS,IAAI,EAC1D,MAAMe,EAAS,EACA,MAAMT,MAEH,QACnB,CAEA,SAASU,GAA6B,CACrCtB,EAAQ,kBAAkB,CACzB,KAAMuB,EACN,KAAM,CAAE,KAAMjB,EAAM,SAAS,IAAK,CAAA,CAClC,CACF,CAEA,eAAekB,GAAiB,CAC3B,GAAA,CACH,MAAM5B,EAAqB,eAAeU,EAAM,SAAS,IAAI,EAC7DJ,EAAM,YAAY,CACjB,MAAOJ,EAAK,SAAS,oDAAoD,EACzE,QAASA,EAAK,SAAS,2DAA4D,CAClF,YAAa,CAAE,SAAUQ,EAAM,SAAS,WAAY,CAAA,CACpD,EACD,KAAM,SAAA,CACN,QACOmB,EAAO,CACfvB,EAAM,UAAUuB,EAAO3B,EAAK,SAAS,OAAO,CAAC,CAC9C,CACD,CAEA,eAAe4B,EAAsBC,EAAY,CAChD,OAAQA,EAAI,CACX,IAAK,QACuBL,IAC3B,MACD,IAAK,SACJ,MAAME,EAAe,EACrB,KACF,CACD,0iDC/FA,MAAM1B,EAAOC,IACPC,EAAUC,IACVL,EAAuBC,IAEvBK,EAAQC,IAERyB,EAAkBpB,EAAS,IACxB,CAAC,GAAGZ,EAAqB,SAAS,EAAgC,KAAK,CAACiC,EAAGC,IAC3EA,EAAE,KAAK,cAAcD,EAAE,IAAI,CAClC,CACD,EAEDV,EAAU,IAAM,CACX,GAAA,CACEvB,EAAqB,kBACrBA,EAAqB,qBAClB6B,EAAO,CACfvB,EAAM,UAAUuB,EAAO3B,EAAK,SAAS,OAAO,CAAC,CAC9C,CAAA,CACA,EAED,SAASiC,GAAc,CACjB/B,EAAQ,YAAY,mBAAoB,0BAA0B,CACxE"}
|
|
1
|
+
{"version":3,"file":"SettingsExternalSecrets-7996830e.js","sources":["../../src/components/ExternalSecretsProviderCard.ee.vue","../../src/views/SettingsExternalSecrets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType, Ref } from 'vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\nimport ExternalSecretsProviderImage from '@/components/ExternalSecretsProviderImage.ee.vue';\nimport ExternalSecretsProviderConnectionSwitch from '@/components/ExternalSecretsProviderConnectionSwitch.ee.vue';\nimport { useExternalSecretsStore, useUIStore } from '@/stores';\nimport { useExternalSecretsProvider, useI18n, useToast } from '@/composables';\nimport { EXTERNAL_SECRETS_PROVIDER_MODAL_KEY } from '@/constants';\nimport { DateTime } from 'luxon';\nimport { computed, nextTick, onMounted, toRefs } from 'vue';\n\nconst props = defineProps({\n\tprovider: {\n\t\ttype: Object as PropType<ExternalSecretsProvider>,\n\t\trequired: true,\n\t},\n});\n\nconst externalSecretsStore = useExternalSecretsStore();\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst { provider } = toRefs(props) as Ref<ExternalSecretsProvider>;\nconst providerData = computed(() => provider.value.data);\nconst {\n\tconnectionState,\n\tinitialConnectionState,\n\tnormalizedProviderData,\n\ttestConnection,\n\tsetConnectionState,\n} = useExternalSecretsProvider(provider, providerData);\n\nconst actionDropdownOptions = computed(() => [\n\t{\n\t\tvalue: 'setup',\n\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.setup'),\n\t},\n\t...(props.provider.connected\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'reload',\n\t\t\t\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.reload'),\n\t\t\t\t},\n\t\t ]\n\t\t: []),\n]);\n\nconst canConnect = computed(() => {\n\treturn props.provider.connected || Object.keys(props.provider.data).length > 0;\n});\n\nconst formattedDate = computed((provider: ExternalSecretsProvider) => {\n\treturn DateTime.fromISO(props.provider.connectedAt).toFormat('dd LLL yyyy');\n});\n\nonMounted(() => {\n\tsetConnectionState(props.provider.state);\n});\n\nasync function onBeforeConnectionUpdate() {\n\tif (props.provider.connected) {\n\t\treturn true;\n\t}\n\n\tawait externalSecretsStore.getProvider(props.provider.name);\n\tawait nextTick();\n\tconst status = await testConnection();\n\n\treturn status !== 'error';\n}\n\nfunction openExternalSecretProvider() {\n\tuiStore.openModalWithData({\n\t\tname: EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,\n\t\tdata: { name: props.provider.name },\n\t});\n}\n\nasync function reloadProvider() {\n\ttry {\n\t\tawait externalSecretsStore.reloadProvider(props.provider.name);\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('settings.externalSecrets.card.reload.success.title'),\n\t\t\tmessage: i18n.baseText('settings.externalSecrets.card.reload.success.description', {\n\t\t\t\tinterpolate: { provider: props.provider.displayName },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n}\n\nasync function onActionDropdownClick(id: string) {\n\tswitch (id) {\n\t\tcase 'setup':\n\t\t\topenExternalSecretProvider();\n\t\t\tbreak;\n\t\tcase 'reload':\n\t\t\tawait reloadProvider();\n\t\t\tbreak;\n\t}\n}\n</script>\n\n<template>\n\t<n8n-card :class=\"$style.card\">\n\t\t<div :class=\"$style.cardBody\">\n\t\t\t<ExternalSecretsProviderImage :class=\"$style.cardImage\" :provider=\"provider\" />\n\t\t\t<div :class=\"$style.cardContent\">\n\t\t\t\t<n8n-text bold>{{ provider.displayName }}</n8n-text>\n\t\t\t\t<n8n-text color=\"text-light\" size=\"small\" v-if=\"provider.connected\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.secretsCount', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tcount: `${externalSecretsStore.secrets[provider.name]?.length}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t\t|\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.connectedAt', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tdate: formattedDate,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardActions\" v-if=\"canConnect\">\n\t\t\t\t<ExternalSecretsProviderConnectionSwitch\n\t\t\t\t\t:provider=\"provider\"\n\t\t\t\t\t:beforeUpdate=\"onBeforeConnectionUpdate\"\n\t\t\t\t\t:disabled=\"connectionState === 'error' && !provider.connected\"\n\t\t\t\t/>\n\t\t\t\t<n8n-action-toggle\n\t\t\t\t\tclass=\"ml-s\"\n\t\t\t\t\ttheme=\"dark\"\n\t\t\t\t\t:actions=\"actionDropdownOptions\"\n\t\t\t\t\t@action=\"onActionDropdownClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<n8n-button v-else type=\"tertiary\" @click=\"openExternalSecretProvider()\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.card.setUp') }}\n\t\t\t</n8n-button>\n\t\t</div>\n\t</n8n-card>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n\tposition: relative;\n\tmargin-bottom: var(--spacing-2xs);\n}\n\n.cardImage {\n\twidth: 28px;\n\theight: 28px;\n}\n\n.cardBody {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.cardContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: var(--spacing-s);\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { useUIStore } from '@/stores/ui.store';\nimport { useI18n, useMessage, useToast } from '@/composables';\nimport { useExternalSecretsStore } from '@/stores';\nimport { computed, onMounted } from 'vue';\nimport ExternalSecretsProviderCard from '@/components/ExternalSecretsProviderCard.ee.vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\n\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst externalSecretsStore = useExternalSecretsStore();\nconst message = useMessage();\nconst toast = useToast();\n\nconst sortedProviders = computed(() => {\n\treturn ([...externalSecretsStore.providers] as ExternalSecretsProvider[]).sort((a, b) => {\n\t\treturn b.name.localeCompare(a.name);\n\t});\n});\n\nonMounted(() => {\n\ttry {\n\t\tvoid externalSecretsStore.fetchAllSecrets();\n\t\tvoid externalSecretsStore.getProviders();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n});\n\nfunction goToUpgrade() {\n\tvoid uiStore.goToUpgrade('external-secrets', 'upgrade-external-secrets');\n}\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.externalSecrets.title') }}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"externalSecretsStore.isEnterpriseExternalSecretsEnabled\"\n\t\t\tdata-test-id=\"external-secrets-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" class=\"mt-2xl mb-l\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info') }}\n\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info.link') }}\n\t\t\t\t</a>\n\t\t\t</n8n-callout>\n\t\t\t<ExternalSecretsProviderCard\n\t\t\t\tv-for=\"provider in sortedProviders\"\n\t\t\t\t:key=\"provider.name\"\n\t\t\t\t:provider=\"provider\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tclass=\"mt-2xl mb-l\"\n\t\t\tdata-test-id=\"external-secrets-content-unlicensed\"\n\t\t\t:buttonText=\"i18n.baseText('settings.externalSecrets.actionBox.buttonText')\"\n\t\t\t@click=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.externalSecrets.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t<i18n-t keypath=\"settings.externalSecrets.actionBox.description\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.actionBox.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n"],"names":["externalSecretsStore","useExternalSecretsStore","i18n","useI18n","uiStore","useUIStore","toast","useToast","provider","toRefs","props","providerData","computed","connectionState","initialConnectionState","normalizedProviderData","testConnection","setConnectionState","useExternalSecretsProvider","actionDropdownOptions","canConnect","formattedDate","DateTime","onMounted","onBeforeConnectionUpdate","nextTick","openExternalSecretProvider","EXTERNAL_SECRETS_PROVIDER_MODAL_KEY","reloadProvider","error","onActionDropdownClick","id","sortedProviders","a","b","goToUpgrade"],"mappings":"u9CAkBMA,EAAuBC,IACvBC,EAAOC,IACPC,EAAUC,IACVC,EAAQC,IAER,CAAE,SAAAC,CAAA,EAAaC,EAAOC,CAAK,EAC3BC,EAAeC,EAAS,IAAMJ,EAAS,MAAM,IAAI,EACjD,CACL,gBAAAK,EACA,uBAAAC,EACA,uBAAAC,EACA,eAAAC,EACA,mBAAAC,CAAA,EACGC,EAA2BV,EAAUG,CAAY,EAE/CQ,EAAwBP,EAAS,IAAM,CAC5C,CACC,MAAO,QACP,MAAOV,EAAK,SAAS,oDAAoD,CAC1E,EACA,GAAIQ,EAAM,SAAS,UAChB,CACA,CACC,MAAO,SACP,MAAOR,EAAK,SAAS,qDAAqD,CAC3E,CAAA,EAEA,CAAC,CAAA,CACJ,EAEKkB,EAAaR,EAAS,IACpBF,EAAM,SAAS,WAAa,OAAO,KAAKA,EAAM,SAAS,IAAI,EAAE,OAAS,CAC7E,EAEKW,EAAgBT,EAAUJ,GACxBc,EAAS,QAAQZ,EAAM,SAAS,WAAW,EAAE,SAAS,aAAa,CAC1E,EAEDa,EAAU,IAAM,CACIN,EAAAP,EAAM,SAAS,KAAK,CAAA,CACvC,EAED,eAAec,GAA2B,CACrC,OAAAd,EAAM,SAAS,UACX,IAGR,MAAMV,EAAqB,YAAYU,EAAM,SAAS,IAAI,EAC1D,MAAMe,EAAS,EACA,MAAMT,MAEH,QACnB,CAEA,SAASU,GAA6B,CACrCtB,EAAQ,kBAAkB,CACzB,KAAMuB,EACN,KAAM,CAAE,KAAMjB,EAAM,SAAS,IAAK,CAAA,CAClC,CACF,CAEA,eAAekB,GAAiB,CAC3B,GAAA,CACH,MAAM5B,EAAqB,eAAeU,EAAM,SAAS,IAAI,EAC7DJ,EAAM,YAAY,CACjB,MAAOJ,EAAK,SAAS,oDAAoD,EACzE,QAASA,EAAK,SAAS,2DAA4D,CAClF,YAAa,CAAE,SAAUQ,EAAM,SAAS,WAAY,CAAA,CACpD,EACD,KAAM,SAAA,CACN,QACOmB,EAAO,CACfvB,EAAM,UAAUuB,EAAO3B,EAAK,SAAS,OAAO,CAAC,CAC9C,CACD,CAEA,eAAe4B,EAAsBC,EAAY,CAChD,OAAQA,EAAI,CACX,IAAK,QACuBL,IAC3B,MACD,IAAK,SACJ,MAAME,EAAe,EACrB,KACF,CACD,0iDC/FA,MAAM1B,EAAOC,IACPC,EAAUC,IACVL,EAAuBC,IAEvBK,EAAQC,IAERyB,EAAkBpB,EAAS,IACxB,CAAC,GAAGZ,EAAqB,SAAS,EAAgC,KAAK,CAACiC,EAAGC,IAC3EA,EAAE,KAAK,cAAcD,EAAE,IAAI,CAClC,CACD,EAEDV,EAAU,IAAM,CACX,GAAA,CACEvB,EAAqB,kBACrBA,EAAqB,qBAClB6B,EAAO,CACfvB,EAAM,UAAUuB,EAAO3B,EAAK,SAAS,OAAO,CAAC,CAC9C,CAAA,CACA,EAED,SAASiC,GAAc,CACjB/B,EAAQ,YAAY,mBAAoB,0BAA0B,CACxE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{F as e}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsFakeDoorView-
|
|
1
|
+
import{F as e}from"./index-ac03fd2d.js";import{m as r}from"./pinia-af9c3f71.js";import{n as i,_ as m}from"./n8n-6b07beca.js";import{d as p,g as n,o as s,b as a}from"./vendor-f46c350a.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./lodash-es-bad8e3ee.js";import"./uuid-cf522c50.js";import"./luxon-19e1de07.js";import"./esprima-next-8c7e8ff9.js";import"./@vueuse/core-9fb50532.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/browser-ui-715581dc.js";import"./chart.js-58383f81.js";import"./flatted-8b14da7d.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/connector-bezier-5b4468a6.js";const f=p({name:"SettingsFakeDoorView",components:{FeatureComingSoon:e},props:{featureId:{type:String,required:!0}},computed:{...r(i),featureInfo(){return this.uiStore.getFakeDoorById(this.featureId)}},methods:{openLinkPage(){this.featureInfo&&window.open(this.featureInfo.linkURL,"_blank")}}}),u="_header_em75e_5",c={header:u};function d(o,l,h,I,g,k){const t=n("feature-coming-soon");return s(),a(t,{featureId:o.featureId,showTitle:""},null,8,["featureId"])}const _={$style:c},W=m(f,[["render",d],["__cssModules",_]]);export{W as default};
|
|
2
|
+
//# sourceMappingURL=SettingsFakeDoorView-3d488495.js.map
|
package/dist/assets/{SettingsFakeDoorView-09162f67.js.map → SettingsFakeDoorView-3d488495.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsFakeDoorView-
|
|
1
|
+
{"version":3,"file":"SettingsFakeDoorView-3d488495.js","sources":["../../src/views/SettingsFakeDoorView.vue"],"sourcesContent":["<template>\n\t<feature-coming-soon :featureId=\"featureId\" showTitle />\n</template>\n\n<script lang=\"ts\">\nimport type { IFakeDoor } from '@/Interface';\nimport { defineComponent } from 'vue';\nimport FeatureComingSoon from '@/components/FeatureComingSoon.vue';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\n\nexport default defineComponent({\n\tname: 'SettingsFakeDoorView',\n\tcomponents: {\n\t\tFeatureComingSoon,\n\t},\n\tprops: {\n\t\tfeatureId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t\tfeatureInfo(): IFakeDoor | undefined {\n\t\t\treturn this.uiStore.getFakeDoorById(this.featureId);\n\t\t},\n\t},\n\tmethods: {\n\t\topenLinkPage() {\n\t\t\tif (this.featureInfo) {\n\t\t\t\twindow.open(this.featureInfo.linkURL, '_blank');\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","FeatureComingSoon","mapStores","useUIStore","_component_feature_coming_soon","_resolveComponent","_openBlock","_createBlock","_ctx"],"mappings":"0sCAWA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,uBACN,WAAY,CACX,kBAAAC,CACD,EACA,MAAO,CACN,UAAW,CACV,KAAM,OACN,SAAU,EACX,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,CAAU,EACvB,aAAqC,CACpC,OAAO,KAAK,QAAQ,gBAAgB,KAAK,SAAS,CACnD,CACD,EACA,QAAS,CACR,cAAe,CACV,KAAK,aACR,OAAO,KAAK,KAAK,YAAY,QAAS,QAAQ,CAEhD,CACD,CACD,CAAC,2DAlCwD,MAAAC,EAAAC,EAAA,qBAAA,SAAZC,EAAS,EAAAC,EAAAH,EAAA,CAAA,UAAAI,EAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{z as W,n as X,u as J,dq as Y,an as ee,a1 as V,R as te,_ as se}from"./n8n-6b07beca.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import{f as oe}from"./index-1f0f487e.js";import{d as ne,r as re,c as U,z as ae,a as ce,g,o as m,i as C,h as c,w as a,p as s,j as n,t as r,n as l,b as _,q as h,s as y}from"./vendor-f46c350a.js";import"./lodash-es-bad8e3ee.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./pinia-af9c3f71.js";import"./flatted-8b14da7d.js";import"./@vueuse/core-9fb50532.js";import"./uuid-cf522c50.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-5b4468a6.js";import"./@jsplumb/browser-ui-715581dc.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./chart.js-58383f81.js";const le={key:0,"data-test-id":"source-control-content-licensed"},ie=["href"],ue={for:"repoUrl"},pe=["href"],de={key:2,"data-test-id":"source-control-connected-content"},ge=n("hr",null,null,-1),me=["href"],ye=ne({__name:"SettingsSourceControl",setup(we){const e=ee(),o=W(),w=X(),p=J(),B=te(),b=Y(),d=re(!1),K=U(()=>o.preferences.branches.map(t=>({value:t,label:t}))),R=async()=>{b.startLoading(),b.setLoadingText(e.baseText("settings.sourceControl.loading.connecting"));try{await o.savePreferences({repositoryUrl:o.preferences.repositoryUrl}),await o.getBranches(),d.value=!0,p.showMessage({title:e.baseText("settings.sourceControl.toast.connected.title"),message:e.baseText("settings.sourceControl.toast.connected.message"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.connected.error"))}b.stopLoading()},z=async()=>{try{await B.confirm(e.baseText("settings.sourceControl.modals.disconnect.message"),e.baseText("settings.sourceControl.modals.disconnect.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.disconnect.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.disconnect.cancel")})===V&&(b.startLoading(),await o.disconnect(!0),d.value=!1,p.showMessage({title:e.baseText("settings.sourceControl.toast.disconnected.title"),message:e.baseText("settings.sourceControl.toast.disconnected.message"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.disconnected.error"))}b.stopLoading()},E=async()=>{b.startLoading();try{await o.updatePreferences({branchName:o.preferences.branchName,branchReadOnly:o.preferences.branchReadOnly,branchColor:o.preferences.branchColor}),p.showMessage({title:e.baseText("settings.sourceControl.saved.title"),type:"success"})}catch(t){p.showError(t,"Error setting branch")}b.stopLoading()},$=async t=>{t!==o.preferences.branchName&&(o.preferences.branchName=t)},I=()=>{w.goToUpgrade("source-control","upgrade-source-control")},N=async()=>{await o.getPreferences(),o.preferences.connected&&(d.value=!0,o.getBranches())};ae(async()=>{await N()});const S=ce({repoUrl:!1,keyGeneratorType:!1});function T(t,i){S[t]=i}const q=[{name:"REQUIRED"},{name:"MATCH_REGEX",config:{regex:/^git@(?:\[[0-9a-fA-F:]+\]|(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\/)?[a-zA-Z0-9_.\-\/]+(\.git)?(?:\/[a-zA-Z0-9_.\-\/]+)*$/,message:e.baseText("settings.sourceControl.repoUrlInvalid")}}],O=[{name:"REQUIRED"}],M=U(()=>S.repoUrl),L=[{name:"REQUIRED"}];async function G(){try{await B.confirm(e.baseText("settings.sourceControl.modals.refreshSshKey.message"),e.baseText("settings.sourceControl.modals.refreshSshKey.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.cancel")})===V&&(await o.generateKeyPair(o.preferences.keyGeneratorType),p.showMessage({title:e.baseText("settings.sourceControl.refreshSshKey.successful.title"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshSshKey.error.title"))}}const D=async()=>{try{await o.getBranches(),p.showMessage({title:e.baseText("settings.sourceControl.refreshBranches.success"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshBranches.error"))}},A=async t=>{t!==o.preferences.keyGeneratorType&&(o.preferences.keyGeneratorType=t)};return(t,i)=>{const x=g("n8n-heading"),v=g("i18n-t"),F=g("n8n-callout"),k=g("n8n-form-input"),f=g("n8n-button"),P=g("n8n-notice"),Z=g("n8n-tooltip"),Q=g("n8n-checkbox"),j=g("n8n-color-picker"),H=g("n8n-action-box");return m(),C("div",null,[c(x,{size:"2xlarge",tag:"h1"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.title")),1)]),_:1}),s(o).isEnterpriseSourceControlEnabled?(m(),C("div",le,[c(F,{theme:"secondary",icon:"info-circle",class:"mt-2xl mb-l"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.description",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.description.link")),9,ie)]),_:1})]),_:1}),c(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.gitConfig")),1)]),_:1}),n("div",{class:l(t.$style.group)},[n("label",ue,r(s(e).baseText("settings.sourceControl.repoUrl")),1),n("div",{class:l(t.$style.groupFlex)},[c(k,{label:"",class:"ml-0",id:"repoUrl",name:"repoUrl",validateOnBlur:"",validationRules:q,disabled:d.value,placeholder:s(e).baseText("settings.sourceControl.repoUrlPlaceholder"),modelValue:s(o).preferences.repositoryUrl,"onUpdate:modelValue":i[0]||(i[0]=u=>s(o).preferences.repositoryUrl=u),onValidate:i[1]||(i[1]=u=>T("repoUrl",u))},null,8,["disabled","placeholder","modelValue"]),d.value?(m(),_(f,{key:0,class:l(t.$style.disconnectButton),type:"tertiary",onClick:z,size:"large",icon:"trash","data-test-id":"source-control-disconnect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.disconnect")),1)]),_:1},8,["class"])):h("",!0)],2)],2),s(o).preferences.publicKey?(m(),C("div",{key:0,class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.sshKey")),1),n("div",{class:l({[t.$style.sshInput]:!d.value})},[d.value?h("",!0):(m(),_(k,{key:0,class:l(t.$style.sshKeyTypeSelect),label:"",type:"select",id:"keyGeneratorType",name:"keyGeneratorType","data-test-id":"source-control-ssh-key-type-select",validateOnBlur:"",validationRules:O,options:s(o).sshKeyTypesWithLabel,modelValue:s(o).preferences.keyGeneratorType,onValidate:i[2]||(i[2]=u=>T("keyGeneratorType",u)),"onUpdate:modelValue":A},null,8,["class","options","modelValue"])),c(oe,{class:l(t.$style.copyInput),collapse:"",size:"medium",value:s(o).preferences.publicKey,"copy-button-text":s(e).baseText("generic.clickToCopy")},null,8,["class","value","copy-button-text"]),d.value?h("",!0):(m(),_(f,{key:1,size:"large",type:"tertiary",icon:"sync",onClick:G,"data-test-id":"source-control-refresh-ssh-key-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.refreshSshKey")),1)]),_:1}))],2),c(P,{type:"info",class:"mt-s"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.sshKeyDescription",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.setup.ssh.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.sshKeyDescriptionLink")),9,pe)]),_:1})]),_:1})],2)):h("",!0),d.value?h("",!0):(m(),_(f,{key:1,onClick:R,size:"large",disabled:!M.value,class:l(t.$style.connect),"data-test-id":"source-control-connect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.connect")),1)]),_:1},8,["disabled","class"])),d.value?(m(),C("div",de,[n("div",{class:l(t.$style.group)},[ge,c(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.instanceSettings")),1)]),_:1}),n("label",null,r(s(e).baseText("settings.sourceControl.branches")),1),n("div",{class:l(t.$style.branchSelection)},[c(k,{label:"",type:"select",id:"branchName",name:"branchName",class:"mb-s","data-test-id":"source-control-branch-select",validateOnBlur:"",validationRules:L,options:K.value,modelValue:s(o).preferences.branchName,onValidate:i[3]||(i[3]=u=>T("branchName",u)),"onUpdate:modelValue":$},null,8,["options","modelValue"]),c(Z,{placement:"top"},{content:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.refreshBranches.tooltip")),1)]),default:a(()=>[c(f,{size:"small",type:"tertiary",icon:"sync",square:"",class:l(t.$style.refreshBranches),onClick:D,"data-test-id":"source-control-refresh-branches-button"},null,8,["class"])]),_:1})],2),c(Q,{modelValue:s(o).preferences.branchReadOnly,"onUpdate:modelValue":i[4]||(i[4]=u=>s(o).preferences.branchReadOnly=u),class:l(t.$style.readOnly)},{default:a(()=>[c(v,{keypath:"settings.sourceControl.protected",tag:"span"},{bold:a(()=>[n("strong",null,r(s(e).baseText("settings.sourceControl.protected.bold")),1)]),_:1})]),_:1},8,["modelValue","class"])],2),n("div",{class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.color")),1),n("div",null,[c(j,{size:"small",modelValue:s(o).preferences.branchColor,"onUpdate:modelValue":i[5]||(i[5]=u=>s(o).preferences.branchColor=u)},null,8,["modelValue"])])],2),n("div",{class:l([t.$style.group,"pt-s"])},[c(f,{onClick:E,size:"large",disabled:!s(o).preferences.branchName,"data-test-id":"source-control-save-settings-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.save")),1)]),_:1},8,["disabled"])],2)])):h("",!0)])):(m(),_(H,{key:1,"data-test-id":"source-control-content-unlicensed",class:l(t.$style.actionBox),description:s(e).baseText("settings.sourceControl.actionBox.description"),buttonText:s(e).baseText("settings.sourceControl.actionBox.buttonText"),"onClick:button":I},{heading:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.actionBox.title")),1)]),description:a(()=>[y(r(s(e).baseText("settings.sourceControl.actionBox.description"))+" ",1),n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.actionBox.description.link")),9,me)]),_:1},8,["class","description","buttonText"]))])}}}),be="_group_1qvoi_5",he="_readOnly_1qvoi_26",fe="_groupFlex_1qvoi_30",_e="_connect_1qvoi_44",Ce="_disconnectButton_1qvoi_48",Te="_actionBox_1qvoi_53",xe="_sshInput_1qvoi_57",ve="_copyInput_1qvoi_68",ke="_sshKeyTypeSelect_1qvoi_72",Be="_branchSelection_1qvoi_80",Se="_refreshBranches_1qvoi_89",Ve={group:be,readOnly:he,groupFlex:fe,connect:_e,disconnectButton:Ce,actionBox:Te,sshInput:xe,copyInput:ve,sshKeyTypeSelect:ke,branchSelection:Be,refreshBranches:Se},Ue={$style:Ve},at=se(ye,[["__cssModules",Ue]]);export{at as default};
|
|
2
|
-
//# sourceMappingURL=SettingsSourceControl-
|
|
1
|
+
import{z as W,n as X,u as J,dq as Y,an as ee,a1 as V,R as te,_ as se}from"./n8n-6b07beca.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import{f as oe}from"./index-ac03fd2d.js";import{d as ne,r as re,c as U,z as ae,a as ce,g,o as m,i as C,h as c,w as a,p as s,j as n,t as r,n as l,b as _,q as h,s as y}from"./vendor-f46c350a.js";import"./lodash-es-bad8e3ee.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./pinia-af9c3f71.js";import"./flatted-8b14da7d.js";import"./@vueuse/core-9fb50532.js";import"./uuid-cf522c50.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-5b4468a6.js";import"./@jsplumb/browser-ui-715581dc.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./chart.js-58383f81.js";const le={key:0,"data-test-id":"source-control-content-licensed"},ie=["href"],ue={for:"repoUrl"},pe=["href"],de={key:2,"data-test-id":"source-control-connected-content"},ge=n("hr",null,null,-1),me=["href"],ye=ne({__name:"SettingsSourceControl",setup(we){const e=ee(),o=W(),w=X(),p=J(),B=te(),b=Y(),d=re(!1),K=U(()=>o.preferences.branches.map(t=>({value:t,label:t}))),R=async()=>{b.startLoading(),b.setLoadingText(e.baseText("settings.sourceControl.loading.connecting"));try{await o.savePreferences({repositoryUrl:o.preferences.repositoryUrl}),await o.getBranches(),d.value=!0,p.showMessage({title:e.baseText("settings.sourceControl.toast.connected.title"),message:e.baseText("settings.sourceControl.toast.connected.message"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.connected.error"))}b.stopLoading()},z=async()=>{try{await B.confirm(e.baseText("settings.sourceControl.modals.disconnect.message"),e.baseText("settings.sourceControl.modals.disconnect.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.disconnect.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.disconnect.cancel")})===V&&(b.startLoading(),await o.disconnect(!0),d.value=!1,p.showMessage({title:e.baseText("settings.sourceControl.toast.disconnected.title"),message:e.baseText("settings.sourceControl.toast.disconnected.message"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.disconnected.error"))}b.stopLoading()},E=async()=>{b.startLoading();try{await o.updatePreferences({branchName:o.preferences.branchName,branchReadOnly:o.preferences.branchReadOnly,branchColor:o.preferences.branchColor}),p.showMessage({title:e.baseText("settings.sourceControl.saved.title"),type:"success"})}catch(t){p.showError(t,"Error setting branch")}b.stopLoading()},$=async t=>{t!==o.preferences.branchName&&(o.preferences.branchName=t)},I=()=>{w.goToUpgrade("source-control","upgrade-source-control")},N=async()=>{await o.getPreferences(),o.preferences.connected&&(d.value=!0,o.getBranches())};ae(async()=>{await N()});const S=ce({repoUrl:!1,keyGeneratorType:!1});function T(t,i){S[t]=i}const q=[{name:"REQUIRED"},{name:"MATCH_REGEX",config:{regex:/^git@(?:\[[0-9a-fA-F:]+\]|(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\/)?[a-zA-Z0-9_.\-\/]+(\.git)?(?:\/[a-zA-Z0-9_.\-\/]+)*$/,message:e.baseText("settings.sourceControl.repoUrlInvalid")}}],O=[{name:"REQUIRED"}],M=U(()=>S.repoUrl),L=[{name:"REQUIRED"}];async function G(){try{await B.confirm(e.baseText("settings.sourceControl.modals.refreshSshKey.message"),e.baseText("settings.sourceControl.modals.refreshSshKey.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.cancel")})===V&&(await o.generateKeyPair(o.preferences.keyGeneratorType),p.showMessage({title:e.baseText("settings.sourceControl.refreshSshKey.successful.title"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshSshKey.error.title"))}}const D=async()=>{try{await o.getBranches(),p.showMessage({title:e.baseText("settings.sourceControl.refreshBranches.success"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshBranches.error"))}},A=async t=>{t!==o.preferences.keyGeneratorType&&(o.preferences.keyGeneratorType=t)};return(t,i)=>{const x=g("n8n-heading"),v=g("i18n-t"),F=g("n8n-callout"),k=g("n8n-form-input"),f=g("n8n-button"),P=g("n8n-notice"),Z=g("n8n-tooltip"),Q=g("n8n-checkbox"),j=g("n8n-color-picker"),H=g("n8n-action-box");return m(),C("div",null,[c(x,{size:"2xlarge",tag:"h1"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.title")),1)]),_:1}),s(o).isEnterpriseSourceControlEnabled?(m(),C("div",le,[c(F,{theme:"secondary",icon:"info-circle",class:"mt-2xl mb-l"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.description",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.description.link")),9,ie)]),_:1})]),_:1}),c(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.gitConfig")),1)]),_:1}),n("div",{class:l(t.$style.group)},[n("label",ue,r(s(e).baseText("settings.sourceControl.repoUrl")),1),n("div",{class:l(t.$style.groupFlex)},[c(k,{label:"",class:"ml-0",id:"repoUrl",name:"repoUrl",validateOnBlur:"",validationRules:q,disabled:d.value,placeholder:s(e).baseText("settings.sourceControl.repoUrlPlaceholder"),modelValue:s(o).preferences.repositoryUrl,"onUpdate:modelValue":i[0]||(i[0]=u=>s(o).preferences.repositoryUrl=u),onValidate:i[1]||(i[1]=u=>T("repoUrl",u))},null,8,["disabled","placeholder","modelValue"]),d.value?(m(),_(f,{key:0,class:l(t.$style.disconnectButton),type:"tertiary",onClick:z,size:"large",icon:"trash","data-test-id":"source-control-disconnect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.disconnect")),1)]),_:1},8,["class"])):h("",!0)],2)],2),s(o).preferences.publicKey?(m(),C("div",{key:0,class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.sshKey")),1),n("div",{class:l({[t.$style.sshInput]:!d.value})},[d.value?h("",!0):(m(),_(k,{key:0,class:l(t.$style.sshKeyTypeSelect),label:"",type:"select",id:"keyGeneratorType",name:"keyGeneratorType","data-test-id":"source-control-ssh-key-type-select",validateOnBlur:"",validationRules:O,options:s(o).sshKeyTypesWithLabel,modelValue:s(o).preferences.keyGeneratorType,onValidate:i[2]||(i[2]=u=>T("keyGeneratorType",u)),"onUpdate:modelValue":A},null,8,["class","options","modelValue"])),c(oe,{class:l(t.$style.copyInput),collapse:"",size:"medium",value:s(o).preferences.publicKey,"copy-button-text":s(e).baseText("generic.clickToCopy")},null,8,["class","value","copy-button-text"]),d.value?h("",!0):(m(),_(f,{key:1,size:"large",type:"tertiary",icon:"sync",onClick:G,"data-test-id":"source-control-refresh-ssh-key-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.refreshSshKey")),1)]),_:1}))],2),c(P,{type:"info",class:"mt-s"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.sshKeyDescription",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.setup.ssh.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.sshKeyDescriptionLink")),9,pe)]),_:1})]),_:1})],2)):h("",!0),d.value?h("",!0):(m(),_(f,{key:1,onClick:R,size:"large",disabled:!M.value,class:l(t.$style.connect),"data-test-id":"source-control-connect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.connect")),1)]),_:1},8,["disabled","class"])),d.value?(m(),C("div",de,[n("div",{class:l(t.$style.group)},[ge,c(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.instanceSettings")),1)]),_:1}),n("label",null,r(s(e).baseText("settings.sourceControl.branches")),1),n("div",{class:l(t.$style.branchSelection)},[c(k,{label:"",type:"select",id:"branchName",name:"branchName",class:"mb-s","data-test-id":"source-control-branch-select",validateOnBlur:"",validationRules:L,options:K.value,modelValue:s(o).preferences.branchName,onValidate:i[3]||(i[3]=u=>T("branchName",u)),"onUpdate:modelValue":$},null,8,["options","modelValue"]),c(Z,{placement:"top"},{content:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.refreshBranches.tooltip")),1)]),default:a(()=>[c(f,{size:"small",type:"tertiary",icon:"sync",square:"",class:l(t.$style.refreshBranches),onClick:D,"data-test-id":"source-control-refresh-branches-button"},null,8,["class"])]),_:1})],2),c(Q,{modelValue:s(o).preferences.branchReadOnly,"onUpdate:modelValue":i[4]||(i[4]=u=>s(o).preferences.branchReadOnly=u),class:l(t.$style.readOnly)},{default:a(()=>[c(v,{keypath:"settings.sourceControl.protected",tag:"span"},{bold:a(()=>[n("strong",null,r(s(e).baseText("settings.sourceControl.protected.bold")),1)]),_:1})]),_:1},8,["modelValue","class"])],2),n("div",{class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.color")),1),n("div",null,[c(j,{size:"small",modelValue:s(o).preferences.branchColor,"onUpdate:modelValue":i[5]||(i[5]=u=>s(o).preferences.branchColor=u)},null,8,["modelValue"])])],2),n("div",{class:l([t.$style.group,"pt-s"])},[c(f,{onClick:E,size:"large",disabled:!s(o).preferences.branchName,"data-test-id":"source-control-save-settings-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.save")),1)]),_:1},8,["disabled"])],2)])):h("",!0)])):(m(),_(H,{key:1,"data-test-id":"source-control-content-unlicensed",class:l(t.$style.actionBox),description:s(e).baseText("settings.sourceControl.actionBox.description"),buttonText:s(e).baseText("settings.sourceControl.actionBox.buttonText"),"onClick:button":I},{heading:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.actionBox.title")),1)]),description:a(()=>[y(r(s(e).baseText("settings.sourceControl.actionBox.description"))+" ",1),n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.actionBox.description.link")),9,me)]),_:1},8,["class","description","buttonText"]))])}}}),be="_group_1qvoi_5",he="_readOnly_1qvoi_26",fe="_groupFlex_1qvoi_30",_e="_connect_1qvoi_44",Ce="_disconnectButton_1qvoi_48",Te="_actionBox_1qvoi_53",xe="_sshInput_1qvoi_57",ve="_copyInput_1qvoi_68",ke="_sshKeyTypeSelect_1qvoi_72",Be="_branchSelection_1qvoi_80",Se="_refreshBranches_1qvoi_89",Ve={group:be,readOnly:he,groupFlex:fe,connect:_e,disconnectButton:Ce,actionBox:Te,sshInput:xe,copyInput:ve,sshKeyTypeSelect:ke,branchSelection:Be,refreshBranches:Se},Ue={$style:Ve},at=se(ye,[["__cssModules",Ue]]);export{at as default};
|
|
2
|
+
//# sourceMappingURL=SettingsSourceControl-1c188575.js.map
|
package/dist/assets/{SettingsSourceControl-5fa4c1a5.js.map → SettingsSourceControl-1c188575.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsSourceControl-5fa4c1a5.js","sources":["../../src/views/SettingsSourceControl.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, onMounted } from 'vue';\nimport type { Rule, RuleGroup } from 'n8n-design-system/types';\nimport { MODAL_CONFIRM } from '@/constants';\nimport { useUIStore, useSourceControlStore } from '@/stores';\nimport { useToast, useMessage, useLoadingService, useI18n } from '@/composables';\nimport CopyInput from '@/components/CopyInput.vue';\nimport type { TupleToUnion } from '@/utils/typeHelpers';\nimport type { SshKeyTypes } from '@/Interface';\n\nconst locale = useI18n();\nconst sourceControlStore = useSourceControlStore();\nconst uiStore = useUIStore();\nconst toast = useToast();\nconst message = useMessage();\nconst loadingService = useLoadingService();\n\nconst isConnected = ref(false);\nconst branchNameOptions = computed(() =>\n\tsourceControlStore.preferences.branches.map((branch) => ({\n\t\tvalue: branch,\n\t\tlabel: branch,\n\t})),\n);\n\nconst onConnect = async () => {\n\tloadingService.startLoading();\n\tloadingService.setLoadingText(locale.baseText('settings.sourceControl.loading.connecting'));\n\ttry {\n\t\tawait sourceControlStore.savePreferences({\n\t\t\trepositoryUrl: sourceControlStore.preferences.repositoryUrl,\n\t\t});\n\t\tawait sourceControlStore.getBranches();\n\t\tisConnected.value = true;\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.toast.connected.title'),\n\t\t\tmessage: locale.baseText('settings.sourceControl.toast.connected.message'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.connected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onDisconnect = async () => {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.disconnect.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.disconnect.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tloadingService.startLoading();\n\t\t\tawait sourceControlStore.disconnect(true);\n\t\t\tisConnected.value = false;\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.toast.disconnected.title'),\n\t\t\t\tmessage: locale.baseText('settings.sourceControl.toast.disconnected.message'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.disconnected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSave = async () => {\n\tloadingService.startLoading();\n\ttry {\n\t\tawait sourceControlStore.updatePreferences({\n\t\t\tbranchName: sourceControlStore.preferences.branchName,\n\t\t\tbranchReadOnly: sourceControlStore.preferences.branchReadOnly,\n\t\t\tbranchColor: sourceControlStore.preferences.branchColor,\n\t\t});\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.saved.title'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, 'Error setting branch');\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSelect = async (b: string) => {\n\tif (b === sourceControlStore.preferences.branchName) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.branchName = b;\n};\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('source-control', 'upgrade-source-control');\n};\n\nconst initialize = async () => {\n\tawait sourceControlStore.getPreferences();\n\tif (sourceControlStore.preferences.connected) {\n\t\tisConnected.value = true;\n\t\tvoid sourceControlStore.getBranches();\n\t}\n};\n\nonMounted(async () => {\n\tawait initialize();\n});\n\nconst formValidationStatus = reactive<Record<string, boolean>>({\n\trepoUrl: false,\n\tkeyGeneratorType: false,\n});\n\nfunction onValidate(key: string, value: boolean) {\n\tformValidationStatus[key] = value;\n}\n\nconst repoUrlValidationRules: Array<Rule | RuleGroup> = [\n\t{ name: 'REQUIRED' },\n\t{\n\t\tname: 'MATCH_REGEX',\n\t\tconfig: {\n\t\t\tregex:\n\t\t\t\t/^git@(?:\\[[0-9a-fA-F:]+\\]|(?:[a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\\/)?[a-zA-Z0-9_.\\-\\/]+(\\.git)?(?:\\/[a-zA-Z0-9_.\\-\\/]+)*$/,\n\t\t\tmessage: locale.baseText('settings.sourceControl.repoUrlInvalid'),\n\t\t},\n\t},\n];\n\nconst keyGeneratorTypeValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nconst validForConnection = computed(() => formValidationStatus.repoUrl);\nconst branchNameValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nasync function refreshSshKey() {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tawait sourceControlStore.generateKeyPair(sourceControlStore.preferences.keyGeneratorType);\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.refreshSshKey.successful.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshSshKey.error.title'));\n\t}\n}\n\nconst refreshBranches = async () => {\n\ttry {\n\t\tawait sourceControlStore.getBranches();\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.refreshBranches.success'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshBranches.error'));\n\t}\n};\n\nconst onSelectSshKeyType = async (sshKeyType: TupleToUnion<SshKeyTypes>) => {\n\tif (sshKeyType === sourceControlStore.preferences.keyGeneratorType) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.keyGeneratorType = sshKeyType;\n};\n</script>\n\n<template>\n\t<div>\n\t\t<n8n-heading size=\"2xlarge\" tag=\"h1\">{{\n\t\t\tlocale.baseText('settings.sourceControl.title')\n\t\t}}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"sourceControlStore.isEnterpriseSourceControlEnabled\"\n\t\t\tdata-test-id=\"source-control-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" icon=\"info-circle\" class=\"mt-2xl mb-l\">\n\t\t\t\t<i18n-t keypath=\"settings.sourceControl.description\" tag=\"span\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</n8n-callout>\n\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\tlocale.baseText('settings.sourceControl.gitConfig')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label for=\"repoUrl\">{{ locale.baseText('settings.sourceControl.repoUrl') }}</label>\n\t\t\t\t<div :class=\"$style.groupFlex\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\tclass=\"ml-0\"\n\t\t\t\t\t\tid=\"repoUrl\"\n\t\t\t\t\t\tname=\"repoUrl\"\n\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"repoUrlValidationRules\"\n\t\t\t\t\t\t:disabled=\"isConnected\"\n\t\t\t\t\t\t:placeholder=\"locale.baseText('settings.sourceControl.repoUrlPlaceholder')\"\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.repositoryUrl\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('repoUrl', value)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t:class=\"$style.disconnectButton\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\tv-if=\"isConnected\"\n\t\t\t\t\t\t@click=\"onDisconnect\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\tdata-test-id=\"source-control-disconnect-button\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.disconnect') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"sourceControlStore.preferences.publicKey\" :class=\"$style.group\">\n\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.sshKey') }}</label>\n\t\t\t\t<div :class=\"{ [$style.sshInput]: !isConnected }\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\t:class=\"$style.sshKeyTypeSelect\"\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\tid=\"keyGeneratorType\"\n\t\t\t\t\t\tname=\"keyGeneratorType\"\n\t\t\t\t\t\tdata-test-id=\"source-control-ssh-key-type-select\"\n\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"keyGeneratorTypeValidationRules\"\n\t\t\t\t\t\t:options=\"sourceControlStore.sshKeyTypesWithLabel\"\n\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.keyGeneratorType\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('keyGeneratorType', value)\"\n\t\t\t\t\t\t@update:modelValue=\"onSelectSshKeyType\"\n\t\t\t\t\t/>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:class=\"$style.copyInput\"\n\t\t\t\t\t\tcollapse\n\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t:value=\"sourceControlStore.preferences.publicKey\"\n\t\t\t\t\t\t:copy-button-text=\"locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\t@click=\"refreshSshKey\"\n\t\t\t\t\t\tdata-test-id=\"source-control-refresh-ssh-key-button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshSshKey') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</div>\n\t\t\t\t<n8n-notice type=\"info\" class=\"mt-s\">\n\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.sshKeyDescription\" tag=\"span\">\n\t\t\t\t\t\t<template #link>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t:href=\"locale.baseText('settings.sourceControl.docs.setup.ssh.url')\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.sshKeyDescriptionLink') }}</a\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-notice>\n\t\t\t</div>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t@click=\"onConnect\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t:disabled=\"!validForConnection\"\n\t\t\t\t:class=\"$style.connect\"\n\t\t\t\tdata-test-id=\"source-control-connect-button\"\n\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.connect') }}</n8n-button\n\t\t\t>\n\t\t\t<div v-if=\"isConnected\" data-test-id=\"source-control-connected-content\">\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<hr />\n\t\t\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\t\t\tlocale.baseText('settings.sourceControl.instanceSettings')\n\t\t\t\t\t}}</n8n-heading>\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.branches') }}</label>\n\t\t\t\t\t<div :class=\"$style.branchSelection\">\n\t\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t\tid=\"branchName\"\n\t\t\t\t\t\t\tname=\"branchName\"\n\t\t\t\t\t\t\tclass=\"mb-s\"\n\t\t\t\t\t\t\tdata-test-id=\"source-control-branch-select\"\n\t\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t\t:validationRules=\"branchNameValidationRules\"\n\t\t\t\t\t\t\t:options=\"branchNameOptions\"\n\t\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\t\t@validate=\"(value) => onValidate('branchName', value)\"\n\t\t\t\t\t\t\t@update:modelValue=\"onSelect\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<n8n-tooltip placement=\"top\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshBranches.tooltip') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\t\t:class=\"$style.refreshBranches\"\n\t\t\t\t\t\t\t\t@click=\"refreshBranches\"\n\t\t\t\t\t\t\t\tdata-test-id=\"source-control-refresh-branches-button\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</div>\n\t\t\t\t\t<n8n-checkbox\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.branchReadOnly\"\n\t\t\t\t\t\t:class=\"$style.readOnly\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.protected\" tag=\"span\">\n\t\t\t\t\t\t\t<template #bold>\n\t\t\t\t\t\t\t\t<strong>{{ locale.baseText('settings.sourceControl.protected.bold') }}</strong>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</i18n-t>\n\t\t\t\t\t</n8n-checkbox>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.color') }}</label>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<n8n-color-picker size=\"small\" v-model=\"sourceControlStore.preferences.branchColor\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"[$style.group, 'pt-s']\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t@click=\"onSave\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t:disabled=\"!sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\tdata-test-id=\"source-control-save-settings-button\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.save') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tdata-test-id=\"source-control-content-unlicensed\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:description=\"locale.baseText('settings.sourceControl.actionBox.description')\"\n\t\t\t:buttonText=\"locale.baseText('settings.sourceControl.actionBox.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ locale.baseText('settings.sourceControl.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description') }}\n\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description.link') }}\n\t\t\t\t</a>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.group {\n\tpadding: 0 0 var(--spacing-s);\n\twidth: 100%;\n\tdisplay: block;\n\n\thr {\n\t\tmargin: 0 0 var(--spacing-xl);\n\t\tborder: 1px solid var(--color-foreground-light);\n\t}\n\n\tlabel {\n\t\tdisplay: inline-block;\n\t\tpadding: 0 0 var(--spacing-2xs);\n\t\tfont-size: var(--font-size-s);\n\t}\n\n\tsmall {\n\t\tdisplay: inline-block;\n\t\tpadding: var(--spacing-2xs) 0 0;\n\t\tfont-size: var(--font-size-2xs);\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.readOnly {\n\tspan {\n\t\tfont-size: var(--font-size-s) !important;\n\t}\n}\n\n.groupFlex {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\t> div {\n\t\tflex: 1;\n\n\t\t&:last-child {\n\t\t\tmargin-left: var(--spacing-2xs);\n\t\t}\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n\n.connect {\n\tmargin: calc(var(--spacing-2xs) * -1) 0 var(--spacing-2xs);\n}\n\n.disconnectButton {\n\tmargin: 0 0 0 var(--spacing-2xs);\n\theight: 40px;\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.sshInput {\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\n\t> div {\n\t\tflex: 1 1 auto;\n\t}\n\n\t> button {\n\t\theight: 42px;\n\t}\n\n\t.copyInput {\n\t\tmargin: 0 var(--spacing-2xs);\n\t}\n}\n\n.sshKeyTypeSelect {\n\tmin-width: 120px;\n}\n\n.copyInput {\n\toverflow: auto;\n}\n\n.branchSelection {\n\tdisplay: flex;\n\n\t> div:first-child {\n\t\tflex: 1;\n\n\t\tinput {\n\t\t\theight: 36px;\n\t\t}\n\t}\n\n\tbutton.refreshBranches {\n\t\theight: 36px;\n\t\twidth: 36px;\n\t\tmargin-left: var(--spacing-xs);\n\t}\n}\n</style>\n"],"names":["locale","useI18n","sourceControlStore","useSourceControlStore","uiStore","useUIStore","toast","useToast","message","useMessage","loadingService","useLoadingService","isConnected","ref","branchNameOptions","computed","branch","onConnect","error","onDisconnect","MODAL_CONFIRM","onSave","onSelect","b","goToUpgrade","initialize","onMounted","formValidationStatus","reactive","onValidate","key","value","repoUrlValidationRules","keyGeneratorTypeValidationRules","validForConnection","branchNameValidationRules","refreshSshKey","refreshBranches","onSelectSshKeyType","sshKeyType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsSourceControl-1c188575.js","sources":["../../src/views/SettingsSourceControl.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, onMounted } from 'vue';\nimport type { Rule, RuleGroup } from 'n8n-design-system/types';\nimport { MODAL_CONFIRM } from '@/constants';\nimport { useUIStore, useSourceControlStore } from '@/stores';\nimport { useToast, useMessage, useLoadingService, useI18n } from '@/composables';\nimport CopyInput from '@/components/CopyInput.vue';\nimport type { TupleToUnion } from '@/utils/typeHelpers';\nimport type { SshKeyTypes } from '@/Interface';\n\nconst locale = useI18n();\nconst sourceControlStore = useSourceControlStore();\nconst uiStore = useUIStore();\nconst toast = useToast();\nconst message = useMessage();\nconst loadingService = useLoadingService();\n\nconst isConnected = ref(false);\nconst branchNameOptions = computed(() =>\n\tsourceControlStore.preferences.branches.map((branch) => ({\n\t\tvalue: branch,\n\t\tlabel: branch,\n\t})),\n);\n\nconst onConnect = async () => {\n\tloadingService.startLoading();\n\tloadingService.setLoadingText(locale.baseText('settings.sourceControl.loading.connecting'));\n\ttry {\n\t\tawait sourceControlStore.savePreferences({\n\t\t\trepositoryUrl: sourceControlStore.preferences.repositoryUrl,\n\t\t});\n\t\tawait sourceControlStore.getBranches();\n\t\tisConnected.value = true;\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.toast.connected.title'),\n\t\t\tmessage: locale.baseText('settings.sourceControl.toast.connected.message'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.connected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onDisconnect = async () => {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.disconnect.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.disconnect.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tloadingService.startLoading();\n\t\t\tawait sourceControlStore.disconnect(true);\n\t\t\tisConnected.value = false;\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.toast.disconnected.title'),\n\t\t\t\tmessage: locale.baseText('settings.sourceControl.toast.disconnected.message'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.disconnected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSave = async () => {\n\tloadingService.startLoading();\n\ttry {\n\t\tawait sourceControlStore.updatePreferences({\n\t\t\tbranchName: sourceControlStore.preferences.branchName,\n\t\t\tbranchReadOnly: sourceControlStore.preferences.branchReadOnly,\n\t\t\tbranchColor: sourceControlStore.preferences.branchColor,\n\t\t});\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.saved.title'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, 'Error setting branch');\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSelect = async (b: string) => {\n\tif (b === sourceControlStore.preferences.branchName) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.branchName = b;\n};\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('source-control', 'upgrade-source-control');\n};\n\nconst initialize = async () => {\n\tawait sourceControlStore.getPreferences();\n\tif (sourceControlStore.preferences.connected) {\n\t\tisConnected.value = true;\n\t\tvoid sourceControlStore.getBranches();\n\t}\n};\n\nonMounted(async () => {\n\tawait initialize();\n});\n\nconst formValidationStatus = reactive<Record<string, boolean>>({\n\trepoUrl: false,\n\tkeyGeneratorType: false,\n});\n\nfunction onValidate(key: string, value: boolean) {\n\tformValidationStatus[key] = value;\n}\n\nconst repoUrlValidationRules: Array<Rule | RuleGroup> = [\n\t{ name: 'REQUIRED' },\n\t{\n\t\tname: 'MATCH_REGEX',\n\t\tconfig: {\n\t\t\tregex:\n\t\t\t\t/^git@(?:\\[[0-9a-fA-F:]+\\]|(?:[a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\\/)?[a-zA-Z0-9_.\\-\\/]+(\\.git)?(?:\\/[a-zA-Z0-9_.\\-\\/]+)*$/,\n\t\t\tmessage: locale.baseText('settings.sourceControl.repoUrlInvalid'),\n\t\t},\n\t},\n];\n\nconst keyGeneratorTypeValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nconst validForConnection = computed(() => formValidationStatus.repoUrl);\nconst branchNameValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nasync function refreshSshKey() {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tawait sourceControlStore.generateKeyPair(sourceControlStore.preferences.keyGeneratorType);\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.refreshSshKey.successful.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshSshKey.error.title'));\n\t}\n}\n\nconst refreshBranches = async () => {\n\ttry {\n\t\tawait sourceControlStore.getBranches();\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.refreshBranches.success'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshBranches.error'));\n\t}\n};\n\nconst onSelectSshKeyType = async (sshKeyType: TupleToUnion<SshKeyTypes>) => {\n\tif (sshKeyType === sourceControlStore.preferences.keyGeneratorType) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.keyGeneratorType = sshKeyType;\n};\n</script>\n\n<template>\n\t<div>\n\t\t<n8n-heading size=\"2xlarge\" tag=\"h1\">{{\n\t\t\tlocale.baseText('settings.sourceControl.title')\n\t\t}}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"sourceControlStore.isEnterpriseSourceControlEnabled\"\n\t\t\tdata-test-id=\"source-control-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" icon=\"info-circle\" class=\"mt-2xl mb-l\">\n\t\t\t\t<i18n-t keypath=\"settings.sourceControl.description\" tag=\"span\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</n8n-callout>\n\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\tlocale.baseText('settings.sourceControl.gitConfig')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label for=\"repoUrl\">{{ locale.baseText('settings.sourceControl.repoUrl') }}</label>\n\t\t\t\t<div :class=\"$style.groupFlex\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\tclass=\"ml-0\"\n\t\t\t\t\t\tid=\"repoUrl\"\n\t\t\t\t\t\tname=\"repoUrl\"\n\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"repoUrlValidationRules\"\n\t\t\t\t\t\t:disabled=\"isConnected\"\n\t\t\t\t\t\t:placeholder=\"locale.baseText('settings.sourceControl.repoUrlPlaceholder')\"\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.repositoryUrl\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('repoUrl', value)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t:class=\"$style.disconnectButton\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\tv-if=\"isConnected\"\n\t\t\t\t\t\t@click=\"onDisconnect\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\tdata-test-id=\"source-control-disconnect-button\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.disconnect') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"sourceControlStore.preferences.publicKey\" :class=\"$style.group\">\n\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.sshKey') }}</label>\n\t\t\t\t<div :class=\"{ [$style.sshInput]: !isConnected }\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\t:class=\"$style.sshKeyTypeSelect\"\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\tid=\"keyGeneratorType\"\n\t\t\t\t\t\tname=\"keyGeneratorType\"\n\t\t\t\t\t\tdata-test-id=\"source-control-ssh-key-type-select\"\n\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"keyGeneratorTypeValidationRules\"\n\t\t\t\t\t\t:options=\"sourceControlStore.sshKeyTypesWithLabel\"\n\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.keyGeneratorType\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('keyGeneratorType', value)\"\n\t\t\t\t\t\t@update:modelValue=\"onSelectSshKeyType\"\n\t\t\t\t\t/>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:class=\"$style.copyInput\"\n\t\t\t\t\t\tcollapse\n\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t:value=\"sourceControlStore.preferences.publicKey\"\n\t\t\t\t\t\t:copy-button-text=\"locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\t@click=\"refreshSshKey\"\n\t\t\t\t\t\tdata-test-id=\"source-control-refresh-ssh-key-button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshSshKey') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</div>\n\t\t\t\t<n8n-notice type=\"info\" class=\"mt-s\">\n\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.sshKeyDescription\" tag=\"span\">\n\t\t\t\t\t\t<template #link>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t:href=\"locale.baseText('settings.sourceControl.docs.setup.ssh.url')\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.sshKeyDescriptionLink') }}</a\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-notice>\n\t\t\t</div>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t@click=\"onConnect\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t:disabled=\"!validForConnection\"\n\t\t\t\t:class=\"$style.connect\"\n\t\t\t\tdata-test-id=\"source-control-connect-button\"\n\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.connect') }}</n8n-button\n\t\t\t>\n\t\t\t<div v-if=\"isConnected\" data-test-id=\"source-control-connected-content\">\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<hr />\n\t\t\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\t\t\tlocale.baseText('settings.sourceControl.instanceSettings')\n\t\t\t\t\t}}</n8n-heading>\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.branches') }}</label>\n\t\t\t\t\t<div :class=\"$style.branchSelection\">\n\t\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t\tid=\"branchName\"\n\t\t\t\t\t\t\tname=\"branchName\"\n\t\t\t\t\t\t\tclass=\"mb-s\"\n\t\t\t\t\t\t\tdata-test-id=\"source-control-branch-select\"\n\t\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t\t:validationRules=\"branchNameValidationRules\"\n\t\t\t\t\t\t\t:options=\"branchNameOptions\"\n\t\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\t\t@validate=\"(value) => onValidate('branchName', value)\"\n\t\t\t\t\t\t\t@update:modelValue=\"onSelect\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<n8n-tooltip placement=\"top\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshBranches.tooltip') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\t\t:class=\"$style.refreshBranches\"\n\t\t\t\t\t\t\t\t@click=\"refreshBranches\"\n\t\t\t\t\t\t\t\tdata-test-id=\"source-control-refresh-branches-button\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</div>\n\t\t\t\t\t<n8n-checkbox\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.branchReadOnly\"\n\t\t\t\t\t\t:class=\"$style.readOnly\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.protected\" tag=\"span\">\n\t\t\t\t\t\t\t<template #bold>\n\t\t\t\t\t\t\t\t<strong>{{ locale.baseText('settings.sourceControl.protected.bold') }}</strong>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</i18n-t>\n\t\t\t\t\t</n8n-checkbox>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.color') }}</label>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<n8n-color-picker size=\"small\" v-model=\"sourceControlStore.preferences.branchColor\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"[$style.group, 'pt-s']\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t@click=\"onSave\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t:disabled=\"!sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\tdata-test-id=\"source-control-save-settings-button\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.save') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tdata-test-id=\"source-control-content-unlicensed\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:description=\"locale.baseText('settings.sourceControl.actionBox.description')\"\n\t\t\t:buttonText=\"locale.baseText('settings.sourceControl.actionBox.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ locale.baseText('settings.sourceControl.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description') }}\n\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description.link') }}\n\t\t\t\t</a>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.group {\n\tpadding: 0 0 var(--spacing-s);\n\twidth: 100%;\n\tdisplay: block;\n\n\thr {\n\t\tmargin: 0 0 var(--spacing-xl);\n\t\tborder: 1px solid var(--color-foreground-light);\n\t}\n\n\tlabel {\n\t\tdisplay: inline-block;\n\t\tpadding: 0 0 var(--spacing-2xs);\n\t\tfont-size: var(--font-size-s);\n\t}\n\n\tsmall {\n\t\tdisplay: inline-block;\n\t\tpadding: var(--spacing-2xs) 0 0;\n\t\tfont-size: var(--font-size-2xs);\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.readOnly {\n\tspan {\n\t\tfont-size: var(--font-size-s) !important;\n\t}\n}\n\n.groupFlex {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\t> div {\n\t\tflex: 1;\n\n\t\t&:last-child {\n\t\t\tmargin-left: var(--spacing-2xs);\n\t\t}\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n\n.connect {\n\tmargin: calc(var(--spacing-2xs) * -1) 0 var(--spacing-2xs);\n}\n\n.disconnectButton {\n\tmargin: 0 0 0 var(--spacing-2xs);\n\theight: 40px;\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.sshInput {\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\n\t> div {\n\t\tflex: 1 1 auto;\n\t}\n\n\t> button {\n\t\theight: 42px;\n\t}\n\n\t.copyInput {\n\t\tmargin: 0 var(--spacing-2xs);\n\t}\n}\n\n.sshKeyTypeSelect {\n\tmin-width: 120px;\n}\n\n.copyInput {\n\toverflow: auto;\n}\n\n.branchSelection {\n\tdisplay: flex;\n\n\t> div:first-child {\n\t\tflex: 1;\n\n\t\tinput {\n\t\t\theight: 36px;\n\t\t}\n\t}\n\n\tbutton.refreshBranches {\n\t\theight: 36px;\n\t\twidth: 36px;\n\t\tmargin-left: var(--spacing-xs);\n\t}\n}\n</style>\n"],"names":["locale","useI18n","sourceControlStore","useSourceControlStore","uiStore","useUIStore","toast","useToast","message","useMessage","loadingService","useLoadingService","isConnected","ref","branchNameOptions","computed","branch","onConnect","error","onDisconnect","MODAL_CONFIRM","onSave","onSelect","b","goToUpgrade","initialize","onMounted","formValidationStatus","reactive","onValidate","key","value","repoUrlValidationRules","keyGeneratorTypeValidationRules","validForConnection","branchNameValidationRules","refreshSshKey","refreshBranches","onSelectSshKeyType","sshKeyType"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as Z,c as f,r as v,z as F,g as d,o as T,i as V,h as u,w as c,j as a,p as s,b as k,q as G,n as p,t as o,Y as z,Z as B,s as x}from"./vendor-f46c350a.js";import{dH as J,n as K,u as Q,an as W,R as tt,_ as et}from"./n8n-6b07beca.js";import{f as M}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsSso-
|
|
1
|
+
import{d as Z,c as f,r as v,z as F,g as d,o as T,i as V,h as u,w as c,j as a,p as s,b as k,q as G,n as p,t as o,Y as z,Z as B,s as x}from"./vendor-f46c350a.js";import{dH as J,n as K,u as Q,an as W,R as tt,_ as et}from"./n8n-6b07beca.js";import{f as M}from"./index-ac03fd2d.js";import"./@fortawesome/vue-fontawesome-237f4675.js";import"./lodash-es-bad8e3ee.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./pinia-af9c3f71.js";import"./flatted-8b14da7d.js";import"./@vueuse/core-9fb50532.js";import"./uuid-cf522c50.js";import"./vue-i18n-cb04cc7a.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-8d347a89.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-5b4468a6.js";import"./@jsplumb/browser-ui-715581dc.js";import"./prettier-51497383.js";import"./codemirror-lang-html-n8n-2834c921.js";import"./@n8n/codemirror-lang-sql-c830a767.js";import"./@lezer/common-4a878264.js";import"./codemirror-lang-n8n-expression-53c11692.js";import"./fast-json-stable-stringify-2d2dc6c9.js";import"./timeago.js-a9e71aec.js";import"./qrcode.vue-065a6dad.js";import"./vue3-touch-events-ee55ce04.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./@fortawesome/free-solid-svg-icons-49fe6185.js";import"./@fortawesome/free-regular-svg-icons-74cb85f8.js";import"./chart.js-58383f81.js";const st={class:"pb-3xl"},at={href:"https://docs.n8n.io/user-management/saml/",target:"_blank"},ot={key:0,"data-test-id":"sso-content-licensed"},nt={class:"mt-2xs mb-s"},lt=Z({__name:"SettingsSso",setup(bt){const l={URL:"url",XML:"xml"},e=W(),n=J(),I=K(),R=tt(),y=Q(),$=f(()=>n.isSamlLoginEnabled?e.baseText("settings.sso.activated"):e.baseText("settings.sso.deactivated")),_=v(!1),S=v(),w=v(),X=v([{label:e.baseText("settings.sso.settings.ips.options.url"),value:l.URL},{label:e.baseText("settings.sso.settings.ips.options.xml"),value:l.XML}]),r=v(l.URL),m=v(),b=v(),N=f(()=>{var t,i;return r.value===l.URL?!!m.value&&m.value!==((t=n.samlConfig)==null?void 0:t.metadataUrl):r.value===l.XML?!!b.value&&b.value!==((i=n.samlConfig)==null?void 0:i.metadata):!1}),D=f(()=>r.value===l.URL?!!m.value&&_.value:r.value===l.XML?!!b.value&&_.value:!1),U=async()=>{const t=await n.getSamlConfig();w.value=t==null?void 0:t.entityID,S.value=t==null?void 0:t.returnUrl,t!=null&&t.metadataUrl?r.value=l.URL:t!=null&&t.metadata&&(r.value=l.XML),b.value=t==null?void 0:t.metadata,m.value=t==null?void 0:t.metadataUrl,_.value=!!(t!=null&&t.metadata)},O=async()=>{try{const t=r.value===l.URL?{metadataUrl:m.value}:{metadata:b.value};await n.saveSamlConfig(t),n.isSamlLoginEnabled||await R.confirm(e.baseText("settings.sso.settings.save.activate.message"),e.baseText("settings.sso.settings.save.activate.title"),{confirmButtonText:e.baseText("settings.sso.settings.save.activate.test"),cancelButtonText:e.baseText("settings.sso.settings.save.activate.cancel")})==="confirm"&&await h()}catch(t){y.showError(t,e.baseText("settings.sso.settings.save.error"));return}finally{await U()}},h=async()=>{try{const t=await n.testSamlConfig();typeof window<"u"&&window.open(t,"_blank")}catch(t){y.showError(t,"error")}},j=()=>{I.goToUpgrade("sso","upgrade-sso")};return F(async()=>{if(n.isEnterpriseSamlEnabled)try{await U()}catch(t){y.showError(t,"error")}}),(t,i)=>{const L=d("n8n-heading"),q=d("el-switch"),A=d("n8n-tooltip"),H=d("n8n-info-tip"),P=d("n8n-radio-buttons"),C=d("n8n-input"),E=d("n8n-button"),Y=d("n8n-action-box");return T(),V("div",st,[u(L,{size:"2xlarge"},{default:c(()=>[x(o(s(e).baseText("settings.sso.title")),1)]),_:1}),a("div",{class:p(t.$style.top)},[u(L,{size:"xlarge"},{default:c(()=>[x(o(s(e).baseText("settings.sso.subtitle")),1)]),_:1}),s(n).isEnterpriseSamlEnabled?(T(),k(A,{key:0,disabled:s(n).isSamlLoginEnabled||_.value},{content:c(()=>[a("span",null,o(s(e).baseText("settings.sso.activation.tooltip")),1)]),default:c(()=>[u(q,{modelValue:s(n).isSamlLoginEnabled,"onUpdate:modelValue":i[0]||(i[0]=g=>s(n).isSamlLoginEnabled=g),disabled:!_.value,class:p(t.$style.switch),"inactive-text":$.value},null,8,["modelValue","disabled","class","inactive-text"])]),_:1},8,["disabled"])):G("",!0)],2),u(H,null,{default:c(()=>[x(o(s(e).baseText("settings.sso.info"))+" ",1),a("a",at,o(s(e).baseText("settings.sso.info.link")),1)]),_:1}),s(n).isEnterpriseSamlEnabled?(T(),V("div",ot,[a("div",{class:p(t.$style.group)},[a("label",null,o(s(e).baseText("settings.sso.settings.redirectUrl.label")),1),u(M,{value:S.value,"copy-button-text":s(e).baseText("generic.clickToCopy"),"toast-title":s(e).baseText("settings.sso.settings.redirectUrl.copied")},null,8,["value","copy-button-text","toast-title"]),a("small",null,o(s(e).baseText("settings.sso.settings.redirectUrl.help")),1)],2),a("div",{class:p(t.$style.group)},[a("label",null,o(s(e).baseText("settings.sso.settings.entityId.label")),1),u(M,{value:w.value,"copy-button-text":s(e).baseText("generic.clickToCopy"),"toast-title":s(e).baseText("settings.sso.settings.entityId.copied")},null,8,["value","copy-button-text","toast-title"]),a("small",null,o(s(e).baseText("settings.sso.settings.entityId.help")),1)],2),a("div",{class:p(t.$style.group)},[a("label",null,o(s(e).baseText("settings.sso.settings.ips.label")),1),a("div",nt,[u(P,{options:X.value,modelValue:r.value,"onUpdate:modelValue":i[1]||(i[1]=g=>r.value=g)},null,8,["options","modelValue"])]),z(a("div",null,[u(C,{modelValue:m.value,"onUpdate:modelValue":i[2]||(i[2]=g=>m.value=g),type:"text",name:"metadataUrl",size:"large",placeholder:s(e).baseText("settings.sso.settings.ips.url.placeholder")},null,8,["modelValue","placeholder"]),a("small",null,o(s(e).baseText("settings.sso.settings.ips.url.help")),1)],512),[[B,r.value===l.URL]]),z(a("div",null,[u(C,{modelValue:b.value,"onUpdate:modelValue":i[3]||(i[3]=g=>b.value=g),type:"textarea",name:"metadata",rows:4},null,8,["modelValue"]),a("small",null,o(s(e).baseText("settings.sso.settings.ips.xml.help")),1)],512),[[B,r.value===l.XML]])],2),a("div",{class:p(t.$style.buttons)},[u(E,{disabled:!N.value,onClick:O,size:"large","data-test-id":"sso-save"},{default:c(()=>[x(o(s(e).baseText("settings.sso.settings.save")),1)]),_:1},8,["disabled"]),u(E,{disabled:!D.value,size:"large",type:"tertiary",onClick:h,"data-test-id":"sso-test"},{default:c(()=>[x(o(s(e).baseText("settings.sso.settings.test")),1)]),_:1},8,["disabled"])],2),a("footer",{class:p(t.$style.footer)},o(s(e).baseText("settings.sso.settings.footer.hint")),3)])):(T(),k(Y,{key:1,"data-test-id":"sso-content-unlicensed",class:p(t.$style.actionBox),description:s(e).baseText("settings.sso.actionBox.description"),buttonText:s(e).baseText("settings.sso.actionBox.buttonText"),"onClick:button":j},{heading:c(()=>[a("span",null,o(s(e).baseText("settings.sso.actionBox.title")),1)]),_:1},8,["class","description","buttonText"]))])}}}),it="_top_1891z_5",rt="_buttons_1891z_18",ut="_group_1891z_27",dt="_actionBox_1891z_43",ct="_footer_1891z_47",pt={top:it,switch:"_switch_1891z_12",buttons:rt,group:ut,actionBox:dt,footer:ct},mt={$style:pt},Pt=et(lt,[["__cssModules",mt]]);export{Pt as default};
|
|
2
|
+
//# sourceMappingURL=SettingsSso-b6867d69.js.map
|