@lwc/template-compiler 2.23.6 → 2.25.0

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.
@@ -28,17 +28,22 @@ class ParserCtx {
28
28
  this.seenIds = new Set();
29
29
  this.seenSlots = new Set();
30
30
  /**
31
- * Scopes keep track of the hierarchy of ParentNodes as the parser traverses the parse5 AST.
32
- * Each scope is represented by an array where each node in the array correspond to either
33
- * a ForEach, ForOf, If, Element, Component, or Slot.
31
+ * 'elementScopes' keeps track of the hierarchy of ParentNodes as the parser
32
+ * traverses the parse5 AST. Each 'elementScope' is an array where each node in
33
+ * the array corresponds to either an IfBlock, ElseifBlock, ElseBlock, ForEach, ForOf, If, Element, Component, or Slot.
34
34
  *
35
- * Currently, each scope has a hierarchy of ForBlock > IfBlock > Element | Component | Slot.
36
- * Note: Not all scopes will have all three, but when they do, they will appear in this order.
35
+ * Currently, each elementScope has a hierarchy of IfBlock > ForBlock > If > Element | Component | Slot.
36
+ * Note: Not all elementScopes will have all the nodes listed above, but when they do, they will appear in this order.
37
37
  * We do not keep track of template nodes.
38
38
  *
39
39
  * Each scope corresponds to the original parse5.Element node.
40
40
  */
41
- this.scopes = [];
41
+ this.elementScopes = [];
42
+ /**
43
+ * 'siblingScopes' keeps track of the context from one sibling node to another.
44
+ * This holds the info needed to properly parse lwc:if, lwc:elseif, and lwc:else directives.
45
+ */
46
+ this.siblingScopes = [];
42
47
  this.source = source;
43
48
  this.config = config;
44
49
  this.renderMode = types_1.LWCDirectiveRenderMode.shadow;
@@ -58,7 +63,7 @@ class ParserCtx {
58
63
  * This method flattens the scopes into a single array for traversal.
59
64
  */
60
65
  *ancestors(element) {
61
- const ancestors = [].concat(...this.scopes);
66
+ const ancestors = this.elementScopes.flat();
62
67
  const start = element ? ancestors.indexOf(element) : ancestors.length - 1;
63
68
  for (let i = start; i >= 0; i--) {
64
69
  yield { current: ancestors[i], parent: ancestors[i - 1] };
@@ -91,27 +96,113 @@ class ParserCtx {
91
96
  * @param {function} predicate - This callback is called once for each sibling in the current scope
92
97
  * until it finds one where predicate returns true.
93
98
  */
94
- findSibling(predicate) {
95
- const currentScope = this.currentScope() || [];
96
- const sibling = currentScope.find(predicate);
97
- return sibling || null;
99
+ findInCurrentElementScope(predicate) {
100
+ const currentScope = this.currentElementScope() || [];
101
+ return currentScope.find(predicate) || null;
98
102
  }
99
- beginScope() {
100
- this.scopes.push([]);
103
+ beginElementScope() {
104
+ this.elementScopes.push([]);
101
105
  }
102
- endScope() {
103
- this.scopes.pop();
106
+ endElementScope() {
107
+ const scope = this.elementScopes.pop();
108
+ return scope ? scope[0] : undefined;
104
109
  }
105
- addNodeCurrentScope(node) {
106
- const currentScope = this.currentScope();
110
+ addNodeCurrentElementScope(node) {
111
+ const currentScope = this.currentElementScope();
107
112
  /* istanbul ignore if */
108
113
  if (!currentScope) {
109
- throw new Error("Can't invoke addNodeCurrentScope if there is no current scope");
114
+ throw new Error("Can't invoke addNodeCurrentElementScope if there is no current scope");
110
115
  }
111
116
  currentScope.push(node);
112
117
  }
113
- currentScope() {
114
- return this.scopes[this.scopes.length - 1];
118
+ hasSeenSlot(name) {
119
+ return this.seenSlotsFromAncestorIfTree().has(name);
120
+ }
121
+ addSeenSlot(name) {
122
+ const currentSeenSlots = this.seenSlotsFromAncestorIfTree();
123
+ if (currentSeenSlots) {
124
+ currentSeenSlots.add(name);
125
+ }
126
+ else {
127
+ this.seenSlots.add(name);
128
+ }
129
+ }
130
+ currentElementScope() {
131
+ return this.elementScopes[this.elementScopes.length - 1];
132
+ }
133
+ beginSiblingScope() {
134
+ this.siblingScopes.push({
135
+ ancestorIfContext: this.currentIfContext() || this.ancestorIfContext(),
136
+ });
137
+ }
138
+ endSiblingScope() {
139
+ this.siblingScopes.pop();
140
+ }
141
+ beginIfChain(node) {
142
+ const currentSiblingContext = this.currentSiblingContext();
143
+ if (!currentSiblingContext) {
144
+ throw new Error('Cannot invoke beginIfChain if there is currently no sibling context');
145
+ }
146
+ const currentIfContext = this.currentIfContext();
147
+ if (currentIfContext) {
148
+ throw new Error('Should not invoke beginIfChain if an if context already exists. First end the current chain before starting a new one.');
149
+ }
150
+ const previouslySeenSlots = this.seenSlotsFromAncestorIfTree();
151
+ currentSiblingContext.ifContext = {
152
+ currentNode: node,
153
+ seenSlots: [new Set(previouslySeenSlots)],
154
+ };
155
+ }
156
+ appendToIfChain(node) {
157
+ const currentIfContext = this.currentIfContext();
158
+ if (!currentIfContext) {
159
+ throw new Error('Cannot invoke appendToIfChain without first setting the if context.');
160
+ }
161
+ currentIfContext.currentNode = node;
162
+ const previouslySeenSlots = this.seenSlotsFromAncestorIfTree();
163
+ currentIfContext.seenSlots.push(new Set(previouslySeenSlots));
164
+ }
165
+ endIfChain() {
166
+ const currentIfContext = this.currentIfContext();
167
+ if (!currentIfContext) {
168
+ throw new Error('Cannot invoke endIfChain if there is currently no if context');
169
+ }
170
+ // Merge seen slot names from the current if chain into the parent scope.
171
+ const seenSlotsInAncestorIfTree = this.seenSlotsFromAncestorIfTree();
172
+ for (const seenSlots of currentIfContext.seenSlots) {
173
+ for (const name of seenSlots) {
174
+ seenSlotsInAncestorIfTree.add(name);
175
+ }
176
+ }
177
+ const currentSiblingContext = this.currentSiblingContext();
178
+ if (currentSiblingContext) {
179
+ currentSiblingContext.ifContext = undefined;
180
+ }
181
+ }
182
+ getSiblingIfNode() {
183
+ var _a;
184
+ return (_a = this.currentIfContext()) === null || _a === void 0 ? void 0 : _a.currentNode;
185
+ }
186
+ isParsingSiblingIfBlock() {
187
+ return !!this.currentIfContext();
188
+ }
189
+ currentSiblingContext() {
190
+ return this.siblingScopes[this.siblingScopes.length - 1];
191
+ }
192
+ currentIfContext() {
193
+ var _a;
194
+ return (_a = this.currentSiblingContext()) === null || _a === void 0 ? void 0 : _a.ifContext;
195
+ }
196
+ ancestorIfContext() {
197
+ var _a;
198
+ return (_a = this.currentSiblingContext()) === null || _a === void 0 ? void 0 : _a.ancestorIfContext;
199
+ }
200
+ seenSlotsFromAncestorIfTree() {
201
+ const ancestorIfContext = this.ancestorIfContext();
202
+ if (ancestorIfContext) {
203
+ return ancestorIfContext.seenSlots[ancestorIfContext.seenSlots.length - 1];
204
+ }
205
+ return this.seenSlots;
115
206
  }
116
207
  /**
117
208
  * This method recovers from diagnostic errors that are encountered when fn is invoked.
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parser/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parser/parser.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isProperty = exports.isPreserveCommentsDirective = exports.isRenderModeDirective = exports.isKeyDirective = exports.isInnerHTMLDirective = exports.isDomDirective = exports.isDynamicDirective = exports.isParentNode = exports.isIf = exports.isForBlock = exports.isForEach = exports.isForOf = exports.isBooleanLiteral = exports.isStringLiteral = exports.isExpression = exports.isComment = exports.isText = exports.isBaseElement = exports.isSlot = exports.isComponent = exports.isRoot = exports.isElement = exports.property = exports.attribute = exports.renderModeDirective = exports.preserveCommentsDirective = exports.innerHTMLDirective = exports.domDirective = exports.dynamicDirective = exports.keyDirective = exports.eventListener = exports.ifNode = exports.forOf = exports.forEach = exports.literal = exports.sourceLocation = exports.elementSourceLocation = exports.comment = exports.text = exports.slot = exports.component = exports.element = exports.root = void 0;
3
+ exports.isSpreadDirective = exports.isDomDirective = exports.isDynamicDirective = exports.isParentNode = exports.isElementDirective = exports.isConditionalBlock = exports.isConditionalParentBlock = exports.isElseBlock = exports.isElseifBlock = exports.isIfBlock = exports.isIf = exports.isForBlock = exports.isForEach = exports.isForOf = exports.isBooleanLiteral = exports.isStringLiteral = exports.isExpression = exports.isComment = exports.isText = exports.isBaseElement = exports.isSlot = exports.isComponent = exports.isRoot = exports.isElement = exports.property = exports.attribute = exports.renderModeDirective = exports.preserveCommentsDirective = exports.refDirective = exports.innerHTMLDirective = exports.domDirective = exports.spreadDirective = exports.dynamicDirective = exports.keyDirective = exports.eventListener = exports.elseBlockNode = exports.elseifBlockNode = exports.ifBlockNode = exports.ifNode = exports.forOf = exports.forEach = exports.literal = exports.sourceLocation = exports.elementSourceLocation = exports.comment = exports.text = exports.slot = exports.component = exports.element = exports.root = void 0;
4
+ exports.isProperty = exports.isPreserveCommentsDirective = exports.isRenderModeDirective = exports.isKeyDirective = exports.isRefDirective = exports.isInnerHTMLDirective = void 0;
4
5
  /*
5
6
  * Copyright (c) 2018, salesforce.com, inc.
6
7
  * All rights reserved.
@@ -141,6 +142,35 @@ function ifNode(modifier, condition, elementLocation, directiveLocation) {
141
142
  };
142
143
  }
143
144
  exports.ifNode = ifNode;
145
+ function ifBlockNode(condition, elementLocation, directiveLocation) {
146
+ return {
147
+ type: 'IfBlock',
148
+ condition,
149
+ location: elementLocation,
150
+ directiveLocation,
151
+ children: [],
152
+ };
153
+ }
154
+ exports.ifBlockNode = ifBlockNode;
155
+ function elseifBlockNode(condition, elementLocation, directiveLocation) {
156
+ return {
157
+ type: 'ElseifBlock',
158
+ condition,
159
+ location: elementLocation,
160
+ directiveLocation,
161
+ children: [],
162
+ };
163
+ }
164
+ exports.elseifBlockNode = elseifBlockNode;
165
+ function elseBlockNode(elementLocation, directiveLocation) {
166
+ return {
167
+ type: 'ElseBlock',
168
+ location: elementLocation,
169
+ directiveLocation,
170
+ children: [],
171
+ };
172
+ }
173
+ exports.elseBlockNode = elseBlockNode;
144
174
  function eventListener(name, handler, location) {
145
175
  return {
146
176
  type: 'EventListener',
@@ -168,6 +198,15 @@ function dynamicDirective(value, location) {
168
198
  };
169
199
  }
170
200
  exports.dynamicDirective = dynamicDirective;
201
+ function spreadDirective(value, location) {
202
+ return {
203
+ type: 'Directive',
204
+ name: 'Spread',
205
+ value,
206
+ location,
207
+ };
208
+ }
209
+ exports.spreadDirective = spreadDirective;
171
210
  function domDirective(lwcDomAttr, location) {
172
211
  return {
173
212
  type: 'Directive',
@@ -186,6 +225,15 @@ function innerHTMLDirective(value, location) {
186
225
  };
187
226
  }
188
227
  exports.innerHTMLDirective = innerHTMLDirective;
228
+ function refDirective(value, location) {
229
+ return {
230
+ type: 'Directive',
231
+ name: 'Ref',
232
+ value,
233
+ location,
234
+ };
235
+ }
236
+ exports.refDirective = refDirective;
189
237
  function preserveCommentsDirective(preserveComments, location) {
190
238
  return {
191
239
  type: 'Directive',
@@ -279,6 +327,30 @@ function isIf(node) {
279
327
  return node.type === 'If';
280
328
  }
281
329
  exports.isIf = isIf;
330
+ function isIfBlock(node) {
331
+ return node.type === 'IfBlock';
332
+ }
333
+ exports.isIfBlock = isIfBlock;
334
+ function isElseifBlock(node) {
335
+ return node.type === 'ElseifBlock';
336
+ }
337
+ exports.isElseifBlock = isElseifBlock;
338
+ function isElseBlock(node) {
339
+ return node.type === 'ElseBlock';
340
+ }
341
+ exports.isElseBlock = isElseBlock;
342
+ function isConditionalParentBlock(node) {
343
+ return isIfBlock(node) || isElseifBlock(node);
344
+ }
345
+ exports.isConditionalParentBlock = isConditionalParentBlock;
346
+ function isConditionalBlock(node) {
347
+ return isIfBlock(node) || isElseifBlock(node) || isElseBlock(node);
348
+ }
349
+ exports.isConditionalBlock = isConditionalBlock;
350
+ function isElementDirective(node) {
351
+ return isConditionalBlock(node) || isForBlock(node) || isIf(node);
352
+ }
353
+ exports.isElementDirective = isElementDirective;
282
354
  function isParentNode(node) {
283
355
  return isBaseElement(node) || isRoot(node) || isForBlock(node) || isIf(node);
284
356
  }
@@ -291,10 +363,18 @@ function isDomDirective(directive) {
291
363
  return directive.name === 'Dom';
292
364
  }
293
365
  exports.isDomDirective = isDomDirective;
366
+ function isSpreadDirective(directive) {
367
+ return directive.name === 'Spread';
368
+ }
369
+ exports.isSpreadDirective = isSpreadDirective;
294
370
  function isInnerHTMLDirective(directive) {
295
371
  return directive.name === 'InnerHTML';
296
372
  }
297
373
  exports.isInnerHTMLDirective = isInnerHTMLDirective;
374
+ function isRefDirective(directive) {
375
+ return directive.name === 'Ref';
376
+ }
377
+ exports.isRefDirective = isRefDirective;
298
378
  function isKeyDirective(directive) {
299
379
  return directive.name === 'Key';
300
380
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/shared/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/shared/ast.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ exports.LWC_DIRECTIVES = {
16
16
  Dynamic: 'lwc:dynamic',
17
17
  InnerHTML: 'lwc:inner-html',
18
18
  Key: 'key',
19
+ Ref: 'lwc:ref',
20
+ Spread: 'lwc:spread',
19
21
  };
20
22
  function checkElement(element, state) {
21
23
  const { attributes, directives } = element;
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-hooks.js","sourceRoot":"","sources":["../../../src/shared/renderer-hooks.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,wCAAwD;AA0CxD;;GAEG;AACU,QAAA,cAAc,GAA6C;IACpE,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,gBAAgB;IAC3B,GAAG,EAAE,KAAK;CACb,CAAC;AAEF,SAAS,YAAY,CAAC,OAAoB,EAAE,KAAY;IACpD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,EAAE;QACnB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,4CAA4C;QAC5C,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,sBAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,gBAAgB,EAAE;YAClB,6EAA6E;YAC7E,kEAAkE;YAClE,0FAA0F;YAC1F,oCAAoC;YACpC,IAAA,kBAAS,EACL,OAAO,CAAC,IAAI,KAAK,WAAW,EAC5B,uBAAc,CAAC,sCAAsC,EACrD,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3E,CAAC;YACF,OAAO,IAAI,CAAC;SACf;KACJ;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sCAAsC;IACtC,IAAI,aAAa,EAAE;QACf,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC5D,oEAAoE;QACpE,IAAI,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;YAC9C,OAAO,KAAK,CAAC;SAChB;QACD,qFAAqF;QACrF,IACI,UAAU,CAAC,IAAI,KAAK,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAChE;YACE,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,4BAA4B,CAAC,OAAoB,EAAE,KAAY;IAC3E,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE;QACnC,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,OAAO,YAAY,CAAC;SACvB;aAAM;YACH,iBAAiB,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACjD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;SAC3D;KACJ;IACD,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAZD,oEAYC"}
1
+ {"version":3,"file":"renderer-hooks.js","sourceRoot":"","sources":["../../../src/shared/renderer-hooks.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,wCAAwD;AA0CxD;;GAEG;AACU,QAAA,cAAc,GAA6C;IACpE,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,gBAAgB;IAC3B,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,YAAY;CACvB,CAAC;AAEF,SAAS,YAAY,CAAC,OAAoB,EAAE,KAAY;IACpD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,EAAE;QACnB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,4CAA4C;QAC5C,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,sBAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,gBAAgB,EAAE;YAClB,6EAA6E;YAC7E,kEAAkE;YAClE,0FAA0F;YAC1F,oCAAoC;YACpC,IAAA,kBAAS,EACL,OAAO,CAAC,IAAI,KAAK,WAAW,EAC5B,uBAAc,CAAC,sCAAsC,EACrD,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3E,CAAC;YACF,OAAO,IAAI,CAAC;SACf;KACJ;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sCAAsC;IACtC,IAAI,aAAa,EAAE;QACf,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC5D,oEAAoE;QACpE,IAAI,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;YAC9C,OAAO,KAAK,CAAC;SAChB;QACD,qFAAqF;QACrF,IACI,UAAU,CAAC,IAAI,KAAK,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAChE;YACE,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,4BAA4B,CAAC,OAAoB,EAAE,KAAY;IAC3E,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE;QACnC,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,OAAO,YAAY,CAAC;SACvB;aAAM;YACH,iBAAiB,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACjD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;SAC3D;KACJ;IACD,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAZD,oEAYC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LWCDirectiveRenderMode = exports.LWCDirectiveDomMode = void 0;
3
+ exports.RootDirectiveName = exports.ElementDirectiveName = exports.LWCDirectiveRenderMode = exports.LWCDirectiveDomMode = void 0;
4
4
  var LWCDirectiveDomMode;
5
5
  (function (LWCDirectiveDomMode) {
6
6
  LWCDirectiveDomMode["manual"] = "manual";
@@ -10,4 +10,18 @@ var LWCDirectiveRenderMode;
10
10
  LWCDirectiveRenderMode["shadow"] = "shadow";
11
11
  LWCDirectiveRenderMode["light"] = "light";
12
12
  })(LWCDirectiveRenderMode = exports.LWCDirectiveRenderMode || (exports.LWCDirectiveRenderMode = {}));
13
+ var ElementDirectiveName;
14
+ (function (ElementDirectiveName) {
15
+ ElementDirectiveName["Dom"] = "lwc:dom";
16
+ ElementDirectiveName["Dynamic"] = "lwc:dynamic";
17
+ ElementDirectiveName["InnerHTML"] = "lwc:inner-html";
18
+ ElementDirectiveName["Ref"] = "lwc:ref";
19
+ ElementDirectiveName["Spread"] = "lwc:spread";
20
+ ElementDirectiveName["Key"] = "key";
21
+ })(ElementDirectiveName = exports.ElementDirectiveName || (exports.ElementDirectiveName = {}));
22
+ var RootDirectiveName;
23
+ (function (RootDirectiveName) {
24
+ RootDirectiveName["PreserveComments"] = "lwc:preserve-comments";
25
+ RootDirectiveName["RenderMode"] = "lwc:render-mode";
26
+ })(RootDirectiveName = exports.RootDirectiveName || (exports.RootDirectiveName = {}));
13
27
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":";;;AAiBA,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC3B,wCAAiB,CAAA;AACrB,CAAC,EAFW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAE9B;AAED,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,2CAAiB,CAAA;IACjB,yCAAe,CAAA;AACnB,CAAC,EAHW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAGjC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":";;;AAiBA,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC3B,wCAAiB,CAAA;AACrB,CAAC,EAFW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAE9B;AAED,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,2CAAiB,CAAA;IACjB,yCAAe,CAAA;AACnB,CAAC,EAHW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAGjC;AAwOD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC5B,uCAAe,CAAA;IACf,+CAAuB,CAAA;IACvB,oDAA4B,CAAA;IAC5B,uCAAe,CAAA;IACf,6CAAqB,CAAA;IACrB,mCAAW,CAAA;AACf,CAAC,EAPW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAO/B;AAED,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IACzB,+DAA0C,CAAA;IAC1C,mDAA8B,CAAA;AAClC,CAAC,EAHW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAG5B"}
@@ -29,6 +29,8 @@ export default class CodeGen {
29
29
  identifier: t.Identifier;
30
30
  expr: t.Expression;
31
31
  }>;
32
+ /** True if this template contains the lwc:ref directive */
33
+ hasRefs: boolean;
32
34
  /**
33
35
  * State maintains information about the current compilation configs.
34
36
  */
@@ -5,12 +5,11 @@ import CodeGen from './codegen';
5
5
  export declare function identifierFromComponentName(name: string): t.Identifier;
6
6
  export declare function getMemberExpressionRoot(expression: t.MemberExpression): t.Identifier;
7
7
  export declare function objectToAST(obj: object, valueMapper: (key: string) => t.Expression): t.ObjectExpression;
8
- export declare function containsDynamicChildren(children: ChildNode[]): boolean;
9
8
  /**
10
9
  * Returns true if the children should be flattened.
11
10
  *
12
- * Children should be flattened if they contain an iterator,
13
- * a dynamic directive or a slot inside a light dom element.
11
+ * This function searches through the children to determine if flattening needs to occur in the runtime.
12
+ * Children should be flattened if they contain an iterator, a dynamic directive or a slot inside a light dom element.
14
13
  */
15
14
  export declare function shouldFlatten(codeGen: CodeGen, children: ChildNode[]): boolean;
16
15
  /**
@@ -23,6 +23,10 @@ export interface Config {
23
23
  * When false, the template compiler will not generate optimized code for static content.
24
24
  */
25
25
  enableStaticContentOptimization?: boolean;
26
+ /**
27
+ * When true, enables `lwc:spread` directive.
28
+ */
29
+ enableLwcSpread?: boolean;
26
30
  }
27
31
  export declare type NormalizedConfig = Required<Omit<Config, 'customRendererConfig'>> & Partial<Pick<Config, 'customRendererConfig'>>;
28
32
  export declare function normalizeConfig(config: Config): NormalizedConfig;
@@ -5,16 +5,7 @@ export declare const VALID_IF_MODIFIER: Set<string>;
5
5
  export declare const ITERATOR_RE: RegExp;
6
6
  export declare const EVENT_HANDLER_RE: RegExp;
7
7
  export declare const EVENT_HANDLER_NAME_RE: RegExp;
8
- export declare const LWC_DIRECTIVES: {
9
- DOM: string;
10
- DYNAMIC: string;
11
- INNER_HTML: string;
12
- };
13
8
  export declare const LWC_DIRECTIVE_SET: Set<string>;
14
- export declare const ROOT_TEMPLATE_DIRECTIVES: {
15
- PRESERVE_COMMENTS: string;
16
- RENDER_MODE: string;
17
- };
18
9
  export declare const ID_REFERENCING_ATTRIBUTES_SET: Set<string>;
19
10
  export declare const DATA_RE: RegExp;
20
11
  export declare const SUPPORTED_SVG_TAGS: Set<string>;
@@ -1,6 +1,6 @@
1
1
  import { CompilerDiagnostic, LWCErrorInfo } from '@lwc/errors';
2
2
  import { NormalizedConfig } from '../config';
3
- import { Root, SourceLocation, ParentNode, BaseNode, LWCDirectiveRenderMode } from '../shared/types';
3
+ import { Root, SourceLocation, ParentNode, BaseNode, LWCDirectiveRenderMode, IfBlock, ElseifBlock, ElseBlock } from '../shared/types';
4
4
  interface ParentWrapper {
5
5
  parent: ParentNode | null;
6
6
  current: ParentNode;
@@ -12,17 +12,22 @@ export default class ParserCtx {
12
12
  readonly seenIds: Set<string>;
13
13
  readonly seenSlots: Set<string>;
14
14
  /**
15
- * Scopes keep track of the hierarchy of ParentNodes as the parser traverses the parse5 AST.
16
- * Each scope is represented by an array where each node in the array correspond to either
17
- * a ForEach, ForOf, If, Element, Component, or Slot.
15
+ * 'elementScopes' keeps track of the hierarchy of ParentNodes as the parser
16
+ * traverses the parse5 AST. Each 'elementScope' is an array where each node in
17
+ * the array corresponds to either an IfBlock, ElseifBlock, ElseBlock, ForEach, ForOf, If, Element, Component, or Slot.
18
18
  *
19
- * Currently, each scope has a hierarchy of ForBlock > IfBlock > Element | Component | Slot.
20
- * Note: Not all scopes will have all three, but when they do, they will appear in this order.
19
+ * Currently, each elementScope has a hierarchy of IfBlock > ForBlock > If > Element | Component | Slot.
20
+ * Note: Not all elementScopes will have all the nodes listed above, but when they do, they will appear in this order.
21
21
  * We do not keep track of template nodes.
22
22
  *
23
23
  * Each scope corresponds to the original parse5.Element node.
24
24
  */
25
- private readonly scopes;
25
+ private readonly elementScopes;
26
+ /**
27
+ * 'siblingScopes' keeps track of the context from one sibling node to another.
28
+ * This holds the info needed to properly parse lwc:if, lwc:elseif, and lwc:else directives.
29
+ */
30
+ private readonly siblingScopes;
26
31
  renderMode: LWCDirectiveRenderMode;
27
32
  preserveComments: boolean;
28
33
  constructor(source: String, config: NormalizedConfig);
@@ -49,11 +54,24 @@ export default class ParserCtx {
49
54
  * @param {function} predicate - This callback is called once for each sibling in the current scope
50
55
  * until it finds one where predicate returns true.
51
56
  */
52
- findSibling<A extends ParentNode>(predicate: (node: ParentNode) => node is A): A | null;
53
- beginScope(): void;
54
- endScope(): void;
55
- addNodeCurrentScope(node: ParentNode): void;
56
- private currentScope;
57
+ findInCurrentElementScope<A extends ParentNode>(predicate: (node: ParentNode) => node is A): A | null;
58
+ beginElementScope(): void;
59
+ endElementScope(): ParentNode | undefined;
60
+ addNodeCurrentElementScope(node: ParentNode): void;
61
+ hasSeenSlot(name: string): boolean;
62
+ addSeenSlot(name: string): void;
63
+ private currentElementScope;
64
+ beginSiblingScope(): void;
65
+ endSiblingScope(): void;
66
+ beginIfChain(node: IfBlock): void;
67
+ appendToIfChain(node: ElseifBlock | ElseBlock): void;
68
+ endIfChain(): void;
69
+ getSiblingIfNode(): IfBlock | ElseifBlock | ElseBlock | undefined;
70
+ isParsingSiblingIfBlock(): boolean;
71
+ private currentSiblingContext;
72
+ private currentIfContext;
73
+ private ancestorIfContext;
74
+ private seenSlotsFromAncestorIfTree;
57
75
  /**
58
76
  * This method recovers from diagnostic errors that are encountered when fn is invoked.
59
77
  * All other errors are considered compiler errors and can not be recovered from.
@@ -1,5 +1,5 @@
1
1
  import * as parse5 from 'parse5';
2
- import { Literal, SourceLocation, Element, Component, Expression, Comment, Text, ForEach, ForBlock, Slot, Identifier, Root, EventListener, KeyDirective, DynamicDirective, DomDirective, PreserveCommentsDirective, RenderModeDirective, Attribute, Property, ParentNode, BaseNode, ForOf, LWCDirectiveRenderMode, If, ElementSourceLocation, InnerHTMLDirective, Directive, BaseElement, LWCDirectiveDomMode } from './types';
2
+ import { Literal, SourceLocation, Element, Component, Expression, Comment, Text, ForEach, ForBlock, Slot, Identifier, Root, EventListener, KeyDirective, DynamicDirective, DomDirective, PreserveCommentsDirective, RenderModeDirective, Attribute, Property, ParentNode, BaseNode, ForOf, LWCDirectiveRenderMode, If, IfBlock, ElseBlock, ElseifBlock, ElementSourceLocation, InnerHTMLDirective, BaseElement, LWCDirectiveDomMode, RefDirective, SpreadDirective, ElementDirective, RootDirective } from './types';
3
3
  export declare function root(parse5ElmLocation: parse5.ElementLocation): Root;
4
4
  export declare function element(parse5Elm: parse5.Element, parse5ElmLocation: parse5.ElementLocation): Element;
5
5
  export declare function component(parse5Elm: parse5.Element, parse5ElmLocation: parse5.ElementLocation): Component;
@@ -12,11 +12,16 @@ export declare function literal<T extends string | boolean>(value: T): Literal<T
12
12
  export declare function forEach(expression: Expression, elementLocation: SourceLocation, directiveLocation: SourceLocation, item: Identifier, index?: Identifier): ForEach;
13
13
  export declare function forOf(expression: Expression, iterator: Identifier, elementLocation: SourceLocation, directiveLocation: SourceLocation): ForOf;
14
14
  export declare function ifNode(modifier: string, condition: Expression, elementLocation: SourceLocation, directiveLocation: SourceLocation): If;
15
+ export declare function ifBlockNode(condition: Expression, elementLocation: SourceLocation, directiveLocation: SourceLocation): IfBlock;
16
+ export declare function elseifBlockNode(condition: Expression, elementLocation: SourceLocation, directiveLocation: SourceLocation): ElseifBlock;
17
+ export declare function elseBlockNode(elementLocation: SourceLocation, directiveLocation: SourceLocation): ElseBlock;
15
18
  export declare function eventListener(name: string, handler: Expression, location: SourceLocation): EventListener;
16
19
  export declare function keyDirective(value: Expression, location: SourceLocation): KeyDirective;
17
20
  export declare function dynamicDirective(value: Expression, location: SourceLocation): DynamicDirective;
21
+ export declare function spreadDirective(value: Expression, location: SourceLocation): SpreadDirective;
18
22
  export declare function domDirective(lwcDomAttr: LWCDirectiveDomMode, location: SourceLocation): DomDirective;
19
23
  export declare function innerHTMLDirective(value: Expression | Literal<string>, location: SourceLocation): InnerHTMLDirective;
24
+ export declare function refDirective(value: Literal<string>, location: SourceLocation): RefDirective;
20
25
  export declare function preserveCommentsDirective(preserveComments: boolean, location: SourceLocation): PreserveCommentsDirective;
21
26
  export declare function renderModeDirective(renderMode: LWCDirectiveRenderMode, location: SourceLocation): RenderModeDirective;
22
27
  export declare function attribute(name: string, value: Expression | Literal, location: SourceLocation): Attribute;
@@ -35,11 +40,19 @@ export declare function isForOf(node: BaseNode): node is ForOf;
35
40
  export declare function isForEach(node: BaseNode): node is ForEach;
36
41
  export declare function isForBlock(node: BaseNode): node is ForBlock;
37
42
  export declare function isIf(node: BaseNode): node is If;
43
+ export declare function isIfBlock(node: BaseNode): node is IfBlock;
44
+ export declare function isElseifBlock(node: BaseNode): node is ElseifBlock;
45
+ export declare function isElseBlock(node: BaseNode): node is ElseBlock;
46
+ export declare function isConditionalParentBlock(node: BaseNode): node is IfBlock | ElseifBlock;
47
+ export declare function isConditionalBlock(node: BaseNode): node is IfBlock | ElseifBlock | ElseBlock;
48
+ export declare function isElementDirective(node: BaseNode): node is IfBlock | ElseifBlock | ElseBlock | ForBlock | If;
38
49
  export declare function isParentNode(node: BaseNode): node is ParentNode;
39
- export declare function isDynamicDirective(directive: Directive): directive is DynamicDirective;
40
- export declare function isDomDirective(directive: Directive): directive is DomDirective;
41
- export declare function isInnerHTMLDirective(directive: Directive): directive is InnerHTMLDirective;
42
- export declare function isKeyDirective(directive: Directive): directive is KeyDirective;
43
- export declare function isRenderModeDirective(directive: Directive): directive is RenderModeDirective;
44
- export declare function isPreserveCommentsDirective(directive: Directive): directive is PreserveCommentsDirective;
50
+ export declare function isDynamicDirective(directive: ElementDirective): directive is DynamicDirective;
51
+ export declare function isDomDirective(directive: ElementDirective): directive is DomDirective;
52
+ export declare function isSpreadDirective(directive: ElementDirective): directive is SpreadDirective;
53
+ export declare function isInnerHTMLDirective(directive: ElementDirective): directive is InnerHTMLDirective;
54
+ export declare function isRefDirective(directive: ElementDirective): directive is RefDirective;
55
+ export declare function isKeyDirective(directive: ElementDirective): directive is KeyDirective;
56
+ export declare function isRenderModeDirective(directive: RootDirective): directive is RenderModeDirective;
57
+ export declare function isPreserveCommentsDirective(directive: RootDirective): directive is PreserveCommentsDirective;
45
58
  export declare function isProperty(node: BaseNode): node is Property;