UNPKG

@zedux/atoms

Version:

A Molecular State Engine for React

29 lines (28 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createInjector = void 0; const EvaluationStack_1 = require("../classes/EvaluationStack"); const createInjector = (operation, first, next) => { let type; const injector = (...args) => { const instance = (0, EvaluationStack_1.readInstance)(); const { _injectors, _nextInjectors, status, template } = instance; if (status === 'Initializing') { const descriptor = first(instance, ...args); type = descriptor.type; _nextInjectors === null || _nextInjectors === void 0 ? void 0 : _nextInjectors.push(descriptor); return descriptor.result; } const prevDescriptor = _injectors === null || _injectors === void 0 ? void 0 : _injectors[_nextInjectors === null || _nextInjectors === void 0 ? void 0 : _nextInjectors.length]; if (true /* DEV */ && (!prevDescriptor || prevDescriptor.type !== type)) { throw new Error(`Zedux: ${operation} in atom "${template.key}" - injectors cannot be added, removed, or reordered`); } const descriptor = next ? next(prevDescriptor, instance, ...args) : prevDescriptor; _nextInjectors === null || _nextInjectors === void 0 ? void 0 : _nextInjectors.push(descriptor); return descriptor.result; }; return injector; }; exports.createInjector = createInjector;