UNPKG

ember-app-scheduler

Version:

Ember addon to schedule work at different phases of app life cycle.

69 lines (65 loc) 10.7 kB
'use strict'; var _opcodes = require('../../opcodes'); var _references = require('../../references'); var _concat = require('../expressions/concat'); _opcodes.APPEND_OPCODES.add(1 /* Helper */, (vm, { op1: _helper }) => { let stack = vm.stack; let helper = vm.constants.getFunction(_helper); let args = stack.pop(); let value = helper(vm, args); args.clear(); vm.stack.push(value); }); _opcodes.APPEND_OPCODES.add(2 /* Function */, (vm, { op1: _function }) => { let func = vm.constants.getFunction(_function); vm.stack.push(func(vm)); }); _opcodes.APPEND_OPCODES.add(5 /* GetVariable */, (vm, { op1: symbol }) => { let expr = vm.referenceForSymbol(symbol); vm.stack.push(expr); }); _opcodes.APPEND_OPCODES.add(4 /* SetVariable */, (vm, { op1: symbol }) => { let expr = vm.stack.pop(); vm.scope().bindSymbol(symbol, expr); }); _opcodes.APPEND_OPCODES.add(70 /* ResolveMaybeLocal */, (vm, { op1: _name }) => { let name = vm.constants.getString(_name); let locals = vm.scope().getPartialMap(); let ref = locals[name]; if (ref === undefined) { ref = vm.getSelf().get(name); } vm.stack.push(ref); }); _opcodes.APPEND_OPCODES.add(19 /* RootScope */, (vm, { op1: symbols, op2: bindCallerScope }) => { vm.pushRootScope(symbols, !!bindCallerScope); }); _opcodes.APPEND_OPCODES.add(6 /* GetProperty */, (vm, { op1: _key }) => { let key = vm.constants.getString(_key); let expr = vm.stack.pop(); vm.stack.push(expr.get(key)); }); _opcodes.APPEND_OPCODES.add(7 /* PushBlock */, (vm, { op1: _block }) => { let block = _block ? vm.constants.getBlock(_block) : null; vm.stack.push(block); }); _opcodes.APPEND_OPCODES.add(8 /* GetBlock */, (vm, { op1: _block }) => { vm.stack.push(vm.scope().getBlock(_block)); }); _opcodes.APPEND_OPCODES.add(9 /* HasBlock */, (vm, { op1: _block }) => { let hasBlock = !!vm.scope().getBlock(_block); vm.stack.push(hasBlock ? _references.TRUE_REFERENCE : _references.FALSE_REFERENCE); }); _opcodes.APPEND_OPCODES.add(10 /* HasBlockParams */, (vm, { op1: _block }) => { let block = vm.scope().getBlock(_block); let hasBlockParams = block && block.symbolTable.parameters.length; vm.stack.push(hasBlockParams ? _references.TRUE_REFERENCE : _references.FALSE_REFERENCE); }); _opcodes.APPEND_OPCODES.add(11 /* Concat */, (vm, { op1: count }) => { let out = []; for (let i = count; i > 0; i--) { out.push(vm.stack.pop()); } vm.stack.push(new _concat.ConcatReference(out.reverse())); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwib3AxIiwiX2hlbHBlciIsInN0YWNrIiwiaGVscGVyIiwiY29uc3RhbnRzIiwiZ2V0RnVuY3Rpb24iLCJhcmdzIiwicG9wIiwidmFsdWUiLCJjbGVhciIsInB1c2giLCJfZnVuY3Rpb24iLCJmdW5jIiwic3ltYm9sIiwiZXhwciIsInJlZmVyZW5jZUZvclN5bWJvbCIsInNjb3BlIiwiYmluZFN5bWJvbCIsIl9uYW1lIiwibmFtZSIsImdldFN0cmluZyIsImxvY2FscyIsImdldFBhcnRpYWxNYXAiLCJyZWYiLCJ1bmRlZmluZWQiLCJnZXRTZWxmIiwiZ2V0Iiwic3ltYm9scyIsIm9wMiIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hSb290U2NvcGUiLCJfa2V5Iiwia2V5IiwiX2Jsb2NrIiwiYmxvY2siLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJzeW1ib2xUYWJsZSIsInBhcmFtZXRlcnMiLCJsZW5ndGgiLCJjb3VudCIsIm91dCIsImkiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBLHdCQUFlQSxHQUFmLENBQW1CLENBQW5CLENBQXFCLFlBQXJCLEVBQW1DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxPQUFQLEVBQUwsS0FBMEI7QUFDekQsUUFBSUMsUUFBUUgsR0FBR0csS0FBZjtBQUNBLFFBQUlDLFNBQVNKLEdBQUdLLFNBQUgsQ0FBYUMsV0FBYixDQUF5QkosT0FBekIsQ0FBYjtBQUNBLFFBQUlLLE9BQU9KLE1BQU1LLEdBQU4sRUFBWDtBQUNBLFFBQUlDLFFBQVFMLE9BQU9KLEVBQVAsRUFBV08sSUFBWCxDQUFaO0FBQ0FBLFNBQUtHLEtBQUw7QUFDQVYsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNGLEtBQWQ7QUFDSCxDQVBEO0FBUUEsd0JBQWVWLEdBQWYsQ0FBbUIs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O0FBR0Esd0JBQWVuQyxHQUFmLENBQW1CLENBQW5CLENBQXFCLGNBQXJCLEVBQXFDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLaUMsTUFBUCxFQUFMLEtBQXlCO0FBQzFELFFBQUlHLFdBQVcsQ0FBQyxDQUFDckMsR0FBR2lCLEtBQUgsR0FBV21CLFFBQVgsQ0FBb0JGLE1BQXBCLENBQWpCO0FBQ0FsQyxPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYzBCLG1FQUFkO0FBQ0gsQ0FIRDtBQUlBLHdCQUFldEMsR0FBZixDQUFtQixFQUFuQixDQUFzQixvQkFBdEIsRUFBNEMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDakUsUUFBSUMsUUFBUW5DLEdBQUdpQixLQUFILEdBQVdtQixRQUFYLENBQW9CRixNQUFwQixDQUFaO0FBQ0EsUUFBSUksaUJBQWlCSCxTQUFTQSxNQUFNSSxXQUFOLENBQWtCQyxVQUFsQixDQUE2QkMsTUFBM0Q7QUFDQXpDLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjMkIseUVBQWQ7QUFDSCxDQUpEO0FBS0Esd0JBQWV2QyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLFlBQXRCLEVBQW9DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUMsS0FBUCxFQUFMLEtBQXdCO0FBQ3hELFFBQUlDLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSUYsS0FBYixFQUFvQkUsSUFBSSxDQUF4QixFQUEyQkEsR0FBM0IsRUFBZ0M7QUFDNUJELFlBQUloQyxJQUFKLENBQVNYLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFUO0FBQ0g7QUFDRFIsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWMsNEJBQW9CZ0MsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=