@lwc/template-compiler 2.45.2 → 2.45.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.cjs.js +5314 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/{types/index.d.ts → index.d.ts} +1 -0
- package/dist/index.js +5287 -0
- package/dist/index.js.map +1 -0
- package/package.json +33 -30
- package/dist/commonjs/codegen/codegen.js +0 -330
- package/dist/commonjs/codegen/codegen.js.map +0 -1
- package/dist/commonjs/codegen/expression.js +0 -176
- package/dist/commonjs/codegen/expression.js.map +0 -1
- package/dist/commonjs/codegen/formatters/module.js +0 -91
- package/dist/commonjs/codegen/formatters/module.js.map +0 -1
- package/dist/commonjs/codegen/helpers.js +0 -233
- package/dist/commonjs/codegen/helpers.js.map +0 -1
- package/dist/commonjs/codegen/index.js +0 -549
- package/dist/commonjs/codegen/index.js.map +0 -1
- package/dist/commonjs/codegen/optimize.js +0 -119
- package/dist/commonjs/codegen/optimize.js.map +0 -1
- package/dist/commonjs/codegen/static-element-serializer.js +0 -122
- package/dist/commonjs/codegen/static-element-serializer.js.map +0 -1
- package/dist/commonjs/config.js +0 -78
- package/dist/commonjs/config.js.map +0 -1
- package/dist/commonjs/index.js +0 -66
- package/dist/commonjs/index.js.map +0 -1
- package/dist/commonjs/parser/attribute.js +0 -237
- package/dist/commonjs/parser/attribute.js.map +0 -1
- package/dist/commonjs/parser/constants.js +0 -155
- package/dist/commonjs/parser/constants.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/html.js +0 -222
- package/dist/commonjs/parser/expression-complex/html.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/index.js +0 -26
- package/dist/commonjs/parser/expression-complex/index.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/types.js +0 -9
- package/dist/commonjs/parser/expression-complex/types.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/validate.js +0 -141
- package/dist/commonjs/parser/expression-complex/validate.js.map +0 -1
- package/dist/commonjs/parser/expression.js +0 -130
- package/dist/commonjs/parser/expression.js.map +0 -1
- package/dist/commonjs/parser/html.js +0 -112
- package/dist/commonjs/parser/html.js.map +0 -1
- package/dist/commonjs/parser/index.js +0 -1181
- package/dist/commonjs/parser/index.js.map +0 -1
- package/dist/commonjs/parser/parse5Errors.js +0 -77
- package/dist/commonjs/parser/parse5Errors.js.map +0 -1
- package/dist/commonjs/parser/parser.js +0 -309
- package/dist/commonjs/parser/parser.js.map +0 -1
- package/dist/commonjs/parser/utils/html-element-attributes.js +0 -411
- package/dist/commonjs/parser/utils/html-element-attributes.js.map +0 -1
- package/dist/commonjs/parser/utils/html-elements.js +0 -141
- package/dist/commonjs/parser/utils/html-elements.js.map +0 -1
- package/dist/commonjs/parser/utils/javascript.js +0 -25
- package/dist/commonjs/parser/utils/javascript.js.map +0 -1
- package/dist/commonjs/parser/utils/svg-elements.js +0 -42
- package/dist/commonjs/parser/utils/svg-elements.js.map +0 -1
- package/dist/commonjs/shared/ast.js +0 -496
- package/dist/commonjs/shared/ast.js.map +0 -1
- package/dist/commonjs/shared/constants.js +0 -33
- package/dist/commonjs/shared/constants.js.map +0 -1
- package/dist/commonjs/shared/estree.js +0 -325
- package/dist/commonjs/shared/estree.js.map +0 -1
- package/dist/commonjs/shared/naming.js +0 -32
- package/dist/commonjs/shared/naming.js.map +0 -1
- package/dist/commonjs/shared/parse5.js +0 -20
- package/dist/commonjs/shared/parse5.js.map +0 -1
- package/dist/commonjs/shared/renderer-hooks.js +0 -55
- package/dist/commonjs/shared/renderer-hooks.js.map +0 -1
- package/dist/commonjs/shared/types.js +0 -49
- package/dist/commonjs/shared/types.js.map +0 -1
- package/dist/commonjs/shared/utils.js +0 -45
- package/dist/commonjs/shared/utils.js.map +0 -1
- package/dist/commonjs/state.js +0 -24
- package/dist/commonjs/state.js.map +0 -1
- /package/dist/{types/codegen → codegen}/codegen.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/expression.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/formatters/module.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/helpers.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/index.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/optimize.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/static-element-serializer.d.ts +0 -0
- /package/dist/{types/config.d.ts → config.d.ts} +0 -0
- /package/dist/{types/parser → parser}/attribute.d.ts +0 -0
- /package/dist/{types/parser → parser}/constants.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/html.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/index.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/types.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/validate.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression.d.ts +0 -0
- /package/dist/{types/parser → parser}/html.d.ts +0 -0
- /package/dist/{types/parser → parser}/index.d.ts +0 -0
- /package/dist/{types/parser → parser}/parse5Errors.d.ts +0 -0
- /package/dist/{types/parser → parser}/parser.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/html-element-attributes.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/html-elements.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/javascript.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/svg-elements.d.ts +0 -0
- /package/dist/{types/shared → shared}/ast.d.ts +0 -0
- /package/dist/{types/shared → shared}/constants.d.ts +0 -0
- /package/dist/{types/shared → shared}/estree.d.ts +0 -0
- /package/dist/{types/shared → shared}/naming.d.ts +0 -0
- /package/dist/{types/shared → shared}/parse5.d.ts +0 -0
- /package/dist/{types/shared → shared}/renderer-hooks.d.ts +0 -0
- /package/dist/{types/shared → shared}/types.d.ts +0 -0
- /package/dist/{types/shared → shared}/utils.d.ts +0 -0
- /package/dist/{types/state.d.ts → state.d.ts} +0 -0
|
@@ -1,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"}
|