UNPKG

@solidgrounds/core

Version:
73 lines 2.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GlobalInvokeStack = void 0; const tslib_1 = require("tslib"); const Value_1 = require("./Value"); const invokeWindowStack = []; const addCompilerPass = (compilerPass) => { return getCurrentInvokeWindow().serviceContainer.addCompilerPass(compilerPass); }; const currentInvokeWindow = () => { var _a; return (_a = invokeWindowStack[invokeWindowStack.length - 1]) !== null && _a !== void 0 ? _a : null; }; const getCurrentInvokeWindow = () => { const window = invokeWindowStack[invokeWindowStack.length - 1]; if (!window) { throw new Error('Can only be called withing GlobalInvokeStack'); } return window; }; const getRootInvokeWindow = () => { const window = invokeWindowStack[0]; if (!window) { throw new Error('Can only be called withing GlobalInvokeStack'); } return window.serviceContainer.root; }; function asyncInvokeWindow(window, callback) { return tslib_1.__awaiter(this, void 0, void 0, function* () { invokeWindowStack.push(window); try { yield callback.call(this, window); } finally { invokeWindowStack.splice(invokeWindowStack.indexOf(window), 1); } }); } function invokeWindow(window, callback) { invokeWindowStack.push(window); try { return callback.call(this); } finally { invokeWindowStack.splice(invokeWindowStack.indexOf(window), 1); } } const printInvokeStack = () => { return invokeWindowStack .reverse() .map((window, index) => { const serviceContainerName = `[${index + 1}]:SC<${window.serviceContainer.name}>`; if (!Value_1.isFeatureFactoryInvokeWindow(window)) { return serviceContainerName; } const featureFactoryName = `FF<${window.featureFactory.featureFactoryFunction.name}>`; if (!Value_1.isServiceFactoryInvokeWindow(window)) { return `${serviceContainerName}.${featureFactoryName}`; } return `${serviceContainerName}.${featureFactoryName}.SF<${window.serviceFactory.serviceFactoryFunction.name}>`; }) .join('\n'); }; exports.GlobalInvokeStack = { run: invokeWindow, runAsync: asyncInvokeWindow, printStack: printInvokeStack, getCurrent: getCurrentInvokeWindow, getRoot: getRootInvokeWindow, current: currentInvokeWindow, addCompilerPass, }; //# sourceMappingURL=GlobalInvokeStack.js.map