@plumeria/webpack-plugin 6.2.1 → 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 +103 -91
  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 }) {
@@ -88,11 +90,11 @@ function loader(source) {
88
90
  importMap[localName] = scannedTables.variantsHashTable[uniqueKey];
89
91
  }
90
92
  if (scannedTables.createThemeHashTable[uniqueKey]) {
91
- importMap[localName] =
93
+ createThemeImportMap[localName] =
92
94
  scannedTables.createThemeHashTable[uniqueKey];
93
95
  }
94
96
  if (scannedTables.createStaticHashTable[uniqueKey]) {
95
- importMap[localName] =
97
+ createStaticImportMap[localName] =
96
98
  scannedTables.createStaticHashTable[uniqueKey];
97
99
  }
98
100
  }
@@ -124,20 +126,6 @@ function loader(source) {
124
126
  for (const key of Object.keys(importMap)) {
125
127
  mergedViewTransitionTable[key] = importMap[key];
126
128
  }
127
- const mergedCreateThemeHashTable = {};
128
- for (const key of Object.keys(scannedTables.createThemeHashTable)) {
129
- mergedCreateThemeHashTable[key] = scannedTables.createThemeHashTable[key];
130
- }
131
- for (const key of Object.keys(importMap)) {
132
- mergedCreateThemeHashTable[key] = importMap[key];
133
- }
134
- const mergedCreateStaticHashTable = {};
135
- for (const key of Object.keys(scannedTables.createStaticHashTable)) {
136
- mergedCreateStaticHashTable[key] = scannedTables.createStaticHashTable[key];
137
- }
138
- for (const key of Object.keys(importMap)) {
139
- mergedCreateStaticHashTable[key] = importMap[key];
140
- }
141
129
  const mergedCreateTable = {};
142
130
  for (const key of Object.keys(scannedTables.createHashTable)) {
143
131
  mergedCreateTable[key] = scannedTables.createHashTable[key];
@@ -152,6 +140,30 @@ function loader(source) {
152
140
  for (const key of Object.keys(importMap)) {
153
141
  mergedVariantsTable[key] = importMap[key];
154
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
+ }
155
167
  const localCreateStyles = {};
156
168
  const replacements = [];
157
169
  const extractedSheets = [];
@@ -241,27 +253,11 @@ function loader(source) {
241
253
  };
242
254
  }
243
255
  }
244
- else if ((propName === 'createTheme' || propName === 'createStatic') &&
245
- (utils_1.t.isObjectExpression(node.init.arguments[0].expression) ||
246
- utils_1.t.isStringLiteral(node.init.arguments[0].expression))) {
247
- localCreateStyles[node.id.value] = {
248
- name: node.id.value,
249
- type: 'constant',
250
- obj: {},
251
- hashMap: {},
252
- isExported,
253
- initSpan: {
254
- start: node.init.span.start - ast.span.start,
255
- end: node.init.span.end - ast.span.start,
256
- },
257
- declSpan: {
258
- start: declSpan.start - ast.span.start,
259
- end: declSpan.end - ast.span.start,
260
- },
261
- };
262
- }
263
256
  else if (propName === 'variants' &&
264
257
  utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
258
+ if (utils_1.t.isIdentifier(node.id)) {
259
+ idSpans.add(node.id.span.start);
260
+ }
265
261
  const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable, (name) => {
266
262
  if (localCreateStyles[name]) {
267
263
  return localCreateStyles[name].obj;
@@ -290,6 +286,32 @@ function loader(source) {
290
286
  },
291
287
  };
292
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
+ }
293
315
  }
294
316
  };
295
317
  (0, utils_1.traverse)(ast, {
@@ -363,7 +385,6 @@ function loader(source) {
363
385
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
364
386
  scannedTables.viewTransitionObjectTable[hash] = obj;
365
387
  if (!isProduction) {
366
- (0, utils_1.extractOndemandStyles)(obj, extractedSheets, scannedTables);
367
388
  (0, utils_1.extractOndemandStyles)({ vt: `vt-${hash}` }, extractedSheets, scannedTables);
368
389
  }
369
390
  replacements.push({
@@ -372,12 +393,23 @@ function loader(source) {
372
393
  content: JSON.stringify(`vt-${hash}`),
373
394
  });
374
395
  }
375
- else if (propName === 'createTheme' &&
396
+ else if ((propName === 'createTheme' || propName === 'createStatic') &&
376
397
  args.length > 0 &&
377
398
  utils_1.t.isObjectExpression(args[0].expression)) {
378
399
  const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedCreateThemeHashTable, scannedTables.createThemeObjectTable, mergedCreateTable, mergedCreateStaticHashTable, scannedTables.createStaticObjectTable, mergedVariantsTable);
379
400
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
380
- 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
+ });
381
413
  }
382
414
  else if (propName === 'create' &&
383
415
  args.length > 0 &&
@@ -403,7 +435,7 @@ function loader(source) {
403
435
  if (utils_1.t.isIdentifier(node.object) && utils_1.t.isIdentifier(node.property)) {
404
436
  const varName = node.object.value;
405
437
  const propName = node.property.value;
406
- const uniqueKey = `${this.resourcePath}-${varName}`;
438
+ const uniqueKey = `${resourcePath}-${varName}`;
407
439
  let hash = scannedTables.createHashTable[uniqueKey];
408
440
  if (!hash) {
409
441
  hash = mergedCreateTable[varName];
@@ -426,13 +458,12 @@ function loader(source) {
426
458
  themeHash = mergedCreateThemeHashTable[varName];
427
459
  }
428
460
  if (themeHash) {
429
- const themeObj = scannedTables.createThemeObjectTable[themeHash];
430
- if (themeObj && themeObj[propName] !== undefined) {
431
- const cssVarName = (0, zss_engine_1.camelToKebabCase)(propName);
461
+ const atomicMap = scannedTables.createAtomicMapTable[themeHash];
462
+ if (atomicMap && atomicMap && atomicMap[propName]) {
432
463
  replacements.push({
433
464
  start: node.span.start - ast.span.start,
434
465
  end: node.span.end - ast.span.start,
435
- content: JSON.stringify(`var(--${cssVarName})`),
466
+ content: JSON.stringify(atomicMap[propName]),
436
467
  });
437
468
  }
438
469
  }
@@ -467,7 +498,7 @@ function loader(source) {
467
498
  return;
468
499
  }
469
500
  const varName = node.value;
470
- const uniqueKey = `${this.resourcePath}-${varName}`;
501
+ const uniqueKey = `${resourcePath}-${varName}`;
471
502
  let hash = scannedTables.createHashTable[uniqueKey];
472
503
  if (!hash) {
473
504
  hash = mergedCreateTable[varName];
@@ -489,46 +520,19 @@ function loader(source) {
489
520
  });
490
521
  }
491
522
  }
492
- let kfHash = scannedTables.keyframesHashTable[uniqueKey];
493
- if (!kfHash) {
494
- kfHash = mergedKeyframesTable[varName];
495
- }
496
- if (kfHash) {
497
- replacements.push({
498
- start: node.span.start - ast.span.start,
499
- end: node.span.end - ast.span.start,
500
- content: JSON.stringify(`kf-${kfHash}`),
501
- });
502
- return;
503
- }
504
- let vtHash = scannedTables.viewTransitionHashTable[uniqueKey];
505
- if (!vtHash) {
506
- vtHash = mergedViewTransitionTable[varName];
507
- }
508
- if (vtHash) {
509
- replacements.push({
510
- start: node.span.start - ast.span.start,
511
- end: node.span.end - ast.span.start,
512
- content: JSON.stringify(`vt-${vtHash}`),
513
- });
514
- return;
515
- }
516
523
  let themeHash = scannedTables.createThemeHashTable[uniqueKey];
517
524
  if (!themeHash) {
518
525
  themeHash = mergedCreateThemeHashTable[varName];
519
526
  }
520
527
  if (themeHash) {
521
- const themeObj = scannedTables.createThemeObjectTable[themeHash];
522
- if (themeObj) {
523
- const themeVars = {};
524
- Object.keys(themeObj).forEach((key) => {
525
- themeVars[key] = `var(--${(0, zss_engine_1.camelToKebabCase)(key)})`;
526
- });
528
+ const atomicMap = scannedTables.createAtomicMapTable[themeHash];
529
+ if (atomicMap) {
527
530
  replacements.push({
528
531
  start: node.span.start - ast.span.start,
529
532
  end: node.span.end - ast.span.start,
530
- content: JSON.stringify(themeVars),
533
+ content: JSON.stringify(atomicMap),
531
534
  });
535
+ return;
532
536
  }
533
537
  }
534
538
  let staticHash = scannedTables.createStaticHashTable[uniqueKey];
@@ -602,17 +606,21 @@ function loader(source) {
602
606
  }
603
607
  else if (utils_1.t.isIdentifier(expr)) {
604
608
  const varName = expr.value;
605
- const styleInfo = localCreateStyles[varName];
606
- if (styleInfo && styleInfo.obj) {
607
- return styleInfo.obj;
609
+ const uniqueKey = `${this.resourcePath}-${varName}`;
610
+ let hash = scannedTables.createHashTable[uniqueKey];
611
+ if (!hash) {
612
+ hash = mergedCreateTable[varName];
608
613
  }
609
- const hash = mergedCreateTable[varName];
610
614
  if (hash) {
611
615
  const obj = scannedTables.createObjectTable[hash];
612
616
  if (obj && typeof obj === 'object') {
613
617
  return obj;
614
618
  }
615
619
  }
620
+ const styleInfo = localCreateStyles[varName];
621
+ if (styleInfo && styleInfo.obj) {
622
+ return styleInfo.obj;
623
+ }
616
624
  if (localCreateStyles[varName]) {
617
625
  return localCreateStyles[varName].obj;
618
626
  }
@@ -632,13 +640,18 @@ function loader(source) {
632
640
  if (utils_1.t.isCallExpression(expr) && utils_1.t.isIdentifier(expr.callee)) {
633
641
  const varName = expr.callee.value;
634
642
  let variantObj;
635
- if (localCreateStyles[varName] && localCreateStyles[varName].obj) {
636
- variantObj = localCreateStyles[varName].obj;
643
+ const uniqueKey = `${this.resourcePath}-${varName}`;
644
+ let hash = scannedTables.variantsHashTable[uniqueKey];
645
+ if (!hash) {
646
+ hash = mergedVariantsTable[varName];
637
647
  }
638
- else if (mergedVariantsTable[varName]) {
639
- const hash = mergedVariantsTable[varName];
640
- if (scannedTables.variantsObjectTable[hash]) {
641
- variantObj = scannedTables.variantsObjectTable[hash];
648
+ if (hash && scannedTables.variantsObjectTable[hash]) {
649
+ variantObj = scannedTables.variantsObjectTable[hash];
650
+ }
651
+ if (!variantObj) {
652
+ if (localCreateStyles[varName] &&
653
+ localCreateStyles[varName].obj) {
654
+ variantObj = localCreateStyles[varName].obj;
642
655
  }
643
656
  }
644
657
  if (variantObj) {
@@ -794,12 +807,12 @@ function loader(source) {
794
807
  table[i] = '';
795
808
  continue;
796
809
  }
797
- if (!isProduction) {
810
+ if (process.env.NODE_ENV !== 'production') {
798
811
  (0, utils_1.extractOndemandStyles)(currentStyle, extractedSheets, scannedTables);
799
812
  }
800
813
  const hash = (0, zss_engine_1.genBase36Hash)(currentStyle, 1, 8);
801
814
  const records = (0, utils_1.getStyleRecords)(hash, currentStyle, 2);
802
- if (!isProduction) {
815
+ if (process.env.NODE_ENV !== 'production') {
803
816
  records.forEach((r) => extractedSheets.push(r.sheet));
804
817
  }
805
818
  const className = records
@@ -836,6 +849,9 @@ function loader(source) {
836
849
  },
837
850
  });
838
851
  Object.values(localCreateStyles).forEach((info) => {
852
+ if (info.type === 'constant' || info.type === 'variant') {
853
+ return;
854
+ }
839
855
  if (info.isExported) {
840
856
  replacements.push({
841
857
  start: info.declSpan.start,
@@ -851,10 +867,6 @@ function loader(source) {
851
867
  });
852
868
  }
853
869
  });
854
- if (extractedSheets.length > 0) {
855
- fileStyles.baseStyles =
856
- (fileStyles.baseStyles || '') + extractedSheets.join('');
857
- }
858
870
  const buffer = Buffer.from(source);
859
871
  let offset = 0;
860
872
  const parts = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/webpack-plugin",
3
- "version": "6.2.1",
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.1"
25
+ "@plumeria/utils": "^6.3.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@swc/core": "1.15.8",