123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import * as ASTv2 from './api';
- export function SexpSyntaxContext(node) {
- if (isSimpleCallee(node)) {
- return ASTv2.LooseModeResolution.namespaced("Helper"
- /* Helper */
- );
- } else {
- return null;
- }
- }
- export function ModifierSyntaxContext(node) {
- if (isSimpleCallee(node)) {
- return ASTv2.LooseModeResolution.namespaced("Modifier"
- /* Modifier */
- );
- } else {
- return null;
- }
- }
- export function BlockSyntaxContext(node) {
- if (isSimpleCallee(node)) {
- return ASTv2.LooseModeResolution.namespaced("Component"
- /* Component */
- );
- } else {
- return ASTv2.LooseModeResolution.fallback();
- }
- }
- export function ComponentSyntaxContext(node) {
- if (isSimplePath(node)) {
- return ASTv2.LooseModeResolution.namespaced("Component"
- /* Component */
- , true);
- } else {
- return null;
- }
- }
- /**
- * This corresponds to append positions (text curlies or attribute
- * curlies). In strict mode, this also corresponds to arg curlies.
- */
- export function AttrValueSyntaxContext(node) {
- var isSimple = isSimpleCallee(node);
- var isInvoke = isInvokeNode(node);
- if (isSimple) {
- return isInvoke ? ASTv2.LooseModeResolution.namespaced("Helper"
- /* Helper */
- ) : ASTv2.LooseModeResolution.attr();
- } else {
- return isInvoke ? ASTv2.STRICT_RESOLUTION : ASTv2.LooseModeResolution.fallback();
- }
- }
- /**
- * This corresponds to append positions (text curlies or attribute
- * curlies). In strict mode, this also corresponds to arg curlies.
- */
- export function AppendSyntaxContext(node) {
- var isSimple = isSimpleCallee(node);
- var isInvoke = isInvokeNode(node);
- var trusting = node.trusting;
- if (isSimple) {
- return trusting ? ASTv2.LooseModeResolution.trustingAppend({
- invoke: isInvoke
- }) : ASTv2.LooseModeResolution.append({
- invoke: isInvoke
- });
- } else {
- return ASTv2.LooseModeResolution.fallback();
- }
- } // UTILITIES
- /**
- * A call node has a simple callee if its head is:
- *
- * - a `PathExpression`
- * - the `PathExpression`'s head is a `VarHead`
- * - it has no tail
- *
- * Simple heads:
- *
- * ```
- * {{x}}
- * {{x y}}
- * ```
- *
- * Not simple heads:
- *
- * ```
- * {{x.y}}
- * {{x.y z}}
- * {{@x}}
- * {{@x a}}
- * {{this}}
- * {{this a}}
- * ```
- */
- function isSimpleCallee(node) {
- var path = node.path;
- return isSimplePath(path);
- }
- function isSimplePath(node) {
- if (node.type === 'PathExpression' && node.head.type === 'VarHead') {
- return node.tail.length === 0;
- } else {
- return false;
- }
- }
- /**
- * The call expression has at least one argument.
- */
- function isInvokeNode(node) {
- return node.params.length > 0 || node.hash.pairs.length > 0;
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9sb29zZS1yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBUCxLQUFBLE1BQUEsT0FBQTtBQVlBLE9BQU0sU0FBQSxpQkFBQSxDQUFBLElBQUEsRUFBcUQ7QUFDekQsTUFBSSxjQUFjLENBQWxCLElBQWtCLENBQWxCLEVBQTBCO0FBQ3hCLFdBQU8sS0FBSyxDQUFMLG1CQUFBLENBQUEsVUFBQSxDQUFvQztBQUFBO0FBQXBDLEtBQVA7QUFERixHQUFBLE1BRU87QUFDTCxXQUFBLElBQUE7QUFDRDtBQUNGO0FBRUQsT0FBTSxTQUFBLHFCQUFBLENBQUEsSUFBQSxFQUNnQztBQUVwQyxNQUFJLGNBQWMsQ0FBbEIsSUFBa0IsQ0FBbEIsRUFBMEI7QUFDeEIsV0FBTyxLQUFLLENBQUwsbUJBQUEsQ0FBQSxVQUFBLENBQW9DO0FBQUE7QUFBcEMsS0FBUDtBQURGLEdBQUEsTUFFTztBQUNMLFdBQUEsSUFBQTtBQUNEO0FBQ0Y7QUFFRCxPQUFNLFNBQUEsa0JBQUEsQ0FBQSxJQUFBLEVBQXVEO0FBQzNELE1BQUksY0FBYyxDQUFsQixJQUFrQixDQUFsQixFQUEwQjtBQUN4QixXQUFPLEtBQUssQ0FBTCxtQkFBQSxDQUFBLFVBQUEsQ0FBb0M7QUFBQTtBQUFwQyxLQUFQO0FBREYsR0FBQSxNQUVPO0FBQ0wsV0FBTyxLQUFLLENBQUwsbUJBQUEsQ0FBUCxRQUFPLEVBQVA7QUFDRDtBQUNGO0FBRUQsT0FBTSxTQUFBLHNCQUFBLENBQUEsSUFBQSxFQUEyRDtBQUMvRCxNQUFJLFlBQVksQ0FBaEIsSUFBZ0IsQ0FBaEIsRUFBd0I7QUFDdEIsV0FBTyxLQUFLLENBQUwsbUJBQUEsQ0FBQSxVQUFBLENBQW9DO0FBQUE7QUFBcEMsTUFBUCxJQUFPLENBQVA7QUFERixHQUFBLE1BRU87QUFDTCxXQUFBLElBQUE7QUFDRDtBQUNGO0FBRUQ7Ozs7O0FBSUEsT0FBTSxTQUFBLHNCQUFBLENBQUEsSUFBQSxFQUE4RDtBQUNsRSxNQUFJLFFBQVEsR0FBRyxjQUFjLENBQTdCLElBQTZCLENBQTdCO0FBQ0EsTUFBSSxRQUFRLEdBQUcsWUFBWSxDQUEzQixJQUEyQixDQUEzQjs7QUFFQSxNQUFBLFFBQUEsRUFBYztBQUNaLFdBQU8sUUFBUSxHQUNYLEtBQUssQ0FBTCxtQkFBQSxDQUFBLFVBQUEsQ0FBb0M7QUFBQTtBQUFwQyxLQURXLEdBRVgsS0FBSyxDQUFMLG1CQUFBLENBRkosSUFFSSxFQUZKO0FBREYsR0FBQSxNQUlPO0FBQ0wsV0FBTyxRQUFRLEdBQUcsS0FBSyxDQUFSLGlCQUFBLEdBQTZCLEtBQUssQ0FBTCxtQkFBQSxDQUE1QyxRQUE0QyxFQUE1QztBQUNEO0FBQ0Y7QUFFRDs7Ozs7QUFJQSxPQUFNLFNBQUEsbUJBQUEsQ0FBQSxJQUFBLEVBQTJEO0FBQy9ELE1BQUksUUFBUSxHQUFHLGNBQWMsQ0FBN0IsSUFBNkIsQ0FBN0I7QUFDQSxNQUFJLFFBQVEsR0FBRyxZQUFZLENBQTNCLElBQTJCLENBQTNCO0FBQ0EsTUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFuQixRQUFBOztBQUVBLE1BQUEsUUFBQSxFQUFjO0FBQ1osV0FBTyxRQUFRLEdBQ1gsS0FBSyxDQUFMLG1CQUFBLENBQUEsY0FBQSxDQUF5QztBQUFFLE1BQUEsTUFBTSxFQUFFO0FBQVYsS0FBekMsQ0FEVyxHQUVYLEtBQUssQ0FBTCxtQkFBQSxDQUFBLE1BQUEsQ0FBaUM7QUFBRSxNQUFBLE1BQU0sRUFBRTtBQUFWLEtBQWpDLENBRko7QUFERixHQUFBLE1BSU87QUFDTCxXQUFPLEtBQUssQ0FBTCxtQkFBQSxDQUFQLFFBQU8sRUFBUDtBQUNEO0VBT0g7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBLFNBQUEsY0FBQSxDQUFBLElBQUEsRUFBMEM7QUFDeEMsTUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFmLElBQUE7QUFFQSxTQUFPLFlBQVksQ0FBbkIsSUFBbUIsQ0FBbkI7QUFDRDs7QUFFRCxTQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQTRDO0FBQzFDLE1BQUksSUFBSSxDQUFKLElBQUEsS0FBQSxnQkFBQSxJQUFrQyxJQUFJLENBQUosSUFBQSxDQUFBLElBQUEsS0FBdEMsU0FBQSxFQUFvRTtBQUNsRSxXQUFPLElBQUksQ0FBSixJQUFBLENBQUEsTUFBQSxLQUFQLENBQUE7QUFERixHQUFBLE1BRU87QUFDTCxXQUFBLEtBQUE7QUFDRDtBQUNGO0FBRUQ7Ozs7O0FBR0EsU0FBQSxZQUFBLENBQUEsSUFBQSxFQUF3QztBQUN0QyxTQUFPLElBQUksQ0FBSixNQUFBLENBQUEsTUFBQSxHQUFBLENBQUEsSUFBMEIsSUFBSSxDQUFKLElBQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxHQUFqQyxDQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0ICogYXMgQVNUdjIgZnJvbSAnLi9hcGknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzdENhbGxQYXJ0cyB7XG4gIHBhdGg6IEFTVHYxLkV4cHJlc3Npb247XG4gIHBhcmFtczogQVNUdjEuRXhwcmVzc2lvbltdO1xuICBoYXNoOiBBU1R2MS5IYXNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhclBhdGggZXh0ZW5kcyBBU1R2MS5QYXRoRXhwcmVzc2lvbiB7XG4gIGhlYWQ6IEFTVHYxLlZhckhlYWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZXhwU3ludGF4Q29udGV4dChub2RlOiBBU1R2MS5TdWJFeHByZXNzaW9uKTogQVNUdjIuRnJlZVZhclJlc29sdXRpb24gfCBudWxsIHtcbiAgaWYgKGlzU2ltcGxlQ2FsbGVlKG5vZGUpKSB7XG4gICAgcmV0dXJuIEFTVHYyLkxvb3NlTW9kZVJlc29sdXRpb24ubmFtZXNwYWNlZChBU1R2Mi5GcmVlVmFyTmFtZXNwYWNlLkhlbHBlcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGlmaWVyU3ludGF4Q29udGV4dChcbiAgbm9kZTogQVNUdjEuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50XG4pOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbiB8IG51bGwge1xuICBpZiAoaXNTaW1wbGVDYWxsZWUobm9kZSkpIHtcbiAgICByZXR1cm4gQVNUdjIuTG9vc2VNb2RlUmVzb2x1dGlvbi5uYW1lc3BhY2VkKEFTVHYyLkZyZWVWYXJOYW1lc3BhY2UuTW9kaWZpZXIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCbG9ja1N5bnRheENvbnRleHQobm9kZTogQVNUdjEuQmxvY2tTdGF0ZW1lbnQpOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbiB8IG51bGwge1xuICBpZiAoaXNTaW1wbGVDYWxsZWUobm9kZSkpIHtcbiAgICByZXR1cm4gQVNUdjIuTG9vc2VNb2RlUmVzb2x1dGlvbi5uYW1lc3BhY2VkKEFTVHYyLkZyZWVWYXJOYW1lc3BhY2UuQ29tcG9uZW50KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gQVNUdjIuTG9vc2VNb2RlUmVzb2x1dGlvbi5mYWxsYmFjaygpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb21wb25lbnRTeW50YXhDb250ZXh0KG5vZGU6IEFTVHYxLlBhdGhFeHByZXNzaW9uKTogQVNUdjIuRnJlZVZhclJlc29sdXRpb24gfCBudWxsIHtcbiAgaWYgKGlzU2ltcGxlUGF0aChub2RlKSkge1xuICAgIHJldHVybiBBU1R2Mi5Mb29zZU1vZGVSZXNvbHV0aW9uLm5hbWVzcGFjZWQoQVNUdjIuRnJlZVZhck5hbWVzcGFjZS5Db21wb25lbnQsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBjb3JyZXNwb25kcyB0byBhcHBlbmQgcG9zaXRpb25zICh0ZXh0IGN1cmxpZXMgb3IgYXR0cmlidXRlXG4gKiBjdXJsaWVzKS4gSW4gc3RyaWN0IG1vZGUsIHRoaXMgYWxzbyBjb3JyZXNwb25kcyB0byBhcmcgY3VybGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEF0dHJWYWx1ZVN5bnRheENvbnRleHQobm9kZTogQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQpOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbiB7XG4gIGxldCBpc1NpbXBsZSA9IGlzU2ltcGxlQ2FsbGVlKG5vZGUpO1xuICBsZXQgaXNJbnZva2UgPSBpc0ludm9rZU5vZGUobm9kZSk7XG5cbiAgaWYgKGlzU2ltcGxlKSB7XG4gICAgcmV0dXJuIGlzSW52b2tlXG4gICAgICA/IEFTVHYyLkxvb3NlTW9kZVJlc29sdXRpb24ubmFtZXNwYWNlZChBU1R2Mi5GcmVlVmFyTmFtZXNwYWNlLkhlbHBlcilcbiAgICAgIDogQVNUdjIuTG9vc2VNb2RlUmVzb2x1dGlvbi5hdHRyKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGlzSW52b2tlID8gQVNUdjIuU1RSSUNUX1JFU09MVVRJT04gOiBBU1R2Mi5Mb29zZU1vZGVSZXNvbHV0aW9uLmZhbGxiYWNrKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGNvcnJlc3BvbmRzIHRvIGFwcGVuZCBwb3NpdGlvbnMgKHRleHQgY3VybGllcyBvciBhdHRyaWJ1dGVcbiAqIGN1cmxpZXMpLiBJbiBzdHJpY3QgbW9kZSwgdGhpcyBhbHNvIGNvcnJlc3BvbmRzIHRvIGFyZyBjdXJsaWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQXBwZW5kU3ludGF4Q29udGV4dChub2RlOiBBU1R2MS5NdXN0YWNoZVN0YXRlbWVudCk6IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uIHtcbiAgbGV0IGlzU2ltcGxlID0gaXNTaW1wbGVDYWxsZWUobm9kZSk7XG4gIGxldCBpc0ludm9rZSA9IGlzSW52b2tlTm9kZShub2RlKTtcbiAgbGV0IHRydXN0aW5nID0gbm9kZS50cnVzdGluZztcblxuICBpZiAoaXNTaW1wbGUpIHtcbiAgICByZXR1cm4gdHJ1c3RpbmdcbiAgICAgID8gQVNUdjIuTG9vc2VNb2RlUmVzb2x1dGlvbi50cnVzdGluZ0FwcGVuZCh7IGludm9rZTogaXNJbnZva2UgfSlcbiAgICAgIDogQVNUdjIuTG9vc2VNb2RlUmVzb2x1dGlvbi5hcHBlbmQoeyBpbnZva2U6IGlzSW52b2tlIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBBU1R2Mi5Mb29zZU1vZGVSZXNvbHV0aW9uLmZhbGxiYWNrKCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUmVzb2x1dGlvbjxQIGV4dGVuZHMgQXN0Q2FsbFBhcnRzIHwgQVNUdjEuUGF0aEV4cHJlc3Npb24+ID0gKFxuICBjYWxsOiBQXG4pID0+IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uIHwgbnVsbDtcblxuLy8gVVRJTElUSUVTXG5cbi8qKlxuICogQSBjYWxsIG5vZGUgaGFzIGEgc2ltcGxlIGNhbGxlZSBpZiBpdHMgaGVhZCBpczpcbiAqXG4gKiAtIGEgYFBhdGhFeHByZXNzaW9uYFxuICogLSB0aGUgYFBhdGhFeHByZXNzaW9uYCdzIGhlYWQgaXMgYSBgVmFySGVhZGBcbiAqIC0gaXQgaGFzIG5vIHRhaWxcbiAqXG4gKiBTaW1wbGUgaGVhZHM6XG4gKlxuICogYGBgXG4gKiB7e3h9fVxuICoge3t4IHl9fVxuICogYGBgXG4gKlxuICogTm90IHNpbXBsZSBoZWFkczpcbiAqXG4gKiBgYGBcbiAqIHt7eC55fX1cbiAqIHt7eC55IHp9fVxuICoge3tAeH19XG4gKiB7e0B4IGF9fVxuICoge3t0aGlzfX1cbiAqIHt7dGhpcyBhfX1cbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc1NpbXBsZUNhbGxlZShub2RlOiBBc3RDYWxsUGFydHMpOiBib29sZWFuIHtcbiAgbGV0IHBhdGggPSBub2RlLnBhdGg7XG5cbiAgcmV0dXJuIGlzU2ltcGxlUGF0aChwYXRoKTtcbn1cblxuZnVuY3Rpb24gaXNTaW1wbGVQYXRoKG5vZGU6IEFTVHYxLkV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ1BhdGhFeHByZXNzaW9uJyAmJiBub2RlLmhlYWQudHlwZSA9PT0gJ1ZhckhlYWQnKSB7XG4gICAgcmV0dXJuIG5vZGUudGFpbC5sZW5ndGggPT09IDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGNhbGwgZXhwcmVzc2lvbiBoYXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiBpc0ludm9rZU5vZGUobm9kZTogQXN0Q2FsbFBhcnRzKTogYm9vbGVhbiB7XG4gIHJldHVybiBub2RlLnBhcmFtcy5sZW5ndGggPiAwIHx8IG5vZGUuaGFzaC5wYWlycy5sZW5ndGggPiAwO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
|