UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

98 lines (80 loc) 9.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isCurriedValue = isCurriedValue; exports.isCurriedType = isCurriedType; exports.resolveCurriedValue = resolveCurriedValue; exports.curry = curry; exports.CurriedValue = void 0; var _util = require("@glimmer/util"); const TYPE = (0, _util.symbol)('TYPE'); const INNER = (0, _util.symbol)('INNER'); const OWNER = (0, _util.symbol)('OWNER'); const ARGS = (0, _util.symbol)('ARGS'); const RESOLVED = (0, _util.symbol)('RESOLVED'); const CURRIED_VALUES = new _util._WeakSet(); function isCurriedValue(value) { return CURRIED_VALUES.has(value); } function isCurriedType(value, type) { return isCurriedValue(value) && value[TYPE] === type; } class CurriedValue { /** @internal */ constructor(type, inner, owner, args, resolved = false) { CURRIED_VALUES.add(this); this[TYPE] = type; this[INNER] = inner; this[OWNER] = owner; this[ARGS] = args; this[RESOLVED] = resolved; } } exports.CurriedValue = CurriedValue; function resolveCurriedValue(curriedValue) { let currentWrapper = curriedValue; let positional; let named; let definition, owner, resolved; while (true) { let { [ARGS]: curriedArgs, [INNER]: inner } = currentWrapper; if (curriedArgs !== null) { let { named: curriedNamed, positional: curriedPositional } = curriedArgs; if (curriedPositional.length > 0) { positional = positional === undefined ? curriedPositional : curriedPositional.concat(positional); } if (named === undefined) { named = []; } named.unshift(curriedNamed); } if (!isCurriedValue(inner)) { // Save off the owner that this helper was curried with. Later on, // we'll fetch the value of this register and set it as the owner on the // new root scope. definition = inner; owner = currentWrapper[OWNER]; resolved = currentWrapper[RESOLVED]; break; } currentWrapper = inner; } return { definition, owner, resolved, positional, named }; } function curry(type, spec, owner, args, resolved = false) { return new CurriedValue(type, spec, owner, args, resolved); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2N1cnJpZWQtdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFHQSxNQUFNLElBQUksR0FBa0Isa0JBQTVCLE1BQTRCLENBQTVCO0FBQ0EsTUFBTSxLQUFLLEdBQWtCLGtCQUE3QixPQUE2QixDQUE3QjtBQUNBLE1BQU0sS0FBSyxHQUFrQixrQkFBN0IsT0FBNkIsQ0FBN0I7QUFDQSxNQUFNLElBQUksR0FBa0Isa0JBQTVCLE1BQTRCLENBQTVCO0FBQ0EsTUFBTSxRQUFRLEdBQWtCLGtCQUFoQyxVQUFnQyxDQUFoQztBQUVBLE1BQU0sY0FBYyxHQUFHLElBQXZCLGNBQXVCLEVBQXZCOztBQUVNLFNBQUEsY0FBQSxDQUFBLEtBQUEsRUFBdUM7QUFDM0MsU0FBTyxjQUFjLENBQWQsR0FBQSxDQUFQLEtBQU8sQ0FBUDtBQUNEOztBQUVLLFNBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQSxJQUFBLEVBRUc7QUFFUCxTQUFPLGNBQWMsQ0FBZCxLQUFjLENBQWQsSUFBeUIsS0FBSyxDQUFMLElBQUssQ0FBTCxLQUFoQyxJQUFBO0FBQ0Q7O0FBRUssTUFBQSxZQUFBLENBQW1CO0FBT3ZCO0FBQ0EsRUFBQSxXQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUEsSUFBQSxFQUtFLFFBQVEsR0FMVixLQUFBLEVBS2tCO0FBRWhCLElBQUEsY0FBYyxDQUFkLEdBQUEsQ0FBQSxJQUFBO0FBQ0EsU0FBQSxJQUFBLElBQUEsSUFBQTtBQUNBLFNBQUEsS0FBQSxJQUFBLEtBQUE7QUFDQSxTQUFBLEtBQUEsSUFBQSxLQUFBO0FBQ0EsU0FBQSxJQUFBLElBQUEsSUFBQTtBQUNBLFNBQUEsUUFBQSxJQUFBLFFBQUE7QUFDRDs7QUFyQnNCOzs7O0FBc0NuQixTQUFBLG1CQUFBLENBQUEsWUFBQSxFQUNtQztBQUV2QyxNQUFJLGNBQWMsR0FBbEIsWUFBQTtBQUNBLE1BQUEsVUFBQTtBQUNBLE1BQUEsS0FBQTtBQUNBLE1BQUEsVUFBQSxFQUFBLEtBQUEsRUFBQSxRQUFBOztBQUVBLFNBQUEsSUFBQSxFQUFhO0FBQ1gsUUFBSTtBQUFFLE9BQUEsSUFBQSxHQUFGLFdBQUE7QUFBdUIsT0FBQSxLQUFBLEdBQVM7QUFBaEMsUUFBSixjQUFBOztBQUVBLFFBQUksV0FBVyxLQUFmLElBQUEsRUFBMEI7QUFDeEIsVUFBSTtBQUFFLFFBQUEsS0FBSyxFQUFQLFlBQUE7QUFBdUIsUUFBQSxVQUFVLEVBQUU7QUFBbkMsVUFBSixXQUFBOztBQUVBLFVBQUksaUJBQWlCLENBQWpCLE1BQUEsR0FBSixDQUFBLEVBQWtDO0FBQ2hDLFFBQUEsVUFBVSxHQUNSLFVBQVUsS0FBVixTQUFBLEdBQUEsaUJBQUEsR0FBK0MsaUJBQWlCLENBQWpCLE1BQUEsQ0FEakQsVUFDaUQsQ0FEakQ7QUFFRDs7QUFFRCxVQUFJLEtBQUssS0FBVCxTQUFBLEVBQXlCO0FBQ3ZCLFFBQUEsS0FBSyxHQUFMLEVBQUE7QUFDRDs7QUFFRCxNQUFBLEtBQUssQ0FBTCxPQUFBLENBQUEsWUFBQTtBQUNEOztBQUVELFFBQUksQ0FBQyxjQUFjLENBQW5CLEtBQW1CLENBQW5CLEVBQTRCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE1BQUEsVUFBVSxHQUFWLEtBQUE7QUFDQSxNQUFBLEtBQUssR0FBRyxjQUFjLENBQXRCLEtBQXNCLENBQXRCO0FBQ0EsTUFBQSxRQUFRLEdBQUcsY0FBYyxDQUF6QixRQUF5QixDQUF6QjtBQUNBO0FBQ0Q7O0FBRUQsSUFBQSxjQUFjLEdBQWQsS0FBQTtBQUNEOztBQUVELFNBQU87QUFBQSxJQUFBLFVBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBLFFBQUE7QUFBQSxJQUFBLFVBQUE7QUFBMkMsSUFBQTtBQUEzQyxHQUFQO0FBQ0Q7O0FBRUssU0FBQSxLQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsSUFBQSxFQUtKLFFBQVEsR0FMSixLQUFBLEVBS1k7QUFFaEIsU0FBTyxJQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQVAsUUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXB0dXJlZEFyZ3VtZW50cywgQ3VycmllZFR5cGUsIE93bmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzeW1ib2wsIF9XZWFrU2V0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5jb25zdCBUWVBFOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdUWVBFJyk7XG5jb25zdCBJTk5FUjogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnSU5ORVInKTtcbmNvbnN0IE9XTkVSOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdPV05FUicpO1xuY29uc3QgQVJHUzogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnQVJHUycpO1xuY29uc3QgUkVTT0xWRUQ6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1JFU09MVkVEJyk7XG5cbmNvbnN0IENVUlJJRURfVkFMVUVTID0gbmV3IF9XZWFrU2V0KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1cnJpZWRWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEN1cnJpZWRWYWx1ZTxDdXJyaWVkVHlwZT4ge1xuICByZXR1cm4gQ1VSUklFRF9WQUxVRVMuaGFzKHZhbHVlIGFzIG9iamVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1cnJpZWRUeXBlPFQgZXh0ZW5kcyBDdXJyaWVkVHlwZT4oXG4gIHZhbHVlOiB1bmtub3duLFxuICB0eXBlOiBUXG4pOiB2YWx1ZSBpcyBDdXJyaWVkVmFsdWU8VD4ge1xuICByZXR1cm4gaXNDdXJyaWVkVmFsdWUodmFsdWUpICYmIHZhbHVlW1RZUEVdID09PSB0eXBlO1xufVxuXG5leHBvcnQgY2xhc3MgQ3VycmllZFZhbHVlPFQgZXh0ZW5kcyBDdXJyaWVkVHlwZSA9IEN1cnJpZWRUeXBlPiB7XG4gIFtUWVBFXTogVDtcbiAgW0lOTkVSXTogb2JqZWN0IHwgc3RyaW5nIHwgQ3VycmllZFZhbHVlPFQ+O1xuICBbT1dORVJdOiBPd25lcjtcbiAgW0FSR1NdOiBDYXB0dXJlZEFyZ3VtZW50cyB8IG51bGw7XG4gIFtSRVNPTFZFRF06IGJvb2xlYW47XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICB0eXBlOiBULFxuICAgIGlubmVyOiBvYmplY3QgfCBzdHJpbmcgfCBDdXJyaWVkVmFsdWU8VD4sXG4gICAgb3duZXI6IE93bmVyLFxuICAgIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzIHwgbnVsbCxcbiAgICByZXNvbHZlZCA9IGZhbHNlXG4gICkge1xuICAgIENVUlJJRURfVkFMVUVTLmFkZCh0aGlzKTtcbiAgICB0aGlzW1RZUEVdID0gdHlwZTtcbiAgICB0aGlzW0lOTkVSXSA9IGlubmVyO1xuICAgIHRoaXNbT1dORVJdID0gb3duZXI7XG4gICAgdGhpc1tBUkdTXSA9IGFyZ3M7XG4gICAgdGhpc1tSRVNPTFZFRF0gPSByZXNvbHZlZDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZWRDdXJyaWVkVmFsdWU8VD4ge1xuICBkZWZpbml0aW9uOiBUO1xuICBvd25lcjogT3duZXI7XG4gIHJlc29sdmVkOiBib29sZWFuO1xuICBwb3NpdGlvbmFsOiBSZWZlcmVuY2VbXSB8IHVuZGVmaW5lZDtcbiAgbmFtZWQ6IFJlY29yZDxzdHJpbmcsIFJlZmVyZW5jZT5bXSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDdXJyaWVkVmFsdWUoXG4gIGN1cnJpZWRWYWx1ZTogQ3VycmllZFZhbHVlPEN1cnJpZWRUeXBlLkNvbXBvbmVudD5cbik6IFJlc29sdmVkQ3VycmllZFZhbHVlPG9iamVjdCB8IHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUN1cnJpZWRWYWx1ZShcbiAgY3VycmllZFZhbHVlOiBDdXJyaWVkVmFsdWU8Q3VycmllZFR5cGUuSGVscGVyPiB8IEN1cnJpZWRWYWx1ZTxDdXJyaWVkVHlwZS5Nb2RpZmllcj5cbik6IFJlc29sdmVkQ3VycmllZFZhbHVlPG9iamVjdD47XG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUN1cnJpZWRWYWx1ZShcbiAgY3VycmllZFZhbHVlOiBDdXJyaWVkVmFsdWU8Q3VycmllZFR5cGU+XG4pOiBSZXNvbHZlZEN1cnJpZWRWYWx1ZTxvYmplY3QgfCBzdHJpbmc+IHtcbiAgbGV0IGN1cnJlbnRXcmFwcGVyID0gY3VycmllZFZhbHVlO1xuICBsZXQgcG9zaXRpb25hbDogUmVmZXJlbmNlW10gfCB1bmRlZmluZWQ7XG4gIGxldCBuYW1lZDogUmVjb3JkPHN0cmluZywgUmVmZXJlbmNlPltdIHwgdW5kZWZpbmVkO1xuICBsZXQgZGVmaW5pdGlvbiwgb3duZXIsIHJlc29sdmVkO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbGV0IHsgW0FSR1NdOiBjdXJyaWVkQXJncywgW0lOTkVSXTogaW5uZXIgfSA9IGN1cnJlbnRXcmFwcGVyO1xuXG4gICAgaWYgKGN1cnJpZWRBcmdzICE9PSBudWxsKSB7XG4gICAgICBsZXQgeyBuYW1lZDogY3VycmllZE5hbWVkLCBwb3NpdGlvbmFsOiBjdXJyaWVkUG9zaXRpb25hbCB9ID0gY3VycmllZEFyZ3M7XG5cbiAgICAgIGlmIChjdXJyaWVkUG9zaXRpb25hbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBvc2l0aW9uYWwgPVxuICAgICAgICAgIHBvc2l0aW9uYWwgPT09IHVuZGVmaW5lZCA/IGN1cnJpZWRQb3NpdGlvbmFsIDogY3VycmllZFBvc2l0aW9uYWwuY29uY2F0KHBvc2l0aW9uYWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuYW1lZCA9IFtdO1xuICAgICAgfVxuXG4gICAgICBuYW1lZC51bnNoaWZ0KGN1cnJpZWROYW1lZCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0N1cnJpZWRWYWx1ZShpbm5lcikpIHtcbiAgICAgIC8vIFNhdmUgb2ZmIHRoZSBvd25lciB0aGF0IHRoaXMgaGVscGVyIHdhcyBjdXJyaWVkIHdpdGguIExhdGVyIG9uLFxuICAgICAgLy8gd2UnbGwgZmV0Y2ggdGhlIHZhbHVlIG9mIHRoaXMgcmVnaXN0ZXIgYW5kIHNldCBpdCBhcyB0aGUgb3duZXIgb24gdGhlXG4gICAgICAvLyBuZXcgcm9vdCBzY29wZS5cbiAgICAgIGRlZmluaXRpb24gPSBpbm5lcjtcbiAgICAgIG93bmVyID0gY3VycmVudFdyYXBwZXJbT1dORVJdO1xuICAgICAgcmVzb2x2ZWQgPSBjdXJyZW50V3JhcHBlcltSRVNPTFZFRF07XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjdXJyZW50V3JhcHBlciA9IGlubmVyO1xuICB9XG5cbiAgcmV0dXJuIHsgZGVmaW5pdGlvbiwgb3duZXIsIHJlc29sdmVkLCBwb3NpdGlvbmFsLCBuYW1lZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3Vycnk8VCBleHRlbmRzIEN1cnJpZWRUeXBlPihcbiAgdHlwZTogVCxcbiAgc3BlYzogb2JqZWN0IHwgc3RyaW5nIHwgQ3VycmllZFZhbHVlPFQ+LFxuICBvd25lcjogT3duZXIsXG4gIGFyZ3M6IENhcHR1cmVkQXJndW1lbnRzIHwgbnVsbCxcbiAgcmVzb2x2ZWQgPSBmYWxzZVxuKTogQ3VycmllZFZhbHVlPFQ+IHtcbiAgcmV0dXJuIG5ldyBDdXJyaWVkVmFsdWUodHlwZSwgc3BlYywgb3duZXIsIGFyZ3MsIHJlc29sdmVkKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=