@plumeria/utils 19.2.10 → 19.2.12
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/dist/dynamicKey.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/parser.d.ts +2 -0
- package/dist/parser.js +54 -6
- package/dist/transform.js +55 -73
- package/package.json +1 -1
package/dist/dynamicKey.js
CHANGED
|
@@ -232,7 +232,7 @@ exports.applyVarFallback = applyVarFallback;
|
|
|
232
232
|
const resolveDynamicStyle = (func, runtimeParams, staticTable, tables, providedParams) => {
|
|
233
233
|
if (func.unsupportedParams)
|
|
234
234
|
throw new Error('[plumeria] Dynamic styles require named parameters or object destructuring; array and rest parameters are not supported.');
|
|
235
|
-
const tempStaticTable =
|
|
235
|
+
const tempStaticTable = Object.create(staticTable);
|
|
236
236
|
const resolveBody = () => (0, parser_1.objectExpressionToObject)(func.body, tempStaticTable, tables.keyframesHashTable, tables.viewTransitionHashTable, tables.createThemeHashTable, tables.createThemeObjectTable, tables.createHashTable, tables.createStaticHashTable, tables.createStaticObjectTable);
|
|
237
237
|
const withDefault = Object.entries(func.defaults ?? {}).filter(([param]) => providedParams
|
|
238
238
|
? !providedParams.has(param)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { CSSObject, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateFunctionTable, CreateThemeHashTable, CreateStaticHashTable, } from './types';
|
|
2
|
-
export { objectExpressionToObject, collectLocalConsts, traverse, t, getRootIdentifier, resolveOriginError, unwrapExpression, extractOndemandStyles, appendSheet, deepMerge, scanAll, resolveFileError, getFileDependencies, resolveExport, resolveComponentKey, resolveThemeSelector, } from './parser';
|
|
2
|
+
export { objectExpressionToObject, collectLocalConsts, traverse, t, getRootIdentifier, resolveOriginError, unwrapExpression, extractOndemandStyles, appendSheet, deepMerge, scanAll, scanOverlay, fileTableKeys, resolveFileError, getFileDependencies, resolveExport, resolveComponentKey, resolveThemeSelector, } from './parser';
|
|
3
3
|
export type { StyleRecord } from './create';
|
|
4
4
|
export { getStyleRecords } from './create';
|
|
5
5
|
export type { NamedParam, StyleFunction, StyleFunctions, DynamicStyleTables, DynamicStyleResult, } from './dynamicKey';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transformSource = exports.assertPropertyPolicy = exports.resolvePropertyPolicy = exports.DEFAULT_STYLE_PROP = exports.timedAsync = exports.timed = exports.tally = exports.measure = exports.mark = exports.profiling = exports.collectReferenceIdentifiers = exports.getLeadingCommentLength = exports.optimizer = exports.resolveImportPath = exports.themeHashOf = exports.getStateWeights = exports.getPseudoElement = exports.getSpecificity = exports.resolveDynamicStyle = exports.applyVarFallback = exports.splitVarByUnit = exports.isUnitlessProp = exports.styleFunctionsOf = exports.getStyleRecords = exports.resolveThemeSelector = exports.resolveComponentKey = exports.resolveExport = exports.getFileDependencies = exports.resolveFileError = exports.scanAll = exports.deepMerge = exports.appendSheet = exports.extractOndemandStyles = exports.unwrapExpression = exports.resolveOriginError = exports.getRootIdentifier = exports.t = exports.traverse = exports.collectLocalConsts = exports.objectExpressionToObject = void 0;
|
|
3
|
+
exports.transformSource = exports.assertPropertyPolicy = exports.resolvePropertyPolicy = exports.DEFAULT_STYLE_PROP = exports.timedAsync = exports.timed = exports.tally = exports.measure = exports.mark = exports.profiling = exports.collectReferenceIdentifiers = exports.getLeadingCommentLength = exports.optimizer = exports.resolveImportPath = exports.themeHashOf = exports.getStateWeights = exports.getPseudoElement = exports.getSpecificity = exports.resolveDynamicStyle = exports.applyVarFallback = exports.splitVarByUnit = exports.isUnitlessProp = exports.styleFunctionsOf = exports.getStyleRecords = exports.resolveThemeSelector = exports.resolveComponentKey = exports.resolveExport = exports.getFileDependencies = exports.resolveFileError = exports.fileTableKeys = exports.scanOverlay = exports.scanAll = exports.deepMerge = exports.appendSheet = exports.extractOndemandStyles = exports.unwrapExpression = exports.resolveOriginError = exports.getRootIdentifier = exports.t = exports.traverse = exports.collectLocalConsts = exports.objectExpressionToObject = void 0;
|
|
4
4
|
var parser_1 = require("./parser");
|
|
5
5
|
Object.defineProperty(exports, "objectExpressionToObject", { enumerable: true, get: function () { return parser_1.objectExpressionToObject; } });
|
|
6
6
|
Object.defineProperty(exports, "collectLocalConsts", { enumerable: true, get: function () { return parser_1.collectLocalConsts; } });
|
|
@@ -13,6 +13,8 @@ Object.defineProperty(exports, "extractOndemandStyles", { enumerable: true, get:
|
|
|
13
13
|
Object.defineProperty(exports, "appendSheet", { enumerable: true, get: function () { return parser_1.appendSheet; } });
|
|
14
14
|
Object.defineProperty(exports, "deepMerge", { enumerable: true, get: function () { return parser_1.deepMerge; } });
|
|
15
15
|
Object.defineProperty(exports, "scanAll", { enumerable: true, get: function () { return parser_1.scanAll; } });
|
|
16
|
+
Object.defineProperty(exports, "scanOverlay", { enumerable: true, get: function () { return parser_1.scanOverlay; } });
|
|
17
|
+
Object.defineProperty(exports, "fileTableKeys", { enumerable: true, get: function () { return parser_1.fileTableKeys; } });
|
|
16
18
|
Object.defineProperty(exports, "resolveFileError", { enumerable: true, get: function () { return parser_1.resolveFileError; } });
|
|
17
19
|
Object.defineProperty(exports, "getFileDependencies", { enumerable: true, get: function () { return parser_1.getFileDependencies; } });
|
|
18
20
|
Object.defineProperty(exports, "resolveExport", { enumerable: true, get: function () { return parser_1.resolveExport; } });
|
package/dist/parser.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export declare function resolveFileError(actualPath: string, importedName: strin
|
|
|
49
49
|
filePath: string;
|
|
50
50
|
message: string;
|
|
51
51
|
} | undefined;
|
|
52
|
+
export declare function fileTableKeys(filePath: string, tableName: string): ReadonlySet<string> | undefined;
|
|
53
|
+
export declare function scanOverlay(scanCwd?: string): Tables;
|
|
52
54
|
export declare function scanAll(scanCwd?: string): Tables;
|
|
53
55
|
export declare function getFileDependencies(filePath: string): string[];
|
|
54
56
|
export declare function resolveExport(filePath: string, exportName: string, visited?: Set<string>): {
|
package/dist/parser.js
CHANGED
|
@@ -42,6 +42,8 @@ exports.objectExpressionToObject = objectExpressionToObject;
|
|
|
42
42
|
exports.collectLocalConsts = collectLocalConsts;
|
|
43
43
|
exports.resolveThemeSelector = resolveThemeSelector;
|
|
44
44
|
exports.resolveFileError = resolveFileError;
|
|
45
|
+
exports.fileTableKeys = fileTableKeys;
|
|
46
|
+
exports.scanOverlay = scanOverlay;
|
|
45
47
|
exports.scanAll = scanAll;
|
|
46
48
|
exports.getFileDependencies = getFileDependencies;
|
|
47
49
|
exports.resolveExport = resolveExport;
|
|
@@ -271,10 +273,9 @@ function objectExpressionToObject(node, staticTable, keyframesHashTable, viewTra
|
|
|
271
273
|
const root = (0, exports.getRootIdentifier)(val);
|
|
272
274
|
const resolved = root ? resolveVariable(root) : undefined;
|
|
273
275
|
if (resolved !== undefined && root) {
|
|
274
|
-
const member = resolveStaticTableMemberExpression(val, {
|
|
275
|
-
...staticTable,
|
|
276
|
+
const member = resolveStaticTableMemberExpression(val, Object.assign(Object.create(staticTable), {
|
|
276
277
|
[root]: resolved,
|
|
277
|
-
});
|
|
278
|
+
}));
|
|
278
279
|
if (member === undefined)
|
|
279
280
|
throw new Error(`[plumeria] Unknown style member on ${root}.`);
|
|
280
281
|
obj[key] = member;
|
|
@@ -1040,12 +1041,46 @@ let scannedCwd;
|
|
|
1040
1041
|
const objectTableOwners = new Map();
|
|
1041
1042
|
const fileObjectContributions = new Map();
|
|
1042
1043
|
const fileKeyContributions = new Map();
|
|
1043
|
-
|
|
1044
|
-
|
|
1044
|
+
const detachedTables = new Set([
|
|
1045
|
+
'staticTable',
|
|
1046
|
+
'keyframesHashTable',
|
|
1047
|
+
'viewTransitionHashTable',
|
|
1048
|
+
'createHashTable',
|
|
1049
|
+
'createObjectTable',
|
|
1050
|
+
'createFunctionTable',
|
|
1051
|
+
'createThemeHashTable',
|
|
1052
|
+
'componentPropsTable',
|
|
1053
|
+
]);
|
|
1054
|
+
const detachedOverlayTables = new Set([
|
|
1055
|
+
'createThemeHashTable',
|
|
1056
|
+
'componentPropsTable',
|
|
1057
|
+
]);
|
|
1058
|
+
let overlayScan = false;
|
|
1059
|
+
let tablesGeneration = 0;
|
|
1060
|
+
let overlayBaseGeneration = -1;
|
|
1061
|
+
let overlayBase;
|
|
1062
|
+
function layerTables(source, detached) {
|
|
1063
|
+
return Object.fromEntries(Object.entries(source).map(([key, value]) => [
|
|
1045
1064
|
key,
|
|
1046
|
-
key === 'styleReceiverTable'
|
|
1065
|
+
key === 'styleReceiverTable'
|
|
1066
|
+
? value
|
|
1067
|
+
: detached.has(key)
|
|
1068
|
+
? { ...value }
|
|
1069
|
+
: Object.create(value),
|
|
1047
1070
|
]));
|
|
1048
1071
|
}
|
|
1072
|
+
function snapshotTables() {
|
|
1073
|
+
if (!overlayScan)
|
|
1074
|
+
return layerTables(globalAgregatedTables, detachedTables);
|
|
1075
|
+
if (overlayBaseGeneration !== tablesGeneration) {
|
|
1076
|
+
overlayBase = Object.fromEntries(Object.entries(globalAgregatedTables).map(([key, value]) => [
|
|
1077
|
+
key,
|
|
1078
|
+
key === 'styleReceiverTable' ? value : { ...value },
|
|
1079
|
+
]));
|
|
1080
|
+
overlayBaseGeneration = tablesGeneration;
|
|
1081
|
+
}
|
|
1082
|
+
return layerTables(overlayBase, detachedOverlayTables);
|
|
1083
|
+
}
|
|
1049
1084
|
function releaseFileObjects(filePath) {
|
|
1050
1085
|
const contributions = fileObjectContributions.get(filePath);
|
|
1051
1086
|
if (!contributions)
|
|
@@ -1056,6 +1091,9 @@ function releaseFileObjects(filePath) {
|
|
|
1056
1091
|
}
|
|
1057
1092
|
fileObjectContributions.delete(filePath);
|
|
1058
1093
|
}
|
|
1094
|
+
function fileTableKeys(filePath, tableName) {
|
|
1095
|
+
return fileKeyContributions.get(filePath)?.get(tableName);
|
|
1096
|
+
}
|
|
1059
1097
|
function registerFileKey(tableName, key, filePath) {
|
|
1060
1098
|
let contributions = fileKeyContributions.get(filePath);
|
|
1061
1099
|
if (!contributions)
|
|
@@ -1161,6 +1199,15 @@ function statFile(filePath) {
|
|
|
1161
1199
|
throw e;
|
|
1162
1200
|
}
|
|
1163
1201
|
}
|
|
1202
|
+
function scanOverlay(scanCwd = process.cwd()) {
|
|
1203
|
+
overlayScan = true;
|
|
1204
|
+
try {
|
|
1205
|
+
return scanAll(scanCwd);
|
|
1206
|
+
}
|
|
1207
|
+
finally {
|
|
1208
|
+
overlayScan = false;
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1164
1211
|
function scanAll(scanCwd = process.cwd()) {
|
|
1165
1212
|
scanning = true;
|
|
1166
1213
|
statMemo.clear();
|
|
@@ -1287,6 +1334,7 @@ function runScan(scanCwd = process.cwd()) {
|
|
|
1287
1334
|
if (invalidated.size === 0 && hasComputedOnce) {
|
|
1288
1335
|
return snapshotTables();
|
|
1289
1336
|
}
|
|
1337
|
+
tablesGeneration++;
|
|
1290
1338
|
for (const fp of deletedFiles) {
|
|
1291
1339
|
const cached = fileCache[fp];
|
|
1292
1340
|
if (cached)
|
package/dist/transform.js
CHANGED
|
@@ -201,7 +201,7 @@ const transformSource = async (env) => {
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
};
|
|
204
|
-
const scannedTables = (0, parser_1.
|
|
204
|
+
const scannedTables = (0, parser_1.scanOverlay)();
|
|
205
205
|
const ownFailure = (0, parser_1.resolveFileError)(baseId, '');
|
|
206
206
|
if (ownFailure)
|
|
207
207
|
throwCompilationError(`Plumeria: ${ownFailure.message}`);
|
|
@@ -392,70 +392,51 @@ const transformSource = async (env) => {
|
|
|
392
392
|
}
|
|
393
393
|
},
|
|
394
394
|
});
|
|
395
|
-
const mergedStaticTable =
|
|
396
|
-
for (const key of Object.keys(scannedTables.staticTable)) {
|
|
397
|
-
mergedStaticTable[key] = scannedTables.staticTable[key];
|
|
398
|
-
}
|
|
395
|
+
const mergedStaticTable = Object.create(scannedTables.staticTable);
|
|
399
396
|
for (const key of Object.keys(localConsts)) {
|
|
400
397
|
mergedStaticTable[key] = localConsts[key];
|
|
401
398
|
}
|
|
402
399
|
for (const key of Object.keys(importMap)) {
|
|
403
400
|
mergedStaticTable[key] = importMap[key];
|
|
404
401
|
}
|
|
405
|
-
const mergedKeyframesTable =
|
|
406
|
-
for (const key of
|
|
407
|
-
mergedKeyframesTable[key] =
|
|
408
|
-
|
|
409
|
-
const varName = key.slice(resourcePath.length + 1);
|
|
410
|
-
mergedKeyframesTable[varName] = scannedTables.keyframesHashTable[key];
|
|
411
|
-
}
|
|
402
|
+
const mergedKeyframesTable = Object.create(scannedTables.keyframesHashTable);
|
|
403
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'keyframesHashTable') ?? []) {
|
|
404
|
+
mergedKeyframesTable[key.slice(resourcePath.length + 1)] =
|
|
405
|
+
scannedTables.keyframesHashTable[key];
|
|
412
406
|
}
|
|
413
407
|
for (const key of Object.keys(keyframesImportMap)) {
|
|
414
408
|
mergedKeyframesTable[key] = keyframesImportMap[key];
|
|
415
409
|
}
|
|
416
|
-
const mergedViewTransitionTable =
|
|
417
|
-
for (const key of
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
mergedViewTransitionTable[varName] =
|
|
422
|
-
scannedTables.viewTransitionHashTable[key];
|
|
423
|
-
}
|
|
410
|
+
const mergedViewTransitionTable = Object.create(scannedTables.viewTransitionHashTable);
|
|
411
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'viewTransitionHashTable') ??
|
|
412
|
+
[]) {
|
|
413
|
+
mergedViewTransitionTable[key.slice(resourcePath.length + 1)] =
|
|
414
|
+
scannedTables.viewTransitionHashTable[key];
|
|
424
415
|
}
|
|
425
416
|
for (const key of Object.keys(viewTransitionImportMap)) {
|
|
426
417
|
mergedViewTransitionTable[key] = viewTransitionImportMap[key];
|
|
427
418
|
}
|
|
428
|
-
const mergedCreateTable =
|
|
429
|
-
for (const key of
|
|
430
|
-
mergedCreateTable[key] =
|
|
431
|
-
|
|
432
|
-
const varName = key.slice(resourcePath.length + 1);
|
|
433
|
-
mergedCreateTable[varName] = scannedTables.createHashTable[key];
|
|
434
|
-
}
|
|
419
|
+
const mergedCreateTable = Object.create(scannedTables.createHashTable);
|
|
420
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'createHashTable') ?? []) {
|
|
421
|
+
mergedCreateTable[key.slice(resourcePath.length + 1)] =
|
|
422
|
+
scannedTables.createHashTable[key];
|
|
435
423
|
}
|
|
436
424
|
for (const key of Object.keys(createImportMap)) {
|
|
437
425
|
mergedCreateTable[key] = createImportMap[key];
|
|
438
426
|
}
|
|
439
|
-
const mergedCreateThemeHashTable =
|
|
440
|
-
for (const key of
|
|
441
|
-
mergedCreateThemeHashTable[key] =
|
|
442
|
-
|
|
443
|
-
const varName = key.slice(resourcePath.length + 1);
|
|
444
|
-
mergedCreateThemeHashTable[varName] =
|
|
445
|
-
scannedTables.createThemeHashTable[key];
|
|
446
|
-
}
|
|
427
|
+
const mergedCreateThemeHashTable = Object.create(scannedTables.createThemeHashTable);
|
|
428
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'createThemeHashTable') ?? []) {
|
|
429
|
+
mergedCreateThemeHashTable[key.slice(resourcePath.length + 1)] =
|
|
430
|
+
scannedTables.createThemeHashTable[key];
|
|
447
431
|
}
|
|
448
432
|
for (const key of Object.keys(createThemeImportMap)) {
|
|
449
433
|
mergedCreateThemeHashTable[key] = createThemeImportMap[key];
|
|
450
434
|
}
|
|
451
|
-
const mergedCreateStaticHashTable =
|
|
452
|
-
for (const key of
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
mergedCreateStaticHashTable[varName] =
|
|
457
|
-
scannedTables.createStaticHashTable[key];
|
|
458
|
-
}
|
|
435
|
+
const mergedCreateStaticHashTable = Object.create(scannedTables.createStaticHashTable);
|
|
436
|
+
for (const key of (0, parser_1.fileTableKeys)(resourcePath, 'createStaticHashTable') ??
|
|
437
|
+
[]) {
|
|
438
|
+
mergedCreateStaticHashTable[key.slice(resourcePath.length + 1)] =
|
|
439
|
+
scannedTables.createStaticHashTable[key];
|
|
459
440
|
}
|
|
460
441
|
for (const key of Object.keys(createStaticImportMap)) {
|
|
461
442
|
mergedCreateStaticHashTable[key] = createStaticImportMap[key];
|
|
@@ -856,7 +837,25 @@ const transformSource = async (env) => {
|
|
|
856
837
|
}
|
|
857
838
|
},
|
|
858
839
|
});
|
|
859
|
-
const
|
|
840
|
+
const jsxAttributeOwnerMap = new Map();
|
|
841
|
+
const propEntryIndexes = new Map();
|
|
842
|
+
const localPropEntries = (list, spanStart) => {
|
|
843
|
+
let index = propEntryIndexes.get(list);
|
|
844
|
+
if (!index) {
|
|
845
|
+
index = new Map();
|
|
846
|
+
for (const entry of list) {
|
|
847
|
+
if (entry.filePath !== resourcePath)
|
|
848
|
+
continue;
|
|
849
|
+
const bucket = index.get(entry.spanStart);
|
|
850
|
+
if (bucket)
|
|
851
|
+
bucket.push(entry);
|
|
852
|
+
else
|
|
853
|
+
index.set(entry.spanStart, [entry]);
|
|
854
|
+
}
|
|
855
|
+
propEntryIndexes.set(list, index);
|
|
856
|
+
}
|
|
857
|
+
return index.get(spanStart);
|
|
858
|
+
};
|
|
860
859
|
const componentParamNames = new Set();
|
|
861
860
|
const addFirstParamName = (fn) => {
|
|
862
861
|
const first = fn.params[0];
|
|
@@ -1839,10 +1838,13 @@ const transformSource = async (env) => {
|
|
|
1839
1838
|
};
|
|
1840
1839
|
(0, parser_1.traverse)(ast, {
|
|
1841
1840
|
JSXOpeningElement({ node }) {
|
|
1842
|
-
|
|
1841
|
+
const owner = {
|
|
1843
1842
|
compKey: (0, parser_1.resolveComponentKey)(node.name, resourcePath, localImports),
|
|
1844
1843
|
attributes: node.attributes,
|
|
1845
|
-
}
|
|
1844
|
+
};
|
|
1845
|
+
for (const attribute of node.attributes)
|
|
1846
|
+
if (attribute.type === 'JSXAttribute')
|
|
1847
|
+
jsxAttributeOwnerMap.set(attribute.span.start, owner);
|
|
1846
1848
|
},
|
|
1847
1849
|
MemberExpression({ node }) {
|
|
1848
1850
|
if (!isVisibleReference(node))
|
|
@@ -2021,16 +2023,7 @@ const transformSource = async (env) => {
|
|
|
2021
2023
|
if (node.name.type !== 'Identifier')
|
|
2022
2024
|
return;
|
|
2023
2025
|
const attrName = node.name.value;
|
|
2024
|
-
|
|
2025
|
-
for (const [, val] of jsxOpeningElementMap) {
|
|
2026
|
-
const found = val.attributes
|
|
2027
|
-
.filter((a) => a.type === 'JSXAttribute')
|
|
2028
|
-
.find((a) => a.span.start === node.span.start);
|
|
2029
|
-
if (found) {
|
|
2030
|
-
compKey = val.compKey;
|
|
2031
|
-
break;
|
|
2032
|
-
}
|
|
2033
|
-
}
|
|
2026
|
+
const compKey = jsxAttributeOwnerMap.get(node.span.start)?.compKey ?? null;
|
|
2034
2027
|
const receivesStyleProp = Boolean(compKey &&
|
|
2035
2028
|
scannedTables.styleReceiverTable?.[compKey]?.includes(attrName));
|
|
2036
2029
|
let relayed = false;
|
|
@@ -2064,9 +2057,8 @@ const transformSource = async (env) => {
|
|
|
2064
2057
|
return `{ ${foldDynamicVars(vars).join(', ')} }`;
|
|
2065
2058
|
};
|
|
2066
2059
|
const replaceWithKey = (subNode) => {
|
|
2067
|
-
const entries = list
|
|
2068
|
-
|
|
2069
|
-
if (!entries.length)
|
|
2060
|
+
const entries = localPropEntries(list, subNode.span.start);
|
|
2061
|
+
if (!entries)
|
|
2070
2062
|
return false;
|
|
2071
2063
|
let content = '""';
|
|
2072
2064
|
for (const entry of [...entries].reverse()) {
|
|
@@ -2131,16 +2123,7 @@ const transformSource = async (env) => {
|
|
|
2131
2123
|
: [{ expression: expr }];
|
|
2132
2124
|
const dynamicClassParts = [];
|
|
2133
2125
|
const existingStyleParts = [];
|
|
2134
|
-
|
|
2135
|
-
for (const [, val] of jsxOpeningElementMap) {
|
|
2136
|
-
const found = val.attributes
|
|
2137
|
-
.filter((a) => a.type === 'JSXAttribute')
|
|
2138
|
-
.find((a) => a.span.start === node.span.start);
|
|
2139
|
-
if (found) {
|
|
2140
|
-
attributes = val.attributes;
|
|
2141
|
-
break;
|
|
2142
|
-
}
|
|
2143
|
-
}
|
|
2126
|
+
const attributes = jsxAttributeOwnerMap.get(node.span.start)?.attributes ?? [];
|
|
2144
2127
|
const classNameAttr = attributes.find((attr) => attr.type === 'JSXAttribute' &&
|
|
2145
2128
|
attr.name.type === 'Identifier' &&
|
|
2146
2129
|
attr.name.value === 'className');
|
|
@@ -2323,10 +2306,11 @@ const transformSource = async (env) => {
|
|
|
2323
2306
|
`so it cannot be passed through another prop or read as a value.`, call);
|
|
2324
2307
|
}
|
|
2325
2308
|
});
|
|
2309
|
+
replacements.sort((a, b) => a.start - b.start || b.end - a.end);
|
|
2326
2310
|
for (const deferred of deferredSources) {
|
|
2327
2311
|
let cursor = deferred.start;
|
|
2328
2312
|
const pieces = [];
|
|
2329
|
-
for (const replacement of
|
|
2313
|
+
for (const replacement of replacements) {
|
|
2330
2314
|
if (replacement.start < cursor || replacement.end > deferred.end)
|
|
2331
2315
|
continue;
|
|
2332
2316
|
pieces.push(sourceBuffer.subarray(cursor, replacement.start).toString('utf-8'), replacement.content);
|
|
@@ -2340,9 +2324,7 @@ const transformSource = async (env) => {
|
|
|
2340
2324
|
const buffer = Buffer.from(source);
|
|
2341
2325
|
let offset = 0;
|
|
2342
2326
|
const parts = [];
|
|
2343
|
-
replacements
|
|
2344
|
-
.sort((a, b) => a.start - b.start || b.end - a.end)
|
|
2345
|
-
.forEach((r) => {
|
|
2327
|
+
replacements.forEach((r) => {
|
|
2346
2328
|
if (r.start < offset)
|
|
2347
2329
|
return;
|
|
2348
2330
|
parts.push(buffer.subarray(offset, r.start));
|