@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.
Files changed (105) hide show
  1. package/README.md +2 -2
  2. package/dist/index.cjs.js +5313 -0
  3. package/dist/index.cjs.js.map +1 -0
  4. package/dist/{types/index.d.ts → index.d.ts} +1 -0
  5. package/dist/index.js +5286 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +33 -30
  8. package/dist/commonjs/codegen/codegen.js +0 -330
  9. package/dist/commonjs/codegen/codegen.js.map +0 -1
  10. package/dist/commonjs/codegen/expression.js +0 -176
  11. package/dist/commonjs/codegen/expression.js.map +0 -1
  12. package/dist/commonjs/codegen/formatters/module.js +0 -91
  13. package/dist/commonjs/codegen/formatters/module.js.map +0 -1
  14. package/dist/commonjs/codegen/helpers.js +0 -233
  15. package/dist/commonjs/codegen/helpers.js.map +0 -1
  16. package/dist/commonjs/codegen/index.js +0 -549
  17. package/dist/commonjs/codegen/index.js.map +0 -1
  18. package/dist/commonjs/codegen/optimize.js +0 -119
  19. package/dist/commonjs/codegen/optimize.js.map +0 -1
  20. package/dist/commonjs/codegen/static-element-serializer.js +0 -122
  21. package/dist/commonjs/codegen/static-element-serializer.js.map +0 -1
  22. package/dist/commonjs/config.js +0 -78
  23. package/dist/commonjs/config.js.map +0 -1
  24. package/dist/commonjs/index.js +0 -66
  25. package/dist/commonjs/index.js.map +0 -1
  26. package/dist/commonjs/parser/attribute.js +0 -237
  27. package/dist/commonjs/parser/attribute.js.map +0 -1
  28. package/dist/commonjs/parser/constants.js +0 -155
  29. package/dist/commonjs/parser/constants.js.map +0 -1
  30. package/dist/commonjs/parser/expression-complex/html.js +0 -222
  31. package/dist/commonjs/parser/expression-complex/html.js.map +0 -1
  32. package/dist/commonjs/parser/expression-complex/index.js +0 -26
  33. package/dist/commonjs/parser/expression-complex/index.js.map +0 -1
  34. package/dist/commonjs/parser/expression-complex/types.js +0 -9
  35. package/dist/commonjs/parser/expression-complex/types.js.map +0 -1
  36. package/dist/commonjs/parser/expression-complex/validate.js +0 -141
  37. package/dist/commonjs/parser/expression-complex/validate.js.map +0 -1
  38. package/dist/commonjs/parser/expression.js +0 -130
  39. package/dist/commonjs/parser/expression.js.map +0 -1
  40. package/dist/commonjs/parser/html.js +0 -112
  41. package/dist/commonjs/parser/html.js.map +0 -1
  42. package/dist/commonjs/parser/index.js +0 -1181
  43. package/dist/commonjs/parser/index.js.map +0 -1
  44. package/dist/commonjs/parser/parse5Errors.js +0 -77
  45. package/dist/commonjs/parser/parse5Errors.js.map +0 -1
  46. package/dist/commonjs/parser/parser.js +0 -309
  47. package/dist/commonjs/parser/parser.js.map +0 -1
  48. package/dist/commonjs/parser/utils/html-element-attributes.js +0 -411
  49. package/dist/commonjs/parser/utils/html-element-attributes.js.map +0 -1
  50. package/dist/commonjs/parser/utils/html-elements.js +0 -141
  51. package/dist/commonjs/parser/utils/html-elements.js.map +0 -1
  52. package/dist/commonjs/parser/utils/javascript.js +0 -25
  53. package/dist/commonjs/parser/utils/javascript.js.map +0 -1
  54. package/dist/commonjs/parser/utils/svg-elements.js +0 -42
  55. package/dist/commonjs/parser/utils/svg-elements.js.map +0 -1
  56. package/dist/commonjs/shared/ast.js +0 -496
  57. package/dist/commonjs/shared/ast.js.map +0 -1
  58. package/dist/commonjs/shared/constants.js +0 -33
  59. package/dist/commonjs/shared/constants.js.map +0 -1
  60. package/dist/commonjs/shared/estree.js +0 -325
  61. package/dist/commonjs/shared/estree.js.map +0 -1
  62. package/dist/commonjs/shared/naming.js +0 -32
  63. package/dist/commonjs/shared/naming.js.map +0 -1
  64. package/dist/commonjs/shared/parse5.js +0 -20
  65. package/dist/commonjs/shared/parse5.js.map +0 -1
  66. package/dist/commonjs/shared/renderer-hooks.js +0 -55
  67. package/dist/commonjs/shared/renderer-hooks.js.map +0 -1
  68. package/dist/commonjs/shared/types.js +0 -49
  69. package/dist/commonjs/shared/types.js.map +0 -1
  70. package/dist/commonjs/shared/utils.js +0 -45
  71. package/dist/commonjs/shared/utils.js.map +0 -1
  72. package/dist/commonjs/state.js +0 -24
  73. package/dist/commonjs/state.js.map +0 -1
  74. /package/dist/{types/codegen → codegen}/codegen.d.ts +0 -0
  75. /package/dist/{types/codegen → codegen}/expression.d.ts +0 -0
  76. /package/dist/{types/codegen → codegen}/formatters/module.d.ts +0 -0
  77. /package/dist/{types/codegen → codegen}/helpers.d.ts +0 -0
  78. /package/dist/{types/codegen → codegen}/index.d.ts +0 -0
  79. /package/dist/{types/codegen → codegen}/optimize.d.ts +0 -0
  80. /package/dist/{types/codegen → codegen}/static-element-serializer.d.ts +0 -0
  81. /package/dist/{types/config.d.ts → config.d.ts} +0 -0
  82. /package/dist/{types/parser → parser}/attribute.d.ts +0 -0
  83. /package/dist/{types/parser → parser}/constants.d.ts +0 -0
  84. /package/dist/{types/parser → parser}/expression-complex/html.d.ts +0 -0
  85. /package/dist/{types/parser → parser}/expression-complex/index.d.ts +0 -0
  86. /package/dist/{types/parser → parser}/expression-complex/types.d.ts +0 -0
  87. /package/dist/{types/parser → parser}/expression-complex/validate.d.ts +0 -0
  88. /package/dist/{types/parser → parser}/expression.d.ts +0 -0
  89. /package/dist/{types/parser → parser}/html.d.ts +0 -0
  90. /package/dist/{types/parser → parser}/index.d.ts +0 -0
  91. /package/dist/{types/parser → parser}/parse5Errors.d.ts +0 -0
  92. /package/dist/{types/parser → parser}/parser.d.ts +0 -0
  93. /package/dist/{types/parser → parser}/utils/html-element-attributes.d.ts +0 -0
  94. /package/dist/{types/parser → parser}/utils/html-elements.d.ts +0 -0
  95. /package/dist/{types/parser → parser}/utils/javascript.d.ts +0 -0
  96. /package/dist/{types/parser → parser}/utils/svg-elements.d.ts +0 -0
  97. /package/dist/{types/shared → shared}/ast.d.ts +0 -0
  98. /package/dist/{types/shared → shared}/constants.d.ts +0 -0
  99. /package/dist/{types/shared → shared}/estree.d.ts +0 -0
  100. /package/dist/{types/shared → shared}/naming.d.ts +0 -0
  101. /package/dist/{types/shared → shared}/parse5.d.ts +0 -0
  102. /package/dist/{types/shared → shared}/renderer-hooks.d.ts +0 -0
  103. /package/dist/{types/shared → shared}/types.d.ts +0 -0
  104. /package/dist/{types/shared → shared}/utils.d.ts +0 -0
  105. /package/dist/{types/state.d.ts → state.d.ts} +0 -0
@@ -1,549 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- /*
30
- * Copyright (c) 2018, salesforce.com, inc.
31
- * All rights reserved.
32
- * SPDX-License-Identifier: MIT
33
- * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
34
- */
35
- const astring = __importStar(require("astring"));
36
- const shared_1 = require("@lwc/shared");
37
- const errors_1 = require("@lwc/errors");
38
- const ast_1 = require("../shared/ast");
39
- const constants_1 = require("../shared/constants");
40
- const t = __importStar(require("../shared/estree"));
41
- const attribute_1 = require("../parser/attribute");
42
- const renderer_hooks_1 = require("../shared/renderer-hooks");
43
- const codegen_1 = __importDefault(require("./codegen"));
44
- const helpers_1 = require("./helpers");
45
- const module_1 = require("./formatters/module");
46
- function transform(codeGen) {
47
- function transformElement(element, slotParentName) {
48
- const databag = elementDataBag(element, slotParentName);
49
- let res;
50
- if (codeGen.staticNodes.has(element) && (0, ast_1.isElement)(element)) {
51
- // do not process children of static nodes.
52
- return codeGen.genHoistedElement(element, slotParentName);
53
- }
54
- const children = transformChildren(element);
55
- const { name } = element;
56
- // lwc:dynamic directive
57
- const deprecatedDynamicDirective = element.directives.find(ast_1.isDynamicDirective);
58
- // lwc:is directive
59
- const dynamicDirective = element.directives.find(ast_1.isLwcIsDirective);
60
- if (deprecatedDynamicDirective) {
61
- const expression = codeGen.bindExpression(deprecatedDynamicDirective.value);
62
- res = codeGen.genDeprecatedDynamicElement(name, expression, databag, children);
63
- }
64
- else if (dynamicDirective) {
65
- const expression = codeGen.bindExpression(dynamicDirective.value);
66
- res = codeGen.genDynamicElement(expression, databag, children);
67
- }
68
- else if ((0, ast_1.isComponent)(element)) {
69
- res = codeGen.genCustomElement(name, (0, helpers_1.identifierFromComponentName)(name), databag, children);
70
- }
71
- else if ((0, ast_1.isSlot)(element)) {
72
- const defaultSlot = children;
73
- res = codeGen.getSlot(element.slotName, databag, defaultSlot);
74
- }
75
- else {
76
- res = codeGen.genElement(name, databag, children);
77
- }
78
- return res;
79
- }
80
- function transformText(consecutiveText) {
81
- return codeGen.genText(consecutiveText.map(({ value }) => {
82
- return (0, ast_1.isStringLiteral)(value) ? value.value : codeGen.bindExpression(value);
83
- }));
84
- }
85
- function transformComment(comment) {
86
- return codeGen.genComment(comment.value);
87
- }
88
- function transformChildren(parent) {
89
- const res = [];
90
- const children = parent.children;
91
- const childrenIterator = children[Symbol.iterator]();
92
- let current;
93
- while ((current = childrenIterator.next()) && !current.done) {
94
- let child = current.value;
95
- if ((0, ast_1.isText)(child)) {
96
- const continuousText = [];
97
- // Consume all the contiguous text nodes.
98
- do {
99
- continuousText.push(child);
100
- current = childrenIterator.next();
101
- child = current.value;
102
- } while (!current.done && (0, ast_1.isText)(child));
103
- res.push(transformText(continuousText));
104
- // Early exit if a text node is the last child node.
105
- if (current.done) {
106
- break;
107
- }
108
- }
109
- if ((0, ast_1.isForBlock)(child)) {
110
- res.push(transformForBlock(child));
111
- }
112
- else if ((0, ast_1.isIf)(child)) {
113
- const children = transformIf(child);
114
- Array.isArray(children) ? res.push(...children) : res.push(children);
115
- }
116
- else if ((0, ast_1.isBaseElement)(child)) {
117
- const slotParentName = (0, ast_1.isSlot)(parent) ? parent.slotName : undefined;
118
- res.push(transformElement(child, slotParentName));
119
- }
120
- else if ((0, ast_1.isComment)(child) && codeGen.preserveComments) {
121
- res.push(transformComment(child));
122
- }
123
- else if ((0, ast_1.isIfBlock)(child)) {
124
- res.push(transformConditionalParentBlock(child));
125
- }
126
- else if ((0, ast_1.isScopedSlotFragment)(child)) {
127
- res.push(transformScopedSlotFragment(child));
128
- }
129
- }
130
- if ((0, helpers_1.shouldFlatten)(codeGen, children)) {
131
- if (children.length === 1) {
132
- return res[0];
133
- }
134
- else {
135
- return codeGen.genFlatten([t.arrayExpression(res)]);
136
- }
137
- }
138
- else {
139
- return t.arrayExpression(res);
140
- }
141
- }
142
- function transformScopedSlotFragment(scopedSlotFragment) {
143
- const { slotName, slotData: { value: dataIdentifier }, } = scopedSlotFragment;
144
- codeGen.beginScope();
145
- codeGen.declareIdentifier(dataIdentifier);
146
- // At runtime, the 'key' of the <slot> element will be propagated to the fragment vnode
147
- // produced by the ScopedSlotFactory
148
- const key = t.identifier('key');
149
- codeGen.declareIdentifier(key);
150
- const fragment = codeGen.genFragment(key, transformChildren(scopedSlotFragment));
151
- codeGen.endScope();
152
- // The factory is invoked with two parameters:
153
- // 1. The value of the binding specified in lwc:slot-bind directive
154
- // 2. The key to be applied to the fragment vnode, this will be used for diffing
155
- const slotFragmentFactory = t.functionExpression(null, [dataIdentifier, key], t.blockStatement([t.returnStatement(fragment)]));
156
- let slotNameTransformed;
157
- if (t.isLiteral(slotName)) {
158
- slotNameTransformed = t.literal(slotName.value);
159
- }
160
- else {
161
- slotNameTransformed = codeGen.bindExpression(slotName);
162
- }
163
- return codeGen.getScopedSlotFactory(slotFragmentFactory, slotNameTransformed);
164
- }
165
- function transformIf(ifNode) {
166
- const expression = transformChildren(ifNode);
167
- let res;
168
- if (t.isArrayExpression(expression)) {
169
- // Bind the expression once for all the template children
170
- const testExpression = codeGen.bindExpression(ifNode.condition);
171
- res = t.arrayExpression(expression.elements.map((element) => element !== null
172
- ? applyInlineIf(ifNode, element, testExpression)
173
- : null));
174
- }
175
- else {
176
- // If the template has a single children, make sure the ternary expression returns an array
177
- res = applyInlineIf(ifNode, expression, undefined, t.arrayExpression([]));
178
- }
179
- if (t.isArrayExpression(res)) {
180
- // The `if` transformation does not use the SpreadElement, neither null, therefore we can safely
181
- // typecast it to t.Expression[]
182
- res = res.elements;
183
- }
184
- return res;
185
- }
186
- /**
187
- * Transforms an IfBlock or ElseifBlock along with both its direct descendants and its 'else' descendants.
188
- *
189
- * @param conditionalParentBlock The IfBlock or ElseifBlock to transform into a conditional expression
190
- * @param key The key to use for this chain of IfBlock/ElseifBlock branches, if applicable
191
- * @returns A conditional expression representing the full conditional tree with conditionalParentBlock as the root node
192
- */
193
- function transformConditionalParentBlock(conditionalParentBlock, key) {
194
- const ifBlockKey = key !== null && key !== void 0 ? key : codeGen.generateKey();
195
- const childrenExpression = codeGen.genFragment(t.literal(ifBlockKey), transformChildren(conditionalParentBlock));
196
- let elseExpression = t.literal(null);
197
- if (conditionalParentBlock.else) {
198
- elseExpression = (0, ast_1.isElseifBlock)(conditionalParentBlock.else)
199
- ? transformConditionalParentBlock(conditionalParentBlock.else, ifBlockKey)
200
- : codeGen.genFragment(t.literal(ifBlockKey), transformChildren(conditionalParentBlock.else));
201
- }
202
- return t.conditionalExpression(codeGen.bindExpression(conditionalParentBlock.condition), childrenExpression, elseExpression);
203
- }
204
- function applyInlineIf(ifNode, node, testExpression, falseValue) {
205
- if (!testExpression) {
206
- testExpression = codeGen.bindExpression(ifNode.condition);
207
- }
208
- let leftExpression;
209
- const modifier = ifNode.modifier;
210
- /* istanbul ignore else */
211
- if (modifier === 'true') {
212
- leftExpression = testExpression;
213
- }
214
- else if (modifier === 'false') {
215
- leftExpression = t.unaryExpression('!', testExpression);
216
- }
217
- else if (modifier === 'strict-true') {
218
- leftExpression = t.binaryExpression('===', testExpression, t.literal(true));
219
- }
220
- else {
221
- // This is a defensive check, should be taken care of during parsing.
222
- throw (0, errors_1.generateCompilerError)(errors_1.TemplateErrors.UNKNOWN_IF_MODIFIER, {
223
- messageArgs: [modifier],
224
- });
225
- }
226
- return t.conditionalExpression(leftExpression, node, falseValue !== null && falseValue !== void 0 ? falseValue : t.literal(null));
227
- }
228
- function transformForBlock(forBlock) {
229
- let expression = transformForChildren(forBlock);
230
- if (t.isArrayExpression(expression) && expression.elements.length === 1) {
231
- expression = expression.elements[0];
232
- }
233
- let res;
234
- if ((0, ast_1.isForEach)(forBlock)) {
235
- res = applyInlineFor(forBlock, expression);
236
- }
237
- else {
238
- res = applyInlineForOf(forBlock, expression);
239
- }
240
- return res;
241
- }
242
- function transformForChildren(forBlock) {
243
- codeGen.beginScope();
244
- if ((0, ast_1.isForEach)(forBlock)) {
245
- const { item, index } = forBlock;
246
- if (index) {
247
- codeGen.declareIdentifier(index);
248
- }
249
- codeGen.declareIdentifier(item);
250
- }
251
- else {
252
- codeGen.declareIdentifier(forBlock.iterator);
253
- }
254
- const children = transformChildren(forBlock);
255
- codeGen.endScope();
256
- return children;
257
- }
258
- function applyInlineFor(forEach, node) {
259
- const { expression, item, index } = forEach;
260
- const params = [item];
261
- if (index) {
262
- params.push(index);
263
- }
264
- const iterable = codeGen.bindExpression(expression);
265
- const iterationFunction = t.functionExpression(null, params, t.blockStatement([t.returnStatement(node)]));
266
- return codeGen.genIterator(iterable, iterationFunction);
267
- }
268
- function applyInlineForOf(forOf, node) {
269
- const { expression, iterator } = forOf;
270
- const { name: iteratorName } = iterator;
271
- const argsMapping = {
272
- value: `${iteratorName}Value`,
273
- index: `${iteratorName}Index`,
274
- first: `${iteratorName}First`,
275
- last: `${iteratorName}Last`,
276
- };
277
- const iteratorArgs = Object.values(argsMapping).map((arg) => t.identifier(arg));
278
- const iteratorObject = t.objectExpression(Object.entries(argsMapping).map(([prop, arg]) => t.property(t.identifier(prop), t.identifier(arg))));
279
- const iterable = codeGen.bindExpression(expression);
280
- const iterationFunction = t.functionExpression(null, iteratorArgs, t.blockStatement([
281
- t.variableDeclaration('const', [
282
- t.variableDeclarator(t.identifier(iteratorName), iteratorObject),
283
- ]),
284
- t.returnStatement(node),
285
- ]));
286
- return codeGen.genIterator(iterable, iterationFunction);
287
- }
288
- function computeAttrValue(attr, element, addLegacySanitizationHook) {
289
- const { name: elmName, namespace = '' } = element;
290
- const { value: attrValue } = attr;
291
- // Evaluate properties based on their attribute name
292
- const attrName = (0, ast_1.isProperty)(attr) ? attr.attributeName : attr.name;
293
- const isUsedAsAttribute = (0, attribute_1.isAttribute)(element, attrName);
294
- if ((0, ast_1.isExpression)(attrValue)) {
295
- const expression = codeGen.bindExpression(attrValue);
296
- // TODO [#2012]: Normalize global boolean attrs values passed to custom elements as props
297
- if (isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attrName, elmName)) {
298
- // We need to do some manipulation to allow the diffing algorithm add/remove the attribute
299
- // without handling special cases at runtime.
300
- return codeGen.genBooleanAttributeExpr(expression);
301
- }
302
- if (attrName === 'tabindex') {
303
- return codeGen.genTabIndex([expression]);
304
- }
305
- if (attrName === 'id' || (0, attribute_1.isIdReferencingAttribute)(attrName)) {
306
- return codeGen.genScopedId(expression);
307
- }
308
- if (codeGen.scopeFragmentId &&
309
- (0, attribute_1.isAllowedFragOnlyUrlsXHTML)(elmName, attrName, namespace)) {
310
- return codeGen.genScopedFragId(expression);
311
- }
312
- if ((0, attribute_1.isSvgUseHref)(elmName, attrName, namespace)) {
313
- if (addLegacySanitizationHook) {
314
- codeGen.usedLwcApis.add('sanitizeAttribute');
315
- return t.callExpression(t.identifier('sanitizeAttribute'), [
316
- t.literal(elmName),
317
- t.literal(namespace),
318
- t.literal(attrName),
319
- codeGen.genScopedFragId(expression),
320
- ]);
321
- }
322
- return codeGen.genScopedFragId(expression);
323
- }
324
- return expression;
325
- }
326
- else if ((0, ast_1.isStringLiteral)(attrValue)) {
327
- if (attrName === 'id') {
328
- return codeGen.genScopedId(attrValue.value);
329
- }
330
- if (attrName === 'spellcheck') {
331
- return t.literal(attrValue.value.toLowerCase() !== 'false');
332
- }
333
- if (!isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attrName, elmName)) {
334
- // We are in presence of a string value, for a recognized boolean attribute, which is used as
335
- // property. for these cases, always set the property to true.
336
- return t.literal(true);
337
- }
338
- if ((0, attribute_1.isIdReferencingAttribute)(attrName)) {
339
- return codeGen.genScopedId(attrValue.value);
340
- }
341
- if (codeGen.scopeFragmentId &&
342
- (0, attribute_1.isAllowedFragOnlyUrlsXHTML)(elmName, attrName, namespace) &&
343
- (0, attribute_1.isFragmentOnlyUrl)(attrValue.value)) {
344
- return codeGen.genScopedFragId(attrValue.value);
345
- }
346
- if ((0, attribute_1.isSvgUseHref)(elmName, attrName, namespace)) {
347
- // apply the fragment id tranformation if necessary
348
- const value = (0, attribute_1.isFragmentOnlyUrl)(attrValue.value)
349
- ? codeGen.genScopedFragId(attrValue.value)
350
- : t.literal(attrValue.value);
351
- if (addLegacySanitizationHook) {
352
- codeGen.usedLwcApis.add('sanitizeAttribute');
353
- return t.callExpression(t.identifier('sanitizeAttribute'), [
354
- t.literal(elmName),
355
- t.literal(namespace),
356
- t.literal(attrName),
357
- value,
358
- ]);
359
- }
360
- return value;
361
- }
362
- return t.literal(attrValue.value);
363
- }
364
- else {
365
- // A boolean value used in an attribute should always generate .setAttribute(attr.name, ''),
366
- // regardless if is a boolean attribute or not.
367
- return isUsedAsAttribute ? t.literal('') : t.literal(attrValue.value);
368
- }
369
- }
370
- function elementDataBag(element, slotParentName) {
371
- const data = [];
372
- const { attributes, properties, listeners } = element;
373
- const innerHTML = element.directives.find(ast_1.isInnerHTMLDirective);
374
- const forKey = element.directives.find(ast_1.isKeyDirective);
375
- const dom = element.directives.find(ast_1.isDomDirective);
376
- const ref = element.directives.find(ast_1.isRefDirective);
377
- const spread = element.directives.find(ast_1.isSpreadDirective);
378
- const addSanitizationHook = (0, renderer_hooks_1.isCustomRendererHookRequired)(element, codeGen.state);
379
- const slotBindDirective = element.directives.find(ast_1.isSlotBindDirective);
380
- // Attributes
381
- if (attributes.length) {
382
- const rest = {};
383
- for (const attr of attributes) {
384
- const { name, value } = attr;
385
- if (name === 'class') {
386
- // Handle class attribute:
387
- // - expression values are turned into a `className` property.
388
- // - string values are parsed and turned into a `classMap` object associating
389
- // each individual class name with a `true` boolean.
390
- if ((0, ast_1.isExpression)(value)) {
391
- const classExpression = codeGen.bindExpression(value);
392
- data.push(t.property(t.identifier('className'), classExpression));
393
- }
394
- else if ((0, ast_1.isStringLiteral)(value)) {
395
- const classNames = (0, helpers_1.parseClassNames)(value.value);
396
- const classMap = t.objectExpression(classNames.map((name) => t.property(t.literal(name), t.literal(true))));
397
- data.push(t.property(t.identifier('classMap'), classMap));
398
- }
399
- }
400
- else if (name === 'style') {
401
- // Handle style attribute:
402
- // - expression values are turned into a `style` property.
403
- // - string values are parsed and turned into a `styles` array
404
- // containing triples of [name, value, important (optional)]
405
- if ((0, ast_1.isExpression)(value)) {
406
- const styleExpression = codeGen.bindExpression(value);
407
- data.push(t.property(t.identifier('style'), styleExpression));
408
- }
409
- else if ((0, ast_1.isStringLiteral)(value)) {
410
- const styleMap = (0, helpers_1.parseStyleText)(value.value);
411
- const styleAST = (0, helpers_1.styleMapToStyleDeclsAST)(styleMap);
412
- data.push(t.property(t.identifier('styleDecls'), styleAST));
413
- }
414
- }
415
- else {
416
- rest[name] = computeAttrValue(attr, element, !addSanitizationHook);
417
- }
418
- }
419
- // Add all the remaining attributes to an `attrs` object where the key is the attribute
420
- // name and the value is the computed attribute value.
421
- if (Object.keys(rest).length) {
422
- const attrsObj = (0, helpers_1.objectToAST)(rest, (key) => rest[key]);
423
- data.push(t.property(t.identifier('attrs'), attrsObj));
424
- }
425
- }
426
- // Properties
427
- const propsObj = t.objectExpression([]);
428
- // Properties
429
- if (properties.length) {
430
- for (const prop of properties) {
431
- propsObj.properties.push(t.property(t.literal(prop.name), computeAttrValue(prop, element, !addSanitizationHook)));
432
- }
433
- }
434
- // Properties: lwc:inner-html directive
435
- if (innerHTML) {
436
- const expr = (0, ast_1.isStringLiteral)(innerHTML.value)
437
- ? t.literal(innerHTML.value.value)
438
- : codeGen.bindExpression(innerHTML.value);
439
- propsObj.properties.push(t.property(t.identifier('innerHTML'),
440
- // If lwc:inner-html is added as a directive requiring custom renderer, no need
441
- // to add the legacy sanitizeHtmlContent hook
442
- addSanitizationHook ? expr : codeGen.genSanitizedHtmlExpr(expr)));
443
- }
444
- // Properties: lwc:ref directive
445
- if (ref) {
446
- data.push(t.property(t.identifier('ref'), ref.value));
447
- codeGen.hasRefs = true;
448
- }
449
- if (propsObj.properties.length) {
450
- data.push(t.property(t.identifier('props'), propsObj));
451
- }
452
- // Context
453
- if (dom || innerHTML) {
454
- const contextObj = t.objectExpression([
455
- t.property(t.identifier('lwc'), t.objectExpression([t.property(t.identifier('dom'), t.literal('manual'))])),
456
- ]);
457
- data.push(t.property(t.identifier('context'), contextObj));
458
- }
459
- if (spread) {
460
- data.push(t.property(t.identifier('spread'), codeGen.bindExpression(spread.value)));
461
- }
462
- // Key property on VNode
463
- if (forKey) {
464
- // If element has user-supplied `key` or is in iterator, call `api.k`
465
- const forKeyExpression = codeGen.bindExpression(forKey.value);
466
- const generatedKey = codeGen.genKey(t.literal(codeGen.generateKey()), forKeyExpression);
467
- data.push(t.property(t.identifier('key'), generatedKey));
468
- }
469
- else {
470
- // If standalone element with no user-defined key
471
- let key = codeGen.generateKey();
472
- // Parent slot name could be the empty string
473
- if (slotParentName !== undefined) {
474
- // Prefixing the key is necessary to avoid conflicts with default content for the
475
- // slot which might have similar keys. Each vnode will always have a key that starts
476
- // with a numeric character from compiler. In this case, we add a unique notation
477
- // for slotted vnodes keys, e.g.: `@foo:1:1`. Note that this is *not* needed for
478
- // dynamic keys, since `api.k` already scopes based on the iteration.
479
- key = `@${slotParentName}:${key}`;
480
- }
481
- data.push(t.property(t.identifier('key'), t.literal(key)));
482
- }
483
- // Event handler
484
- if (listeners.length) {
485
- const listenerObj = Object.fromEntries(listeners.map((listener) => [listener.name, listener]));
486
- const listenerObjAST = (0, helpers_1.objectToAST)(listenerObj, (key) => {
487
- const componentHandler = codeGen.bindExpression(listenerObj[key].handler);
488
- const handler = codeGen.genBind(componentHandler);
489
- return (0, helpers_1.memorizeHandler)(codeGen, componentHandler, handler);
490
- });
491
- data.push(t.property(t.identifier('on'), listenerObjAST));
492
- }
493
- // SVG handling
494
- if (element.namespace === shared_1.SVG_NAMESPACE) {
495
- data.push(t.property(t.identifier('svg'), t.literal(true)));
496
- }
497
- if (addSanitizationHook) {
498
- codeGen.usedLwcApis.add(constants_1.RENDERER);
499
- data.push(t.property(t.identifier(constants_1.RENDERER), t.identifier(constants_1.RENDERER)));
500
- }
501
- if (!(0, shared_1.isUndefined)(slotBindDirective)) {
502
- data.push(t.property(t.identifier('slotData'), codeGen.bindExpression(slotBindDirective.value)));
503
- }
504
- if ((0, ast_1.isExternalComponent)(element)) {
505
- data.push(t.property(t.identifier('external'), t.literal(true)));
506
- }
507
- return t.objectExpression(data);
508
- }
509
- return transformChildren(codeGen.root);
510
- }
511
- function generateTemplateFunction(codeGen) {
512
- const returnedValue = transform(codeGen);
513
- const args = [
514
- constants_1.TEMPLATE_PARAMS.API,
515
- constants_1.TEMPLATE_PARAMS.INSTANCE,
516
- constants_1.TEMPLATE_PARAMS.SLOT_SET,
517
- constants_1.TEMPLATE_PARAMS.CONTEXT,
518
- ].map((id) => t.identifier(id));
519
- const usedApis = Object.keys(codeGen.usedApis);
520
- const body = usedApis.length === 0
521
- ? []
522
- : [
523
- t.variableDeclaration('const', [
524
- t.variableDeclarator(t.objectPattern(usedApis.map((name) => t.assignmentProperty(t.identifier(name), codeGen.usedApis[name]))), t.identifier(constants_1.TEMPLATE_PARAMS.API)),
525
- ]),
526
- ];
527
- if (codeGen.memorizedIds.length) {
528
- body.push(t.variableDeclaration('const', [
529
- t.variableDeclarator(t.objectPattern(codeGen.memorizedIds.map((id) => t.assignmentProperty(id, id, { shorthand: true }))), t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT)),
530
- ]));
531
- }
532
- body.push(t.returnStatement(returnedValue));
533
- return t.functionDeclaration(t.identifier(constants_1.TEMPLATE_FUNCTION_NAME), args, t.blockStatement(body, {
534
- trailingComments: [t.comment(shared_1.LWC_VERSION_COMMENT)],
535
- }));
536
- }
537
- function default_1(root, state) {
538
- const scopeFragmentId = (0, helpers_1.hasIdAttribute)(root);
539
- const codeGen = new codegen_1.default({
540
- root,
541
- state,
542
- scopeFragmentId,
543
- });
544
- const templateFunction = generateTemplateFunction(codeGen);
545
- const program = (0, module_1.format)(templateFunction, codeGen);
546
- return astring.generate(program, { comments: true });
547
- }
548
- exports.default = default_1;
549
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"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"}