@plumeria/turbopack-loader 6.2.0 → 6.3.0

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.
Files changed (2) hide show
  1. package/dist/index.js +149 -46
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -40,6 +40,8 @@ async function loader(source) {
40
40
  const localConsts = (0, utils_1.collectLocalConsts)(ast);
41
41
  const resourcePath = this.resourcePath;
42
42
  const importMap = {};
43
+ const createThemeImportMap = {};
44
+ const createStaticImportMap = {};
43
45
  const plumeriaAliases = {};
44
46
  (0, utils_1.traverse)(ast, {
45
47
  ImportDeclaration({ node }) {
@@ -80,15 +82,20 @@ async function loader(source) {
80
82
  importMap[localName] =
81
83
  scannedTables.viewTransitionHashTable[uniqueKey];
82
84
  }
83
- if (scannedTables.themeTable[uniqueKey]) {
84
- importMap[localName] = scannedTables.themeTable[uniqueKey];
85
- }
86
85
  if (scannedTables.createHashTable[uniqueKey]) {
87
86
  importMap[localName] = scannedTables.createHashTable[uniqueKey];
88
87
  }
89
88
  if (scannedTables.variantsHashTable[uniqueKey]) {
90
89
  importMap[localName] = scannedTables.variantsHashTable[uniqueKey];
91
90
  }
91
+ if (scannedTables.createThemeHashTable[uniqueKey]) {
92
+ createThemeImportMap[localName] =
93
+ scannedTables.createThemeHashTable[uniqueKey];
94
+ }
95
+ if (scannedTables.createStaticHashTable[uniqueKey]) {
96
+ createStaticImportMap[localName] =
97
+ scannedTables.createStaticHashTable[uniqueKey];
98
+ }
92
99
  }
93
100
  });
94
101
  }
@@ -118,13 +125,6 @@ async function loader(source) {
118
125
  for (const key of Object.keys(importMap)) {
119
126
  mergedViewTransitionTable[key] = importMap[key];
120
127
  }
121
- const mergedThemeTable = {};
122
- for (const key of Object.keys(scannedTables.themeTable)) {
123
- mergedThemeTable[key] = scannedTables.themeTable[key];
124
- }
125
- for (const key of Object.keys(importMap)) {
126
- mergedThemeTable[key] = importMap[key];
127
- }
128
128
  const mergedCreateTable = {};
129
129
  for (const key of Object.keys(scannedTables.createHashTable)) {
130
130
  mergedCreateTable[key] = scannedTables.createHashTable[key];
@@ -139,6 +139,30 @@ async function loader(source) {
139
139
  for (const key of Object.keys(importMap)) {
140
140
  mergedVariantsTable[key] = importMap[key];
141
141
  }
142
+ const mergedCreateThemeHashTable = {};
143
+ for (const key of Object.keys(scannedTables.createThemeHashTable)) {
144
+ mergedCreateThemeHashTable[key] = scannedTables.createThemeHashTable[key];
145
+ if (key.startsWith(`${resourcePath}-`)) {
146
+ const varName = key.slice(resourcePath.length + 1);
147
+ mergedCreateThemeHashTable[varName] =
148
+ scannedTables.createThemeHashTable[key];
149
+ }
150
+ }
151
+ for (const key of Object.keys(createThemeImportMap)) {
152
+ mergedCreateThemeHashTable[key] = createThemeImportMap[key];
153
+ }
154
+ const mergedCreateStaticHashTable = {};
155
+ for (const key of Object.keys(scannedTables.createStaticHashTable)) {
156
+ mergedCreateStaticHashTable[key] = scannedTables.createStaticHashTable[key];
157
+ if (key.startsWith(`${resourcePath}-`)) {
158
+ const varName = key.slice(resourcePath.length + 1);
159
+ mergedCreateStaticHashTable[varName] =
160
+ scannedTables.createStaticHashTable[key];
161
+ }
162
+ }
163
+ for (const key of Object.keys(createStaticImportMap)) {
164
+ mergedCreateStaticHashTable[key] = createStaticImportMap[key];
165
+ }
142
166
  const localCreateStyles = {};
143
167
  const replacements = [];
144
168
  const extractedSheets = [];
@@ -193,7 +217,7 @@ async function loader(source) {
193
217
  if (propName) {
194
218
  if (propName === 'create' &&
195
219
  utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
196
- const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
220
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
197
221
  if (obj) {
198
222
  const hashMap = {};
199
223
  Object.entries(obj).forEach(([key, style]) => {
@@ -228,28 +252,12 @@ async function loader(source) {
228
252
  };
229
253
  }
230
254
  }
231
- else if ((propName === 'createTheme' || propName === 'createStatic') &&
232
- (utils_1.t.isObjectExpression(node.init.arguments[0].expression) ||
233
- utils_1.t.isStringLiteral(node.init.arguments[0].expression))) {
234
- localCreateStyles[node.id.value] = {
235
- name: node.id.value,
236
- type: 'constant',
237
- obj: {},
238
- hashMap: {},
239
- isExported,
240
- initSpan: {
241
- start: node.init.span.start - ast.span.start,
242
- end: node.init.span.end - ast.span.start,
243
- },
244
- declSpan: {
245
- start: declSpan.start - ast.span.start,
246
- end: declSpan.end - ast.span.start,
247
- },
248
- };
249
- }
250
255
  else if (propName === 'variants' &&
251
256
  utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
252
- const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable, (name) => {
257
+ if (utils_1.t.isIdentifier(node.id)) {
258
+ idSpans.add(node.id.span.start);
259
+ }
260
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable, (name) => {
253
261
  if (localCreateStyles[name]) {
254
262
  return localCreateStyles[name].obj;
255
263
  }
@@ -277,6 +285,32 @@ async function loader(source) {
277
285
  },
278
286
  };
279
287
  }
288
+ else if (propName === 'createTheme' &&
289
+ utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
290
+ if (utils_1.t.isIdentifier(node.id)) {
291
+ idSpans.add(node.id.span.start);
292
+ }
293
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
294
+ const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
295
+ const uniqueKey = `${resourcePath}-${node.id.value}`;
296
+ scannedTables.createThemeHashTable[uniqueKey] = hash;
297
+ scannedTables.createThemeObjectTable[hash] = obj;
298
+ localCreateStyles[node.id.value] = {
299
+ name: node.id.value,
300
+ type: 'constant',
301
+ obj,
302
+ hashMap: scannedTables.createAtomicMapTable[hash],
303
+ isExported,
304
+ initSpan: {
305
+ start: node.init.span.start - ast.span.start,
306
+ end: node.init.span.end - ast.span.start,
307
+ },
308
+ declSpan: {
309
+ start: declSpan.start - ast.span.start,
310
+ end: declSpan.end - ast.span.start,
311
+ },
312
+ };
313
+ }
280
314
  }
281
315
  };
282
316
  (0, utils_1.traverse)(ast, {
@@ -334,7 +368,7 @@ async function loader(source) {
334
368
  if (propName === 'keyframes' &&
335
369
  args.length > 0 &&
336
370
  utils_1.t.isObjectExpression(args[0].expression)) {
337
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
371
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
338
372
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
339
373
  scannedTables.keyframesObjectTable[hash] = obj;
340
374
  replacements.push({
@@ -346,11 +380,10 @@ async function loader(source) {
346
380
  else if (propName === 'viewTransition' &&
347
381
  args.length > 0 &&
348
382
  utils_1.t.isObjectExpression(args[0].expression)) {
349
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
383
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
350
384
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
351
385
  scannedTables.viewTransitionObjectTable[hash] = obj;
352
386
  if (!isProduction) {
353
- (0, utils_1.extractOndemandStyles)(obj, extractedSheets, scannedTables);
354
387
  (0, utils_1.extractOndemandStyles)({ vt: `vt-${hash}` }, extractedSheets, scannedTables);
355
388
  }
356
389
  replacements.push({
@@ -359,17 +392,28 @@ async function loader(source) {
359
392
  content: JSON.stringify(`vt-${hash}`),
360
393
  });
361
394
  }
362
- else if (propName === 'createTheme' &&
395
+ else if ((propName === 'createTheme' || propName === 'createStatic') &&
363
396
  args.length > 0 &&
364
397
  utils_1.t.isObjectExpression(args[0].expression)) {
365
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
398
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
366
399
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
367
- scannedTables.createThemeObjectTable[hash] = obj;
400
+ if (propName === 'createTheme') {
401
+ scannedTables.createThemeObjectTable[hash] = obj;
402
+ }
403
+ else {
404
+ scannedTables.createStaticObjectTable[hash] = obj;
405
+ }
406
+ const prefix = propName === 'createTheme' ? 'tm-' : 'st-';
407
+ replacements.push({
408
+ start: node.span.start - ast.span.start,
409
+ end: node.span.end - ast.span.start,
410
+ content: JSON.stringify(`${prefix}${hash}`),
411
+ });
368
412
  }
369
413
  else if (propName === 'create' &&
370
414
  args.length > 0 &&
371
415
  utils_1.t.isObjectExpression(args[0].expression)) {
372
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
416
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
373
417
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
374
418
  scannedTables.createObjectTable[hash] = obj;
375
419
  Object.entries(obj).forEach(([key, style]) => {
@@ -390,7 +434,7 @@ async function loader(source) {
390
434
  if (utils_1.t.isIdentifier(node.object) && utils_1.t.isIdentifier(node.property)) {
391
435
  const varName = node.object.value;
392
436
  const propName = node.property.value;
393
- const uniqueKey = `${this.resourcePath}-${varName}`;
437
+ const uniqueKey = `${resourcePath}-${varName}`;
394
438
  let hash = scannedTables.createHashTable[uniqueKey];
395
439
  if (!hash) {
396
440
  hash = mergedCreateTable[varName];
@@ -408,6 +452,34 @@ async function loader(source) {
408
452
  });
409
453
  }
410
454
  }
455
+ let themeHash = scannedTables.createThemeHashTable[uniqueKey];
456
+ if (!themeHash) {
457
+ themeHash = mergedCreateThemeHashTable[varName];
458
+ }
459
+ if (themeHash) {
460
+ const atomicMap = scannedTables.createAtomicMapTable[themeHash];
461
+ if (atomicMap && atomicMap && atomicMap[propName]) {
462
+ replacements.push({
463
+ start: node.span.start - ast.span.start,
464
+ end: node.span.end - ast.span.start,
465
+ content: JSON.stringify(atomicMap[propName]),
466
+ });
467
+ }
468
+ }
469
+ let staticHash = scannedTables.createStaticHashTable[uniqueKey];
470
+ if (!staticHash) {
471
+ staticHash = mergedCreateStaticHashTable[varName];
472
+ }
473
+ if (staticHash) {
474
+ const staticObj = scannedTables.createStaticObjectTable[staticHash];
475
+ if (staticObj && staticObj[propName] !== undefined) {
476
+ replacements.push({
477
+ start: node.span.start - ast.span.start,
478
+ end: node.span.end - ast.span.start,
479
+ content: JSON.stringify(staticObj[propName]),
480
+ });
481
+ }
482
+ }
411
483
  }
412
484
  },
413
485
  Identifier({ node }) {
@@ -425,7 +497,7 @@ async function loader(source) {
425
497
  return;
426
498
  }
427
499
  const varName = node.value;
428
- const uniqueKey = `${this.resourcePath}-${varName}`;
500
+ const uniqueKey = `${resourcePath}-${varName}`;
429
501
  let hash = scannedTables.createHashTable[uniqueKey];
430
502
  if (!hash) {
431
503
  hash = mergedCreateTable[varName];
@@ -447,6 +519,35 @@ async function loader(source) {
447
519
  });
448
520
  }
449
521
  }
522
+ let themeHash = scannedTables.createThemeHashTable[uniqueKey];
523
+ if (!themeHash) {
524
+ themeHash = mergedCreateThemeHashTable[varName];
525
+ }
526
+ if (themeHash) {
527
+ const atomicMap = scannedTables.createAtomicMapTable[themeHash];
528
+ if (atomicMap) {
529
+ replacements.push({
530
+ start: node.span.start - ast.span.start,
531
+ end: node.span.end - ast.span.start,
532
+ content: JSON.stringify(atomicMap),
533
+ });
534
+ return;
535
+ }
536
+ }
537
+ let staticHash = scannedTables.createStaticHashTable[uniqueKey];
538
+ if (!staticHash) {
539
+ staticHash = mergedCreateStaticHashTable[varName];
540
+ }
541
+ if (staticHash) {
542
+ const staticObj = scannedTables.createStaticObjectTable[staticHash];
543
+ if (staticObj) {
544
+ replacements.push({
545
+ start: node.span.start - ast.span.start,
546
+ end: node.span.end - ast.span.start,
547
+ content: JSON.stringify(staticObj),
548
+ });
549
+ }
550
+ }
450
551
  },
451
552
  CallExpression({ node }) {
452
553
  const callee = node.callee;
@@ -473,18 +574,17 @@ async function loader(source) {
473
574
  const args = node.arguments;
474
575
  const resolveStyleObject = (expr) => {
475
576
  if (utils_1.t.isObjectExpression(expr)) {
476
- return (0, utils_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
577
+ return (0, utils_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
477
578
  }
478
579
  else if (utils_1.t.isMemberExpression(expr) &&
479
580
  utils_1.t.isIdentifier(expr.object) &&
480
- (utils_1.t.isIdentifier(expr.property) || expr.property.type === 'Computed')) {
581
+ (utils_1.t.isIdentifier(expr.property) ||
582
+ expr.property.type === 'Computed')) {
481
583
  if (expr.property.type === 'Computed') {
482
584
  return {};
483
585
  }
484
- const varName = expr.object
485
- .value;
486
- const propName = expr.property
487
- .value;
586
+ const varName = expr.object.value;
587
+ const propName = expr.property.value;
488
588
  const styleInfo = localCreateStyles[varName];
489
589
  if (styleInfo && styleInfo.obj[propName]) {
490
590
  const style = styleInfo.obj[propName];
@@ -748,6 +848,9 @@ async function loader(source) {
748
848
  },
749
849
  });
750
850
  Object.values(localCreateStyles).forEach((info) => {
851
+ if (info.type === 'constant' || info.type === 'variant') {
852
+ return;
853
+ }
751
854
  if (info.isExported) {
752
855
  replacements.push({
753
856
  start: info.declSpan.start,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/turbopack-loader",
3
- "version": "6.2.0",
3
+ "version": "6.3.0",
4
4
  "description": "Plumeria Turbopack-loader",
5
5
  "author": "Refirst 11",
6
6
  "license": "MIT",
@@ -22,7 +22,7 @@
22
22
  "zero-virtual.css"
23
23
  ],
24
24
  "dependencies": {
25
- "@plumeria/utils": "^6.2.0"
25
+ "@plumeria/utils": "^6.3.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@swc/core": "1.15.8",