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