babel-plugin-ember-template-compilation
Version:
Babel implementation of Ember's low-level template-compilation API
21 lines • 2.93 kB
JavaScript
export function astNodeHasBinding(target, name) {
let cursor = target;
while (cursor) {
let parentNode = cursor.parent?.node;
if (parentNode?.type === 'ElementNode' &&
parentNode.blockParams.includes(name) &&
// an ElementNode's block params are valid only within its children
parentNode.children.includes(cursor.node)) {
return true;
}
if (parentNode?.type === 'Block' &&
parentNode.blockParams.includes(name) &&
// a Block's blockParams are valid only within its body
parentNode.body.includes(cursor.node)) {
return true;
}
cursor = cursor.parent;
}
return false;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGJzLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hicy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBOEIsRUFBRSxJQUFZO0lBQzVFLElBQUksTUFBTSxHQUFrQyxNQUFNLENBQUM7SUFDbkQsT0FBTyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQ3JDLElBQ0UsVUFBVSxFQUFFLElBQUksS0FBSyxhQUFhO1lBQ2xDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNyQyxtRUFBbUU7WUFDbkUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQXVCLENBQUMsRUFDNUQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQ0UsVUFBVSxFQUFFLElBQUksS0FBSyxPQUFPO1lBQzVCLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNyQyx1REFBdUQ7WUFDdkQsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQXVCLENBQUMsRUFDeEQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFTVHYxLCBXYWxrZXJQYXRoIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzdE5vZGVIYXNCaW5kaW5nKHRhcmdldDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBjdXJzb3I6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsID0gdGFyZ2V0O1xuICB3aGlsZSAoY3Vyc29yKSB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBjdXJzb3IucGFyZW50Py5ub2RlO1xuICAgIGlmIChcbiAgICAgIHBhcmVudE5vZGU/LnR5cGUgPT09ICdFbGVtZW50Tm9kZScgJiZcbiAgICAgIHBhcmVudE5vZGUuYmxvY2tQYXJhbXMuaW5jbHVkZXMobmFtZSkgJiZcbiAgICAgIC8vIGFuIEVsZW1lbnROb2RlJ3MgYmxvY2sgcGFyYW1zIGFyZSB2YWxpZCBvbmx5IHdpdGhpbiBpdHMgY2hpbGRyZW5cbiAgICAgIHBhcmVudE5vZGUuY2hpbGRyZW4uaW5jbHVkZXMoY3Vyc29yLm5vZGUgYXMgQVNUdjEuU3RhdGVtZW50KVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0Jsb2NrJyAmJlxuICAgICAgcGFyZW50Tm9kZS5ibG9ja1BhcmFtcy5pbmNsdWRlcyhuYW1lKSAmJlxuICAgICAgLy8gYSBCbG9jaydzIGJsb2NrUGFyYW1zIGFyZSB2YWxpZCBvbmx5IHdpdGhpbiBpdHMgYm9keVxuICAgICAgcGFyZW50Tm9kZS5ib2R5LmluY2x1ZGVzKGN1cnNvci5ub2RlIGFzIEFTVHYxLlN0YXRlbWVudClcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGN1cnNvciA9IGN1cnNvci5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19