@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
82 lines (72 loc) • 9.39 kB
JavaScript
import { symbol, _WeakSet } from '@glimmer/util';
var TYPE = symbol('TYPE');
var INNER = symbol('INNER');
var OWNER = symbol('OWNER');
var ARGS = symbol('ARGS');
var RESOLVED = symbol('RESOLVED');
var CURRIED_VALUES = new _WeakSet();
export function isCurriedValue(value) {
return CURRIED_VALUES.has(value);
}
export function isCurriedType(value, type) {
return isCurriedValue(value) && value[TYPE] === type;
}
export var CurriedValue =
/** @internal */
function CurriedValue(type, inner, owner, args, resolved) {
if (resolved === void 0) {
resolved = false;
}
CURRIED_VALUES.add(this);
this[TYPE] = type;
this[INNER] = inner;
this[OWNER] = owner;
this[ARGS] = args;
this[RESOLVED] = resolved;
};
export function resolveCurriedValue(curriedValue) {
var currentWrapper = curriedValue;
var positional;
var named;
var definition, owner, resolved;
while (true) {
var _currentWrapper = currentWrapper,
curriedArgs = _currentWrapper[ARGS],
inner = _currentWrapper[INNER];
if (curriedArgs !== null) {
var curriedNamed = curriedArgs.named,
curriedPositional = curriedArgs.positional;
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: definition,
owner: owner,
resolved: resolved,
positional: positional,
named: named
};
}
export function curry(type, spec, owner, args, resolved) {
if (resolved === void 0) {
resolved = false;
}
return new CurriedValue(type, spec, owner, args, resolved);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2N1cnJpZWQtdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBQSxNQUFBLEVBQUEsUUFBQSxRQUFBLGVBQUE7QUFHQSxJQUFNLElBQUksR0FBa0IsTUFBTSxDQUFsQyxNQUFrQyxDQUFsQztBQUNBLElBQU0sS0FBSyxHQUFrQixNQUFNLENBQW5DLE9BQW1DLENBQW5DO0FBQ0EsSUFBTSxLQUFLLEdBQWtCLE1BQU0sQ0FBbkMsT0FBbUMsQ0FBbkM7QUFDQSxJQUFNLElBQUksR0FBa0IsTUFBTSxDQUFsQyxNQUFrQyxDQUFsQztBQUNBLElBQU0sUUFBUSxHQUFrQixNQUFNLENBQXRDLFVBQXNDLENBQXRDO0FBRUEsSUFBTSxjQUFjLEdBQUcsSUFBdkIsUUFBdUIsRUFBdkI7QUFFQSxPQUFNLFNBQUEsY0FBQSxDQUFBLEtBQUEsRUFBdUM7QUFDM0MsU0FBTyxjQUFjLENBQWQsR0FBQSxDQUFQLEtBQU8sQ0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFBLGFBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQSxFQUVHO0FBRVAsU0FBTyxjQUFjLENBQWQsS0FBYyxDQUFkLElBQXlCLEtBQUssQ0FBTCxJQUFLLENBQUwsS0FBaEMsSUFBQTtBQUNEO0FBRUQsV0FBTSxZQUFOO0FBT0U7QUFDQSxzQkFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBS0UsUUFMRixFQUtrQjtBQUFBLE1BQWhCLFFBQWdCO0FBQWhCLElBQUEsUUFBZ0IsR0FMbEIsS0FLa0I7QUFBQTs7QUFFaEIsRUFBQSxjQUFjLENBQWQsR0FBQSxDQUFBLElBQUE7QUFDQSxPQUFBLElBQUEsSUFBQSxJQUFBO0FBQ0EsT0FBQSxLQUFBLElBQUEsS0FBQTtBQUNBLE9BQUEsS0FBQSxJQUFBLEtBQUE7QUFDQSxPQUFBLElBQUEsSUFBQSxJQUFBO0FBQ0EsT0FBQSxRQUFBLElBQUEsUUFBQTtBQUNELENBckJIO0FBc0NBLE9BQU0sU0FBQSxtQkFBQSxDQUFBLFlBQUEsRUFDbUM7QUFFdkMsTUFBSSxjQUFjLEdBQWxCLFlBQUE7QUFDQSxNQUFBLFVBQUE7QUFDQSxNQUFBLEtBQUE7QUFDQSxNQUFBLFVBQUEsRUFBQSxLQUFBLEVBQUEsUUFBQTs7QUFFQSxTQUFBLElBQUEsRUFBYTtBQUFBLDBCQUNYLGNBRFc7QUFBQSxRQUNQLFdBRE8sbUJBQ0wsSUFESztBQUFBLFFBQ3lCLEtBRHpCLG1CQUNnQixLQURoQjs7QUFHWCxRQUFJLFdBQVcsS0FBZixJQUFBLEVBQTBCO0FBQUEsVUFDcEIsWUFEb0IsR0FDeEIsV0FEd0IsQ0FDbEIsS0FEa0I7QUFBQSxVQUNlLGlCQURmLEdBQ3hCLFdBRHdCLENBQ0csVUFESDs7QUFHeEIsVUFBSSxpQkFBaUIsQ0FBakIsTUFBQSxHQUFKLENBQUEsRUFBa0M7QUFDaEMsUUFBQSxVQUFVLEdBQ1IsVUFBVSxLQUFWLFNBQUEsR0FBQSxpQkFBQSxHQUErQyxpQkFBaUIsQ0FBakIsTUFBQSxDQURqRCxVQUNpRCxDQURqRDtBQUVEOztBQUVELFVBQUksS0FBSyxLQUFULFNBQUEsRUFBeUI7QUFDdkIsUUFBQSxLQUFLLEdBQUwsRUFBQTtBQUNEOztBQUVELE1BQUEsS0FBSyxDQUFMLE9BQUEsQ0FBQSxZQUFBO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDLGNBQWMsQ0FBbkIsS0FBbUIsQ0FBbkIsRUFBNEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsTUFBQSxVQUFVLEdBQVYsS0FBQTtBQUNBLE1BQUEsS0FBSyxHQUFHLGNBQWMsQ0FBdEIsS0FBc0IsQ0FBdEI7QUFDQSxNQUFBLFFBQVEsR0FBRyxjQUFjLENBQXpCLFFBQXlCLENBQXpCO0FBQ0E7QUFDRDs7QUFFRCxJQUFBLGNBQWMsR0FBZCxLQUFBO0FBQ0Q7O0FBRUQsU0FBTztBQUFFLElBQUEsVUFBRixFQUFFLFVBQUY7QUFBYyxJQUFBLEtBQWQsRUFBYyxLQUFkO0FBQXFCLElBQUEsUUFBckIsRUFBcUIsUUFBckI7QUFBK0IsSUFBQSxVQUEvQixFQUErQixVQUEvQjtBQUEyQyxJQUFBLEtBQUEsRUFBQTtBQUEzQyxHQUFQO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFLSixRQUxJLEVBS1k7QUFBQSxNQUFoQixRQUFnQjtBQUFoQixJQUFBLFFBQWdCLEdBTFosS0FLWTtBQUFBOztBQUVoQixTQUFPLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBUCxRQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhcHR1cmVkQXJndW1lbnRzLCBDdXJyaWVkVHlwZSwgT3duZXIgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHN5bWJvbCwgX1dlYWtTZXQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmNvbnN0IFRZUEU6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ1RZUEUnKTtcbmNvbnN0IElOTkVSOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdJTk5FUicpO1xuY29uc3QgT1dORVI6IHVuaXF1ZSBzeW1ib2wgPSBzeW1ib2woJ09XTkVSJyk7XG5jb25zdCBBUkdTOiB1bmlxdWUgc3ltYm9sID0gc3ltYm9sKCdBUkdTJyk7XG5jb25zdCBSRVNPTFZFRDogdW5pcXVlIHN5bWJvbCA9IHN5bWJvbCgnUkVTT0xWRUQnKTtcblxuY29uc3QgQ1VSUklFRF9WQUxVRVMgPSBuZXcgX1dlYWtTZXQoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VycmllZFZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VycmllZFZhbHVlPEN1cnJpZWRUeXBlPiB7XG4gIHJldHVybiBDVVJSSUVEX1ZBTFVFUy5oYXModmFsdWUgYXMgb2JqZWN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VycmllZFR5cGU8VCBleHRlbmRzIEN1cnJpZWRUeXBlPihcbiAgdmFsdWU6IHVua25vd24sXG4gIHR5cGU6IFRcbik6IHZhbHVlIGlzIEN1cnJpZWRWYWx1ZTxUPiB7XG4gIHJldHVybiBpc0N1cnJpZWRWYWx1ZSh2YWx1ZSkgJiYgdmFsdWVbVFlQRV0gPT09IHR5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBDdXJyaWVkVmFsdWU8VCBleHRlbmRzIEN1cnJpZWRUeXBlID0gQ3VycmllZFR5cGU+IHtcbiAgW1RZUEVdOiBUO1xuICBbSU5ORVJdOiBvYmplY3QgfCBzdHJpbmcgfCBDdXJyaWVkVmFsdWU8VD47XG4gIFtPV05FUl06IE93bmVyO1xuICBbQVJHU106IENhcHR1cmVkQXJndW1lbnRzIHwgbnVsbDtcbiAgW1JFU09MVkVEXTogYm9vbGVhbjtcblxuICAvKiogQGludGVybmFsICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHR5cGU6IFQsXG4gICAgaW5uZXI6IG9iamVjdCB8IHN0cmluZyB8IEN1cnJpZWRWYWx1ZTxUPixcbiAgICBvd25lcjogT3duZXIsXG4gICAgYXJnczogQ2FwdHVyZWRBcmd1bWVudHMgfCBudWxsLFxuICAgIHJlc29sdmVkID0gZmFsc2VcbiAgKSB7XG4gICAgQ1VSUklFRF9WQUxVRVMuYWRkKHRoaXMpO1xuICAgIHRoaXNbVFlQRV0gPSB0eXBlO1xuICAgIHRoaXNbSU5ORVJdID0gaW5uZXI7XG4gICAgdGhpc1tPV05FUl0gPSBvd25lcjtcbiAgICB0aGlzW0FSR1NdID0gYXJncztcbiAgICB0aGlzW1JFU09MVkVEXSA9IHJlc29sdmVkO1xuICB9XG59XG5cbmludGVyZmFjZSBSZXNvbHZlZEN1cnJpZWRWYWx1ZTxUPiB7XG4gIGRlZmluaXRpb246IFQ7XG4gIG93bmVyOiBPd25lcjtcbiAgcmVzb2x2ZWQ6IGJvb2xlYW47XG4gIHBvc2l0aW9uYWw6IFJlZmVyZW5jZVtdIHwgdW5kZWZpbmVkO1xuICBuYW1lZDogUmVjb3JkPHN0cmluZywgUmVmZXJlbmNlPltdIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUN1cnJpZWRWYWx1ZShcbiAgY3VycmllZFZhbHVlOiBDdXJyaWVkVmFsdWU8Q3VycmllZFR5cGUuQ29tcG9uZW50PlxuKTogUmVzb2x2ZWRDdXJyaWVkVmFsdWU8b2JqZWN0IHwgc3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ3VycmllZFZhbHVlKFxuICBjdXJyaWVkVmFsdWU6IEN1cnJpZWRWYWx1ZTxDdXJyaWVkVHlwZS5IZWxwZXI+IHwgQ3VycmllZFZhbHVlPEN1cnJpZWRUeXBlLk1vZGlmaWVyPlxuKTogUmVzb2x2ZWRDdXJyaWVkVmFsdWU8b2JqZWN0PjtcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ3VycmllZFZhbHVlKFxuICBjdXJyaWVkVmFsdWU6IEN1cnJpZWRWYWx1ZTxDdXJyaWVkVHlwZT5cbik6IFJlc29sdmVkQ3VycmllZFZhbHVlPG9iamVjdCB8IHN0cmluZz4ge1xuICBsZXQgY3VycmVudFdyYXBwZXIgPSBjdXJyaWVkVmFsdWU7XG4gIGxldCBwb3NpdGlvbmFsOiBSZWZlcmVuY2VbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IG5hbWVkOiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+W10gfCB1bmRlZmluZWQ7XG4gIGxldCBkZWZpbml0aW9uLCBvd25lciwgcmVzb2x2ZWQ7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBsZXQgeyBbQVJHU106IGN1cnJpZWRBcmdzLCBbSU5ORVJdOiBpbm5lciB9ID0gY3VycmVudFdyYXBwZXI7XG5cbiAgICBpZiAoY3VycmllZEFyZ3MgIT09IG51bGwpIHtcbiAgICAgIGxldCB7IG5hbWVkOiBjdXJyaWVkTmFtZWQsIHBvc2l0aW9uYWw6IGN1cnJpZWRQb3NpdGlvbmFsIH0gPSBjdXJyaWVkQXJncztcblxuICAgICAgaWYgKGN1cnJpZWRQb3NpdGlvbmFsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcG9zaXRpb25hbCA9XG4gICAgICAgICAgcG9zaXRpb25hbCA9PT0gdW5kZWZpbmVkID8gY3VycmllZFBvc2l0aW9uYWwgOiBjdXJyaWVkUG9zaXRpb25hbC5jb25jYXQocG9zaXRpb25hbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5hbWVkID0gW107XG4gICAgICB9XG5cbiAgICAgIG5hbWVkLnVuc2hpZnQoY3VycmllZE5hbWVkKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ3VycmllZFZhbHVlKGlubmVyKSkge1xuICAgICAgLy8gU2F2ZSBvZmYgdGhlIG93bmVyIHRoYXQgdGhpcyBoZWxwZXIgd2FzIGN1cnJpZWQgd2l0aC4gTGF0ZXIgb24sXG4gICAgICAvLyB3ZSdsbCBmZXRjaCB0aGUgdmFsdWUgb2YgdGhpcyByZWdpc3RlciBhbmQgc2V0IGl0IGFzIHRoZSBvd25lciBvbiB0aGVcbiAgICAgIC8vIG5ldyByb290IHNjb3BlLlxuICAgICAgZGVmaW5pdGlvbiA9IGlubmVyO1xuICAgICAgb3duZXIgPSBjdXJyZW50V3JhcHBlcltPV05FUl07XG4gICAgICByZXNvbHZlZCA9IGN1cnJlbnRXcmFwcGVyW1JFU09MVkVEXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGN1cnJlbnRXcmFwcGVyID0gaW5uZXI7XG4gIH1cblxuICByZXR1cm4geyBkZWZpbml0aW9uLCBvd25lciwgcmVzb2x2ZWQsIHBvc2l0aW9uYWwsIG5hbWVkIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdXJyeTxUIGV4dGVuZHMgQ3VycmllZFR5cGU+KFxuICB0eXBlOiBULFxuICBzcGVjOiBvYmplY3QgfCBzdHJpbmcgfCBDdXJyaWVkVmFsdWU8VD4sXG4gIG93bmVyOiBPd25lcixcbiAgYXJnczogQ2FwdHVyZWRBcmd1bWVudHMgfCBudWxsLFxuICByZXNvbHZlZCA9IGZhbHNlXG4pOiBDdXJyaWVkVmFsdWU8VD4ge1xuICByZXR1cm4gbmV3IEN1cnJpZWRWYWx1ZSh0eXBlLCBzcGVjLCBvd25lciwgYXJncywgcmVzb2x2ZWQpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==