@lwc/template-compiler 2.45.2 → 2.45.3
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/README.md +2 -2
- package/dist/index.cjs.js +5313 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/{types/index.d.ts → index.d.ts} +1 -0
- package/dist/index.js +5286 -0
- package/dist/index.js.map +1 -0
- package/package.json +33 -30
- package/dist/commonjs/codegen/codegen.js +0 -330
- package/dist/commonjs/codegen/codegen.js.map +0 -1
- package/dist/commonjs/codegen/expression.js +0 -176
- package/dist/commonjs/codegen/expression.js.map +0 -1
- package/dist/commonjs/codegen/formatters/module.js +0 -91
- package/dist/commonjs/codegen/formatters/module.js.map +0 -1
- package/dist/commonjs/codegen/helpers.js +0 -233
- package/dist/commonjs/codegen/helpers.js.map +0 -1
- package/dist/commonjs/codegen/index.js +0 -549
- package/dist/commonjs/codegen/index.js.map +0 -1
- package/dist/commonjs/codegen/optimize.js +0 -119
- package/dist/commonjs/codegen/optimize.js.map +0 -1
- package/dist/commonjs/codegen/static-element-serializer.js +0 -122
- package/dist/commonjs/codegen/static-element-serializer.js.map +0 -1
- package/dist/commonjs/config.js +0 -78
- package/dist/commonjs/config.js.map +0 -1
- package/dist/commonjs/index.js +0 -66
- package/dist/commonjs/index.js.map +0 -1
- package/dist/commonjs/parser/attribute.js +0 -237
- package/dist/commonjs/parser/attribute.js.map +0 -1
- package/dist/commonjs/parser/constants.js +0 -155
- package/dist/commonjs/parser/constants.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/html.js +0 -222
- package/dist/commonjs/parser/expression-complex/html.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/index.js +0 -26
- package/dist/commonjs/parser/expression-complex/index.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/types.js +0 -9
- package/dist/commonjs/parser/expression-complex/types.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/validate.js +0 -141
- package/dist/commonjs/parser/expression-complex/validate.js.map +0 -1
- package/dist/commonjs/parser/expression.js +0 -130
- package/dist/commonjs/parser/expression.js.map +0 -1
- package/dist/commonjs/parser/html.js +0 -112
- package/dist/commonjs/parser/html.js.map +0 -1
- package/dist/commonjs/parser/index.js +0 -1181
- package/dist/commonjs/parser/index.js.map +0 -1
- package/dist/commonjs/parser/parse5Errors.js +0 -77
- package/dist/commonjs/parser/parse5Errors.js.map +0 -1
- package/dist/commonjs/parser/parser.js +0 -309
- package/dist/commonjs/parser/parser.js.map +0 -1
- package/dist/commonjs/parser/utils/html-element-attributes.js +0 -411
- package/dist/commonjs/parser/utils/html-element-attributes.js.map +0 -1
- package/dist/commonjs/parser/utils/html-elements.js +0 -141
- package/dist/commonjs/parser/utils/html-elements.js.map +0 -1
- package/dist/commonjs/parser/utils/javascript.js +0 -25
- package/dist/commonjs/parser/utils/javascript.js.map +0 -1
- package/dist/commonjs/parser/utils/svg-elements.js +0 -42
- package/dist/commonjs/parser/utils/svg-elements.js.map +0 -1
- package/dist/commonjs/shared/ast.js +0 -496
- package/dist/commonjs/shared/ast.js.map +0 -1
- package/dist/commonjs/shared/constants.js +0 -33
- package/dist/commonjs/shared/constants.js.map +0 -1
- package/dist/commonjs/shared/estree.js +0 -325
- package/dist/commonjs/shared/estree.js.map +0 -1
- package/dist/commonjs/shared/naming.js +0 -32
- package/dist/commonjs/shared/naming.js.map +0 -1
- package/dist/commonjs/shared/parse5.js +0 -20
- package/dist/commonjs/shared/parse5.js.map +0 -1
- package/dist/commonjs/shared/renderer-hooks.js +0 -55
- package/dist/commonjs/shared/renderer-hooks.js.map +0 -1
- package/dist/commonjs/shared/types.js +0 -49
- package/dist/commonjs/shared/types.js.map +0 -1
- package/dist/commonjs/shared/utils.js +0 -45
- package/dist/commonjs/shared/utils.js.map +0 -1
- package/dist/commonjs/state.js +0 -24
- package/dist/commonjs/state.js.map +0 -1
- /package/dist/{types/codegen → codegen}/codegen.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/expression.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/formatters/module.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/helpers.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/index.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/optimize.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/static-element-serializer.d.ts +0 -0
- /package/dist/{types/config.d.ts → config.d.ts} +0 -0
- /package/dist/{types/parser → parser}/attribute.d.ts +0 -0
- /package/dist/{types/parser → parser}/constants.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/html.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/index.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/types.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/validate.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression.d.ts +0 -0
- /package/dist/{types/parser → parser}/html.d.ts +0 -0
- /package/dist/{types/parser → parser}/index.d.ts +0 -0
- /package/dist/{types/parser → parser}/parse5Errors.d.ts +0 -0
- /package/dist/{types/parser → parser}/parser.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/html-element-attributes.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/html-elements.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/javascript.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/svg-elements.d.ts +0 -0
- /package/dist/{types/shared → shared}/ast.d.ts +0 -0
- /package/dist/{types/shared → shared}/constants.d.ts +0 -0
- /package/dist/{types/shared → shared}/estree.d.ts +0 -0
- /package/dist/{types/shared → shared}/naming.d.ts +0 -0
- /package/dist/{types/shared → shared}/parse5.d.ts +0 -0
- /package/dist/{types/shared → shared}/renderer-hooks.d.ts +0 -0
- /package/dist/{types/shared → shared}/types.d.ts +0 -0
- /package/dist/{types/shared → shared}/utils.d.ts +0 -0
- /package/dist/{types/state.d.ts → state.d.ts} +0 -0
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.optimizeStaticExpressions = void 0;
|
|
27
|
-
/*
|
|
28
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
|
29
|
-
* All rights reserved.
|
|
30
|
-
* SPDX-License-Identifier: MIT
|
|
31
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
32
|
-
*/
|
|
33
|
-
const astring = __importStar(require("astring"));
|
|
34
|
-
const estree_walker_1 = require("estree-walker");
|
|
35
|
-
const t = __importStar(require("../shared/estree"));
|
|
36
|
-
/**
|
|
37
|
-
* Given a template function, extract all static objects/arrays (e.g. `{ key : 1 }`)
|
|
38
|
-
* and return them as a list of `const` declarations. Also return the modified function
|
|
39
|
-
* that is now referencing those declarations.
|
|
40
|
-
*
|
|
41
|
-
* Example input:
|
|
42
|
-
*
|
|
43
|
-
* ```
|
|
44
|
-
* function tmpl() {
|
|
45
|
-
* return {
|
|
46
|
-
* foo: dynamic(),
|
|
47
|
-
* bar: { static: true },
|
|
48
|
-
* baz: { really: { static: ['yep', 'totally', 'static' ] } }
|
|
49
|
-
* };
|
|
50
|
-
* }
|
|
51
|
-
* ```
|
|
52
|
-
*
|
|
53
|
-
* Example output:
|
|
54
|
-
*
|
|
55
|
-
* ```
|
|
56
|
-
* const stc0 = { static: true };
|
|
57
|
-
* const stc1 = { really: { static: ['yep', 'totally', 'static' ] } };
|
|
58
|
-
* function tmpl() {
|
|
59
|
-
* return {
|
|
60
|
-
* foo: dynamic(),
|
|
61
|
-
* bar: stc0,
|
|
62
|
-
* baz: stc1
|
|
63
|
-
* };
|
|
64
|
-
* }
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
function optimizeStaticExpressions(templateFn) {
|
|
68
|
-
const result = [];
|
|
69
|
-
const keysToVariableNames = new Map();
|
|
70
|
-
// Return true if this node is an object/array that is fully static
|
|
71
|
-
function isStaticObjectOrArray(node) {
|
|
72
|
-
if (t.isObjectExpression(node)) {
|
|
73
|
-
return node.properties.every((prop) => {
|
|
74
|
-
return (t.isProperty(prop) &&
|
|
75
|
-
!prop.computed &&
|
|
76
|
-
!prop.method &&
|
|
77
|
-
!prop.shorthand &&
|
|
78
|
-
(t.isLiteral(prop.value) || isStaticObjectOrArray(prop.value)));
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else if (t.isArrayExpression(node)) {
|
|
82
|
-
return node.elements.every((element) => {
|
|
83
|
-
return element !== null && (t.isLiteral(element) || isStaticObjectOrArray(element));
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
function extractStaticVariable(node) {
|
|
89
|
-
// This key generation can probably be improved using a hash code, but stringification is
|
|
90
|
-
// simplest for finding a unique identifier for an object/array expression
|
|
91
|
-
const key = astring.generate(node);
|
|
92
|
-
// Check for duplicates to avoid re-declaring the same object/array multiple times
|
|
93
|
-
// Especially for the empty array (`[]`), which is very common in templates
|
|
94
|
-
if (!keysToVariableNames.has(key)) {
|
|
95
|
-
const variableName = `stc${keysToVariableNames.size}`;
|
|
96
|
-
// e.g. `const stc0 = { /* original object */ };
|
|
97
|
-
const declaration = t.variableDeclaration('const', [
|
|
98
|
-
t.variableDeclarator(t.identifier(variableName), node),
|
|
99
|
-
]);
|
|
100
|
-
result.push(declaration);
|
|
101
|
-
keysToVariableNames.set(key, variableName);
|
|
102
|
-
}
|
|
103
|
-
return t.identifier(keysToVariableNames.get(key));
|
|
104
|
-
}
|
|
105
|
-
(0, estree_walker_1.walk)(templateFn, {
|
|
106
|
-
enter(node) {
|
|
107
|
-
// For deeply-nested static object, we only want to extract the top-level node
|
|
108
|
-
if (isStaticObjectOrArray(node)) {
|
|
109
|
-
const newNode = extractStaticVariable(node);
|
|
110
|
-
this.replace(newNode);
|
|
111
|
-
this.skip();
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
});
|
|
115
|
-
result.push(templateFn);
|
|
116
|
-
return result;
|
|
117
|
-
}
|
|
118
|
-
exports.optimizeStaticExpressions = optimizeStaticExpressions;
|
|
119
|
-
//# sourceMappingURL=optimize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optimize.js","sourceRoot":"","sources":["../../../src/codegen/optimize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,iDAAmC;AACnC,iDAAqC;AACrC,oDAAsC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,yBAAyB,CACrC,UAAiC;IAEjC,MAAM,MAAM,GAAyD,EAAE,CAAC;IACxE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;IAEtC,mEAAmE;IACnE,SAAS,qBAAqB,CAC1B,IAAgB;QAEhB,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,OAAO,CACH,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;oBAClB,CAAC,IAAI,CAAC,QAAQ;oBACd,CAAC,IAAI,CAAC,MAAM;oBACZ,CAAC,IAAI,CAAC,SAAS;oBACf,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACjE,CAAC;YACN,CAAC,CAAC,CAAC;SACN;aAAM,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE;gBACnC,OAAO,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;SACN;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS,qBAAqB,CAAC,IAA4C;QACvE,yFAAyF;QACzF,0EAA0E;QAC1E,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEnC,kFAAkF;QAClF,2EAA2E;QAC3E,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC;YACtD,gDAAgD;YAChD,MAAM,WAAW,GAAG,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC/C,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;aACzD,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzB,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;SAC9C;QAED,OAAO,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAA,oBAAI,EAAC,UAAU,EAAE;QACb,KAAK,CAAC,IAAI;YACN,8EAA8E;YAC9E,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE;gBAC7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC;AAClB,CAAC;AA9DD,8DA8DC"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serializeStaticElement = void 0;
|
|
4
|
-
/*
|
|
5
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
|
6
|
-
* All rights reserved.
|
|
7
|
-
* SPDX-License-Identifier: MIT
|
|
8
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
9
|
-
*/
|
|
10
|
-
const shared_1 = require("@lwc/shared");
|
|
11
|
-
const ast_1 = require("../shared/ast");
|
|
12
|
-
// Implementation based on the parse5 serializer: https://github.com/inikulin/parse5/blob/master/packages/parse5/lib/serializer/index.ts
|
|
13
|
-
// Text nodes child of these tags should not be escaped (https://html.spec.whatwg.org/#serialising-html-fragments).
|
|
14
|
-
const rawContentElements = new Set([
|
|
15
|
-
'STYLE',
|
|
16
|
-
'SCRIPT',
|
|
17
|
-
'XMP',
|
|
18
|
-
'IFRAME',
|
|
19
|
-
'NOEMBED',
|
|
20
|
-
'NOFRAMES',
|
|
21
|
-
'PLAINTEXT',
|
|
22
|
-
]);
|
|
23
|
-
/**
|
|
24
|
-
* Escape all the characters that could break a JavaScript template string literal: "`" (backtick),
|
|
25
|
-
* "${" (dollar + open curly) and "\" (backslash).
|
|
26
|
-
*/
|
|
27
|
-
function templateStringEscape(str) {
|
|
28
|
-
return str.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '\\${');
|
|
29
|
-
}
|
|
30
|
-
function serializeAttrs(element) {
|
|
31
|
-
/**
|
|
32
|
-
* 0: styleToken in existing class attr
|
|
33
|
-
* 1: styleToken for added class attr
|
|
34
|
-
* 2: styleToken as attr
|
|
35
|
-
*/
|
|
36
|
-
const attrs = [];
|
|
37
|
-
let hasClassAttr = false;
|
|
38
|
-
const collector = ({ name, value }) => {
|
|
39
|
-
let v = typeof value === 'string' ? templateStringEscape(value) : value;
|
|
40
|
-
if (name === 'class') {
|
|
41
|
-
hasClassAttr = true;
|
|
42
|
-
v += '${0}';
|
|
43
|
-
}
|
|
44
|
-
if (typeof v === 'string') {
|
|
45
|
-
attrs.push(`${name}="${(0, shared_1.htmlEscape)(v, true)}"`);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
attrs.push(name);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
element.attributes
|
|
52
|
-
.map((attr) => {
|
|
53
|
-
return {
|
|
54
|
-
name: attr.name,
|
|
55
|
-
value: attr.value.value,
|
|
56
|
-
};
|
|
57
|
-
})
|
|
58
|
-
.forEach(collector);
|
|
59
|
-
// This is tightly coupled with the logic in the parser that decides when an attribute should be
|
|
60
|
-
// a property: https://github.com/salesforce/lwc/blob/master/packages/%40lwc/template-compiler/src/parser/attribute.ts#L198-L218
|
|
61
|
-
// Because a component can't be a static element, we only look in the property bag on value and checked attribute
|
|
62
|
-
// from the input.
|
|
63
|
-
element.properties
|
|
64
|
-
.map((prop) => {
|
|
65
|
-
return {
|
|
66
|
-
name: prop.attributeName,
|
|
67
|
-
value: prop.value.value,
|
|
68
|
-
};
|
|
69
|
-
})
|
|
70
|
-
.forEach(collector);
|
|
71
|
-
return (attrs.length > 0 ? ' ' : '') + attrs.join(' ') + (hasClassAttr ? '${2}' : '${3}');
|
|
72
|
-
}
|
|
73
|
-
function serializeChildren(children, parentTagName, preserveComments) {
|
|
74
|
-
let html = '';
|
|
75
|
-
children.forEach((child) => {
|
|
76
|
-
/* istanbul ignore else */
|
|
77
|
-
if ((0, ast_1.isElement)(child)) {
|
|
78
|
-
html += serializeStaticElement(child, preserveComments);
|
|
79
|
-
}
|
|
80
|
-
else if ((0, ast_1.isText)(child)) {
|
|
81
|
-
html += serializeTextNode(child, rawContentElements.has(parentTagName.toUpperCase()));
|
|
82
|
-
}
|
|
83
|
-
else if ((0, ast_1.isComment)(child)) {
|
|
84
|
-
html += serializeCommentNode(child, preserveComments);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
throw new TypeError('Unknown node found while serializing static content. Allowed nodes types are: Element, Text and Comment.');
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
return html;
|
|
91
|
-
}
|
|
92
|
-
function serializeCommentNode(comment, preserveComment) {
|
|
93
|
-
return preserveComment ? `<!--${(0, shared_1.htmlEscape)(templateStringEscape(comment.value))}-->` : '';
|
|
94
|
-
}
|
|
95
|
-
function serializeTextNode(text, useRawContent) {
|
|
96
|
-
let content;
|
|
97
|
-
if (useRawContent) {
|
|
98
|
-
content = text.raw;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
content = (0, shared_1.htmlEscape)(text.value.value);
|
|
102
|
-
}
|
|
103
|
-
return templateStringEscape(content);
|
|
104
|
-
}
|
|
105
|
-
function serializeStaticElement(element, preserveComments) {
|
|
106
|
-
const { name: tagName, namespace } = element;
|
|
107
|
-
const isForeignElement = namespace !== shared_1.HTML_NAMESPACE;
|
|
108
|
-
const hasChildren = element.children.length > 0;
|
|
109
|
-
let html = `<${tagName}${serializeAttrs(element)}`;
|
|
110
|
-
if (isForeignElement && !hasChildren) {
|
|
111
|
-
html += '/>';
|
|
112
|
-
return html;
|
|
113
|
-
}
|
|
114
|
-
html += '>';
|
|
115
|
-
html += serializeChildren(element.children, tagName, preserveComments);
|
|
116
|
-
if (!(0, shared_1.isVoidElement)(tagName, namespace) || hasChildren) {
|
|
117
|
-
html += `</${tagName}>`;
|
|
118
|
-
}
|
|
119
|
-
return html;
|
|
120
|
-
}
|
|
121
|
-
exports.serializeStaticElement = serializeStaticElement;
|
|
122
|
-
//# sourceMappingURL=static-element-serializer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static-element-serializer.js","sourceRoot":"","sources":["../../../src/codegen/static-element-serializer.ts"],"names":[],"mappings":"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"}
|
package/dist/commonjs/config.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.normalizeConfig = void 0;
|
|
4
|
-
/*
|
|
5
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
|
6
|
-
* All rights reserved.
|
|
7
|
-
* SPDX-License-Identifier: MIT
|
|
8
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
9
|
-
*/
|
|
10
|
-
const errors_1 = require("@lwc/errors");
|
|
11
|
-
const shared_1 = require("@lwc/shared");
|
|
12
|
-
const utils_1 = require("./shared/utils");
|
|
13
|
-
const AVAILABLE_OPTION_NAMES = new Set([
|
|
14
|
-
'customRendererConfig',
|
|
15
|
-
'enableLwcSpread',
|
|
16
|
-
'enableStaticContentOptimization',
|
|
17
|
-
// TODO [#3370]: remove experimental template expression flag
|
|
18
|
-
'experimentalComplexExpressions',
|
|
19
|
-
'experimentalComputedMemberExpression',
|
|
20
|
-
'experimentalDynamicDirective',
|
|
21
|
-
'enableDynamicComponents',
|
|
22
|
-
'preserveHtmlComments',
|
|
23
|
-
]);
|
|
24
|
-
function normalizeCustomRendererConfig(config) {
|
|
25
|
-
const tagNames = [];
|
|
26
|
-
const normalizedConfig = {
|
|
27
|
-
elements: config.elements.map((e) => {
|
|
28
|
-
var _a, _b;
|
|
29
|
-
const tagName = e.tagName.toLowerCase();
|
|
30
|
-
// Custom element cannot be allowed to have a custom renderer hook
|
|
31
|
-
// The renderer is cascaded down from the owner(custom element) to all its child nodes who
|
|
32
|
-
// do not have a renderer specified.
|
|
33
|
-
(0, errors_1.invariant)(!(0, utils_1.isCustomElementTag)(tagName), errors_1.TemplateErrors.CUSTOM_ELEMENT_TAG_DISALLOWED, [
|
|
34
|
-
e.tagName,
|
|
35
|
-
]);
|
|
36
|
-
tagNames.push(tagName);
|
|
37
|
-
return {
|
|
38
|
-
tagName,
|
|
39
|
-
namespace: (_a = e.namespace) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
|
|
40
|
-
attributes: (_b = e.attributes) === null || _b === void 0 ? void 0 : _b.map((a) => a.toLowerCase()),
|
|
41
|
-
};
|
|
42
|
-
}),
|
|
43
|
-
directives: config.directives.map((d) => d.toLowerCase()),
|
|
44
|
-
};
|
|
45
|
-
// Check for duplicate tag names
|
|
46
|
-
const dupTagNames = tagNames.filter((item, index) => index !== tagNames.indexOf(item));
|
|
47
|
-
(0, errors_1.invariant)(dupTagNames.length == 0, errors_1.TemplateErrors.DUPLICATE_ELEMENT_ENTRY, [
|
|
48
|
-
dupTagNames.join(', '),
|
|
49
|
-
]);
|
|
50
|
-
return normalizedConfig;
|
|
51
|
-
}
|
|
52
|
-
function normalizeConfig(config) {
|
|
53
|
-
(0, errors_1.invariant)(config !== undefined && typeof config === 'object', errors_1.TemplateErrors.OPTIONS_MUST_BE_OBJECT);
|
|
54
|
-
const customRendererConfig = config.customRendererConfig
|
|
55
|
-
? normalizeCustomRendererConfig(config.customRendererConfig)
|
|
56
|
-
: undefined;
|
|
57
|
-
for (const property in config) {
|
|
58
|
-
if (!AVAILABLE_OPTION_NAMES.has(property) && shared_1.hasOwnProperty.call(config, property)) {
|
|
59
|
-
throw (0, errors_1.generateCompilerError)(errors_1.TemplateErrors.UNKNOWN_OPTION_PROPERTY, {
|
|
60
|
-
messageArgs: [property],
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return {
|
|
65
|
-
preserveHtmlComments: false,
|
|
66
|
-
experimentalComputedMemberExpression: false,
|
|
67
|
-
// TODO [#3370]: remove experimental template expression flag
|
|
68
|
-
experimentalComplexExpressions: false,
|
|
69
|
-
experimentalDynamicDirective: false,
|
|
70
|
-
enableDynamicComponents: false,
|
|
71
|
-
enableStaticContentOptimization: true,
|
|
72
|
-
enableLwcSpread: false,
|
|
73
|
-
...config,
|
|
74
|
-
...{ customRendererConfig },
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
exports.normalizeConfig = normalizeConfig;
|
|
78
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,wCAA+E;AAC/E,wCAA6C;AAE7C,0CAAoD;AAkEpD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACnC,sBAAsB;IACtB,iBAAiB;IACjB,iCAAiC;IACjC,6DAA6D;IAC7D,gCAAgC;IAChC,sCAAsC;IACtC,8BAA8B;IAC9B,yBAAyB;IACzB,sBAAsB;CACzB,CAAC,CAAC;AAEH,SAAS,6BAA6B,CAAC,MAA4B;IAC/D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAyB;QAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;YAChC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACxC,kEAAkE;YAClE,0FAA0F;YAC1F,oCAAoC;YACpC,IAAA,kBAAS,EAAC,CAAC,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE,uBAAc,CAAC,6BAA6B,EAAE;gBAClF,CAAC,CAAC,OAAO;aACZ,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;gBACH,OAAO;gBACP,SAAS,EAAE,MAAA,CAAC,CAAC,SAAS,0CAAE,WAAW,EAAE;gBACrC,UAAU,EAAE,MAAA,CAAC,CAAC,UAAU,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACxD,CAAC;QACN,CAAC,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC5D,CAAC;IAEF,gCAAgC;IAChC,MAAM,WAAW,GAAa,QAAQ,CAAC,MAAM,CACzC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CACpD,CAAC;IACF,IAAA,kBAAS,EAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,uBAAc,CAAC,uBAAuB,EAAE;QACvE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;KACzB,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc;IAC1C,IAAA,kBAAS,EACL,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAClD,uBAAc,CAAC,sBAAsB,CACxC,CAAC;IAEF,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB;QACpD,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAC;IAEhB,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE;QAC3B,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;YAChF,MAAM,IAAA,8BAAqB,EAAC,uBAAc,CAAC,uBAAuB,EAAE;gBAChE,WAAW,EAAE,CAAC,QAAQ,CAAC;aAC1B,CAAC,CAAC;SACN;KACJ;IAED,OAAO;QACH,oBAAoB,EAAE,KAAK;QAC3B,oCAAoC,EAAE,KAAK;QAC3C,6DAA6D;QAC7D,8BAA8B,EAAE,KAAK;QACrC,4BAA4B,EAAE,KAAK;QACnC,uBAAuB,EAAE,KAAK;QAC9B,+BAA+B,EAAE,IAAI;QACrC,eAAe,EAAE,KAAK;QACtB,GAAG,MAAM;QACT,GAAG,EAAE,oBAAoB,EAAE;KAC9B,CAAC;AACN,CAAC;AA9BD,0CA8BC"}
|
package/dist/commonjs/index.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.parse = void 0;
|
|
21
|
-
/*
|
|
22
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
|
23
|
-
* All rights reserved.
|
|
24
|
-
* SPDX-License-Identifier: MIT
|
|
25
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
26
|
-
*/
|
|
27
|
-
const errors_1 = require("@lwc/errors");
|
|
28
|
-
const state_1 = __importDefault(require("./state"));
|
|
29
|
-
const config_1 = require("./config");
|
|
30
|
-
const parser_1 = __importDefault(require("./parser"));
|
|
31
|
-
const codegen_1 = __importDefault(require("./codegen"));
|
|
32
|
-
__exportStar(require("./shared/types"), exports);
|
|
33
|
-
function parse(source, config = {}) {
|
|
34
|
-
const options = (0, config_1.normalizeConfig)(config);
|
|
35
|
-
const state = new state_1.default(options);
|
|
36
|
-
return (0, parser_1.default)(source, state);
|
|
37
|
-
}
|
|
38
|
-
exports.parse = parse;
|
|
39
|
-
function compile(source, config) {
|
|
40
|
-
const options = (0, config_1.normalizeConfig)(config);
|
|
41
|
-
const state = new state_1.default(options);
|
|
42
|
-
let code = '';
|
|
43
|
-
let root;
|
|
44
|
-
const warnings = [];
|
|
45
|
-
try {
|
|
46
|
-
const parsingResults = (0, parser_1.default)(source, state);
|
|
47
|
-
warnings.push(...parsingResults.warnings);
|
|
48
|
-
const hasParsingError = parsingResults.warnings.some((warning) => warning.level === errors_1.DiagnosticLevel.Error);
|
|
49
|
-
if (!hasParsingError && parsingResults.root) {
|
|
50
|
-
code = (0, codegen_1.default)(parsingResults.root, state);
|
|
51
|
-
root = parsingResults.root;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
const diagnostic = (0, errors_1.normalizeToDiagnostic)(errors_1.ParserDiagnostics.GENERIC_PARSING_ERROR, error);
|
|
56
|
-
diagnostic.message = `Unexpected compilation error: ${diagnostic.message}`;
|
|
57
|
-
warnings.push(diagnostic);
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
code,
|
|
61
|
-
root,
|
|
62
|
-
warnings,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
exports.default = compile;
|
|
66
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,wCAKqB;AAErB,oDAA4B;AAC5B,qCAAmD;AAEnD,sDAAqC;AACrC,wDAAiC;AAIjC,iDAA+B;AAI/B,SAAgB,KAAK,CAAC,MAAc,EAAE,SAAiB,EAAE;IACrD,MAAM,OAAO,GAAG,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,IAAA,gBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAJD,sBAIC;AAED,SAAwB,OAAO,CAAC,MAAc,EAAE,MAAc;IAC1D,MAAM,OAAO,GAAG,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAsB,CAAC;IAC3B,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,IAAI;QACA,MAAM,cAAc,GAAG,IAAA,gBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,eAAe,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAChD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,wBAAe,CAAC,KAAK,CACvD,CAAC;QAEF,IAAI,CAAC,eAAe,IAAI,cAAc,CAAC,IAAI,EAAE;YACzC,IAAI,GAAG,IAAA,iBAAQ,EAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;SAC9B;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,UAAU,GAAG,IAAA,8BAAqB,EAAC,0BAAiB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QACzF,UAAU,CAAC,OAAO,GAAG,iCAAiC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7B;IAED,OAAO;QACH,IAAI;QACJ,IAAI;QACJ,QAAQ;KACX,CAAC;AACN,CAAC;AA/BD,0BA+BC"}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParsedAttribute = exports.attributeToPropertyName = exports.isValidHTMLAttribute = exports.isAttribute = exports.isAriaOrDataOrFrameworkAttribute = exports.isValidTabIndexAttributeValue = exports.isTabIndexAttribute = exports.isProhibitedIsAttribute = exports.attributeName = exports.normalizeAttributeValue = exports.isFragmentOnlyUrl = exports.isSvgUseHref = exports.isAllowedFragOnlyUrlsXHTML = exports.isIdReferencingAttribute = void 0;
|
|
4
|
-
const errors_1 = require("@lwc/errors");
|
|
5
|
-
const shared_1 = require("@lwc/shared");
|
|
6
|
-
const ast_1 = require("../shared/ast");
|
|
7
|
-
const utils_1 = require("../shared/utils");
|
|
8
|
-
const constants_1 = require("../shared/constants");
|
|
9
|
-
const expression_1 = require("./expression");
|
|
10
|
-
const constants_2 = require("./constants");
|
|
11
|
-
function isQuotedAttribute(attrVal) {
|
|
12
|
-
return attrVal && attrVal.startsWith('"') && attrVal.endsWith('"');
|
|
13
|
-
}
|
|
14
|
-
function isEscapedAttribute(attrVal) {
|
|
15
|
-
return !attrVal || !(attrVal.includes('{') && attrVal.includes('}'));
|
|
16
|
-
}
|
|
17
|
-
function isIdReferencingAttribute(attrName) {
|
|
18
|
-
return shared_1.ID_REFERENCING_ATTRIBUTES_SET.has(attrName);
|
|
19
|
-
}
|
|
20
|
-
exports.isIdReferencingAttribute = isIdReferencingAttribute;
|
|
21
|
-
// http://www.w3.org/1999/xhtml namespace idref elements for which we
|
|
22
|
-
// allow id references.
|
|
23
|
-
function isAllowedFragOnlyUrlsXHTML(tagName, attrName, namespaceURI) {
|
|
24
|
-
const allowed = [constants_2.HTML_TAG.A, constants_2.HTML_TAG.AREA];
|
|
25
|
-
return (attrName === constants_2.ATTR_NAME.HREF && allowed.includes(tagName) && namespaceURI === shared_1.HTML_NAMESPACE);
|
|
26
|
-
}
|
|
27
|
-
exports.isAllowedFragOnlyUrlsXHTML = isAllowedFragOnlyUrlsXHTML;
|
|
28
|
-
// Identifies `href/xlink:href` attributes on `use` elements in the
|
|
29
|
-
// http://www.w3.org/2000/svg namespace
|
|
30
|
-
function isSvgUseHref(tagName, attrName, namespaceURI) {
|
|
31
|
-
return (
|
|
32
|
-
// xlink:href is a deprecated attribute included for backwards compatibility
|
|
33
|
-
[constants_2.ATTR_NAME.HREF, constants_2.ATTR_NAME.XLINK_HREF].includes(attrName) &&
|
|
34
|
-
tagName === constants_2.HTML_TAG.USE &&
|
|
35
|
-
namespaceURI === shared_1.SVG_NAMESPACE);
|
|
36
|
-
}
|
|
37
|
-
exports.isSvgUseHref = isSvgUseHref;
|
|
38
|
-
function isFragmentOnlyUrl(url) {
|
|
39
|
-
return /^#/.test(url);
|
|
40
|
-
}
|
|
41
|
-
exports.isFragmentOnlyUrl = isFragmentOnlyUrl;
|
|
42
|
-
function normalizeAttributeValue(ctx, raw, tag, attr, location) {
|
|
43
|
-
const { name, value } = attr;
|
|
44
|
-
if ((0, shared_1.isBooleanAttribute)(name, tag)) {
|
|
45
|
-
if (value === 'true') {
|
|
46
|
-
ctx.throwAtLocation(errors_1.ParserDiagnostics.BOOLEAN_ATTRIBUTE_TRUE, location, [
|
|
47
|
-
tag,
|
|
48
|
-
name,
|
|
49
|
-
value,
|
|
50
|
-
]);
|
|
51
|
-
}
|
|
52
|
-
else if (value === 'false') {
|
|
53
|
-
ctx.throwAtLocation(errors_1.ParserDiagnostics.BOOLEAN_ATTRIBUTE_FALSE, location, [
|
|
54
|
-
tag,
|
|
55
|
-
name,
|
|
56
|
-
value,
|
|
57
|
-
]);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const rawAttrVal = raw.slice(raw.indexOf('=') + 1);
|
|
61
|
-
const isQuoted = isQuotedAttribute(rawAttrVal);
|
|
62
|
-
const isEscaped = isEscapedAttribute(rawAttrVal);
|
|
63
|
-
if (!isEscaped && (0, expression_1.isExpression)(value)) {
|
|
64
|
-
if (isQuoted) {
|
|
65
|
-
// <input value="{myValue}" />
|
|
66
|
-
// -> ambiguity if the attribute value is a template identifier or a string literal.
|
|
67
|
-
const unquoted = raw.replace(/"/g, '');
|
|
68
|
-
const escaped = raw.replace('"{', '"\\{');
|
|
69
|
-
ctx.throwAtLocation(errors_1.ParserDiagnostics.AMBIGUOUS_ATTRIBUTE_VALUE, location, [
|
|
70
|
-
raw,
|
|
71
|
-
unquoted,
|
|
72
|
-
escaped,
|
|
73
|
-
]);
|
|
74
|
-
}
|
|
75
|
-
// <input value={myValue} />
|
|
76
|
-
// -> Valid identifier.
|
|
77
|
-
return { value, escapedExpression: false };
|
|
78
|
-
}
|
|
79
|
-
else if (!isEscaped && (0, expression_1.isPotentialExpression)(value)) {
|
|
80
|
-
const isExpressionEscaped = value.startsWith(`\\${expression_1.EXPRESSION_SYMBOL_START}`);
|
|
81
|
-
const isExpressionNextToSelfClosing = value.startsWith(expression_1.EXPRESSION_SYMBOL_START) &&
|
|
82
|
-
value.endsWith(`${expression_1.EXPRESSION_SYMBOL_END}/`) &&
|
|
83
|
-
!isQuoted;
|
|
84
|
-
if (isExpressionNextToSelfClosing) {
|
|
85
|
-
// <input value={myValue}/>
|
|
86
|
-
// -> By design the html parser consider the / as the last character of the attribute value.
|
|
87
|
-
// Make sure to remove strip the trailing / for self closing elements.
|
|
88
|
-
return { value: value.slice(0, -1), escapedExpression: false };
|
|
89
|
-
}
|
|
90
|
-
else if (isExpressionEscaped) {
|
|
91
|
-
// <input value="\{myValue}"/>
|
|
92
|
-
// -> Valid escaped string literal
|
|
93
|
-
return { value: value.slice(1), escapedExpression: true };
|
|
94
|
-
}
|
|
95
|
-
let escaped = raw.replace(/="?/, '="\\');
|
|
96
|
-
escaped += escaped.endsWith('"') ? '' : '"';
|
|
97
|
-
// Throw if the attribute value looks like an expression, but it can't be resolved by the compiler.
|
|
98
|
-
ctx.throwAtLocation(errors_1.ParserDiagnostics.AMBIGUOUS_ATTRIBUTE_VALUE_STRING, location, [
|
|
99
|
-
raw,
|
|
100
|
-
escaped,
|
|
101
|
-
]);
|
|
102
|
-
}
|
|
103
|
-
// <input value="myValue"/>
|
|
104
|
-
// -> Valid string literal.
|
|
105
|
-
return { value, escapedExpression: false };
|
|
106
|
-
}
|
|
107
|
-
exports.normalizeAttributeValue = normalizeAttributeValue;
|
|
108
|
-
function attributeName(attr) {
|
|
109
|
-
const { prefix, name } = attr;
|
|
110
|
-
return prefix ? `${prefix}:${name}` : name;
|
|
111
|
-
}
|
|
112
|
-
exports.attributeName = attributeName;
|
|
113
|
-
function isProhibitedIsAttribute(attrName) {
|
|
114
|
-
return attrName === 'is';
|
|
115
|
-
}
|
|
116
|
-
exports.isProhibitedIsAttribute = isProhibitedIsAttribute;
|
|
117
|
-
function isTabIndexAttribute(attrName) {
|
|
118
|
-
return attrName === 'tabindex';
|
|
119
|
-
}
|
|
120
|
-
exports.isTabIndexAttribute = isTabIndexAttribute;
|
|
121
|
-
function isValidTabIndexAttributeValue(value) {
|
|
122
|
-
// object means it is a Node representing the expression
|
|
123
|
-
return value === '0' || value === '-1';
|
|
124
|
-
}
|
|
125
|
-
exports.isValidTabIndexAttributeValue = isValidTabIndexAttributeValue;
|
|
126
|
-
function isAriaOrDataOrFrameworkAttribute(attrName) {
|
|
127
|
-
return (0, shared_1.isAriaAttribute)(attrName) || isFrameworkAttribute(attrName) || isDataAttribute(attrName);
|
|
128
|
-
}
|
|
129
|
-
exports.isAriaOrDataOrFrameworkAttribute = isAriaOrDataOrFrameworkAttribute;
|
|
130
|
-
function isDataAttribute(attrName) {
|
|
131
|
-
return !!attrName.match(constants_2.DATA_RE);
|
|
132
|
-
}
|
|
133
|
-
function isFrameworkAttribute(attrName) {
|
|
134
|
-
// 'key' is currently the only LWC framework-specific attribute that doesn't start with "lwc:"
|
|
135
|
-
return attrName === 'key';
|
|
136
|
-
}
|
|
137
|
-
function isAttribute(element, attrName) {
|
|
138
|
-
// lwc:component will resolve to an LWC custom element at runtime
|
|
139
|
-
if ((0, ast_1.isComponent)(element) || (0, ast_1.isLwcComponent)(element)) {
|
|
140
|
-
return (attrName === 'style' ||
|
|
141
|
-
attrName === 'class' ||
|
|
142
|
-
attrName === 'key' ||
|
|
143
|
-
attrName === 'slot' ||
|
|
144
|
-
// `exportparts` is only valid on a shadow host, and only available as an attribute, not a property
|
|
145
|
-
// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/exportparts
|
|
146
|
-
attrName === 'exportparts' ||
|
|
147
|
-
!!attrName.match(constants_2.DATA_RE));
|
|
148
|
-
}
|
|
149
|
-
// External custom elements default to setting data as attributes. These might be set as
|
|
150
|
-
// properties during runtime, depending on runtime heuristics.
|
|
151
|
-
if ((0, ast_1.isExternalComponent)(element)) {
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
// Handle input tag value="" and checked attributes that are only used for state initialization.
|
|
155
|
-
// Because .setAttribute() won't update the value, those attributes should be considered as props.
|
|
156
|
-
if (element.name === 'input' && (attrName === 'value' || attrName === 'checked')) {
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
// Handle global attrs (common to all tags) and special attribute (role, aria, key, is, data-).
|
|
160
|
-
// Handle general case where only standard element have attribute value.
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
exports.isAttribute = isAttribute;
|
|
164
|
-
function isValidHTMLAttribute(tagName, attrName) {
|
|
165
|
-
if ((0, shared_1.isGlobalHtmlAttribute)(attrName) ||
|
|
166
|
-
isAriaOrDataOrFrameworkAttribute(attrName) ||
|
|
167
|
-
isTemplateDirective(attrName) ||
|
|
168
|
-
constants_2.SUPPORTED_SVG_TAGS.has(tagName) ||
|
|
169
|
-
constants_1.DASHED_TAGNAME_ELEMENT_SET.has(tagName) ||
|
|
170
|
-
!constants_2.KNOWN_HTML_AND_SVG_ELEMENTS.has(tagName)) {
|
|
171
|
-
return true;
|
|
172
|
-
}
|
|
173
|
-
const validElements = constants_2.HTML_ATTRIBUTES_REVERSE_LOOKUP[attrName];
|
|
174
|
-
return !!validElements && (!validElements.length || validElements.includes(tagName));
|
|
175
|
-
}
|
|
176
|
-
exports.isValidHTMLAttribute = isValidHTMLAttribute;
|
|
177
|
-
function isTemplateDirective(attrName) {
|
|
178
|
-
return constants_2.TEMPLATE_DIRECTIVES.some((directive) => {
|
|
179
|
-
return directive.test(attrName);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Convert attribute name from kebab case to camel case property name
|
|
184
|
-
*/
|
|
185
|
-
function attributeToPropertyName(attrName) {
|
|
186
|
-
return constants_2.ATTRS_PROPS_TRANFORMS[attrName] || (0, utils_1.toPropertyName)(attrName);
|
|
187
|
-
}
|
|
188
|
-
exports.attributeToPropertyName = attributeToPropertyName;
|
|
189
|
-
class ParsedAttribute {
|
|
190
|
-
constructor() {
|
|
191
|
-
this.attributes = new Map();
|
|
192
|
-
}
|
|
193
|
-
append(attr) {
|
|
194
|
-
this.attributes.set(attr.name, attr);
|
|
195
|
-
}
|
|
196
|
-
get(pattern) {
|
|
197
|
-
const key = this.getKey(pattern);
|
|
198
|
-
if (key) {
|
|
199
|
-
return this.attributes.get(key);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
getAll(pattern) {
|
|
203
|
-
return this.getKeys(pattern).map((key) => this.attributes.get(key));
|
|
204
|
-
}
|
|
205
|
-
pick(pattern) {
|
|
206
|
-
const attr = this.get(pattern);
|
|
207
|
-
if (attr) {
|
|
208
|
-
this.attributes.delete(attr.name);
|
|
209
|
-
}
|
|
210
|
-
return attr;
|
|
211
|
-
}
|
|
212
|
-
pickAll(pattern) {
|
|
213
|
-
const attrs = this.getAll(pattern);
|
|
214
|
-
for (const attr of attrs) {
|
|
215
|
-
this.attributes.delete(attr.name);
|
|
216
|
-
}
|
|
217
|
-
return attrs;
|
|
218
|
-
}
|
|
219
|
-
getKey(pattern) {
|
|
220
|
-
let match;
|
|
221
|
-
if (typeof pattern === 'string') {
|
|
222
|
-
match = pattern;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
match = Array.from(this.attributes.keys()).find((name) => !!name.match(pattern));
|
|
226
|
-
}
|
|
227
|
-
return match;
|
|
228
|
-
}
|
|
229
|
-
getKeys(pattern) {
|
|
230
|
-
return Array.from(this.attributes.keys()).filter((name) => !!name.match(pattern));
|
|
231
|
-
}
|
|
232
|
-
getAttributes() {
|
|
233
|
-
return Array.from(this.attributes.values());
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
exports.ParsedAttribute = ParsedAttribute;
|
|
237
|
-
//# sourceMappingURL=attribute.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../../src/parser/attribute.ts"],"names":[],"mappings":"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"}
|