@plumeria/utils 19.2.9 → 19.2.11
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/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/parser.d.ts +3 -2
- package/dist/parser.js +12 -9
- package/dist/transform.js +40 -46
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
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, deepMerge, scanAll, resolveFileError, getFileDependencies, resolveExport, resolveComponentKey, resolveThemeSelector, } from './parser';
|
|
2
|
+
export { objectExpressionToObject, collectLocalConsts, traverse, t, getRootIdentifier, resolveOriginError, unwrapExpression, extractOndemandStyles, appendSheet, deepMerge, scanAll, 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.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.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; } });
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "getRootIdentifier", { enumerable: true, get: fun
|
|
|
10
10
|
Object.defineProperty(exports, "resolveOriginError", { enumerable: true, get: function () { return parser_1.resolveOriginError; } });
|
|
11
11
|
Object.defineProperty(exports, "unwrapExpression", { enumerable: true, get: function () { return parser_1.unwrapExpression; } });
|
|
12
12
|
Object.defineProperty(exports, "extractOndemandStyles", { enumerable: true, get: function () { return parser_1.extractOndemandStyles; } });
|
|
13
|
+
Object.defineProperty(exports, "appendSheet", { enumerable: true, get: function () { return parser_1.appendSheet; } });
|
|
13
14
|
Object.defineProperty(exports, "deepMerge", { enumerable: true, get: function () { return parser_1.deepMerge; } });
|
|
14
15
|
Object.defineProperty(exports, "scanAll", { enumerable: true, get: function () { return parser_1.scanAll; } });
|
|
15
16
|
Object.defineProperty(exports, "resolveFileError", { enumerable: true, get: function () { return parser_1.resolveFileError; } });
|
package/dist/parser.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CSSObject, Tables, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateThemeHashTable, CreateThemeObjectTable, CreateStaticHashTable, CreateStaticObjectTable } from './types';
|
|
1
|
+
import type { CSSObject, Tables, StaticTable, KeyframesHashTable, ViewTransitionHashTable, CreateHashTable, CreateThemeHashTable, CreateThemeObjectTable, CreateStaticHashTable, CreateStaticObjectTable, SheetSink } from './types';
|
|
2
2
|
import type { Module, Expression, CallExpression, Identifier, KeyValueProperty, StringLiteral, NumericLiteral, BooleanLiteral, ObjectExpression, MemberExpression, TemplateLiteral, BinaryExpression, UnaryExpression, ParenthesisExpression, VariableDeclaration, VariableDeclarator, ExportDeclaration, ConditionalExpression, JSXExpression, ArrowFunctionExpression, FunctionExpression } from '@swc/core';
|
|
3
3
|
export declare function unwrapExpression(node: any): any;
|
|
4
4
|
export declare const getRootIdentifier: (node: Expression) => string | null;
|
|
@@ -55,5 +55,6 @@ export declare function resolveExport(filePath: string, exportName: string, visi
|
|
|
55
55
|
filePath: string;
|
|
56
56
|
localName: string;
|
|
57
57
|
} | null;
|
|
58
|
-
export declare
|
|
58
|
+
export declare const appendSheet: (sheets: string[]) => SheetSink;
|
|
59
|
+
export declare function extractOndemandStyles(obj: any, addSheet: SheetSink, t: Tables): void;
|
|
59
60
|
export declare function deepMerge(target: Record<string, any>, source: Record<string, any>): Record<string, any>;
|
package/dist/parser.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.t = exports.getRootIdentifier = void 0;
|
|
36
|
+
exports.appendSheet = exports.t = exports.getRootIdentifier = void 0;
|
|
37
37
|
exports.unwrapExpression = unwrapExpression;
|
|
38
38
|
exports.resolveOriginError = resolveOriginError;
|
|
39
39
|
exports.resolveComponentKey = resolveComponentKey;
|
|
@@ -2421,7 +2421,17 @@ function resolveExport(filePath, exportName, visited = new Set()) {
|
|
|
2421
2421
|
}
|
|
2422
2422
|
const REFERENCE_MARKER = /(kf|vt|cr)-([0-9a-z]+)/g;
|
|
2423
2423
|
const CUSTOM_PROPERTY = /var\(\s*(--[^\s,)]+)/g;
|
|
2424
|
-
|
|
2424
|
+
const appendSheet = (sheets) => {
|
|
2425
|
+
const existingSheets = new Set(sheets);
|
|
2426
|
+
return (sheet) => {
|
|
2427
|
+
if (existingSheets.has(sheet))
|
|
2428
|
+
return;
|
|
2429
|
+
existingSheets.add(sheet);
|
|
2430
|
+
sheets.push(sheet);
|
|
2431
|
+
};
|
|
2432
|
+
};
|
|
2433
|
+
exports.appendSheet = appendSheet;
|
|
2434
|
+
function extractOndemandStyles(obj, addSheet, t) {
|
|
2425
2435
|
if (!obj || typeof obj !== 'object')
|
|
2426
2436
|
return;
|
|
2427
2437
|
const visited = new Set();
|
|
@@ -2468,13 +2478,6 @@ function extractOndemandStyles(obj, extractedSheets, t) {
|
|
|
2468
2478
|
});
|
|
2469
2479
|
}
|
|
2470
2480
|
walk(obj);
|
|
2471
|
-
const existingSheets = new Set(extractedSheets);
|
|
2472
|
-
const addSheet = (sheet) => {
|
|
2473
|
-
if (!existingSheets.has(sheet)) {
|
|
2474
|
-
existingSheets.add(sheet);
|
|
2475
|
-
extractedSheets.push(sheet);
|
|
2476
|
-
}
|
|
2477
|
-
};
|
|
2478
2481
|
if (keyframesHashes.size > 0) {
|
|
2479
2482
|
for (const hash of keyframesHashes) {
|
|
2480
2483
|
const definition = t.keyframesObjectTable[hash];
|
package/dist/transform.js
CHANGED
|
@@ -293,16 +293,14 @@ const transformSource = async (env) => {
|
|
|
293
293
|
appliedStyleProps.add(`${owner}:${name}`);
|
|
294
294
|
}
|
|
295
295
|
};
|
|
296
|
-
const extractedSheets =
|
|
296
|
+
const extractedSheets = new Set();
|
|
297
297
|
const addSheet = (sheet) => {
|
|
298
|
-
|
|
299
|
-
extractedSheets.push(sheet);
|
|
300
|
-
}
|
|
298
|
+
extractedSheets.add(sheet);
|
|
301
299
|
};
|
|
302
300
|
const processStyleRecords = (style, weights) => {
|
|
303
301
|
const records = (0, create_1.getStyleRecords)(style, weights);
|
|
304
302
|
if (collectOndemandSheets) {
|
|
305
|
-
(0, parser_1.extractOndemandStyles)(style,
|
|
303
|
+
(0, parser_1.extractOndemandStyles)(style, addSheet, scannedTables);
|
|
306
304
|
records.forEach((r) => {
|
|
307
305
|
addSheet(r.sheet);
|
|
308
306
|
});
|
|
@@ -404,9 +402,8 @@ const transformSource = async (env) => {
|
|
|
404
402
|
for (const key of Object.keys(importMap)) {
|
|
405
403
|
mergedStaticTable[key] = importMap[key];
|
|
406
404
|
}
|
|
407
|
-
const mergedKeyframesTable =
|
|
405
|
+
const mergedKeyframesTable = Object.create(scannedTables.keyframesHashTable);
|
|
408
406
|
for (const key of Object.keys(scannedTables.keyframesHashTable)) {
|
|
409
|
-
mergedKeyframesTable[key] = scannedTables.keyframesHashTable[key];
|
|
410
407
|
if (key.startsWith(`${resourcePath}-`)) {
|
|
411
408
|
const varName = key.slice(resourcePath.length + 1);
|
|
412
409
|
mergedKeyframesTable[varName] = scannedTables.keyframesHashTable[key];
|
|
@@ -415,9 +412,8 @@ const transformSource = async (env) => {
|
|
|
415
412
|
for (const key of Object.keys(keyframesImportMap)) {
|
|
416
413
|
mergedKeyframesTable[key] = keyframesImportMap[key];
|
|
417
414
|
}
|
|
418
|
-
const mergedViewTransitionTable =
|
|
415
|
+
const mergedViewTransitionTable = Object.create(scannedTables.viewTransitionHashTable);
|
|
419
416
|
for (const key of Object.keys(scannedTables.viewTransitionHashTable)) {
|
|
420
|
-
mergedViewTransitionTable[key] = scannedTables.viewTransitionHashTable[key];
|
|
421
417
|
if (key.startsWith(`${resourcePath}-`)) {
|
|
422
418
|
const varName = key.slice(resourcePath.length + 1);
|
|
423
419
|
mergedViewTransitionTable[varName] =
|
|
@@ -427,9 +423,8 @@ const transformSource = async (env) => {
|
|
|
427
423
|
for (const key of Object.keys(viewTransitionImportMap)) {
|
|
428
424
|
mergedViewTransitionTable[key] = viewTransitionImportMap[key];
|
|
429
425
|
}
|
|
430
|
-
const mergedCreateTable =
|
|
426
|
+
const mergedCreateTable = Object.create(scannedTables.createHashTable);
|
|
431
427
|
for (const key of Object.keys(scannedTables.createHashTable)) {
|
|
432
|
-
mergedCreateTable[key] = scannedTables.createHashTable[key];
|
|
433
428
|
if (key.startsWith(`${resourcePath}-`)) {
|
|
434
429
|
const varName = key.slice(resourcePath.length + 1);
|
|
435
430
|
mergedCreateTable[varName] = scannedTables.createHashTable[key];
|
|
@@ -438,9 +433,8 @@ const transformSource = async (env) => {
|
|
|
438
433
|
for (const key of Object.keys(createImportMap)) {
|
|
439
434
|
mergedCreateTable[key] = createImportMap[key];
|
|
440
435
|
}
|
|
441
|
-
const mergedCreateThemeHashTable =
|
|
436
|
+
const mergedCreateThemeHashTable = Object.create(scannedTables.createThemeHashTable);
|
|
442
437
|
for (const key of Object.keys(scannedTables.createThemeHashTable)) {
|
|
443
|
-
mergedCreateThemeHashTable[key] = scannedTables.createThemeHashTable[key];
|
|
444
438
|
if (key.startsWith(`${resourcePath}-`)) {
|
|
445
439
|
const varName = key.slice(resourcePath.length + 1);
|
|
446
440
|
mergedCreateThemeHashTable[varName] =
|
|
@@ -450,9 +444,8 @@ const transformSource = async (env) => {
|
|
|
450
444
|
for (const key of Object.keys(createThemeImportMap)) {
|
|
451
445
|
mergedCreateThemeHashTable[key] = createThemeImportMap[key];
|
|
452
446
|
}
|
|
453
|
-
const mergedCreateStaticHashTable =
|
|
447
|
+
const mergedCreateStaticHashTable = Object.create(scannedTables.createStaticHashTable);
|
|
454
448
|
for (const key of Object.keys(scannedTables.createStaticHashTable)) {
|
|
455
|
-
mergedCreateStaticHashTable[key] = scannedTables.createStaticHashTable[key];
|
|
456
449
|
if (key.startsWith(`${resourcePath}-`)) {
|
|
457
450
|
const varName = key.slice(resourcePath.length + 1);
|
|
458
451
|
mergedCreateStaticHashTable[varName] =
|
|
@@ -858,7 +851,25 @@ const transformSource = async (env) => {
|
|
|
858
851
|
}
|
|
859
852
|
},
|
|
860
853
|
});
|
|
861
|
-
const
|
|
854
|
+
const jsxAttributeOwnerMap = new Map();
|
|
855
|
+
const propEntryIndexes = new Map();
|
|
856
|
+
const localPropEntries = (list, spanStart) => {
|
|
857
|
+
let index = propEntryIndexes.get(list);
|
|
858
|
+
if (!index) {
|
|
859
|
+
index = new Map();
|
|
860
|
+
for (const entry of list) {
|
|
861
|
+
if (entry.filePath !== resourcePath)
|
|
862
|
+
continue;
|
|
863
|
+
const bucket = index.get(entry.spanStart);
|
|
864
|
+
if (bucket)
|
|
865
|
+
bucket.push(entry);
|
|
866
|
+
else
|
|
867
|
+
index.set(entry.spanStart, [entry]);
|
|
868
|
+
}
|
|
869
|
+
propEntryIndexes.set(list, index);
|
|
870
|
+
}
|
|
871
|
+
return index.get(spanStart);
|
|
872
|
+
};
|
|
862
873
|
const componentParamNames = new Set();
|
|
863
874
|
const addFirstParamName = (fn) => {
|
|
864
875
|
const first = fn.params[0];
|
|
@@ -1841,10 +1852,13 @@ const transformSource = async (env) => {
|
|
|
1841
1852
|
};
|
|
1842
1853
|
(0, parser_1.traverse)(ast, {
|
|
1843
1854
|
JSXOpeningElement({ node }) {
|
|
1844
|
-
|
|
1855
|
+
const owner = {
|
|
1845
1856
|
compKey: (0, parser_1.resolveComponentKey)(node.name, resourcePath, localImports),
|
|
1846
1857
|
attributes: node.attributes,
|
|
1847
|
-
}
|
|
1858
|
+
};
|
|
1859
|
+
for (const attribute of node.attributes)
|
|
1860
|
+
if (attribute.type === 'JSXAttribute')
|
|
1861
|
+
jsxAttributeOwnerMap.set(attribute.span.start, owner);
|
|
1848
1862
|
},
|
|
1849
1863
|
MemberExpression({ node }) {
|
|
1850
1864
|
if (!isVisibleReference(node))
|
|
@@ -2023,16 +2037,7 @@ const transformSource = async (env) => {
|
|
|
2023
2037
|
if (node.name.type !== 'Identifier')
|
|
2024
2038
|
return;
|
|
2025
2039
|
const attrName = node.name.value;
|
|
2026
|
-
|
|
2027
|
-
for (const [, val] of jsxOpeningElementMap) {
|
|
2028
|
-
const found = val.attributes
|
|
2029
|
-
.filter((a) => a.type === 'JSXAttribute')
|
|
2030
|
-
.find((a) => a.span.start === node.span.start);
|
|
2031
|
-
if (found) {
|
|
2032
|
-
compKey = val.compKey;
|
|
2033
|
-
break;
|
|
2034
|
-
}
|
|
2035
|
-
}
|
|
2040
|
+
const compKey = jsxAttributeOwnerMap.get(node.span.start)?.compKey ?? null;
|
|
2036
2041
|
const receivesStyleProp = Boolean(compKey &&
|
|
2037
2042
|
scannedTables.styleReceiverTable?.[compKey]?.includes(attrName));
|
|
2038
2043
|
let relayed = false;
|
|
@@ -2066,9 +2071,8 @@ const transformSource = async (env) => {
|
|
|
2066
2071
|
return `{ ${foldDynamicVars(vars).join(', ')} }`;
|
|
2067
2072
|
};
|
|
2068
2073
|
const replaceWithKey = (subNode) => {
|
|
2069
|
-
const entries = list
|
|
2070
|
-
|
|
2071
|
-
if (!entries.length)
|
|
2074
|
+
const entries = localPropEntries(list, subNode.span.start);
|
|
2075
|
+
if (!entries)
|
|
2072
2076
|
return false;
|
|
2073
2077
|
let content = '""';
|
|
2074
2078
|
for (const entry of [...entries].reverse()) {
|
|
@@ -2133,16 +2137,7 @@ const transformSource = async (env) => {
|
|
|
2133
2137
|
: [{ expression: expr }];
|
|
2134
2138
|
const dynamicClassParts = [];
|
|
2135
2139
|
const existingStyleParts = [];
|
|
2136
|
-
|
|
2137
|
-
for (const [, val] of jsxOpeningElementMap) {
|
|
2138
|
-
const found = val.attributes
|
|
2139
|
-
.filter((a) => a.type === 'JSXAttribute')
|
|
2140
|
-
.find((a) => a.span.start === node.span.start);
|
|
2141
|
-
if (found) {
|
|
2142
|
-
attributes = val.attributes;
|
|
2143
|
-
break;
|
|
2144
|
-
}
|
|
2145
|
-
}
|
|
2140
|
+
const attributes = jsxAttributeOwnerMap.get(node.span.start)?.attributes ?? [];
|
|
2146
2141
|
const classNameAttr = attributes.find((attr) => attr.type === 'JSXAttribute' &&
|
|
2147
2142
|
attr.name.type === 'Identifier' &&
|
|
2148
2143
|
attr.name.value === 'className');
|
|
@@ -2325,10 +2320,11 @@ const transformSource = async (env) => {
|
|
|
2325
2320
|
`so it cannot be passed through another prop or read as a value.`, call);
|
|
2326
2321
|
}
|
|
2327
2322
|
});
|
|
2323
|
+
replacements.sort((a, b) => a.start - b.start || b.end - a.end);
|
|
2328
2324
|
for (const deferred of deferredSources) {
|
|
2329
2325
|
let cursor = deferred.start;
|
|
2330
2326
|
const pieces = [];
|
|
2331
|
-
for (const replacement of
|
|
2327
|
+
for (const replacement of replacements) {
|
|
2332
2328
|
if (replacement.start < cursor || replacement.end > deferred.end)
|
|
2333
2329
|
continue;
|
|
2334
2330
|
pieces.push(sourceBuffer.subarray(cursor, replacement.start).toString('utf-8'), replacement.content);
|
|
@@ -2342,9 +2338,7 @@ const transformSource = async (env) => {
|
|
|
2342
2338
|
const buffer = Buffer.from(source);
|
|
2343
2339
|
let offset = 0;
|
|
2344
2340
|
const parts = [];
|
|
2345
|
-
replacements
|
|
2346
|
-
.sort((a, b) => a.start - b.start || b.end - a.end)
|
|
2347
|
-
.forEach((r) => {
|
|
2341
|
+
replacements.forEach((r) => {
|
|
2348
2342
|
if (r.start < offset)
|
|
2349
2343
|
return;
|
|
2350
2344
|
parts.push(buffer.subarray(offset, r.start));
|
|
@@ -2353,6 +2347,6 @@ const transformSource = async (env) => {
|
|
|
2353
2347
|
});
|
|
2354
2348
|
parts.push(buffer.subarray(offset));
|
|
2355
2349
|
const transformedSource = Buffer.concat(parts).toString();
|
|
2356
|
-
return { code: transformedSource, sheets: extractedSheets };
|
|
2350
|
+
return { code: transformedSource, sheets: [...extractedSheets] };
|
|
2357
2351
|
};
|
|
2358
2352
|
exports.transformSource = transformSource;
|
package/dist/types.d.ts
CHANGED