@plumeria/utils 19.2.8 → 19.2.10

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 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 function extractOndemandStyles(obj: any, extractedSheets: string[], t: Tables): void;
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;
@@ -1217,6 +1217,7 @@ function runScan(scanCwd = process.cwd()) {
1217
1217
  if (!currentFiles.has(fp))
1218
1218
  deletedFiles.push(fp);
1219
1219
  }
1220
+ const appeared = files.some((fp) => !knownFiles.has(fp));
1220
1221
  knownFiles = currentFiles;
1221
1222
  const invalidated = new Set();
1222
1223
  const queue = [];
@@ -1258,6 +1259,19 @@ function runScan(scanCwd = process.cwd()) {
1258
1259
  invalidated.add(fp);
1259
1260
  queue.push(fp);
1260
1261
  }
1262
+ if (appeared) {
1263
+ for (const [filePath, cached] of Object.entries(fileCache)) {
1264
+ if (invalidated.has(filePath) ||
1265
+ !currentFiles.has(filePath) ||
1266
+ !cached.unresolvedImports?.length)
1267
+ continue;
1268
+ const resolves = cached.unresolvedImports.some((specifier) => (0, resolver_1.resolveImportPath)(specifier, filePath));
1269
+ if (resolves) {
1270
+ invalidated.add(filePath);
1271
+ queue.push(filePath);
1272
+ }
1273
+ }
1274
+ }
1261
1275
  for (let head = 0; head < queue.length; head++) {
1262
1276
  const fp = queue[head];
1263
1277
  const deps = dependentsMap.get(fp);
@@ -2125,6 +2139,7 @@ function runScan(scanCwd = process.cwd()) {
2125
2139
  dependencies: Array.from(localDependencies),
2126
2140
  exports: fileCache[filePath]?.exports,
2127
2141
  exportsMtimeMs: fileCache[filePath]?.exportsMtimeMs,
2142
+ unresolvedImports: fileCache[filePath]?.unresolvedImports,
2128
2143
  staticTable: localStaticTable,
2129
2144
  keyframesHashTable: localKeyframesHashTable,
2130
2145
  keyframesObjectTable: localKeyframesObjectTable,
@@ -2192,6 +2207,7 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
2192
2207
  const reExports = {};
2193
2208
  const starExports = [];
2194
2209
  const localDependencies = new Set();
2210
+ const unresolvedImports = [];
2195
2211
  const imports = {};
2196
2212
  for (const node of ast.body) {
2197
2213
  if (node.type === 'ImportDeclaration') {
@@ -2216,6 +2232,9 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
2216
2232
  if (actualPath) {
2217
2233
  localDependencies.add(actualPath);
2218
2234
  }
2235
+ else if (node.source.value !== '@plumeria/core') {
2236
+ unresolvedImports.push(node.source.value);
2237
+ }
2219
2238
  }
2220
2239
  else if (node.type === 'ExportDeclaration') {
2221
2240
  const decl = node.declaration;
@@ -2244,6 +2263,9 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
2244
2263
  if (actualPath) {
2245
2264
  localDependencies.add(actualPath);
2246
2265
  }
2266
+ else if (source !== '@plumeria/core') {
2267
+ unresolvedImports.push(source);
2268
+ }
2247
2269
  }
2248
2270
  node.specifiers.forEach((spec) => {
2249
2271
  if (spec.type === 'ExportSpecifier') {
@@ -2274,6 +2296,9 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
2274
2296
  if (actualPath) {
2275
2297
  localDependencies.add(actualPath);
2276
2298
  }
2299
+ else if (node.source.value !== '@plumeria/core') {
2300
+ unresolvedImports.push(node.source.value);
2301
+ }
2277
2302
  }
2278
2303
  }
2279
2304
  else if (node.type === 'ExportDefaultExpression') {
@@ -2313,6 +2338,7 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
2313
2338
  mtimeMs: mtimeMs,
2314
2339
  exports: { localExports, reExports, starExports, imports },
2315
2340
  dependencies: newDeps,
2341
+ unresolvedImports,
2316
2342
  staticTable: {},
2317
2343
  keyframesHashTable: {},
2318
2344
  keyframesObjectTable: {},
@@ -2337,6 +2363,7 @@ function extractAndCacheExports(filePath, ast, mtimeMs) {
2337
2363
  imports,
2338
2364
  };
2339
2365
  fileCache[filePath].dependencies = newDeps;
2366
+ fileCache[filePath].unresolvedImports = unresolvedImports;
2340
2367
  }
2341
2368
  fileCache[filePath].exportsMtimeMs = mtimeMs;
2342
2369
  }
@@ -2394,7 +2421,17 @@ function resolveExport(filePath, exportName, visited = new Set()) {
2394
2421
  }
2395
2422
  const REFERENCE_MARKER = /(kf|vt|cr)-([0-9a-z]+)/g;
2396
2423
  const CUSTOM_PROPERTY = /var\(\s*(--[^\s,)]+)/g;
2397
- function extractOndemandStyles(obj, extractedSheets, t) {
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) {
2398
2435
  if (!obj || typeof obj !== 'object')
2399
2436
  return;
2400
2437
  const visited = new Set();
@@ -2441,13 +2478,6 @@ function extractOndemandStyles(obj, extractedSheets, t) {
2441
2478
  });
2442
2479
  }
2443
2480
  walk(obj);
2444
- const existingSheets = new Set(extractedSheets);
2445
- const addSheet = (sheet) => {
2446
- if (!existingSheets.has(sheet)) {
2447
- existingSheets.add(sheet);
2448
- extractedSheets.push(sheet);
2449
- }
2450
- };
2451
2481
  if (keyframesHashes.size > 0) {
2452
2482
  for (const hash of keyframesHashes) {
2453
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
- if (!extractedSheets.includes(sheet)) {
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, extractedSheets, scannedTables);
303
+ (0, parser_1.extractOndemandStyles)(style, addSheet, scannedTables);
306
304
  records.forEach((r) => {
307
305
  addSheet(r.sheet);
308
306
  });
@@ -2353,6 +2351,6 @@ const transformSource = async (env) => {
2353
2351
  });
2354
2352
  parts.push(buffer.subarray(offset));
2355
2353
  const transformedSource = Buffer.concat(parts).toString();
2356
- return { code: transformedSource, sheets: extractedSheets };
2354
+ return { code: transformedSource, sheets: [...extractedSheets] };
2357
2355
  };
2358
2356
  exports.transformSource = transformSource;
package/dist/types.d.ts CHANGED
@@ -62,4 +62,5 @@ export type ViewTransition = {
62
62
  new?: CSSProperties;
63
63
  old?: CSSProperties;
64
64
  };
65
+ export type SheetSink = (sheet: string) => void;
65
66
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/utils",
3
- "version": "19.2.8",
3
+ "version": "19.2.10",
4
4
  "description": "Plumeria Utils",
5
5
  "author": "Refirst 11",
6
6
  "license": "MIT",