@lwc/ssr-compiler 8.22.3 → 8.22.5
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.
|
@@ -2,4 +2,13 @@ import type { ComplexExpression as IrComplexExpression, Expression as IrExpressi
|
|
|
2
2
|
import type { Expression as EsExpression } from 'estree';
|
|
3
3
|
import type { TransformerContext } from './types';
|
|
4
4
|
export declare function expressionIrToEs(node: IrExpression | IrComplexExpression, cxt: TransformerContext): EsExpression;
|
|
5
|
+
/**
|
|
6
|
+
* Given an expression in a context, return an expression that may be scoped to that context.
|
|
7
|
+
* For example, for the expression `foo`, it will typically be `instance.foo`, but if we're
|
|
8
|
+
* inside a `for:each` block then the `foo` variable may refer to the scoped `foo`,
|
|
9
|
+
* e.g. `<template for:each={foos} for:item="foo">`
|
|
10
|
+
* @param expression
|
|
11
|
+
* @param cxt
|
|
12
|
+
*/
|
|
13
|
+
export declare function getScopedExpression(expression: IrExpression, cxt: TransformerContext): EsExpression;
|
|
5
14
|
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -4,15 +4,6 @@ import type { Expression as EsExpression, ObjectExpression as EsObjectExpression
|
|
|
4
4
|
import type { ComplexExpression as IrComplexExpression, Expression as IrExpression, Literal as IrLiteral } from '@lwc/template-compiler';
|
|
5
5
|
export declare function optimizeAdjacentYieldStmts(statements: EsStatement[]): EsStatement[];
|
|
6
6
|
export declare function bAttributeValue(node: IrNode, attrName: string): EsExpression;
|
|
7
|
-
/**
|
|
8
|
-
* Given an expression in a context, return an expression that may be scoped to that context.
|
|
9
|
-
* For example, for the expression `foo`, it will typically be `instance.foo`, but if we're
|
|
10
|
-
* inside a `for:each` block then the `foo` variable may refer to the scoped `foo`,
|
|
11
|
-
* e.g. `<template for:each={foos} for:item="foo">`
|
|
12
|
-
* @param expression
|
|
13
|
-
* @param cxt
|
|
14
|
-
*/
|
|
15
|
-
export declare function getScopedExpression(expression: EsExpression, cxt: TransformerContext): EsExpression;
|
|
16
7
|
export declare function normalizeClassAttributeValue(value: string): string;
|
|
17
8
|
export declare function getChildAttrsOrProps(attrs: (IrAttribute | IrProperty)[], cxt: TransformerContext): EsObjectExpression;
|
|
18
9
|
/**
|
package/dist/index.cjs.js
CHANGED
|
@@ -1257,25 +1257,45 @@ function addScopeTokenDeclarations(program, filename, namespace, componentName)
|
|
|
1257
1257
|
* SPDX-License-Identifier: MIT
|
|
1258
1258
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
1259
1259
|
*/
|
|
1260
|
-
function getRootMemberExpression$2(node) {
|
|
1261
|
-
return node.object.type === 'MemberExpression' ? getRootMemberExpression$2(node.object) : node;
|
|
1262
|
-
}
|
|
1263
1260
|
function expressionIrToEs(node, cxt) {
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1261
|
+
const isComplexTemplateExpressionEnabled = cxt.templateOptions.experimentalComplexExpressions &&
|
|
1262
|
+
shared.isAPIFeatureEnabled(11 /* APIFeature.ENABLE_COMPLEX_TEMPLATE_EXPRESSIONS */, cxt.templateOptions.apiVersion);
|
|
1263
|
+
return templateCompiler.bindExpression(node, (n) => cxt.isLocalVar(n.name), 'instance', isComplexTemplateExpressionEnabled);
|
|
1264
|
+
}
|
|
1265
|
+
/**
|
|
1266
|
+
* Given an expression in a context, return an expression that may be scoped to that context.
|
|
1267
|
+
* For example, for the expression `foo`, it will typically be `instance.foo`, but if we're
|
|
1268
|
+
* inside a `for:each` block then the `foo` variable may refer to the scoped `foo`,
|
|
1269
|
+
* e.g. `<template for:each={foos} for:item="foo">`
|
|
1270
|
+
* @param expression
|
|
1271
|
+
* @param cxt
|
|
1272
|
+
*/
|
|
1273
|
+
function getScopedExpression(expression, cxt) {
|
|
1274
|
+
let scopeReferencedId = null;
|
|
1275
|
+
if (expression.type === 'MemberExpression') {
|
|
1276
|
+
// e.g. `foo.bar` -> scopeReferencedId is `foo`
|
|
1277
|
+
scopeReferencedId = getRootIdentifier$1(expression);
|
|
1269
1278
|
}
|
|
1270
|
-
else if (
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1279
|
+
else if (expression.type === 'Identifier') {
|
|
1280
|
+
// e.g. `foo` -> scopeReferencedId is `foo`
|
|
1281
|
+
scopeReferencedId = expression;
|
|
1282
|
+
}
|
|
1283
|
+
if (scopeReferencedId === null && !cxt.templateOptions.experimentalComplexExpressions) {
|
|
1284
|
+
throw new Error(`Invalid expression, must be a MemberExpression or Identifier, found type="${expression.type}": \`${JSON.stringify(expression)}\``);
|
|
1285
|
+
}
|
|
1286
|
+
return cxt.isLocalVar(scopeReferencedId?.name)
|
|
1287
|
+
? expression
|
|
1288
|
+
: expressionIrToEs(expression, cxt);
|
|
1289
|
+
}
|
|
1290
|
+
function getRootMemberExpression$1(node) {
|
|
1291
|
+
return node.object.type === 'MemberExpression' ? getRootMemberExpression$1(node.object) : node;
|
|
1292
|
+
}
|
|
1293
|
+
function getRootIdentifier$1(node) {
|
|
1294
|
+
const rootMemberExpression = getRootMemberExpression$1(node);
|
|
1295
|
+
if (rootMemberExpression.object.type === 'Identifier') {
|
|
1296
|
+
return rootMemberExpression.object;
|
|
1277
1297
|
}
|
|
1278
|
-
throw new Error(`
|
|
1298
|
+
throw new Error(`Invalid expression, must be an Identifier, found type="${rootMemberExpression.type}": \`${JSON.stringify(rootMemberExpression)}\``);
|
|
1279
1299
|
}
|
|
1280
1300
|
|
|
1281
1301
|
/*
|
|
@@ -1328,53 +1348,6 @@ function bAttributeValue(node, attrName) {
|
|
|
1328
1348
|
return estreeToolkit.builders.memberExpression(estreeToolkit.builders.literal('instance'), nameAttrValue);
|
|
1329
1349
|
}
|
|
1330
1350
|
}
|
|
1331
|
-
function getRootMemberExpression$1(node) {
|
|
1332
|
-
return node.object.type === 'MemberExpression' ? getRootMemberExpression$1(node.object) : node;
|
|
1333
|
-
}
|
|
1334
|
-
function getRootIdentifier$1(node, cxt) {
|
|
1335
|
-
const rootMemberExpression = getRootMemberExpression$1(node);
|
|
1336
|
-
if (estreeToolkit.is.identifier(rootMemberExpression.object)) {
|
|
1337
|
-
return rootMemberExpression.object;
|
|
1338
|
-
}
|
|
1339
|
-
if (cxt.templateOptions.experimentalComplexExpressions) {
|
|
1340
|
-
// TODO [#3370]: Implement complex template expressions
|
|
1341
|
-
return null;
|
|
1342
|
-
}
|
|
1343
|
-
// Should be impossible to hit, at least until we implement complex template expressions
|
|
1344
|
-
/* v8 ignore next */
|
|
1345
|
-
throw new Error(`Invalid expression, must be an Identifier, found type="${rootMemberExpression.type}": \`${JSON.stringify(rootMemberExpression)}\``);
|
|
1346
|
-
}
|
|
1347
|
-
/**
|
|
1348
|
-
* Given an expression in a context, return an expression that may be scoped to that context.
|
|
1349
|
-
* For example, for the expression `foo`, it will typically be `instance.foo`, but if we're
|
|
1350
|
-
* inside a `for:each` block then the `foo` variable may refer to the scoped `foo`,
|
|
1351
|
-
* e.g. `<template for:each={foos} for:item="foo">`
|
|
1352
|
-
* @param expression
|
|
1353
|
-
* @param cxt
|
|
1354
|
-
*/
|
|
1355
|
-
function getScopedExpression(expression, cxt) {
|
|
1356
|
-
let scopeReferencedId = null;
|
|
1357
|
-
if (estreeToolkit.is.memberExpression(expression)) {
|
|
1358
|
-
// e.g. `foo.bar` -> scopeReferencedId is `foo`
|
|
1359
|
-
scopeReferencedId = getRootIdentifier$1(expression, cxt);
|
|
1360
|
-
}
|
|
1361
|
-
else if (estreeToolkit.is.identifier(expression)) {
|
|
1362
|
-
// e.g. `foo` -> scopeReferencedId is `foo`
|
|
1363
|
-
scopeReferencedId = expression;
|
|
1364
|
-
}
|
|
1365
|
-
if (scopeReferencedId === null) {
|
|
1366
|
-
if (cxt.templateOptions.experimentalComplexExpressions) {
|
|
1367
|
-
// TODO [#3370]: Implement complex template expressions
|
|
1368
|
-
return expression;
|
|
1369
|
-
}
|
|
1370
|
-
// Should be impossible to hit, at least until we implement complex template expressions
|
|
1371
|
-
/* v8 ignore next */
|
|
1372
|
-
throw new Error(`Invalid expression, must be a MemberExpression or Identifier, found type="${expression.type}": \`${JSON.stringify(expression)}\``);
|
|
1373
|
-
}
|
|
1374
|
-
return cxt.isLocalVar(scopeReferencedId.name)
|
|
1375
|
-
? expression
|
|
1376
|
-
: estreeToolkit.builders.memberExpression(estreeToolkit.builders.identifier('instance'), expression);
|
|
1377
|
-
}
|
|
1378
1351
|
function normalizeClassAttributeValue(value) {
|
|
1379
1352
|
// @ts-expect-error weird indirection results in wrong overload being picked up
|
|
1380
1353
|
return shared.StringReplace.call(shared.StringTrim.call(value), /\s+/g, ' ');
|
|
@@ -2601,9 +2574,11 @@ function compileTemplate(src, filename, options, compilationMode) {
|
|
|
2601
2574
|
}
|
|
2602
2575
|
const preserveComments = !!root.directives.find((directive) => directive.name === 'PreserveComments')?.value?.value;
|
|
2603
2576
|
const experimentalComplexExpressions = Boolean(options.experimentalComplexExpressions);
|
|
2577
|
+
const apiVersion = Number(options.apiVersion);
|
|
2604
2578
|
const { addImport, getImports, statements, cxt } = templateIrToEsTree(root, {
|
|
2605
2579
|
preserveComments,
|
|
2606
2580
|
experimentalComplexExpressions,
|
|
2581
|
+
apiVersion,
|
|
2607
2582
|
});
|
|
2608
2583
|
addImport(['renderStylesheets', 'hasScopedStaticStylesheets']);
|
|
2609
2584
|
for (const [imports, source] of getStylesheetImports(filename)) {
|
|
@@ -2666,5 +2641,5 @@ function compileTemplateForSSR(src, filename, options, mode = shared.DEFAULT_SSR
|
|
|
2666
2641
|
|
|
2667
2642
|
exports.compileComponentForSSR = compileComponentForSSR;
|
|
2668
2643
|
exports.compileTemplateForSSR = compileTemplateForSSR;
|
|
2669
|
-
/** version: 8.22.
|
|
2644
|
+
/** version: 8.22.5 */
|
|
2670
2645
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2025 Salesforce, Inc.
|
|
3
3
|
*/
|
|
4
|
-
import { AMBIGUOUS_PROP_SET, DISALLOWED_PROP_SET, LWC_VERSION_COMMENT, normalizeStyleAttributeValue, normalizeTabIndex, StringReplace, StringTrim, entries, kebabCaseToCamelCase, isUndefined, HTML_NAMESPACE, isVoidElement, isBooleanAttribute, DEFAULT_SSR_MODE, generateCustomElementTagName } from '@lwc/shared';
|
|
4
|
+
import { AMBIGUOUS_PROP_SET, DISALLOWED_PROP_SET, LWC_VERSION_COMMENT, isAPIFeatureEnabled, normalizeStyleAttributeValue, normalizeTabIndex, StringReplace, StringTrim, entries, kebabCaseToCamelCase, isUndefined, HTML_NAMESPACE, isVoidElement, isBooleanAttribute, DEFAULT_SSR_MODE, generateCustomElementTagName } from '@lwc/shared';
|
|
5
5
|
import { generate } from 'astring';
|
|
6
6
|
import { builders, traverse, is } from 'estree-toolkit';
|
|
7
7
|
import { parseModule } from 'meriyah';
|
|
@@ -9,7 +9,7 @@ import { generateCompilerError, DecoratorErrors, SsrCompilerErrors, LWCClassErro
|
|
|
9
9
|
import { produce } from 'immer';
|
|
10
10
|
import { parse as parse$1 } from 'node:path';
|
|
11
11
|
import { parse } from 'acorn';
|
|
12
|
-
import { generateScopeTokens, toPropertyName, kebabcaseToCamelcase, parse as parse$2 } from '@lwc/template-compiler';
|
|
12
|
+
import { generateScopeTokens, bindExpression, toPropertyName, kebabcaseToCamelcase, parse as parse$2 } from '@lwc/template-compiler';
|
|
13
13
|
import { builders as builders$1 } from 'estree-toolkit/dist/builders';
|
|
14
14
|
import { isValidES3Identifier } from '@babel/types';
|
|
15
15
|
import { inspect } from 'util';
|
|
@@ -1253,25 +1253,45 @@ function addScopeTokenDeclarations(program, filename, namespace, componentName)
|
|
|
1253
1253
|
* SPDX-License-Identifier: MIT
|
|
1254
1254
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
1255
1255
|
*/
|
|
1256
|
-
function getRootMemberExpression$2(node) {
|
|
1257
|
-
return node.object.type === 'MemberExpression' ? getRootMemberExpression$2(node.object) : node;
|
|
1258
|
-
}
|
|
1259
1256
|
function expressionIrToEs(node, cxt) {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1257
|
+
const isComplexTemplateExpressionEnabled = cxt.templateOptions.experimentalComplexExpressions &&
|
|
1258
|
+
isAPIFeatureEnabled(11 /* APIFeature.ENABLE_COMPLEX_TEMPLATE_EXPRESSIONS */, cxt.templateOptions.apiVersion);
|
|
1259
|
+
return bindExpression(node, (n) => cxt.isLocalVar(n.name), 'instance', isComplexTemplateExpressionEnabled);
|
|
1260
|
+
}
|
|
1261
|
+
/**
|
|
1262
|
+
* Given an expression in a context, return an expression that may be scoped to that context.
|
|
1263
|
+
* For example, for the expression `foo`, it will typically be `instance.foo`, but if we're
|
|
1264
|
+
* inside a `for:each` block then the `foo` variable may refer to the scoped `foo`,
|
|
1265
|
+
* e.g. `<template for:each={foos} for:item="foo">`
|
|
1266
|
+
* @param expression
|
|
1267
|
+
* @param cxt
|
|
1268
|
+
*/
|
|
1269
|
+
function getScopedExpression(expression, cxt) {
|
|
1270
|
+
let scopeReferencedId = null;
|
|
1271
|
+
if (expression.type === 'MemberExpression') {
|
|
1272
|
+
// e.g. `foo.bar` -> scopeReferencedId is `foo`
|
|
1273
|
+
scopeReferencedId = getRootIdentifier$1(expression);
|
|
1265
1274
|
}
|
|
1266
|
-
else if (
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
}
|
|
1272
|
-
|
|
1275
|
+
else if (expression.type === 'Identifier') {
|
|
1276
|
+
// e.g. `foo` -> scopeReferencedId is `foo`
|
|
1277
|
+
scopeReferencedId = expression;
|
|
1278
|
+
}
|
|
1279
|
+
if (scopeReferencedId === null && !cxt.templateOptions.experimentalComplexExpressions) {
|
|
1280
|
+
throw new Error(`Invalid expression, must be a MemberExpression or Identifier, found type="${expression.type}": \`${JSON.stringify(expression)}\``);
|
|
1281
|
+
}
|
|
1282
|
+
return cxt.isLocalVar(scopeReferencedId?.name)
|
|
1283
|
+
? expression
|
|
1284
|
+
: expressionIrToEs(expression, cxt);
|
|
1285
|
+
}
|
|
1286
|
+
function getRootMemberExpression$1(node) {
|
|
1287
|
+
return node.object.type === 'MemberExpression' ? getRootMemberExpression$1(node.object) : node;
|
|
1288
|
+
}
|
|
1289
|
+
function getRootIdentifier$1(node) {
|
|
1290
|
+
const rootMemberExpression = getRootMemberExpression$1(node);
|
|
1291
|
+
if (rootMemberExpression.object.type === 'Identifier') {
|
|
1292
|
+
return rootMemberExpression.object;
|
|
1273
1293
|
}
|
|
1274
|
-
throw new Error(`
|
|
1294
|
+
throw new Error(`Invalid expression, must be an Identifier, found type="${rootMemberExpression.type}": \`${JSON.stringify(rootMemberExpression)}\``);
|
|
1275
1295
|
}
|
|
1276
1296
|
|
|
1277
1297
|
/*
|
|
@@ -1324,53 +1344,6 @@ function bAttributeValue(node, attrName) {
|
|
|
1324
1344
|
return builders.memberExpression(builders.literal('instance'), nameAttrValue);
|
|
1325
1345
|
}
|
|
1326
1346
|
}
|
|
1327
|
-
function getRootMemberExpression$1(node) {
|
|
1328
|
-
return node.object.type === 'MemberExpression' ? getRootMemberExpression$1(node.object) : node;
|
|
1329
|
-
}
|
|
1330
|
-
function getRootIdentifier$1(node, cxt) {
|
|
1331
|
-
const rootMemberExpression = getRootMemberExpression$1(node);
|
|
1332
|
-
if (is.identifier(rootMemberExpression.object)) {
|
|
1333
|
-
return rootMemberExpression.object;
|
|
1334
|
-
}
|
|
1335
|
-
if (cxt.templateOptions.experimentalComplexExpressions) {
|
|
1336
|
-
// TODO [#3370]: Implement complex template expressions
|
|
1337
|
-
return null;
|
|
1338
|
-
}
|
|
1339
|
-
// Should be impossible to hit, at least until we implement complex template expressions
|
|
1340
|
-
/* v8 ignore next */
|
|
1341
|
-
throw new Error(`Invalid expression, must be an Identifier, found type="${rootMemberExpression.type}": \`${JSON.stringify(rootMemberExpression)}\``);
|
|
1342
|
-
}
|
|
1343
|
-
/**
|
|
1344
|
-
* Given an expression in a context, return an expression that may be scoped to that context.
|
|
1345
|
-
* For example, for the expression `foo`, it will typically be `instance.foo`, but if we're
|
|
1346
|
-
* inside a `for:each` block then the `foo` variable may refer to the scoped `foo`,
|
|
1347
|
-
* e.g. `<template for:each={foos} for:item="foo">`
|
|
1348
|
-
* @param expression
|
|
1349
|
-
* @param cxt
|
|
1350
|
-
*/
|
|
1351
|
-
function getScopedExpression(expression, cxt) {
|
|
1352
|
-
let scopeReferencedId = null;
|
|
1353
|
-
if (is.memberExpression(expression)) {
|
|
1354
|
-
// e.g. `foo.bar` -> scopeReferencedId is `foo`
|
|
1355
|
-
scopeReferencedId = getRootIdentifier$1(expression, cxt);
|
|
1356
|
-
}
|
|
1357
|
-
else if (is.identifier(expression)) {
|
|
1358
|
-
// e.g. `foo` -> scopeReferencedId is `foo`
|
|
1359
|
-
scopeReferencedId = expression;
|
|
1360
|
-
}
|
|
1361
|
-
if (scopeReferencedId === null) {
|
|
1362
|
-
if (cxt.templateOptions.experimentalComplexExpressions) {
|
|
1363
|
-
// TODO [#3370]: Implement complex template expressions
|
|
1364
|
-
return expression;
|
|
1365
|
-
}
|
|
1366
|
-
// Should be impossible to hit, at least until we implement complex template expressions
|
|
1367
|
-
/* v8 ignore next */
|
|
1368
|
-
throw new Error(`Invalid expression, must be a MemberExpression or Identifier, found type="${expression.type}": \`${JSON.stringify(expression)}\``);
|
|
1369
|
-
}
|
|
1370
|
-
return cxt.isLocalVar(scopeReferencedId.name)
|
|
1371
|
-
? expression
|
|
1372
|
-
: builders.memberExpression(builders.identifier('instance'), expression);
|
|
1373
|
-
}
|
|
1374
1347
|
function normalizeClassAttributeValue(value) {
|
|
1375
1348
|
// @ts-expect-error weird indirection results in wrong overload being picked up
|
|
1376
1349
|
return StringReplace.call(StringTrim.call(value), /\s+/g, ' ');
|
|
@@ -2597,9 +2570,11 @@ function compileTemplate(src, filename, options, compilationMode) {
|
|
|
2597
2570
|
}
|
|
2598
2571
|
const preserveComments = !!root.directives.find((directive) => directive.name === 'PreserveComments')?.value?.value;
|
|
2599
2572
|
const experimentalComplexExpressions = Boolean(options.experimentalComplexExpressions);
|
|
2573
|
+
const apiVersion = Number(options.apiVersion);
|
|
2600
2574
|
const { addImport, getImports, statements, cxt } = templateIrToEsTree(root, {
|
|
2601
2575
|
preserveComments,
|
|
2602
2576
|
experimentalComplexExpressions,
|
|
2577
|
+
apiVersion,
|
|
2603
2578
|
});
|
|
2604
2579
|
addImport(['renderStylesheets', 'hasScopedStaticStylesheets']);
|
|
2605
2580
|
for (const [imports, source] of getStylesheetImports(filename)) {
|
|
@@ -2661,5 +2636,5 @@ function compileTemplateForSSR(src, filename, options, mode = DEFAULT_SSR_MODE)
|
|
|
2661
2636
|
}
|
|
2662
2637
|
|
|
2663
2638
|
export { compileComponentForSSR, compileTemplateForSSR };
|
|
2664
|
-
/** version: 8.22.
|
|
2639
|
+
/** version: 8.22.5 */
|
|
2665
2640
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"You can safely modify dependencies, devDependencies, keywords, etc., but other props will be overwritten."
|
|
5
5
|
],
|
|
6
6
|
"name": "@lwc/ssr-compiler",
|
|
7
|
-
"version": "8.22.
|
|
7
|
+
"version": "8.22.5",
|
|
8
8
|
"description": "Compile component for use during server-side rendering",
|
|
9
9
|
"keywords": [
|
|
10
10
|
"compiler",
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@babel/types": "7.28.4",
|
|
52
|
-
"@lwc/errors": "8.22.
|
|
53
|
-
"@lwc/shared": "8.22.
|
|
54
|
-
"@lwc/template-compiler": "8.22.
|
|
52
|
+
"@lwc/errors": "8.22.5",
|
|
53
|
+
"@lwc/shared": "8.22.5",
|
|
54
|
+
"@lwc/template-compiler": "8.22.5",
|
|
55
55
|
"acorn": "8.15.0",
|
|
56
56
|
"astring": "^1.9.0",
|
|
57
57
|
"estree-toolkit": "^1.7.13",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"meriyah": "^5.0.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@lwc/babel-plugin-component": "8.22.
|
|
62
|
+
"@lwc/babel-plugin-component": "8.22.5",
|
|
63
63
|
"@types/estree": "^1.0.8"
|
|
64
64
|
}
|
|
65
65
|
}
|