@lwc/template-compiler 2.5.10-alpha1 → 2.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/codegen/formatters/function.js +2 -2
- package/dist/commonjs/codegen/formatters/function.js.map +1 -1
- package/dist/commonjs/codegen/formatters/module.js +3 -3
- package/dist/commonjs/codegen/formatters/module.js.map +1 -1
- package/dist/commonjs/codegen/helpers.js +5 -5
- package/dist/commonjs/codegen/helpers.js.map +1 -1
- package/dist/commonjs/codegen/index.js +43 -43
- package/dist/commonjs/codegen/index.js.map +1 -1
- package/dist/commonjs/codegen/scope.js +3 -3
- package/dist/commonjs/codegen/scope.js.map +1 -1
- package/dist/commonjs/config.js +2 -2
- package/dist/commonjs/config.js.map +1 -1
- package/dist/commonjs/index.js +10 -10
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/parser/attribute.js +7 -7
- package/dist/commonjs/parser/attribute.js.map +1 -1
- package/dist/commonjs/parser/expression.js +6 -6
- package/dist/commonjs/parser/expression.js.map +1 -1
- package/dist/commonjs/parser/html.js +17 -1
- package/dist/commonjs/parser/html.js.map +1 -1
- package/dist/commonjs/parser/index.js +51 -51
- package/dist/commonjs/parser/index.js.map +1 -1
- package/dist/commonjs/parser/parse5Errors.js +77 -0
- package/dist/commonjs/parser/parse5Errors.js.map +1 -0
- package/dist/commonjs/parser/parser.js +3 -3
- package/dist/commonjs/parser/parser.js.map +1 -1
- package/dist/types/parser/parse5Errors.d.ts +2 -0
- package/package.json +4 -4
- package/dist/commonjs/parser/style.js +0 -41
- package/dist/commonjs/parser/style.js.map +0 -1
- package/dist/types/parser/style.d.ts +0 -8
|
@@ -44,7 +44,7 @@ function isFragmentOnlyUrl(url) {
|
|
|
44
44
|
exports.isFragmentOnlyUrl = isFragmentOnlyUrl;
|
|
45
45
|
function normalizeAttributeValue(ctx, raw, tag, attr, location) {
|
|
46
46
|
const { name, value } = attr;
|
|
47
|
-
if (shared_1.isBooleanAttribute(name, tag)) {
|
|
47
|
+
if ((0, shared_1.isBooleanAttribute)(name, tag)) {
|
|
48
48
|
if (value === 'true') {
|
|
49
49
|
ctx.throwAtLocation(errors_1.ParserDiagnostics.BOOLEAN_ATTRIBUTE_TRUE, location, [
|
|
50
50
|
tag,
|
|
@@ -62,7 +62,7 @@ function normalizeAttributeValue(ctx, raw, tag, attr, location) {
|
|
|
62
62
|
}
|
|
63
63
|
const isQuoted = isQuotedAttribute(raw);
|
|
64
64
|
const isEscaped = isEscapedAttribute(raw);
|
|
65
|
-
if (!isEscaped && expression_1.isExpression(value)) {
|
|
65
|
+
if (!isEscaped && (0, expression_1.isExpression)(value)) {
|
|
66
66
|
if (isQuoted) {
|
|
67
67
|
// <input value="{myValue}" />
|
|
68
68
|
// -> ambiguity if the attribute value is a template identifier or a string literal.
|
|
@@ -78,7 +78,7 @@ function normalizeAttributeValue(ctx, raw, tag, attr, location) {
|
|
|
78
78
|
// -> Valid identifier.
|
|
79
79
|
return { value, escapedExpression: false };
|
|
80
80
|
}
|
|
81
|
-
else if (!isEscaped && expression_1.isPotentialExpression(value)) {
|
|
81
|
+
else if (!isEscaped && (0, expression_1.isPotentialExpression)(value)) {
|
|
82
82
|
const isExpressionEscaped = value.startsWith(`\\${expression_1.EXPRESSION_SYMBOL_START}`);
|
|
83
83
|
const isExpressionNextToSelfClosing = value.startsWith(expression_1.EXPRESSION_SYMBOL_START) &&
|
|
84
84
|
value.endsWith(`${expression_1.EXPRESSION_SYMBOL_END}/`) &&
|
|
@@ -126,7 +126,7 @@ function isValidTabIndexAttributeValue(value) {
|
|
|
126
126
|
}
|
|
127
127
|
exports.isValidTabIndexAttributeValue = isValidTabIndexAttributeValue;
|
|
128
128
|
function isAriaOrDataOrFmkAttribute(attrName) {
|
|
129
|
-
return shared_1.isAriaAttribute(attrName) || isFmkAttribute(attrName) || isDataAttribute(attrName);
|
|
129
|
+
return (0, shared_1.isAriaAttribute)(attrName) || isFmkAttribute(attrName) || isDataAttribute(attrName);
|
|
130
130
|
}
|
|
131
131
|
exports.isAriaOrDataOrFmkAttribute = isAriaOrDataOrFmkAttribute;
|
|
132
132
|
function isDataAttribute(attrName) {
|
|
@@ -136,7 +136,7 @@ function isFmkAttribute(attrName) {
|
|
|
136
136
|
return attrName === 'key' || attrName === 'slot';
|
|
137
137
|
}
|
|
138
138
|
function isAttribute(element, attrName) {
|
|
139
|
-
if (ir_1.isCustomElement(element)) {
|
|
139
|
+
if ((0, ir_1.isCustomElement)(element)) {
|
|
140
140
|
return (attrName === 'style' ||
|
|
141
141
|
attrName === 'class' ||
|
|
142
142
|
attrName === 'key' ||
|
|
@@ -154,7 +154,7 @@ function isAttribute(element, attrName) {
|
|
|
154
154
|
}
|
|
155
155
|
exports.isAttribute = isAttribute;
|
|
156
156
|
function isValidHTMLAttribute(tagName, attrName) {
|
|
157
|
-
if (shared_1.isGlobalHtmlAttribute(attrName) ||
|
|
157
|
+
if ((0, shared_1.isGlobalHtmlAttribute)(attrName) ||
|
|
158
158
|
isAriaOrDataOrFmkAttribute(attrName) ||
|
|
159
159
|
isTemplateDirective(attrName) ||
|
|
160
160
|
constants_1.SUPPORTED_SVG_TAGS.has(tagName) ||
|
|
@@ -175,7 +175,7 @@ function isTemplateDirective(attrName) {
|
|
|
175
175
|
* Convert attribute name from kebab case to camel case property name
|
|
176
176
|
*/
|
|
177
177
|
function attributeToPropertyName(attrName) {
|
|
178
|
-
return constants_1.ATTRS_PROPS_TRANFORMS[attrName] || utils_1.toPropertyName(attrName);
|
|
178
|
+
return constants_1.ATTRS_PROPS_TRANFORMS[attrName] || (0, utils_1.toPropertyName)(attrName);
|
|
179
179
|
}
|
|
180
180
|
exports.attributeToPropertyName = attributeToPropertyName;
|
|
181
181
|
class ParsedAttribute {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../../src/parser/attribute.ts"],"names":[],"mappings":";;;AAOA,wCAAgD;AAChD,wCAAyF;AAEzF,2CAAiD;AAEjD,6CAKsB;AAItB,2CAaqB;AAErB,qCAA+C;AAG/C,SAAS,iBAAiB,CAAC,YAAoB;IAC3C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,wBAAwB,CAAC,QAAgB;IACrD,OAAO,yCAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAFD,4DAEC;AAED,qEAAqE;AACrE,uBAAuB;AACvB,SAAgB,0BAA0B,CACtC,OAAe,EACf,QAAgB,EAChB,YAAoB;IAEpB,MAAM,OAAO,GAAG,CAAC,oBAAQ,CAAC,CAAC,EAAE,oBAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CACH,QAAQ,KAAK,qBAAS,CAAC,IAAI;QAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzB,YAAY,KAAK,8BAAkB,CACtC,CAAC;AACN,CAAC;AAXD,gEAWC;AAED,mEAAmE;AACnE,uCAAuC;AACvC,SAAgB,YAAY,CAAC,OAAe,EAAE,QAAgB,EAAE,YAAoB;IAChF,OAAO;IACH,4EAA4E;IAC5E,CAAC,qBAAS,CAAC,IAAI,EAAE,qBAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzD,OAAO,KAAK,oBAAQ,CAAC,GAAG;QACxB,YAAY,KAAK,6BAAiB,CACrC,CAAC;AACN,CAAC;AAPD,oCAOC;AAED,SAAgB,iBAAiB,CAAC,GAAW;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAFD,8CAEC;AAED,SAAgB,uBAAuB,CACnC,GAAc,EACd,GAAW,EACX,GAAW,EACX,IAAsB,EACtB,QAAyB;IAKzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC7B,IAAI,2BAAkB,
|
|
1
|
+
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../../src/parser/attribute.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,9 +45,9 @@ function isPotentialExpression(source) {
|
|
|
45
45
|
exports.isPotentialExpression = isPotentialExpression;
|
|
46
46
|
function validateExpression(node, config) {
|
|
47
47
|
const isValidNode = t.isIdentifier(node) || t.isMemberExpression(node);
|
|
48
|
-
errors_1.invariant(isValidNode, errors_1.ParserDiagnostics.INVALID_NODE, [node.type]);
|
|
48
|
+
(0, errors_1.invariant)(isValidNode, errors_1.ParserDiagnostics.INVALID_NODE, [node.type]);
|
|
49
49
|
if (t.isMemberExpression(node)) {
|
|
50
|
-
errors_1.invariant(config.experimentalComputedMemberExpression || !node.computed, errors_1.ParserDiagnostics.COMPUTED_PROPERTY_ACCESS_NOT_ALLOWED);
|
|
50
|
+
(0, errors_1.invariant)(config.experimentalComputedMemberExpression || !node.computed, errors_1.ParserDiagnostics.COMPUTED_PROPERTY_ACCESS_NOT_ALLOWED);
|
|
51
51
|
const { object, property } = node;
|
|
52
52
|
if (!t.isIdentifier(object)) {
|
|
53
53
|
validateExpression(object, config);
|
|
@@ -77,19 +77,19 @@ function validateSourceIsParsedExpression(source, parsedExpression) {
|
|
|
77
77
|
// acorn parseExpressionAt will stop at the first ";", it may be that the expression is not
|
|
78
78
|
// a multiple expression ({foo;}), but this is a case that we explicitly do not want to support.
|
|
79
79
|
// in such case, let's fail with the same error as if it were a multiple expression.
|
|
80
|
-
errors_1.invariant(false, errors_1.ParserDiagnostics.MULTIPLE_EXPRESSIONS);
|
|
80
|
+
(0, errors_1.invariant)(false, errors_1.ParserDiagnostics.MULTIPLE_EXPRESSIONS);
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
|
-
errors_1.invariant(WHITESPACES_RE.test(character), errors_1.ParserDiagnostics.TEMPLATE_EXPRESSION_PARSING_ERROR, ['Unexpected end of expression']);
|
|
83
|
+
(0, errors_1.invariant)(WHITESPACES_RE.test(character), errors_1.ParserDiagnostics.TEMPLATE_EXPRESSION_PARSING_ERROR, ['Unexpected end of expression']);
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
errors_1.invariant(unclosedParenthesisCount === 0, errors_1.ParserDiagnostics.TEMPLATE_EXPRESSION_PARSING_ERROR, [
|
|
86
|
+
(0, errors_1.invariant)(unclosedParenthesisCount === 0, errors_1.ParserDiagnostics.TEMPLATE_EXPRESSION_PARSING_ERROR, [
|
|
87
87
|
'Unexpected end of expression',
|
|
88
88
|
]);
|
|
89
89
|
}
|
|
90
90
|
function parseExpression(ctx, source, location) {
|
|
91
91
|
return ctx.withErrorWrapping(() => {
|
|
92
|
-
const parsed = acorn_1.parseExpressionAt(source, 1, { ecmaVersion: 2020 });
|
|
92
|
+
const parsed = (0, acorn_1.parseExpressionAt)(source, 1, { ecmaVersion: 2020 });
|
|
93
93
|
validateSourceIsParsedExpression(source, parsed);
|
|
94
94
|
validateExpression(parsed, ctx.config);
|
|
95
95
|
return parsed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/parser/expression.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,iDAAmC;AACnC,iCAAgD;AAEhD,wCAA2D;AAE3D,oDAAsC;AAOzB,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAC9B,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AACrC,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAC7C,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,SAAgB,YAAY,CAAC,MAAc;IACvC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC/C,CAAC;AAFD,oCAEC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAChD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAFD,sDAEC;AAED,SAAS,kBAAkB,CACvB,IAAgB,EAChB,MAAsB;IAEtB,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAS,
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/parser/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,10 +29,26 @@ exports.decodeTextContent = exports.cleanTextNode = exports.parseHTML = void 0;
|
|
|
29
29
|
const parse5 = __importStar(require("parse5"));
|
|
30
30
|
const he = __importStar(require("he"));
|
|
31
31
|
const errors_1 = require("@lwc/errors");
|
|
32
|
+
const parse5Errors_1 = require("./parse5Errors");
|
|
33
|
+
function getLwcErrorFromParse5Error(code) {
|
|
34
|
+
if (parse5Errors_1.errorCodesToErrorOn.has(code)) {
|
|
35
|
+
return errors_1.ParserDiagnostics.INVALID_HTML_SYNTAX;
|
|
36
|
+
}
|
|
37
|
+
if (parse5Errors_1.errorCodesToWarnOn.has(code)) {
|
|
38
|
+
return errors_1.ParserDiagnostics.INVALID_HTML_SYNTAX_WARNING;
|
|
39
|
+
}
|
|
40
|
+
// It should be impossible to reach here; we have a test in parser.spec.ts to ensure
|
|
41
|
+
// all error codes are accounted for. But just to be safe, make it a warning.
|
|
42
|
+
// TODO [#2650]: better system for handling unexpected parse5 errors
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.warn('Found a Parse5 error that we do not know how to handle:', code);
|
|
45
|
+
return errors_1.ParserDiagnostics.INVALID_HTML_SYNTAX_WARNING;
|
|
46
|
+
}
|
|
32
47
|
function parseHTML(ctx, source) {
|
|
33
48
|
const onParseError = (err) => {
|
|
34
49
|
const { code, ...location } = err;
|
|
35
|
-
|
|
50
|
+
const lwcError = getLwcErrorFromParse5Error(code);
|
|
51
|
+
ctx.warnAtLocation(lwcError, location, [code]);
|
|
36
52
|
};
|
|
37
53
|
return parse5.parseFragment(source, {
|
|
38
54
|
sourceCodeLocationInfo: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/parser/html.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,+CAAiC;AACjC,uCAAyB;AAEzB,wCAAgD;
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/parser/html.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,+CAAiC;AACjC,uCAAyB;AAEzB,wCAAgD;AAGhD,iDAAyE;AAEzE,SAAS,0BAA0B,CAAC,IAAY;IAC5C,IAAI,kCAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,OAAO,0BAAiB,CAAC,mBAAmB,CAAC;KAChD;IACD,IAAI,iCAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,0BAAiB,CAAC,2BAA2B,CAAC;KACxD;IACD,oFAAoF;IACpF,6EAA6E;IAC7E,oEAAoE;IACpE,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,IAAI,CAAC,CAAC;IAC9E,OAAO,0BAAiB,CAAC,2BAA2B,CAAC;AACzD,CAAC;AAED,SAAgB,SAAS,CAAC,GAAc,EAAE,MAAc;IACpD,MAAM,YAAY,GAAG,CAAC,GAAwB,EAAE,EAAE;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC;QAElC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAClD,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;QAChC,sBAAsB,EAAE,IAAI;QAC5B,YAAY;KACf,CAAC,CAAC;AACP,CAAC;AAZD,8BAYC;AAED,wHAAwH;AACxH,SAAgB,aAAa,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC1B,gBAAgB,GAAG,CAAC,CAAC;SACxB;KACJ;IAED,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAG,CAAC,KAAK,gBAAgB,CAAC;QAElD,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,WAAW,EAAE;YACd,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,UAAU,EAAE;YACb,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,kBAAkB,EAAE;gBACrB,WAAW,IAAI,GAAG,CAAC;aACtB;YAED,GAAG,IAAI,WAAW,CAAC;SACtB;KACJ;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AApCD,sCAoCC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC5C,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAFD,8CAEC"}
|
|
@@ -59,8 +59,8 @@ function attributeExpressionReferencesForEachIndex(attribute, forEach) {
|
|
|
59
59
|
}
|
|
60
60
|
function parse(source, state) {
|
|
61
61
|
const ctx = new parser_1.default(source, state.config);
|
|
62
|
-
const fragment = html_1.parseHTML(ctx, source);
|
|
63
|
-
if (ctx.warnings.
|
|
62
|
+
const fragment = (0, html_1.parseHTML)(ctx, source);
|
|
63
|
+
if (ctx.warnings.some((_) => _.level === errors_1.DiagnosticLevel.Error)) {
|
|
64
64
|
return { warnings: ctx.warnings };
|
|
65
65
|
}
|
|
66
66
|
const root = ctx.withErrorRecovery(() => {
|
|
@@ -72,7 +72,7 @@ function parse(source, state) {
|
|
|
72
72
|
exports.default = parse;
|
|
73
73
|
function parseElement(ctx, parse5Elm, parentIRElement) {
|
|
74
74
|
const location = parseElementLocation(ctx, parse5Elm, parentIRElement);
|
|
75
|
-
const element = ir_1.createElement(parse5Elm, location);
|
|
75
|
+
const element = (0, ir_1.createElement)(parse5Elm, location);
|
|
76
76
|
const parsedAttr = parseAttributes(ctx, element, parse5Elm);
|
|
77
77
|
applyForEach(ctx, element, parsedAttr);
|
|
78
78
|
applyIterator(ctx, element, parsedAttr);
|
|
@@ -148,7 +148,7 @@ function parseText(ctx, parse5Text) {
|
|
|
148
148
|
throw new Error(`An internal parsing error occurred during node creation; a text node was found without a sourceCodeLocation.`);
|
|
149
149
|
}
|
|
150
150
|
// Extract the raw source to avoid HTML entity decoding done by parse5
|
|
151
|
-
const rawText = html_1.cleanTextNode(ctx.getSource(location.startOffset, location.endOffset));
|
|
151
|
+
const rawText = (0, html_1.cleanTextNode)(ctx.getSource(location.startOffset, location.endOffset));
|
|
152
152
|
if (!rawText.trim().length) {
|
|
153
153
|
return parsedTextNodes;
|
|
154
154
|
}
|
|
@@ -160,13 +160,13 @@ function parseText(ctx, parse5Text) {
|
|
|
160
160
|
continue;
|
|
161
161
|
}
|
|
162
162
|
let value;
|
|
163
|
-
if (expression_1.isExpression(token)) {
|
|
164
|
-
value = expression_1.parseExpression(ctx, token, location);
|
|
163
|
+
if ((0, expression_1.isExpression)(token)) {
|
|
164
|
+
value = (0, expression_1.parseExpression)(ctx, token, location);
|
|
165
165
|
}
|
|
166
166
|
else {
|
|
167
|
-
value = html_1.decodeTextContent(token);
|
|
167
|
+
value = (0, html_1.decodeTextContent)(token);
|
|
168
168
|
}
|
|
169
|
-
parsedTextNodes.push(ir_1.createText(value, location));
|
|
169
|
+
parsedTextNodes.push((0, ir_1.createText)(value, location));
|
|
170
170
|
}
|
|
171
171
|
return parsedTextNodes;
|
|
172
172
|
}
|
|
@@ -178,7 +178,7 @@ function parseComment(parse5Comment) {
|
|
|
178
178
|
// This is a defensive check as this should never happen for CommentNode.
|
|
179
179
|
throw new Error(`An internal parsing error occurred during node creation; a comment node was found without a sourceCodeLocation.`);
|
|
180
180
|
}
|
|
181
|
-
return ir_1.createComment(html_1.decodeTextContent(parse5Comment.data), location);
|
|
181
|
+
return (0, ir_1.createComment)((0, html_1.decodeTextContent)(parse5Comment.data), location);
|
|
182
182
|
}
|
|
183
183
|
function getTemplateRoot(ctx, documentFragment) {
|
|
184
184
|
// Filter all the empty text nodes
|
|
@@ -198,7 +198,7 @@ function applyHandlers(ctx, element, parsedAttr) {
|
|
|
198
198
|
let eventHandlerAttribute;
|
|
199
199
|
while ((eventHandlerAttribute = parsedAttr.pick(constants_1.EVENT_HANDLER_RE))) {
|
|
200
200
|
const { name } = eventHandlerAttribute;
|
|
201
|
-
if (!ir_1.isIRExpressionAttribute(eventHandlerAttribute)) {
|
|
201
|
+
if (!(0, ir_1.isIRExpressionAttribute)(eventHandlerAttribute)) {
|
|
202
202
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.EVENT_HANDLER_SHOULD_BE_EXPRESSION, eventHandlerAttribute);
|
|
203
203
|
}
|
|
204
204
|
if (!name.match(constants_1.EVENT_HANDLER_NAME_RE)) {
|
|
@@ -221,7 +221,7 @@ function applyIf(ctx, element, parsedAttr) {
|
|
|
221
221
|
if (!ifAttribute) {
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
|
-
if (!ir_1.isIRExpressionAttribute(ifAttribute)) {
|
|
224
|
+
if (!(0, ir_1.isIRExpressionAttribute)(ifAttribute)) {
|
|
225
225
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.IF_DIRECTIVE_SHOULD_BE_EXPRESSION, ifAttribute);
|
|
226
226
|
}
|
|
227
227
|
const [, modifier] = ifAttribute.name.split(':');
|
|
@@ -256,7 +256,7 @@ function applyLwcRenderModeDirective(ctx, element, parsedAttr, lwcOpts) {
|
|
|
256
256
|
if (!lwcRenderModeAttribute) {
|
|
257
257
|
return;
|
|
258
258
|
}
|
|
259
|
-
if (!ir_1.isIRStringAttribute(lwcRenderModeAttribute) ||
|
|
259
|
+
if (!(0, ir_1.isIRStringAttribute)(lwcRenderModeAttribute) ||
|
|
260
260
|
(lwcRenderModeAttribute.value !== 'shadow' && lwcRenderModeAttribute.value !== 'light')) {
|
|
261
261
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.LWC_RENDER_MODE_INVALID_VALUE, element);
|
|
262
262
|
}
|
|
@@ -279,7 +279,7 @@ function applyLwcPreserveCommentsDirective(ctx, element, parsedAttr, lwcOpts) {
|
|
|
279
279
|
`<${element.tag}>`,
|
|
280
280
|
]);
|
|
281
281
|
}
|
|
282
|
-
else if (!ir_1.isIRBooleanAttribute(lwcPreserveCommentAttribute)) {
|
|
282
|
+
else if (!(0, ir_1.isIRBooleanAttribute)(lwcPreserveCommentAttribute)) {
|
|
283
283
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.PRESERVE_COMMENTS_MUST_BE_BOOLEAN, element);
|
|
284
284
|
}
|
|
285
285
|
lwcOpts.preserveComments = lwcPreserveCommentAttribute;
|
|
@@ -289,7 +289,7 @@ function applyLwcInnerHtmlDirective(ctx, element, parsedAttr, lwcOpts) {
|
|
|
289
289
|
if (!lwcInnerHtmlDirective) {
|
|
290
290
|
return;
|
|
291
291
|
}
|
|
292
|
-
if (ir_1.isCustomElement(element)) {
|
|
292
|
+
if ((0, ir_1.isCustomElement)(element)) {
|
|
293
293
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.LWC_INNER_HTML_INVALID_CUSTOM_ELEMENT, element, [
|
|
294
294
|
`<${element.tag}>`,
|
|
295
295
|
]);
|
|
@@ -315,12 +315,12 @@ function applyLwcDynamicDirective(ctx, element, parsedAttr, lwcOpts) {
|
|
|
315
315
|
if (!ctx.config.experimentalDynamicDirective) {
|
|
316
316
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.INVALID_OPTS_LWC_DYNAMIC, element);
|
|
317
317
|
}
|
|
318
|
-
if (!ir_1.isCustomElement(element)) {
|
|
318
|
+
if (!(0, ir_1.isCustomElement)(element)) {
|
|
319
319
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.INVALID_LWC_DYNAMIC_ON_NATIVE_ELEMENT, element, [
|
|
320
320
|
`<${tag}>`,
|
|
321
321
|
]);
|
|
322
322
|
}
|
|
323
|
-
if (!ir_1.isIRExpressionAttribute(lwcDynamicAttribute)) {
|
|
323
|
+
if (!(0, ir_1.isIRExpressionAttribute)(lwcDynamicAttribute)) {
|
|
324
324
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.INVALID_LWC_DYNAMIC_LITERAL_PROP, element, [
|
|
325
325
|
`<${tag}>`,
|
|
326
326
|
]);
|
|
@@ -336,13 +336,13 @@ function applyLwcDomDirective(ctx, element, parsedAttr, lwcOpts) {
|
|
|
336
336
|
if (ctx.getRenderMode(element) === types_1.LWCDirectiveRenderMode.light) {
|
|
337
337
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.LWC_DOM_INVALID_IN_LIGHT_DOM, element, [`<${tag}>`]);
|
|
338
338
|
}
|
|
339
|
-
if (ir_1.isCustomElement(element)) {
|
|
339
|
+
if ((0, ir_1.isCustomElement)(element)) {
|
|
340
340
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.LWC_DOM_INVALID_CUSTOM_ELEMENT, element, [`<${tag}>`]);
|
|
341
341
|
}
|
|
342
342
|
if (tag === 'slot') {
|
|
343
343
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.LWC_DOM_INVALID_SLOT_ELEMENT, element);
|
|
344
344
|
}
|
|
345
|
-
if (!ir_1.isIRStringAttribute(lwcDomAttribute) ||
|
|
345
|
+
if (!(0, ir_1.isIRStringAttribute)(lwcDomAttribute) ||
|
|
346
346
|
shared_1.hasOwnProperty.call(types_1.LWCDirectiveDomMode, lwcDomAttribute.value) === false) {
|
|
347
347
|
const possibleValues = Object.keys(types_1.LWCDirectiveDomMode)
|
|
348
348
|
.map((value) => `"${value}"`)
|
|
@@ -356,19 +356,19 @@ function applyForEach(ctx, element, parsedAttr) {
|
|
|
356
356
|
const forItemAttribute = parsedAttr.pick(constants_1.FOR_DIRECTIVES.FOR_ITEM);
|
|
357
357
|
const forIndex = parsedAttr.pick(constants_1.FOR_DIRECTIVES.FOR_INDEX);
|
|
358
358
|
if (forEachAttribute && forItemAttribute) {
|
|
359
|
-
if (!ir_1.isIRExpressionAttribute(forEachAttribute)) {
|
|
359
|
+
if (!(0, ir_1.isIRExpressionAttribute)(forEachAttribute)) {
|
|
360
360
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.FOR_EACH_DIRECTIVE_SHOULD_BE_EXPRESSION, forEachAttribute);
|
|
361
361
|
}
|
|
362
|
-
if (!ir_1.isIRStringAttribute(forItemAttribute)) {
|
|
362
|
+
if (!(0, ir_1.isIRStringAttribute)(forItemAttribute)) {
|
|
363
363
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.FOR_ITEM_DIRECTIVE_SHOULD_BE_STRING, forItemAttribute);
|
|
364
364
|
}
|
|
365
|
-
const item = expression_1.parseIdentifier(ctx, forItemAttribute.value, forItemAttribute.location);
|
|
365
|
+
const item = (0, expression_1.parseIdentifier)(ctx, forItemAttribute.value, forItemAttribute.location);
|
|
366
366
|
let index;
|
|
367
367
|
if (forIndex) {
|
|
368
|
-
if (!ir_1.isIRStringAttribute(forIndex)) {
|
|
368
|
+
if (!(0, ir_1.isIRStringAttribute)(forIndex)) {
|
|
369
369
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.FOR_INDEX_DIRECTIVE_SHOULD_BE_STRING, forIndex);
|
|
370
370
|
}
|
|
371
|
-
index = expression_1.parseIdentifier(ctx, forIndex.value, forIndex.location);
|
|
371
|
+
index = (0, expression_1.parseIdentifier)(ctx, forIndex.value, forIndex.location);
|
|
372
372
|
}
|
|
373
373
|
element.forEach = {
|
|
374
374
|
expression: forEachAttribute.value,
|
|
@@ -392,12 +392,12 @@ function applyIterator(ctx, element, parsedAttr) {
|
|
|
392
392
|
}
|
|
393
393
|
const iteratorAttributeName = iteratorExpression.name;
|
|
394
394
|
const [, iteratorName] = iteratorAttributeName.split(':');
|
|
395
|
-
if (!ir_1.isIRExpressionAttribute(iteratorExpression)) {
|
|
395
|
+
if (!(0, ir_1.isIRExpressionAttribute)(iteratorExpression)) {
|
|
396
396
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.DIRECTIVE_SHOULD_BE_EXPRESSION, iteratorExpression, [
|
|
397
397
|
iteratorExpression.name,
|
|
398
398
|
]);
|
|
399
399
|
}
|
|
400
|
-
const iterator = expression_1.parseIdentifier(ctx, iteratorName, iteratorExpression.location);
|
|
400
|
+
const iterator = (0, expression_1.parseIdentifier)(ctx, iteratorName, iteratorExpression.location);
|
|
401
401
|
element.forOf = {
|
|
402
402
|
expression: iteratorExpression.value,
|
|
403
403
|
iterator,
|
|
@@ -407,7 +407,7 @@ function applyKey(ctx, element, parsedAttr) {
|
|
|
407
407
|
const { tag } = element;
|
|
408
408
|
const keyAttribute = parsedAttr.pick('key');
|
|
409
409
|
if (keyAttribute) {
|
|
410
|
-
if (!ir_1.isIRExpressionAttribute(keyAttribute)) {
|
|
410
|
+
if (!(0, ir_1.isIRExpressionAttribute)(keyAttribute)) {
|
|
411
411
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.KEY_ATTRIBUTE_SHOULD_BE_EXPRESSION, keyAttribute);
|
|
412
412
|
}
|
|
413
413
|
const forOfParent = getForOfParent(ctx);
|
|
@@ -425,7 +425,7 @@ function applyKey(ctx, element, parsedAttr) {
|
|
|
425
425
|
}
|
|
426
426
|
element.forKey = keyAttribute.value;
|
|
427
427
|
}
|
|
428
|
-
else if (isInIteratorElement(ctx, element) && !ir_1.isTemplate(element)) {
|
|
428
|
+
else if (isInIteratorElement(ctx, element) && !(0, ir_1.isTemplate)(element)) {
|
|
429
429
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.MISSING_KEY_IN_ITERATOR, element, [tag]);
|
|
430
430
|
}
|
|
431
431
|
}
|
|
@@ -462,10 +462,10 @@ function applySlot(ctx, element, parsedAttr) {
|
|
|
462
462
|
let name = '';
|
|
463
463
|
const nameAttribute = parsedAttr.get('name');
|
|
464
464
|
if (nameAttribute) {
|
|
465
|
-
if (ir_1.isIRExpressionAttribute(nameAttribute)) {
|
|
465
|
+
if ((0, ir_1.isIRExpressionAttribute)(nameAttribute)) {
|
|
466
466
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.NAME_ON_SLOT_CANNOT_BE_EXPRESSION, nameAttribute);
|
|
467
467
|
}
|
|
468
|
-
else if (ir_1.isIRStringAttribute(nameAttribute)) {
|
|
468
|
+
else if ((0, ir_1.isIRStringAttribute)(nameAttribute)) {
|
|
469
469
|
name = nameAttribute.value;
|
|
470
470
|
}
|
|
471
471
|
}
|
|
@@ -488,7 +488,7 @@ function applyAttributes(ctx, element, parsedAttr) {
|
|
|
488
488
|
const attributes = parsedAttr.getAttributes();
|
|
489
489
|
for (const attr of attributes) {
|
|
490
490
|
const { name } = attr;
|
|
491
|
-
if (!attribute_1.isValidHTMLAttribute(tag, name)) {
|
|
491
|
+
if (!(0, attribute_1.isValidHTMLAttribute)(tag, name)) {
|
|
492
492
|
ctx.warnOnIRNode(errors_1.ParserDiagnostics.INVALID_HTML_ATTRIBUTE, attr, [name, tag]);
|
|
493
493
|
}
|
|
494
494
|
if (name.match(/[^a-z0-9]$/)) {
|
|
@@ -502,7 +502,7 @@ function applyAttributes(ctx, element, parsedAttr) {
|
|
|
502
502
|
if (name.match(/_[^a-z0-9]|[^a-z0-9]_/)) {
|
|
503
503
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.ATTRIBUTE_NAME_CANNOT_COMBINE_UNDERSCORE_WITH_SPECIAL_CHARS, attr, [name, tag]);
|
|
504
504
|
}
|
|
505
|
-
if (ir_1.isIRStringAttribute(attr)) {
|
|
505
|
+
if ((0, ir_1.isIRStringAttribute)(attr)) {
|
|
506
506
|
if (name === 'id') {
|
|
507
507
|
const { value } = attr;
|
|
508
508
|
if (/\s+/.test(value)) {
|
|
@@ -520,19 +520,19 @@ function applyAttributes(ctx, element, parsedAttr) {
|
|
|
520
520
|
}
|
|
521
521
|
}
|
|
522
522
|
// Prevent usage of the slot attribute with expression.
|
|
523
|
-
if (name === 'slot' && ir_1.isIRExpressionAttribute(attr)) {
|
|
523
|
+
if (name === 'slot' && (0, ir_1.isIRExpressionAttribute)(attr)) {
|
|
524
524
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.SLOT_ATTRIBUTE_CANNOT_BE_EXPRESSION, attr);
|
|
525
525
|
}
|
|
526
526
|
// the if branch handles
|
|
527
527
|
// 1. All attributes for standard elements except 1 case are handled as attributes
|
|
528
528
|
// 2. For custom elements, only key, slot and data are handled as attributes, rest as properties
|
|
529
|
-
if (attribute_1.isAttribute(element, name)) {
|
|
529
|
+
if ((0, attribute_1.isAttribute)(element, name)) {
|
|
530
530
|
const attrs = element.attrs || (element.attrs = {});
|
|
531
531
|
attrs[name] = attr;
|
|
532
532
|
}
|
|
533
533
|
else {
|
|
534
534
|
const props = element.props || (element.props = {});
|
|
535
|
-
props[attribute_1.attributeToPropertyName(name)] = attr;
|
|
535
|
+
props[(0, attribute_1.attributeToPropertyName)(name)] = attr;
|
|
536
536
|
parsedAttr.pick(name);
|
|
537
537
|
}
|
|
538
538
|
}
|
|
@@ -541,7 +541,7 @@ function validateElement(ctx, element, node) {
|
|
|
541
541
|
const { tag, namespace, location } = element;
|
|
542
542
|
const isRoot = ctx.parentStack.length === 0;
|
|
543
543
|
if (isRoot) {
|
|
544
|
-
if (!ir_1.isTemplate(element)) {
|
|
544
|
+
if (!(0, ir_1.isTemplate)(element)) {
|
|
545
545
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.ROOT_TAG_SHOULD_BE_TEMPLATE, element, [tag]);
|
|
546
546
|
}
|
|
547
547
|
const rootHasUnknownAttributes = node.attrs.some(({ name }) => !constants_1.ROOT_TEMPLATE_DIRECTIVES_SET.has(name));
|
|
@@ -561,7 +561,7 @@ function validateElement(ctx, element, node) {
|
|
|
561
561
|
if (tag === 'style' && namespace === constants_1.HTML_NAMESPACE_URI) {
|
|
562
562
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.STYLE_TAG_NOT_ALLOWED_IN_TEMPLATE, element);
|
|
563
563
|
}
|
|
564
|
-
else if (ir_1.isTemplate(element)) {
|
|
564
|
+
else if ((0, ir_1.isTemplate)(element)) {
|
|
565
565
|
// We check if the template element has some modifier applied to it. Directly checking if one of the
|
|
566
566
|
// IRElement property is impossible. For example when an error occurs during the parsing of the if
|
|
567
567
|
// expression, the `element.if` property remains undefined. It would results in 2 warnings instead of 1:
|
|
@@ -596,7 +596,7 @@ function validateElement(ctx, element, node) {
|
|
|
596
596
|
tag,
|
|
597
597
|
]);
|
|
598
598
|
}
|
|
599
|
-
const isKnownTag = ir_1.isCustomElement(element) ||
|
|
599
|
+
const isKnownTag = (0, ir_1.isCustomElement)(element) ||
|
|
600
600
|
constants_1.KNOWN_HTML_ELEMENTS.has(tag) ||
|
|
601
601
|
constants_1.SUPPORTED_SVG_TAGS.has(tag) ||
|
|
602
602
|
constants_1.DASHED_TAGNAME_ELEMENT_SET.has(tag);
|
|
@@ -625,11 +625,11 @@ function validateAttributes(ctx, element, parsedAttr) {
|
|
|
625
625
|
const attributes = parsedAttr.getAttributes();
|
|
626
626
|
for (const attr of attributes) {
|
|
627
627
|
const { name: attrName } = attr;
|
|
628
|
-
if (attribute_1.isProhibitedIsAttribute(attrName)) {
|
|
628
|
+
if ((0, attribute_1.isProhibitedIsAttribute)(attrName)) {
|
|
629
629
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.IS_ATTRIBUTE_NOT_SUPPORTED, element);
|
|
630
630
|
}
|
|
631
|
-
if (attribute_1.isTabIndexAttribute(attrName)) {
|
|
632
|
-
if (!ir_1.isIRExpressionAttribute(attr) && !attribute_1.isValidTabIndexAttributeValue(attr.value)) {
|
|
631
|
+
if ((0, attribute_1.isTabIndexAttribute)(attrName)) {
|
|
632
|
+
if (!(0, ir_1.isIRExpressionAttribute)(attr) && !(0, attribute_1.isValidTabIndexAttributeValue)(attr.value)) {
|
|
633
633
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.INVALID_TABINDEX_ATTRIBUTE, element);
|
|
634
634
|
}
|
|
635
635
|
}
|
|
@@ -647,12 +647,12 @@ function validateProperties(ctx, element) {
|
|
|
647
647
|
for (const propName in props) {
|
|
648
648
|
const propAttr = props[propName];
|
|
649
649
|
const { name: attrName, value } = propAttr;
|
|
650
|
-
if (attribute_1.isProhibitedIsAttribute(attrName)) {
|
|
650
|
+
if ((0, attribute_1.isProhibitedIsAttribute)(attrName)) {
|
|
651
651
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.IS_ATTRIBUTE_NOT_SUPPORTED, element);
|
|
652
652
|
}
|
|
653
|
-
if (attribute_1.isTabIndexAttribute(attrName) &&
|
|
654
|
-
!ir_1.isIRExpressionAttribute(propAttr) &&
|
|
655
|
-
!attribute_1.isValidTabIndexAttributeValue(value)) {
|
|
653
|
+
if ((0, attribute_1.isTabIndexAttribute)(attrName) &&
|
|
654
|
+
!(0, ir_1.isIRExpressionAttribute)(propAttr) &&
|
|
655
|
+
!(0, attribute_1.isValidTabIndexAttributeValue)(value)) {
|
|
656
656
|
ctx.throwOnIRNode(errors_1.ParserDiagnostics.INVALID_TABINDEX_ATTRIBUTE, element);
|
|
657
657
|
}
|
|
658
658
|
}
|
|
@@ -667,7 +667,7 @@ function parseAttributes(ctx, element, node) {
|
|
|
667
667
|
return parsedAttrs;
|
|
668
668
|
}
|
|
669
669
|
function getTemplateAttribute(ctx, element, attribute) {
|
|
670
|
-
const name = attribute_1.attributeName(attribute);
|
|
670
|
+
const name = (0, attribute_1.attributeName)(attribute);
|
|
671
671
|
// Convert attribute name to lowercase because the location map keys follow the algorithm defined in the spec
|
|
672
672
|
// https://wicg.github.io/controls-list/html-output/multipage/syntax.html#attribute-name-state
|
|
673
673
|
const location = element.location.attrs[name.toLowerCase()];
|
|
@@ -682,13 +682,13 @@ function getTemplateAttribute(ctx, element, attribute) {
|
|
|
682
682
|
]);
|
|
683
683
|
}
|
|
684
684
|
const isBooleanAttribute = !rawAttribute.includes('=');
|
|
685
|
-
const { value, escapedExpression } = attribute_1.normalizeAttributeValue(ctx, rawAttribute, tag, attribute, location);
|
|
686
|
-
if (expression_1.isExpression(value) && !escapedExpression) {
|
|
685
|
+
const { value, escapedExpression } = (0, attribute_1.normalizeAttributeValue)(ctx, rawAttribute, tag, attribute, location);
|
|
686
|
+
if ((0, expression_1.isExpression)(value) && !escapedExpression) {
|
|
687
687
|
return {
|
|
688
688
|
name,
|
|
689
689
|
location,
|
|
690
690
|
type: types_1.IRAttributeType.Expression,
|
|
691
|
-
value: expression_1.parseExpression(ctx, value, location),
|
|
691
|
+
value: (0, expression_1.parseExpression)(ctx, value, location),
|
|
692
692
|
};
|
|
693
693
|
}
|
|
694
694
|
else if (isBooleanAttribute) {
|
|
@@ -710,21 +710,21 @@ function getTemplateAttribute(ctx, element, attribute) {
|
|
|
710
710
|
}
|
|
711
711
|
function isInIteration(ctx, element) {
|
|
712
712
|
return ctx.findAncestor({
|
|
713
|
-
predicate: (element) => ir_1.isTemplate(element) && (element.forOf || element.forEach),
|
|
713
|
+
predicate: (element) => (0, ir_1.isTemplate)(element) && (element.forOf || element.forEach),
|
|
714
714
|
element,
|
|
715
715
|
});
|
|
716
716
|
}
|
|
717
717
|
function getForOfParent(ctx) {
|
|
718
718
|
return ctx.findAncestor({
|
|
719
719
|
predicate: (element) => element.forOf,
|
|
720
|
-
traversalCond: ({ current }) => ir_1.isTemplate(current),
|
|
720
|
+
traversalCond: ({ current }) => (0, ir_1.isTemplate)(current),
|
|
721
721
|
});
|
|
722
722
|
}
|
|
723
723
|
function getForEachParent(ctx, element) {
|
|
724
724
|
return ctx.findAncestor({
|
|
725
725
|
element,
|
|
726
726
|
predicate: (element) => element.forEach,
|
|
727
|
-
traversalCond: ({ parent }) => parent && ir_1.isTemplate(parent),
|
|
727
|
+
traversalCond: ({ parent }) => parent && (0, ir_1.isTemplate)(parent),
|
|
728
728
|
});
|
|
729
729
|
}
|
|
730
730
|
function isInIteratorElement(ctx, element) {
|