UNPKG

@glimmer/compiler

Version:
97 lines (79 loc) 11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assertCurryKeyword = assertCurryKeyword; exports.curryKeyword = curryKeyword; var _syntax = require("@glimmer/syntax"); var _result = require("../../../../shared/result"); var mir = _interopRequireWildcard(require("../../../2-encoding/mir")); var _expressions = require("../../visitors/expressions"); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var _CurriedTypeToReadabl; var CurriedTypeToReadableType = (_CurriedTypeToReadabl = {}, _CurriedTypeToReadabl[0 /* Component */ ] = 'component', _CurriedTypeToReadabl[1 /* Helper */ ] = 'helper', _CurriedTypeToReadabl[2 /* Modifier */ ] = 'modifier', _CurriedTypeToReadabl); function assertCurryKeyword(curriedType) { return function (node, state) { var readableType = CurriedTypeToReadableType[curriedType]; var stringsAllowed = curriedType === 0 /* Component */ ; var args = node.args; var definition = args.nth(0); if (definition === null) { return (0, _result.Err)((0, _syntax.generateSyntaxError)("(" + readableType + ") requires a " + readableType + " definition or identifier as its first positional parameter, did not receive any parameters.", args.loc)); } if (definition.type === 'Literal') { if (stringsAllowed && state.isStrict) { return (0, _result.Err)((0, _syntax.generateSyntaxError)("(" + readableType + ") cannot resolve string values in strict mode templates", node.loc)); } else if (!stringsAllowed) { return (0, _result.Err)((0, _syntax.generateSyntaxError)("(" + readableType + ") cannot resolve string values, you must pass a " + readableType + " definition directly", node.loc)); } } args = new _syntax.ASTv2.Args({ positional: new _syntax.ASTv2.PositionalArguments({ exprs: args.positional.exprs.slice(1), loc: args.positional.loc }), named: args.named, loc: args.loc }); return (0, _result.Ok)({ definition: definition, args: args }); }; } function translateCurryKeyword(curriedType) { return function (_ref, _ref2) { var node = _ref.node, state = _ref.state; var definition = _ref2.definition, args = _ref2.args; var definitionResult = _expressions.VISIT_EXPRS.visit(definition, state); var argsResult = _expressions.VISIT_EXPRS.Args(args, state); return _result.Result.all(definitionResult, argsResult).mapOk(function (_ref3) { var definition = _ref3[0], args = _ref3[1]; return new mir.Curry({ loc: node.loc, curriedType: curriedType, definition: definition, args: args }); }); }; } function curryKeyword(curriedType) { return { assert: assertCurryKeyword(curriedType), translate: translateCurryKeyword(curriedType) }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2N1cnJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7Ozs7Ozs7O0FBR0EsSUFBTSx5QkFBeUIsSUFBQSxxQkFBQSxHQUFBLEVBQUEsRUFBQSxxQkFBQSxDQUM3QjtBQUFBO0FBRDZCLENBQUEsR0FBQSxXQUFBLEVBQUEscUJBQUEsQ0FFN0I7QUFBQTtBQUY2QixDQUFBLEdBQUEsUUFBQSxFQUFBLHFCQUFBLENBRzdCO0FBQUE7QUFINkIsQ0FBQSxHQUFBLFVBQUEsRUFBL0IscUJBQStCLENBQS9COztBQU1NLFNBQUEsa0JBQUEsQ0FBQSxXQUFBLEVBQXFEO0FBQ3pELFNBQU8sVUFBQSxJQUFBLEVBQUEsS0FBQSxFQU1GO0FBQ0gsUUFBSSxZQUFZLEdBQUcseUJBQXlCLENBQTVDLFdBQTRDLENBQTVDO0FBQ0EsUUFBSSxjQUFjLEdBQUcsV0FBVyxLQUFBO0FBQUE7QUFBaEM7QUFGRyxRQUlHLElBSkgsR0FJSCxJQUpHLENBQUEsSUFBQTtBQU1ILFFBQUksVUFBVSxHQUFHLElBQUksQ0FBSixHQUFBLENBQWpCLENBQWlCLENBQWpCOztBQUVBLFFBQUksVUFBVSxLQUFkLElBQUEsRUFBeUI7QUFDdkIsYUFBTyxpQkFDTCxpQ0FBbUIsTUFBQSxZQUFBLEdBQUEsZUFBQSxHQUFBLFlBQUEsR0FBQSw4RkFBbkIsRUFFRSxJQUFJLENBSFIsR0FDRSxDQURLLENBQVA7QUFNRDs7QUFFRCxRQUFJLFVBQVUsQ0FBVixJQUFBLEtBQUosU0FBQSxFQUFtQztBQUNqQyxVQUFJLGNBQWMsSUFBSSxLQUFLLENBQTNCLFFBQUEsRUFBc0M7QUFDcEMsZUFBTyxpQkFDTCxpQ0FBbUIsTUFBQSxZQUFBLEdBQUEseURBQW5CLEVBRUUsSUFBSSxDQUhSLEdBQ0UsQ0FESyxDQUFQO0FBREYsT0FBQSxNQU9PLElBQUksQ0FBSixjQUFBLEVBQXFCO0FBQzFCLGVBQU8saUJBQ0wsaUNBQW1CLE1BQUEsWUFBQSxHQUFBLGtEQUFBLEdBQUEsWUFBQSxHQUFBLHNCQUFuQixFQUVFLElBQUksQ0FIUixHQUNFLENBREssQ0FBUDtBQU1EO0FBQ0Y7O0FBRUQsSUFBQSxJQUFJLEdBQUcsSUFBSSxjQUFKLElBQUEsQ0FBZTtBQUNwQixNQUFBLFVBQVUsRUFBRSxJQUFJLGNBQUosbUJBQUEsQ0FBOEI7QUFDeEMsUUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFKLFVBQUEsQ0FBQSxLQUFBLENBQUEsS0FBQSxDQURpQyxDQUNqQyxDQURpQztBQUV4QyxRQUFBLEdBQUcsRUFBRSxJQUFJLENBQUosVUFBQSxDQUFnQjtBQUZtQixPQUE5QixDQURRO0FBS3BCLE1BQUEsS0FBSyxFQUFFLElBQUksQ0FMUyxLQUFBO0FBTXBCLE1BQUEsR0FBRyxFQUFFLElBQUksQ0FBQztBQU5VLEtBQWYsQ0FBUDtBQVNBLFdBQU8sZ0JBQUc7QUFBRSxNQUFBLFVBQUYsRUFBQSxVQUFBO0FBQWMsTUFBQSxJQUFBLEVBQUE7QUFBZCxLQUFILENBQVA7QUFsREYsR0FBQTtBQW9ERDs7QUFFRCxTQUFBLHFCQUFBLENBQUEsV0FBQSxFQUF1RDtBQUNyRCxTQUFPLFVBQUEsSUFBQSxFQUFBLEtBQUEsRUFNZ0I7QUFBQSxRQUxyQixJQUtxQixHQUFBLElBQUEsQ0FMckIsSUFLcUI7QUFBQSxRQUhuQixLQUdtQixHQUFBLElBQUEsQ0FIbkIsS0FHbUI7QUFBQSxRQURyQixVQUNxQixHQUFBLEtBQUEsQ0FEckIsVUFDcUI7QUFBQSxRQURQLElBQ08sR0FBQSxLQUFBLENBRFAsSUFDTzs7QUFDckIsUUFBSSxnQkFBZ0IsR0FBRyx5QkFBQSxLQUFBLENBQUEsVUFBQSxFQUF2QixLQUF1QixDQUF2Qjs7QUFDQSxRQUFJLFVBQVUsR0FBRyx5QkFBQSxJQUFBLENBQUEsSUFBQSxFQUFqQixLQUFpQixDQUFqQjs7QUFFQSxXQUFPLGVBQUEsR0FBQSxDQUFBLGdCQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsQ0FDTCxVQUFBLEtBQUEsRUFBQTtBQUFBLFVBQUMsVUFBRCxHQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUE7QUFBQSxVQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBO0FBQUEsYUFDRSxJQUFJLEdBQUcsQ0FBUCxLQUFBLENBQWM7QUFDWixRQUFBLEdBQUcsRUFBRSxJQUFJLENBREcsR0FBQTtBQUVaLFFBQUEsV0FGWSxFQUFBLFdBQUE7QUFHWixRQUFBLFVBSFksRUFBQSxVQUFBO0FBSVosUUFBQSxJQUFBLEVBQUE7QUFKWSxPQUFkLENBREY7QUFERixLQUFPLENBQVA7QUFWRixHQUFBO0FBb0JEOztBQUVLLFNBQUEsWUFBQSxDQUFBLFdBQUEsRUFDb0I7QUFNeEIsU0FBTztBQUNMLElBQUEsTUFBTSxFQUFFLGtCQUFrQixDQURyQixXQUNxQixDQURyQjtBQUVMLElBQUEsU0FBUyxFQUFFLHFCQUFxQixDQUFBLFdBQUE7QUFGM0IsR0FBUDtBQUlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmllZFR5cGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFTVHYyLCBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgRXJyLCBPaywgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgKiBhcyBtaXIgZnJvbSAnLi4vLi4vLi4vMi1lbmNvZGluZy9taXInO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBWSVNJVF9FWFBSUyB9IGZyb20gJy4uLy4uL3Zpc2l0b3JzL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IEtleXdvcmREZWxlZ2F0ZSB9IGZyb20gJy4uL2ltcGwnO1xuXG5jb25zdCBDdXJyaWVkVHlwZVRvUmVhZGFibGVUeXBlID0ge1xuICBbQ3VycmllZFR5cGUuQ29tcG9uZW50XTogJ2NvbXBvbmVudCcsXG4gIFtDdXJyaWVkVHlwZS5IZWxwZXJdOiAnaGVscGVyJyxcbiAgW0N1cnJpZWRUeXBlLk1vZGlmaWVyXTogJ21vZGlmaWVyJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRDdXJyeUtleXdvcmQoY3VycmllZFR5cGU6IEN1cnJpZWRUeXBlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZTogQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkludm9rZUJsb2NrIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb24sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8e1xuICAgIGRlZmluaXRpb246IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICAgIGFyZ3M6IEFTVHYyLkFyZ3M7XG4gIH0+ID0+IHtcbiAgICBsZXQgcmVhZGFibGVUeXBlID0gQ3VycmllZFR5cGVUb1JlYWRhYmxlVHlwZVtjdXJyaWVkVHlwZV07XG4gICAgbGV0IHN0cmluZ3NBbGxvd2VkID0gY3VycmllZFR5cGUgPT09IEN1cnJpZWRUeXBlLkNvbXBvbmVudDtcblxuICAgIGxldCB7IGFyZ3MgfSA9IG5vZGU7XG5cbiAgICBsZXQgZGVmaW5pdGlvbiA9IGFyZ3MubnRoKDApO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFcnIoXG4gICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgYCgke3JlYWRhYmxlVHlwZX0pIHJlcXVpcmVzIGEgJHtyZWFkYWJsZVR5cGV9IGRlZmluaXRpb24gb3IgaWRlbnRpZmllciBhcyBpdHMgZmlyc3QgcG9zaXRpb25hbCBwYXJhbWV0ZXIsIGRpZCBub3QgcmVjZWl2ZSBhbnkgcGFyYW1ldGVycy5gLFxuICAgICAgICAgIGFyZ3MubG9jXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb24udHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICBpZiAoc3RyaW5nc0FsbG93ZWQgJiYgc3RhdGUuaXNTdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYCgke3JlYWRhYmxlVHlwZX0pIGNhbm5vdCByZXNvbHZlIHN0cmluZyB2YWx1ZXMgaW4gc3RyaWN0IG1vZGUgdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICghc3RyaW5nc0FsbG93ZWQpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYCgke3JlYWRhYmxlVHlwZX0pIGNhbm5vdCByZXNvbHZlIHN0cmluZyB2YWx1ZXMsIHlvdSBtdXN0IHBhc3MgYSAke3JlYWRhYmxlVHlwZX0gZGVmaW5pdGlvbiBkaXJlY3RseWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcmdzID0gbmV3IEFTVHYyLkFyZ3Moe1xuICAgICAgcG9zaXRpb25hbDogbmV3IEFTVHYyLlBvc2l0aW9uYWxBcmd1bWVudHMoe1xuICAgICAgICBleHByczogYXJncy5wb3NpdGlvbmFsLmV4cHJzLnNsaWNlKDEpLFxuICAgICAgICBsb2M6IGFyZ3MucG9zaXRpb25hbC5sb2MsXG4gICAgICB9KSxcbiAgICAgIG5hbWVkOiBhcmdzLm5hbWVkLFxuICAgICAgbG9jOiBhcmdzLmxvYyxcbiAgICB9KTtcblxuICAgIHJldHVybiBPayh7IGRlZmluaXRpb24sIGFyZ3MgfSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUN1cnJ5S2V5d29yZChjdXJyaWVkVHlwZTogQ3VycmllZFR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICB7XG4gICAgICBub2RlLFxuICAgICAgc3RhdGUsXG4gICAgfTogeyBub2RlOiBBU1R2Mi5DYWxsRXhwcmVzc2lvbiB8IEFTVHYyLkFwcGVuZENvbnRlbnQ7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSxcbiAgICB7IGRlZmluaXRpb24sIGFyZ3MgfTogeyBkZWZpbml0aW9uOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTsgYXJnczogQVNUdjIuQXJncyB9XG4gICk6IFJlc3VsdDxtaXIuQ3Vycnk+ID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvblJlc3VsdCA9IFZJU0lUX0VYUFJTLnZpc2l0KGRlZmluaXRpb24sIHN0YXRlKTtcbiAgICBsZXQgYXJnc1Jlc3VsdCA9IFZJU0lUX0VYUFJTLkFyZ3MoYXJncywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIFJlc3VsdC5hbGwoZGVmaW5pdGlvblJlc3VsdCwgYXJnc1Jlc3VsdCkubWFwT2soXG4gICAgICAoW2RlZmluaXRpb24sIGFyZ3NdKSA9PlxuICAgICAgICBuZXcgbWlyLkN1cnJ5KHtcbiAgICAgICAgICBsb2M6IG5vZGUubG9jLFxuICAgICAgICAgIGN1cnJpZWRUeXBlLFxuICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgYXJncyxcbiAgICAgICAgfSlcbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VycnlLZXl3b3JkKFxuICBjdXJyaWVkVHlwZTogQ3VycmllZFR5cGVcbik6IEtleXdvcmREZWxlZ2F0ZTxcbiAgQVNUdjIuQ2FsbEV4cHJlc3Npb24gfCBBU1R2Mi5BcHBlbmRDb250ZW50LFxuICB7IGRlZmluaXRpb246IEFTVHYyLkV4cHJlc3Npb25Ob2RlOyBhcmdzOiBBU1R2Mi5BcmdzIH0sXG4gIG1pci5DdXJyeVxuPiB7XG4gIHJldHVybiB7XG4gICAgYXNzZXJ0OiBhc3NlcnRDdXJyeUtleXdvcmQoY3VycmllZFR5cGUpLFxuICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlQ3VycnlLZXl3b3JkKGN1cnJpZWRUeXBlKSxcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=