@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,330 +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
- /*
27
- * Copyright (c) 2018, salesforce.com, inc.
28
- * All rights reserved.
29
- * SPDX-License-Identifier: MIT
30
- * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
31
- */
32
- const estree_walker_1 = require("estree-walker");
33
- const shared_1 = require("@lwc/shared");
34
- const t = __importStar(require("../shared/estree"));
35
- const types_1 = require("../shared/types");
36
- const constants_1 = require("../shared/constants");
37
- const ast_1 = require("../shared/ast");
38
- const estree_1 = require("../shared/estree");
39
- const helpers_1 = require("./helpers");
40
- const static_element_serializer_1 = require("./static-element-serializer");
41
- const expression_1 = require("./expression");
42
- const RENDER_APIS = {
43
- iterator: { name: 'i', alias: 'api_iterator' },
44
- flatten: { name: 'f', alias: 'api_flatten' },
45
- element: { name: 'h', alias: 'api_element' },
46
- slot: { name: 's', alias: 'api_slot' },
47
- customElement: { name: 'c', alias: 'api_custom_element' },
48
- dynamicCtor: { name: 'dc', alias: 'api_dynamic_component' },
49
- // TODO [#3331]: remove usage of lwc:dynamic in 246
50
- deprecatedDynamicCtor: { name: 'ddc', alias: 'api_deprecated_dynamic_component' },
51
- bind: { name: 'b', alias: 'api_bind' },
52
- text: { name: 't', alias: 'api_text' },
53
- dynamicText: { name: 'd', alias: 'api_dynamic_text' },
54
- key: { name: 'k', alias: 'api_key' },
55
- tabindex: { name: 'ti', alias: 'api_tab_index' },
56
- scopedId: { name: 'gid', alias: 'api_scoped_id' },
57
- scopedFragId: { name: 'fid', alias: 'api_scoped_frag_id' },
58
- comment: { name: 'co', alias: 'api_comment' },
59
- sanitizeHtmlContent: { name: 'shc', alias: 'api_sanitize_html_content' },
60
- fragment: { name: 'fr', alias: 'api_fragment' },
61
- staticFragment: { name: 'st', alias: 'api_static_fragment' },
62
- scopedSlotFactory: { name: 'ssf', alias: 'api_scoped_slot_factory' },
63
- };
64
- class CodeGen {
65
- constructor({ root, state, scopeFragmentId, }) {
66
- var _a, _b, _c, _d;
67
- this.staticNodes = new Set();
68
- this.hoistedNodes = [];
69
- /** True if this template contains the lwc:ref directive */
70
- this.hasRefs = false;
71
- this.currentId = 0;
72
- this.currentKey = 0;
73
- this.innerHtmlInstances = 0;
74
- this.usedApis = {};
75
- this.usedLwcApis = new Set();
76
- this.slotNames = new Set();
77
- this.memorizedIds = [];
78
- this.referencedComponents = new Set();
79
- this.root = root;
80
- if (state.config.enableStaticContentOptimization) {
81
- this.staticNodes = (0, helpers_1.getStaticNodes)(root, state);
82
- }
83
- this.renderMode =
84
- (_b = (_a = root.directives.find(ast_1.isRenderModeDirective)) === null || _a === void 0 ? void 0 : _a.value.value) !== null && _b !== void 0 ? _b : types_1.LWCDirectiveRenderMode.shadow;
85
- this.preserveComments =
86
- (_d = (_c = root.directives.find(ast_1.isPreserveCommentsDirective)) === null || _c === void 0 ? void 0 : _c.value.value) !== null && _d !== void 0 ? _d : state.config.preserveHtmlComments;
87
- this.scopeFragmentId = scopeFragmentId;
88
- this.scope = this.createScope();
89
- this.state = state;
90
- }
91
- generateKey() {
92
- return this.currentKey++;
93
- }
94
- genElement(tagName, data, children) {
95
- const args = [t.literal(tagName), data];
96
- if (!(0, estree_1.isArrayExpression)(children) || children.elements.length > 0) {
97
- args.push(children); // only generate children if non-empty
98
- }
99
- return this._renderApiCall(RENDER_APIS.element, args);
100
- }
101
- genCustomElement(tagName, componentClass, data, children) {
102
- this.referencedComponents.add(tagName);
103
- const args = [t.literal(tagName), componentClass, data];
104
- if (!(0, estree_1.isArrayExpression)(children) || children.elements.length > 0) {
105
- args.push(children); // only generate children if non-empty
106
- }
107
- return this._renderApiCall(RENDER_APIS.customElement, args);
108
- }
109
- genDynamicElement(ctor, data, children) {
110
- const args = [ctor, data];
111
- if (!(0, estree_1.isArrayExpression)(children) || children.elements.length > 0) {
112
- args.push(children); // only generate children if non-empty
113
- }
114
- return this._renderApiCall(RENDER_APIS.dynamicCtor, args);
115
- }
116
- genDeprecatedDynamicElement(tagName, ctor, data, children) {
117
- const args = [t.literal(tagName), ctor, data];
118
- if (!(0, estree_1.isArrayExpression)(children) || children.elements.length > 0) {
119
- args.push(children); // only generate children if non-empty
120
- }
121
- return this._renderApiCall(RENDER_APIS.deprecatedDynamicCtor, args);
122
- }
123
- genText(value) {
124
- const mappedValues = value.map((v) => {
125
- return typeof v === 'string'
126
- ? t.literal(v)
127
- : this._renderApiCall(RENDER_APIS.dynamicText, [v]);
128
- });
129
- let textConcatenation = mappedValues[0];
130
- for (let i = 1, n = mappedValues.length; i < n; i++) {
131
- textConcatenation = t.binaryExpression('+', textConcatenation, mappedValues[i]);
132
- }
133
- return this._renderApiCall(RENDER_APIS.text, [textConcatenation]);
134
- }
135
- genComment(value) {
136
- return this._renderApiCall(RENDER_APIS.comment, [t.literal(value)]);
137
- }
138
- genSanitizeHtmlContent(content) {
139
- return this._renderApiCall(RENDER_APIS.sanitizeHtmlContent, [content]);
140
- }
141
- genFragment(key, children, stable = false) {
142
- const isStable = stable ? t.literal(1) : t.literal(0);
143
- return this._renderApiCall(RENDER_APIS.fragment, [key, children, isStable]);
144
- }
145
- genIterator(iterable, callback) {
146
- return this._renderApiCall(RENDER_APIS.iterator, [iterable, callback]);
147
- }
148
- genBind(handler) {
149
- return this._renderApiCall(RENDER_APIS.bind, [handler]);
150
- }
151
- genFlatten(children) {
152
- return this._renderApiCall(RENDER_APIS.flatten, children);
153
- }
154
- genKey(compilerKey, value) {
155
- return this._renderApiCall(RENDER_APIS.key, [compilerKey, value]);
156
- }
157
- genScopedId(id) {
158
- if (typeof id === 'string') {
159
- return this._renderApiCall(RENDER_APIS.scopedId, [t.literal(id)]);
160
- }
161
- return this._renderApiCall(RENDER_APIS.scopedId, [id]);
162
- }
163
- genScopedFragId(id) {
164
- if (typeof id === 'string') {
165
- return this._renderApiCall(RENDER_APIS.scopedFragId, [t.literal(id)]);
166
- }
167
- return this._renderApiCall(RENDER_APIS.scopedFragId, [id]);
168
- }
169
- /**
170
- * Generates childs vnodes when slot content is static.
171
- */
172
- getSlot(slotName, data, children) {
173
- this.slotNames.add(slotName);
174
- return this._renderApiCall(RENDER_APIS.slot, [
175
- t.literal(slotName),
176
- data,
177
- children,
178
- t.identifier('$slotset'),
179
- ]);
180
- }
181
- /**
182
- * Generates a factory function that inturn generates child vnodes for scoped slot content.
183
- */
184
- getScopedSlotFactory(callback, slotName) {
185
- return this._renderApiCall(RENDER_APIS.scopedSlotFactory, [slotName, callback]);
186
- }
187
- genTabIndex(children) {
188
- return this._renderApiCall(RENDER_APIS.tabindex, children);
189
- }
190
- getMemorizationId() {
191
- const currentId = this.currentId++;
192
- const memorizationId = t.identifier(`_m${currentId}`);
193
- this.memorizedIds.push(memorizationId);
194
- return memorizationId;
195
- }
196
- genBooleanAttributeExpr(bindExpr) {
197
- return t.conditionalExpression(bindExpr, t.literal(''), t.literal(null));
198
- }
199
- /**
200
- * This routine generates an expression that avoids
201
- * computing the sanitized html of a raw html if it does not change
202
- * between renders.
203
- *
204
- * @param expr
205
- * @returns sanitizedHtmlExpr
206
- */
207
- genSanitizedHtmlExpr(expr) {
208
- const instance = this.innerHtmlInstances++;
209
- // Optimization for static html.
210
- // Example input: <div lwc:inner-html="foo">
211
- // Output: $ctx._sanitizedHtml$0 || ($ctx._sanitizedHtml$0 = api_sanitize_html_content("foo"))
212
- if (t.isLiteral(expr)) {
213
- return t.logicalExpression('||', t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT), t.identifier(`_sanitizedHtml$${instance}`)), t.assignmentExpression('=', t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT), t.identifier(`_sanitizedHtml$${instance}`)), this.genSanitizeHtmlContent(expr)));
214
- }
215
- // Example input: <div lwc:inner-html={foo}>
216
- // Output: $ctx._rawHtml$0 !== ($ctx._rawHtml$0 = $cmp.foo)
217
- // ? ($ctx._sanitizedHtml$0 = api_sanitize_html_content($cmp.foo))
218
- // : $ctx._sanitizedHtml$0
219
- //
220
- // Note: In the case of iterations, when the lwc:inner-html bound value depends on the
221
- // iteration item, the generated expression won't be enough, and `sanitizeHtmlContent`
222
- // will be called every time because this expression is based on the specific template
223
- // usage of the lwc:inner-html, and in an iteration, usages are dynamically generated.
224
- return t.conditionalExpression(t.binaryExpression('!==', t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT), t.identifier(`_rawHtml$${instance}`)), t.assignmentExpression('=', t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT), t.identifier(`_rawHtml$${instance}`)), expr)), t.assignmentExpression('=', t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT), t.identifier(`_sanitizedHtml$${instance}`)), this.genSanitizeHtmlContent(expr)), t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT), t.identifier(`_sanitizedHtml$${instance}`)));
225
- }
226
- _renderApiCall(primitive, params) {
227
- const { name, alias } = primitive;
228
- let identifier = this.usedApis[name];
229
- if (!identifier) {
230
- identifier = this.usedApis[name] = t.identifier(alias);
231
- }
232
- return t.callExpression(identifier, params);
233
- }
234
- beginScope() {
235
- this.scope = this.createScope(this.scope);
236
- }
237
- createScope(parent = null) {
238
- return {
239
- parent,
240
- declaration: new Set(),
241
- };
242
- }
243
- endScope() {
244
- /* istanbul ignore if */
245
- if (!this.scope.parent) {
246
- throw new Error("Can't invoke endScope if the current scope has no parent");
247
- }
248
- this.scope = this.scope.parent;
249
- }
250
- declareIdentifier(identifier) {
251
- this.scope.declaration.add(identifier.name);
252
- }
253
- /**
254
- * Searches the scopes to find an identifier with a matching name.
255
- */
256
- isLocalIdentifier(identifier) {
257
- let scope = this.scope;
258
- while (scope !== null) {
259
- if (scope.declaration.has(identifier.name)) {
260
- return true;
261
- }
262
- scope = scope.parent;
263
- }
264
- return false;
265
- }
266
- /**
267
- * Bind the passed expression to the component instance. It applies the following transformation to the expression:
268
- * - {value} --> {$cmp.value}
269
- * - {value[index]} --> {$cmp.value[$cmp.index]}
270
- */
271
- bindExpression(expression) {
272
- if (t.isIdentifier(expression)) {
273
- if (!this.isLocalIdentifier(expression)) {
274
- return t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.INSTANCE), expression);
275
- }
276
- else {
277
- return expression;
278
- }
279
- }
280
- // TODO [#3370]: remove experimental template expression flag
281
- if (this.state.config.experimentalComplexExpressions) {
282
- return (0, expression_1.bindComplexExpression)(expression, this);
283
- }
284
- const scope = this;
285
- (0, estree_walker_1.walk)(expression, {
286
- leave(node, parent) {
287
- if (parent !== null &&
288
- t.isIdentifier(node) &&
289
- t.isMemberExpression(parent) &&
290
- parent.object === node &&
291
- !scope.isLocalIdentifier(node)) {
292
- this.replace(t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.INSTANCE), node));
293
- }
294
- },
295
- });
296
- return expression;
297
- }
298
- genHoistedElement(element, slotParentName) {
299
- const key = slotParentName !== undefined
300
- ? `@${slotParentName}:${this.generateKey()}`
301
- : this.generateKey();
302
- const html = (0, static_element_serializer_1.serializeStaticElement)(element, this.preserveComments);
303
- const parseMethod = element.name !== 'svg' && element.namespace === shared_1.SVG_NAMESPACE
304
- ? constants_1.PARSE_SVG_FRAGMENT_METHOD_NAME
305
- : constants_1.PARSE_FRAGMENT_METHOD_NAME;
306
- this.usedLwcApis.add(parseMethod);
307
- // building the taggedTemplate expression as if it were a string
308
- const expr = t.taggedTemplateExpression(t.identifier(parseMethod), t.templateLiteral([
309
- {
310
- type: 'TemplateElement',
311
- tail: true,
312
- value: {
313
- raw: html,
314
- cooked: html,
315
- },
316
- },
317
- ], []));
318
- const identifier = t.identifier(`$fragment${this.hoistedNodes.length + 1}`);
319
- this.hoistedNodes.push({
320
- identifier,
321
- expr,
322
- });
323
- return this._renderApiCall(RENDER_APIS.staticFragment, [
324
- t.callExpression(identifier, []),
325
- t.literal(key),
326
- ]);
327
- }
328
- }
329
- exports.default = CodeGen;
330
- //# sourceMappingURL=codegen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/codegen/codegen.ts"],"names":[],"mappings":"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"}
@@ -1,176 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2023, salesforce.com, inc.
4
- * All rights reserved.
5
- * SPDX-License-Identifier: MIT
6
- * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.bindComplexExpression = void 0;
33
- const estree_walker_1 = require("estree-walker");
34
- const errors_1 = require("@lwc/errors");
35
- const t = __importStar(require("../shared/estree"));
36
- const constants_1 = require("../shared/constants");
37
- /**
38
- * Bind the passed expression to the component instance. It applies the following
39
- * transformation to the expression:
40
- * {value} --> {$cmp.value}
41
- * {value[index]} --> {$cmp.value[$cmp.index]}
42
- * {foo ?? bar} --> {$cmp.foo ?? $cmp.bar}
43
- * {foo?.bar} --> {$cmp.foo?.bar}
44
- *
45
- * However, parameter variables are not be transformed in this way. For example,
46
- * the following transformations do not happen:
47
- * {(foo) => foo && bar} -> {(foo) => $cmp.foo && $cmp.bar}
48
- * {(foo) => foo && bar} -> {($cmp.foo) => foo && $cmp.bar}
49
- * {(foo) => foo && bar} -> {($cmp.foo) => $cmp.foo && $cmp.bar}
50
- *
51
- * Instead, the scopes are respected:
52
- * {(foo) => foo && $cmp.bar}
53
- *
54
- * Similar checks occur for local identifiers introduced via for:each or similar.
55
- */
56
- function bindComplexExpression(expression, codeGen) {
57
- const expressionScopes = new ExpressionScopes();
58
- (0, estree_walker_1.walk)(expression, {
59
- enter(node, _parent) {
60
- // Function and class expressions are not permitted in template expressions,
61
- // only arrow function expressions.
62
- if (t.isArrowFunctionExpression(node)) {
63
- expressionScopes.enterScope(node);
64
- }
65
- },
66
- leave(node, parent) {
67
- if (t.isArrowFunctionExpression(node)) {
68
- expressionScopes.exitScope(node);
69
- }
70
- else if (parent !== null &&
71
- t.isIdentifier(node) &&
72
- // Acorn parses `undefined` as an Identifier.
73
- node.name !== 'undefined' &&
74
- !(t.isMemberExpression(parent) && parent.property === node) &&
75
- !(t.isProperty(parent) && parent.key === node) &&
76
- !codeGen.isLocalIdentifier(node) &&
77
- !expressionScopes.isScopedToExpression(node)) {
78
- this.replace(t.memberExpression(t.identifier(constants_1.TEMPLATE_PARAMS.INSTANCE), node));
79
- }
80
- },
81
- });
82
- return expression;
83
- }
84
- exports.bindComplexExpression = bindComplexExpression;
85
- /**
86
- * Track the variables that come in and out of scope in various parts of a
87
- * template expression. Arrow functions can return arrow functions, which can lead to
88
- * variable shadowing, which needs to be handled correctly.
89
- */
90
- class ExpressionScopes {
91
- constructor() {
92
- this.variableShadowingCount = new Map();
93
- this.arrowFnVariables = new Map();
94
- }
95
- enterScope(node) {
96
- var _a;
97
- const variableNamesIntroduced = new Set();
98
- for (const param of node.params) {
99
- collectParams(param, variableNamesIntroduced);
100
- }
101
- for (const varName of variableNamesIntroduced) {
102
- this.variableShadowingCount.set(varName, ((_a = this.variableShadowingCount.get(varName)) !== null && _a !== void 0 ? _a : 0) + 1);
103
- }
104
- this.arrowFnVariables.set(node, variableNamesIntroduced);
105
- }
106
- exitScope(node) {
107
- const varNames = this.arrowFnVariables.get(node);
108
- if (varNames) {
109
- for (const varName of varNames) {
110
- this.variableShadowingCount.set(varName, this.variableShadowingCount.get(varName) - 1);
111
- }
112
- }
113
- }
114
- // If a variable was introduced as an arrow function parameter and is still
115
- // in scope, return true. Otherwise, return false.
116
- isScopedToExpression(node) {
117
- return !!this.variableShadowingCount.get(node.name);
118
- }
119
- }
120
- function collectParams(node, vars) {
121
- if (t.isIdentifier(node)) {
122
- collectParamsFromIdentifier(node, vars);
123
- }
124
- else if (t.isObjectPattern(node)) {
125
- collectParamsFromObjectPattern(node, vars);
126
- }
127
- else if (t.isProperty(node)) {
128
- collectParamsFromProperty(node, vars);
129
- }
130
- else if (t.isArrayPattern(node)) {
131
- collectParamsFromArrayPattern(node, vars);
132
- }
133
- else if (t.isRestElement(node)) {
134
- collectParamsFromRestElement(node, vars);
135
- }
136
- else if (t.isAssignmentPattern(node)) {
137
- collectParamsFromAssignmentPattern(node, vars);
138
- }
139
- else if (t.isMemberExpression(node)) {
140
- collectParamsFromMemberExpression(node, vars);
141
- }
142
- else {
143
- (0, errors_1.invariant)(false, errors_1.ParserDiagnostics.INVALID_EXPR_ARROW_FN_PARAM, [node.type]);
144
- }
145
- }
146
- function collectParamsFromIdentifier(node, vars) {
147
- vars.add(node.name);
148
- }
149
- function collectParamsFromObjectPattern(node, vars) {
150
- for (const property of node.properties) {
151
- collectParams(property, vars);
152
- }
153
- }
154
- function collectParamsFromProperty(node, vars) {
155
- collectParams(node.value, vars);
156
- }
157
- function collectParamsFromArrayPattern(node, vars) {
158
- for (const element of node.elements) {
159
- // Elements of an array pattern can be null.
160
- if (element) {
161
- collectParams(element, vars);
162
- }
163
- }
164
- }
165
- function collectParamsFromRestElement(node, vars) {
166
- collectParams(node.argument, vars);
167
- }
168
- function collectParamsFromAssignmentPattern(_node, _vars) {
169
- (0, errors_1.invariant)(false, errors_1.ParserDiagnostics.INVALID_EXPR_ARROW_FN_PARAM, ['default parameters']);
170
- }
171
- function collectParamsFromMemberExpression(_node, _vars) {
172
- // It is unclear how this condition could ever be reached. But because it is allowed by
173
- // the AST, we'll validate anyway.
174
- (0, errors_1.invariant)(false, errors_1.ParserDiagnostics.INVALID_EXPR_ARROW_FN_PARAM, ['member expressions']);
175
- }
176
- //# sourceMappingURL=expression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/codegen/expression.ts"],"names":[],"mappings":"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"}
@@ -1,91 +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.format = 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 t = __importStar(require("../../shared/estree"));
34
- const naming_1 = require("../../shared/naming");
35
- const constants_1 = require("../../shared/constants");
36
- const helpers_1 = require("../helpers");
37
- const optimize_1 = require("../optimize");
38
- function generateComponentImports(codeGen) {
39
- return Array.from(codeGen.referencedComponents).map((name) => {
40
- const localIdentifier = (0, helpers_1.identifierFromComponentName)(name);
41
- return t.importDeclaration([t.importDefaultSpecifier(localIdentifier)], t.literal((0, naming_1.kebabcaseToCamelcase)(name)));
42
- });
43
- }
44
- function generateLwcApisImport(codeGen) {
45
- const imports = Array.from(codeGen.usedLwcApis)
46
- .sort()
47
- .map((name) => {
48
- return t.importSpecifier(t.identifier(name), t.identifier(name));
49
- });
50
- return t.importDeclaration(imports, t.literal(constants_1.LWC_MODULE_NAME));
51
- }
52
- function generateHoistedNodes(codegen) {
53
- return codegen.hoistedNodes.map(({ identifier, expr }) => {
54
- return t.variableDeclaration('const', [t.variableDeclarator(identifier, expr)]);
55
- });
56
- }
57
- /**
58
- * Generate an ES module AST from a template ESTree AST. The generated module imports the dependent
59
- * LWC components via import statements and expose the template function via a default export
60
- * statement.
61
- *
62
- * @example
63
- * ```js
64
- * import { registerTemplate } from 'lwc';
65
- * // Components imports
66
- *
67
- * function tmpl() {
68
- * // Template generated code
69
- * }
70
- * // Template metadata
71
- *
72
- * export default tmpl;
73
- * registerTemplate(tmpl);
74
- * ```
75
- */
76
- function format(templateFn, codeGen) {
77
- codeGen.usedLwcApis.add(constants_1.SECURE_REGISTER_TEMPLATE_METHOD_NAME);
78
- const imports = [...generateComponentImports(codeGen), generateLwcApisImport(codeGen)];
79
- const hoistedNodes = generateHoistedNodes(codeGen);
80
- const metadata = (0, helpers_1.generateTemplateMetadata)(codeGen);
81
- const optimizedTemplateDeclarations = (0, optimize_1.optimizeStaticExpressions)(templateFn);
82
- const templateBody = [
83
- ...optimizedTemplateDeclarations,
84
- t.exportDefaultDeclaration(t.callExpression(t.identifier(constants_1.SECURE_REGISTER_TEMPLATE_METHOD_NAME), [
85
- t.identifier(constants_1.TEMPLATE_FUNCTION_NAME),
86
- ])),
87
- ];
88
- return t.program([...imports, ...hoistedNodes, ...templateBody, ...metadata]);
89
- }
90
- exports.format = format;
91
- //# sourceMappingURL=module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/codegen/formatters/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,uDAAyC;AACzC,gDAA2D;AAC3D,sDAIgC;AAGhC,wCAAmF;AACnF,0CAAwD;AAExD,SAAS,wBAAwB,CAAC,OAAgB;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzD,MAAM,eAAe,GAAG,IAAA,qCAA2B,EAAC,IAAI,CAAC,CAAC;QAE1D,OAAO,CAAC,CAAC,iBAAiB,CACtB,CAAC,CAAC,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,EAC3C,CAAC,CAAC,OAAO,CAAC,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC,CACxC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;SAC1C,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEP,OAAO,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,2BAAe,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC1C,OAAO,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;QACrD,OAAO,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,MAAM,CAAC,UAAiC,EAAE,OAAgB;IACtE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,gDAAoC,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,IAAA,kCAAwB,EAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,6BAA6B,GAAG,IAAA,oCAAyB,EAAC,UAAU,CAAC,CAAC;IAE5E,MAAM,YAAY,GAAG;QACjB,GAAG,6BAA6B;QAChC,CAAC,CAAC,wBAAwB,CACtB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,gDAAoC,CAAC,EAAE;YACjE,CAAC,CAAC,UAAU,CAAC,kCAAsB,CAAC;SACvC,CAAC,CACL;KACJ,CAAC;IAEF,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AAClF,CAAC;AApBD,wBAoBC"}