@plumeria/webpack-plugin 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 +170 -62
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -41,6 +41,8 @@ function loader(source) {
41
41
  const localConsts = (0, utils_1.collectLocalConsts)(ast);
42
42
  const resourcePath = this.resourcePath;
43
43
  const importMap = {};
44
+ const createThemeImportMap = {};
45
+ const createStaticImportMap = {};
44
46
  const plumeriaAliases = {};
45
47
  (0, utils_1.traverse)(ast, {
46
48
  ImportDeclaration({ node }) {
@@ -81,15 +83,20 @@ function loader(source) {
81
83
  importMap[localName] =
82
84
  scannedTables.viewTransitionHashTable[uniqueKey];
83
85
  }
84
- if (scannedTables.themeTable[uniqueKey]) {
85
- importMap[localName] = scannedTables.themeTable[uniqueKey];
86
- }
87
86
  if (scannedTables.createHashTable[uniqueKey]) {
88
87
  importMap[localName] = scannedTables.createHashTable[uniqueKey];
89
88
  }
90
89
  if (scannedTables.variantsHashTable[uniqueKey]) {
91
90
  importMap[localName] = scannedTables.variantsHashTable[uniqueKey];
92
91
  }
92
+ if (scannedTables.createThemeHashTable[uniqueKey]) {
93
+ createThemeImportMap[localName] =
94
+ scannedTables.createThemeHashTable[uniqueKey];
95
+ }
96
+ if (scannedTables.createStaticHashTable[uniqueKey]) {
97
+ createStaticImportMap[localName] =
98
+ scannedTables.createStaticHashTable[uniqueKey];
99
+ }
93
100
  }
94
101
  });
95
102
  }
@@ -119,13 +126,6 @@ function loader(source) {
119
126
  for (const key of Object.keys(importMap)) {
120
127
  mergedViewTransitionTable[key] = importMap[key];
121
128
  }
122
- const mergedThemeTable = {};
123
- for (const key of Object.keys(scannedTables.themeTable)) {
124
- mergedThemeTable[key] = scannedTables.themeTable[key];
125
- }
126
- for (const key of Object.keys(importMap)) {
127
- mergedThemeTable[key] = importMap[key];
128
- }
129
129
  const mergedCreateTable = {};
130
130
  for (const key of Object.keys(scannedTables.createHashTable)) {
131
131
  mergedCreateTable[key] = scannedTables.createHashTable[key];
@@ -140,6 +140,30 @@ function loader(source) {
140
140
  for (const key of Object.keys(importMap)) {
141
141
  mergedVariantsTable[key] = importMap[key];
142
142
  }
143
+ const mergedCreateThemeHashTable = {};
144
+ for (const key of Object.keys(scannedTables.createThemeHashTable)) {
145
+ mergedCreateThemeHashTable[key] = scannedTables.createThemeHashTable[key];
146
+ if (key.startsWith(`${resourcePath}-`)) {
147
+ const varName = key.slice(resourcePath.length + 1);
148
+ mergedCreateThemeHashTable[varName] =
149
+ scannedTables.createThemeHashTable[key];
150
+ }
151
+ }
152
+ for (const key of Object.keys(createThemeImportMap)) {
153
+ mergedCreateThemeHashTable[key] = createThemeImportMap[key];
154
+ }
155
+ const mergedCreateStaticHashTable = {};
156
+ for (const key of Object.keys(scannedTables.createStaticHashTable)) {
157
+ mergedCreateStaticHashTable[key] = scannedTables.createStaticHashTable[key];
158
+ if (key.startsWith(`${resourcePath}-`)) {
159
+ const varName = key.slice(resourcePath.length + 1);
160
+ mergedCreateStaticHashTable[varName] =
161
+ scannedTables.createStaticHashTable[key];
162
+ }
163
+ }
164
+ for (const key of Object.keys(createStaticImportMap)) {
165
+ mergedCreateStaticHashTable[key] = createStaticImportMap[key];
166
+ }
143
167
  const localCreateStyles = {};
144
168
  const replacements = [];
145
169
  const extractedSheets = [];
@@ -194,7 +218,7 @@ function loader(source) {
194
218
  if (propName) {
195
219
  if (propName === 'create' &&
196
220
  utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
197
- const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
221
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
198
222
  if (obj) {
199
223
  const hashMap = {};
200
224
  Object.entries(obj).forEach(([key, style]) => {
@@ -229,28 +253,12 @@ function loader(source) {
229
253
  };
230
254
  }
231
255
  }
232
- else if ((propName === 'createTheme' || propName === 'createStatic') &&
233
- (utils_1.t.isObjectExpression(node.init.arguments[0].expression) ||
234
- utils_1.t.isStringLiteral(node.init.arguments[0].expression))) {
235
- localCreateStyles[node.id.value] = {
236
- name: node.id.value,
237
- type: 'constant',
238
- obj: {},
239
- hashMap: {},
240
- isExported,
241
- initSpan: {
242
- start: node.init.span.start - ast.span.start,
243
- end: node.init.span.end - ast.span.start,
244
- },
245
- declSpan: {
246
- start: declSpan.start - ast.span.start,
247
- end: declSpan.end - ast.span.start,
248
- },
249
- };
250
- }
251
256
  else if (propName === 'variants' &&
252
257
  utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
253
- const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable, (name) => {
258
+ if (utils_1.t.isIdentifier(node.id)) {
259
+ idSpans.add(node.id.span.start);
260
+ }
261
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable, (name) => {
254
262
  if (localCreateStyles[name]) {
255
263
  return localCreateStyles[name].obj;
256
264
  }
@@ -278,6 +286,32 @@ function loader(source) {
278
286
  },
279
287
  };
280
288
  }
289
+ else if (propName === 'createTheme' &&
290
+ utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
291
+ if (utils_1.t.isIdentifier(node.id)) {
292
+ idSpans.add(node.id.span.start);
293
+ }
294
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
295
+ const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
296
+ const uniqueKey = `${resourcePath}-${node.id.value}`;
297
+ scannedTables.createThemeHashTable[uniqueKey] = hash;
298
+ scannedTables.createThemeObjectTable[hash] = obj;
299
+ localCreateStyles[node.id.value] = {
300
+ name: node.id.value,
301
+ type: 'constant',
302
+ obj,
303
+ hashMap: scannedTables.createAtomicMapTable[hash],
304
+ isExported,
305
+ initSpan: {
306
+ start: node.init.span.start - ast.span.start,
307
+ end: node.init.span.end - ast.span.start,
308
+ },
309
+ declSpan: {
310
+ start: declSpan.start - ast.span.start,
311
+ end: declSpan.end - ast.span.start,
312
+ },
313
+ };
314
+ }
281
315
  }
282
316
  };
283
317
  (0, utils_1.traverse)(ast, {
@@ -335,7 +369,7 @@ function loader(source) {
335
369
  if (propName === 'keyframes' &&
336
370
  args.length > 0 &&
337
371
  utils_1.t.isObjectExpression(args[0].expression)) {
338
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
372
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
339
373
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
340
374
  scannedTables.keyframesObjectTable[hash] = obj;
341
375
  replacements.push({
@@ -347,11 +381,10 @@ function loader(source) {
347
381
  else if (propName === 'viewTransition' &&
348
382
  args.length > 0 &&
349
383
  utils_1.t.isObjectExpression(args[0].expression)) {
350
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
384
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
351
385
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
352
386
  scannedTables.viewTransitionObjectTable[hash] = obj;
353
387
  if (!isProduction) {
354
- (0, utils_1.extractOndemandStyles)(obj, extractedSheets, scannedTables);
355
388
  (0, utils_1.extractOndemandStyles)({ vt: `vt-${hash}` }, extractedSheets, scannedTables);
356
389
  }
357
390
  replacements.push({
@@ -360,17 +393,28 @@ function loader(source) {
360
393
  content: JSON.stringify(`vt-${hash}`),
361
394
  });
362
395
  }
363
- else if (propName === 'createTheme' &&
396
+ else if ((propName === 'createTheme' || propName === 'createStatic') &&
364
397
  args.length > 0 &&
365
398
  utils_1.t.isObjectExpression(args[0].expression)) {
366
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
399
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
367
400
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
368
- scannedTables.createThemeObjectTable[hash] = obj;
401
+ if (propName === 'createTheme') {
402
+ scannedTables.createThemeObjectTable[hash] = obj;
403
+ }
404
+ else {
405
+ scannedTables.createStaticObjectTable[hash] = obj;
406
+ }
407
+ const prefix = propName === 'createTheme' ? 'tm-' : 'st-';
408
+ replacements.push({
409
+ start: node.span.start - ast.span.start,
410
+ end: node.span.end - ast.span.start,
411
+ content: JSON.stringify(`${prefix}${hash}`),
412
+ });
369
413
  }
370
414
  else if (propName === 'create' &&
371
415
  args.length > 0 &&
372
416
  utils_1.t.isObjectExpression(args[0].expression)) {
373
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
417
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
374
418
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
375
419
  scannedTables.createObjectTable[hash] = obj;
376
420
  Object.entries(obj).forEach(([key, style]) => {
@@ -391,7 +435,7 @@ function loader(source) {
391
435
  if (utils_1.t.isIdentifier(node.object) && utils_1.t.isIdentifier(node.property)) {
392
436
  const varName = node.object.value;
393
437
  const propName = node.property.value;
394
- const uniqueKey = `${this.resourcePath}-${varName}`;
438
+ const uniqueKey = `${resourcePath}-${varName}`;
395
439
  let hash = scannedTables.createHashTable[uniqueKey];
396
440
  if (!hash) {
397
441
  hash = mergedCreateTable[varName];
@@ -409,6 +453,34 @@ function loader(source) {
409
453
  });
410
454
  }
411
455
  }
456
+ let themeHash = scannedTables.createThemeHashTable[uniqueKey];
457
+ if (!themeHash) {
458
+ themeHash = mergedCreateThemeHashTable[varName];
459
+ }
460
+ if (themeHash) {
461
+ const atomicMap = scannedTables.createAtomicMapTable[themeHash];
462
+ if (atomicMap && atomicMap && atomicMap[propName]) {
463
+ replacements.push({
464
+ start: node.span.start - ast.span.start,
465
+ end: node.span.end - ast.span.start,
466
+ content: JSON.stringify(atomicMap[propName]),
467
+ });
468
+ }
469
+ }
470
+ let staticHash = scannedTables.createStaticHashTable[uniqueKey];
471
+ if (!staticHash) {
472
+ staticHash = mergedCreateStaticHashTable[varName];
473
+ }
474
+ if (staticHash) {
475
+ const staticObj = scannedTables.createStaticObjectTable[staticHash];
476
+ if (staticObj && staticObj[propName] !== undefined) {
477
+ replacements.push({
478
+ start: node.span.start - ast.span.start,
479
+ end: node.span.end - ast.span.start,
480
+ content: JSON.stringify(staticObj[propName]),
481
+ });
482
+ }
483
+ }
412
484
  }
413
485
  },
414
486
  Identifier({ node }) {
@@ -426,7 +498,7 @@ function loader(source) {
426
498
  return;
427
499
  }
428
500
  const varName = node.value;
429
- const uniqueKey = `${this.resourcePath}-${varName}`;
501
+ const uniqueKey = `${resourcePath}-${varName}`;
430
502
  let hash = scannedTables.createHashTable[uniqueKey];
431
503
  if (!hash) {
432
504
  hash = mergedCreateTable[varName];
@@ -448,6 +520,35 @@ function loader(source) {
448
520
  });
449
521
  }
450
522
  }
523
+ let themeHash = scannedTables.createThemeHashTable[uniqueKey];
524
+ if (!themeHash) {
525
+ themeHash = mergedCreateThemeHashTable[varName];
526
+ }
527
+ if (themeHash) {
528
+ const atomicMap = scannedTables.createAtomicMapTable[themeHash];
529
+ if (atomicMap) {
530
+ replacements.push({
531
+ start: node.span.start - ast.span.start,
532
+ end: node.span.end - ast.span.start,
533
+ content: JSON.stringify(atomicMap),
534
+ });
535
+ return;
536
+ }
537
+ }
538
+ let staticHash = scannedTables.createStaticHashTable[uniqueKey];
539
+ if (!staticHash) {
540
+ staticHash = mergedCreateStaticHashTable[varName];
541
+ }
542
+ if (staticHash) {
543
+ const staticObj = scannedTables.createStaticObjectTable[staticHash];
544
+ if (staticObj) {
545
+ replacements.push({
546
+ start: node.span.start - ast.span.start,
547
+ end: node.span.end - ast.span.start,
548
+ content: JSON.stringify(staticObj),
549
+ });
550
+ }
551
+ }
451
552
  },
452
553
  CallExpression({ node }) {
453
554
  const callee = node.callee;
@@ -474,18 +575,17 @@ function loader(source) {
474
575
  const args = node.arguments;
475
576
  const resolveStyleObject = (expr) => {
476
577
  if (utils_1.t.isObjectExpression(expr)) {
477
- return (0, utils_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable, mergedCreateTable, mergedVariantsTable);
578
+ return (0, utils_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
478
579
  }
479
580
  else if (utils_1.t.isMemberExpression(expr) &&
480
581
  utils_1.t.isIdentifier(expr.object) &&
481
- (utils_1.t.isIdentifier(expr.property) || expr.property.type === 'Computed')) {
582
+ (utils_1.t.isIdentifier(expr.property) ||
583
+ expr.property.type === 'Computed')) {
482
584
  if (expr.property.type === 'Computed') {
483
585
  return {};
484
586
  }
485
- const varName = expr.object
486
- .value;
487
- const propName = expr.property
488
- .value;
587
+ const varName = expr.object.value;
588
+ const propName = expr.property.value;
489
589
  const styleInfo = localCreateStyles[varName];
490
590
  if (styleInfo && styleInfo.obj[propName]) {
491
591
  const style = styleInfo.obj[propName];
@@ -506,17 +606,21 @@ function loader(source) {
506
606
  }
507
607
  else if (utils_1.t.isIdentifier(expr)) {
508
608
  const varName = expr.value;
509
- const styleInfo = localCreateStyles[varName];
510
- if (styleInfo && styleInfo.obj) {
511
- return styleInfo.obj;
609
+ const uniqueKey = `${this.resourcePath}-${varName}`;
610
+ let hash = scannedTables.createHashTable[uniqueKey];
611
+ if (!hash) {
612
+ hash = mergedCreateTable[varName];
512
613
  }
513
- const hash = mergedCreateTable[varName];
514
614
  if (hash) {
515
615
  const obj = scannedTables.createObjectTable[hash];
516
616
  if (obj && typeof obj === 'object') {
517
617
  return obj;
518
618
  }
519
619
  }
620
+ const styleInfo = localCreateStyles[varName];
621
+ if (styleInfo && styleInfo.obj) {
622
+ return styleInfo.obj;
623
+ }
520
624
  if (localCreateStyles[varName]) {
521
625
  return localCreateStyles[varName].obj;
522
626
  }
@@ -536,13 +640,18 @@ function loader(source) {
536
640
  if (utils_1.t.isCallExpression(expr) && utils_1.t.isIdentifier(expr.callee)) {
537
641
  const varName = expr.callee.value;
538
642
  let variantObj;
539
- if (localCreateStyles[varName] && localCreateStyles[varName].obj) {
540
- variantObj = localCreateStyles[varName].obj;
643
+ const uniqueKey = `${this.resourcePath}-${varName}`;
644
+ let hash = scannedTables.variantsHashTable[uniqueKey];
645
+ if (!hash) {
646
+ hash = mergedVariantsTable[varName];
647
+ }
648
+ if (hash && scannedTables.variantsObjectTable[hash]) {
649
+ variantObj = scannedTables.variantsObjectTable[hash];
541
650
  }
542
- else if (mergedVariantsTable[varName]) {
543
- const hash = mergedVariantsTable[varName];
544
- if (scannedTables.variantsObjectTable[hash]) {
545
- variantObj = scannedTables.variantsObjectTable[hash];
651
+ if (!variantObj) {
652
+ if (localCreateStyles[varName] &&
653
+ localCreateStyles[varName].obj) {
654
+ variantObj = localCreateStyles[varName].obj;
546
655
  }
547
656
  }
548
657
  if (variantObj) {
@@ -698,12 +807,12 @@ function loader(source) {
698
807
  table[i] = '';
699
808
  continue;
700
809
  }
701
- if (!isProduction) {
810
+ if (process.env.NODE_ENV !== 'production') {
702
811
  (0, utils_1.extractOndemandStyles)(currentStyle, extractedSheets, scannedTables);
703
812
  }
704
813
  const hash = (0, zss_engine_1.genBase36Hash)(currentStyle, 1, 8);
705
814
  const records = (0, utils_1.getStyleRecords)(hash, currentStyle, 2);
706
- if (!isProduction) {
815
+ if (process.env.NODE_ENV !== 'production') {
707
816
  records.forEach((r) => extractedSheets.push(r.sheet));
708
817
  }
709
818
  const className = records
@@ -740,6 +849,9 @@ function loader(source) {
740
849
  },
741
850
  });
742
851
  Object.values(localCreateStyles).forEach((info) => {
852
+ if (info.type === 'constant' || info.type === 'variant') {
853
+ return;
854
+ }
743
855
  if (info.isExported) {
744
856
  replacements.push({
745
857
  start: info.declSpan.start,
@@ -755,10 +867,6 @@ function loader(source) {
755
867
  });
756
868
  }
757
869
  });
758
- if (extractedSheets.length > 0) {
759
- fileStyles.baseStyles =
760
- (fileStyles.baseStyles || '') + extractedSheets.join('');
761
- }
762
870
  const buffer = Buffer.from(source);
763
871
  let offset = 0;
764
872
  const parts = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/webpack-plugin",
3
- "version": "6.2.0",
3
+ "version": "6.3.0",
4
4
  "description": "Plumeria Webpack plugin",
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",