n8n-editor-ui
Version:
Workflow Editor UI for n8n
7 lines • 7.01 kB
JavaScript
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
const e=Symbol(`Comlink.proxy`),t=Symbol(`Comlink.endpoint`),n=Symbol(`Comlink.releaseProxy`),r=Symbol(`Comlink.finalizer`),i=Symbol(`Comlink.thrown`),a=e=>typeof e==`object`&&!!e||typeof e==`function`,o=new Map([[`proxy`,{canHandle:t=>a(t)&&t[e],serialize(e){let{port1:t,port2:n}=new MessageChannel;return c(e,t),[n,[n]]},deserialize(e){return e.start(),d(e)}}],[`throw`,{canHandle:e=>a(e)&&i in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(Error(e.value.message),e.value):e.value}}]]);function s(e,t){for(let n of e)if(t===n||n===`*`||n instanceof RegExp&&n.test(t))return!0;return!1}function c(e,t=globalThis,n=[`*`]){t.addEventListener(`message`,function a(o){if(!o||!o.data)return;if(!s(n,o.origin)){console.warn(`Invalid origin '${o.origin}' for comlink proxy`);return}let{id:l,type:d,path:f}=Object.assign({path:[]},o.data),p=(o.data.argumentList||[]).map(T),m;try{let t=f.slice(0,-1).reduce((e,t)=>e[t],e),n=f.reduce((e,t)=>e[t],e);switch(d){case`GET`:m=n;break;case`SET`:t[f.slice(-1)[0]]=T(o.data.value),m=!0;break;case`APPLY`:m=n.apply(t,p);break;case`CONSTRUCT`:m=C(new n(...p));break;case`ENDPOINT`:{let{port1:t,port2:n}=new MessageChannel;c(e,n),m=S(t,[t])}break;case`RELEASE`:m=void 0;break;default:return}}catch(e){m={value:e,[i]:0}}Promise.resolve(m).catch(e=>({value:e,[i]:0})).then(n=>{let[i,o]=w(n);t.postMessage(Object.assign(Object.assign({},i),{id:l}),o),d===`RELEASE`&&(t.removeEventListener(`message`,a),u(t),r in e&&typeof e[r]==`function`&&e[r]())}).catch(e=>{let[n,r]=w({value:TypeError(`Unserializable return value`),[i]:0});t.postMessage(Object.assign(Object.assign({},n),{id:l}),r)})}),t.start&&t.start()}function l(e){return e.constructor.name===`MessagePort`}function u(e){l(e)&&e.close()}function d(e,t){return v(e,[],t)}function f(e){if(e)throw Error(`Proxy has been released and is not useable`)}function p(e){return E(e,{type:`RELEASE`}).then(()=>{u(e)})}const m=new WeakMap,h=`FinalizationRegistry`in globalThis&&new FinalizationRegistry(e=>{let t=(m.get(e)||0)-1;m.set(e,t),t===0&&p(e)});function g(e,t){let n=(m.get(t)||0)+1;m.set(t,n),h&&h.register(e,t,e)}function _(e){h&&h.unregister(e)}function v(e,r=[],i=function(){}){let a=!1,o=new Proxy(i,{get(t,i){if(f(a),i===n)return()=>{_(o),p(e),a=!0};if(i===`then`){if(r.length===0)return{then:()=>o};let t=E(e,{type:`GET`,path:r.map(e=>e.toString())}).then(T);return t.then.bind(t)}return v(e,[...r,i])},set(t,n,i){f(a);let[o,s]=w(i);return E(e,{type:`SET`,path:[...r,n].map(e=>e.toString()),value:o},s).then(T)},apply(n,i,o){f(a);let s=r[r.length-1];if(s===t)return E(e,{type:`ENDPOINT`}).then(T);if(s===`bind`)return v(e,r.slice(0,-1));let[c,l]=b(o);return E(e,{type:`APPLY`,path:r.map(e=>e.toString()),argumentList:c},l).then(T)},construct(t,n){f(a);let[i,o]=b(n);return E(e,{type:`CONSTRUCT`,path:r.map(e=>e.toString()),argumentList:i},o).then(T)}});return g(o,e),o}function y(e){return Array.prototype.concat.apply([],e)}function b(e){let t=e.map(w);return[t.map(e=>e[0]),y(t.map(e=>e[1]))]}const x=new WeakMap;function S(e,t){return x.set(e,t),e}function C(t){return Object.assign(t,{[e]:!0})}function w(e){for(let[t,n]of o)if(n.canHandle(e)){let[r,i]=n.serialize(e);return[{type:`HANDLER`,name:t,value:r},i]}return[{type:`RAW`,value:e},x.get(e)||[]]}function T(e){switch(e.type){case`HANDLER`:return o.get(e.name).deserialize(e.value);case`RAW`:return e.value}}function E(e,t,n){return new Promise(r=>{let i=D();e.addEventListener(`message`,function t(n){!n.data||!n.data.id||n.data.id!==i||(e.removeEventListener(`message`,t),r(n.data))}),e.start&&e.start(),e.postMessage(Object.assign({id:i},t),n)})}function D(){return[,,,,].fill(0).map(()=>Math.floor(Math.random()*(2**53-1)).toString(16)).join(`-`)}function O(){return`tab-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}function k(e){return e.activeTabId?e.tabs.get(e.activeTabId)?.dataWorker??null:null}function A(e){let t=k(e);if(!t)throw Error(`[Coordinator] No active data worker available`);return t}async function j(e){for(let[t,n]of e.tabs)if(n.dataWorker){console.log(`[Coordinator] Selecting new active tab:`,t),e.activeTabId=t,n.isActive=!0;try{if(!e.version)throw Error(`[Coordinator] Cannot initialize without version`);await n.dataWorker.initialize({version:e.version}),e.initialized=!0,console.log(`[Coordinator] New active tab ${t} initialized`)}catch(t){console.error(`[Coordinator] Failed to initialize new active tab:`,t),n.isActive=!1,e.activeTabId=null;continue}return}console.log(`[Coordinator] No tabs available to become active`),e.activeTabId=null,e.initialized=!1}function M(e,t){console.log(`[Coordinator] Tab disconnected: ${t}`),e.tabs.get(t)&&(e.tabs.delete(t),e.activeTabId===t&&(e.activeTabId=null,e.initialized=!1,j(e).catch(console.error)))}function N(e,t){let n=O();console.log(`[Coordinator] Registering tab: ${n}`);let r={id:n,port:t,dataWorker:d(t),isActive:!1};return e.tabs.set(n,r),e.activeTabId||(console.log(`[Coordinator] Making tab ${n} the active tab`),e.activeTabId=n,r.isActive=!0),n}function P(e,t){M(e,t)}async function F(e){if(!e.initialized){if(!e.version)throw Error(`[Coordinator] Cannot auto-initialize without version. Call initialize({ version }) first.`);await I(e,{version:e.version})}}async function I(e,{version:t}){if(console.log(`[Coordinator] Initialize requested`),e.version=t,e.initialized){console.log(`[Coordinator] Already initialized`);return}await A(e).initialize({version:t}),e.initialized=!0,console.log(`[Coordinator] Initialization complete`)}function L(e){return async(t,...n)=>(await F(t),await e(A(t),...n))}const R=L(async(e,t)=>await e.exec(t)),z=L(async(e,t)=>await e.query(t)),B=L(async(e,t,n=[])=>await e.queryWithParams(t,n));function V(e){return e.initialized}function H(e){return e.activeTabId}function U(e){return e.tabs.size}const W=L(async(e,t)=>(console.log(`[Coordinator] loadNodeTypes`),await e.loadNodeTypes(t))),G=L(async(e,t)=>(console.log(`[Coordinator] storeVersion:`,t),await e.storeVersion(t))),K=L(async e=>(console.log(`[Coordinator] getStoredVersion`),await e.getStoredVersion())),q={tabs:new Map,activeTabId:null,initialized:!1,version:null},J={async registerTab(e){return N(q,e)},async unregisterTab(e){P(q,e)},async initialize({version:e}){await I(q,{version:e})},async exec(e){await R(q,e)},async query(e){return await z(q,e)},async queryWithParams(e,t=[]){return await B(q,e,t)},isInitialized(){return V(q)},getActiveTabId(){return H(q)},getTabCount(){return U(q)},async loadNodeTypes(e){await W(q,e)},async storeVersion(e){await G(q,e)},async getStoredVersion(){return await K(q)}},Y=new Set;self.onconnect=e=>{let t=e.ports[0];Y.add(t);let n=null,r={...J,async registerTab(e){return n=await J.registerTab(e),n}};t.onmessageerror=()=>{Y.delete(t),n&&M(q,n)},c(r,t)};
//# sourceMappingURL=worker-BbnDp7F0.js.map