@plumeria/compiler 4.1.3 → 4.2.1

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 +44 -23
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -10,25 +10,9 @@ const fs_1 = __importDefault(require("fs"));
10
10
  const utils_1 = require("@plumeria/utils");
11
11
  function compileCSS(options) {
12
12
  const { include, exclude, cwd = process.cwd() } = options;
13
- let staticTable = null;
14
- let keyframesData = null;
15
- let viewTransitionData = null;
16
- let themeData = null;
17
13
  const allSheets = new Set();
18
14
  const dependencies = new Set();
19
- staticTable = (0, utils_1.scanForCreateStatic)((p) => dependencies.add(p));
20
- utils_1.tables.staticTable = staticTable;
21
- keyframesData = (0, utils_1.scanForKeyframes)((p) => dependencies.add(p));
22
- utils_1.tables.keyframesHashTable = keyframesData.keyframesHashTableLocal;
23
- utils_1.tables.keyframesObjectTable = keyframesData.keyframesObjectTableLocal;
24
- viewTransitionData = (0, utils_1.scanForViewTransition)((p) => dependencies.add(p));
25
- utils_1.tables.viewTransitionHashTable =
26
- viewTransitionData.viewTransitionHashTableLocal;
27
- utils_1.tables.viewTransitionObjectTable =
28
- viewTransitionData.viewTransitionObjectTableLocal;
29
- themeData = (0, utils_1.scanForCreateTheme)((p) => dependencies.add(p));
30
- utils_1.tables.themeTable = themeData.themeTableLocal;
31
- utils_1.tables.createThemeObjectTable = themeData.createThemeObjectTableLocal;
15
+ (0, utils_1.scanAll)((p) => dependencies.add(p));
32
16
  const processFile = (filePath) => {
33
17
  const source = fs_1.default.readFileSync(filePath, 'utf-8');
34
18
  const extractedSheets = [];
@@ -45,7 +29,44 @@ function compileCSS(options) {
45
29
  return [];
46
30
  }
47
31
  const localConsts = (0, utils_1.collectLocalConsts)(ast);
48
- Object.assign(utils_1.tables.staticTable, localConsts);
32
+ const resourcePath = filePath;
33
+ const importMap = {};
34
+ (0, utils_1.traverse)(ast, {
35
+ ImportDeclaration({ node }) {
36
+ const sourcePath = node.source.value;
37
+ const actualPath = (0, utils_1.resolveImportPath)(sourcePath, resourcePath);
38
+ if (actualPath && fs_1.default.existsSync(actualPath)) {
39
+ if (fs_1.default.existsSync(actualPath)) {
40
+ node.specifiers.forEach((specifier) => {
41
+ if (specifier.type === 'ImportSpecifier') {
42
+ const importedName = specifier.imported
43
+ ? specifier.imported.value
44
+ : specifier.local.value;
45
+ const localName = specifier.local.value;
46
+ const uniqueKey = `${actualPath}-${importedName}`;
47
+ if (utils_1.tables.staticTable[uniqueKey]) {
48
+ importMap[localName] = utils_1.tables.staticTable[uniqueKey];
49
+ }
50
+ if (utils_1.tables.keyframesHashTable[uniqueKey]) {
51
+ importMap[localName] = utils_1.tables.keyframesHashTable[uniqueKey];
52
+ }
53
+ if (utils_1.tables.viewTransitionHashTable[uniqueKey]) {
54
+ importMap[localName] =
55
+ utils_1.tables.viewTransitionHashTable[uniqueKey];
56
+ }
57
+ if (utils_1.tables.themeTable[uniqueKey]) {
58
+ importMap[localName] = utils_1.tables.themeTable[uniqueKey];
59
+ }
60
+ }
61
+ });
62
+ }
63
+ }
64
+ },
65
+ });
66
+ const mergedStaticTable = Object.assign(Object.create(utils_1.tables.staticTable), localConsts, importMap);
67
+ const mergedKeyframesTable = Object.assign(Object.create(utils_1.tables.keyframesHashTable), importMap);
68
+ const mergedViewTransitionTable = Object.assign(Object.create(utils_1.tables.viewTransitionHashTable), importMap);
69
+ const mergedThemeTable = Object.assign(Object.create(utils_1.tables.themeTable), importMap);
49
70
  const localCreateStyles = {};
50
71
  (0, utils_1.traverse)(ast, {
51
72
  VariableDeclarator({ node }) {
@@ -57,7 +78,7 @@ function compileCSS(options) {
57
78
  utils_1.t.isIdentifier(node.init.callee.property, { name: 'create' }) &&
58
79
  node.init.arguments.length === 1 &&
59
80
  utils_1.t.isObjectExpression(node.init.arguments[0].expression)) {
60
- const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, utils_1.tables.staticTable, utils_1.tables.keyframesHashTable, utils_1.tables.viewTransitionHashTable, utils_1.tables.themeTable);
81
+ const obj = (0, utils_1.objectExpressionToObject)(node.init.arguments[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable);
61
82
  if (obj) {
62
83
  localCreateStyles[node.id.value] = obj;
63
84
  Object.entries(obj).forEach(([key, style]) => {
@@ -79,7 +100,7 @@ function compileCSS(options) {
79
100
  const extractStylesFromExpression = (expr) => {
80
101
  const results = [];
81
102
  if (utils_1.t.isObjectExpression(expr)) {
82
- const obj = (0, utils_1.objectExpressionToObject)(expr, utils_1.tables.staticTable, utils_1.tables.keyframesHashTable, utils_1.tables.viewTransitionHashTable, utils_1.tables.themeTable);
103
+ const obj = (0, utils_1.objectExpressionToObject)(expr, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable);
83
104
  if (obj)
84
105
  results.push(obj);
85
106
  }
@@ -149,14 +170,14 @@ function compileCSS(options) {
149
170
  else if (callee.property.value === 'keyframes' &&
150
171
  args.length > 0 &&
151
172
  utils_1.t.isObjectExpression(args[0].expression)) {
152
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, utils_1.tables.staticTable, utils_1.tables.keyframesHashTable, utils_1.tables.viewTransitionHashTable, utils_1.tables.themeTable);
173
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable);
153
174
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
154
175
  utils_1.tables.keyframesObjectTable[hash] = obj;
155
176
  }
156
177
  else if (callee.property.value === 'viewTransition' &&
157
178
  args.length > 0 &&
158
179
  utils_1.t.isObjectExpression(args[0].expression)) {
159
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, utils_1.tables.staticTable, utils_1.tables.keyframesHashTable, utils_1.tables.viewTransitionHashTable, utils_1.tables.themeTable);
180
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable);
160
181
  const hash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
161
182
  utils_1.tables.viewTransitionObjectTable[hash] = obj;
162
183
  (0, utils_1.extractOndemandStyles)(obj, extractedSheets);
@@ -165,7 +186,7 @@ function compileCSS(options) {
165
186
  else if (callee.property.value === 'createTheme' &&
166
187
  args.length > 0 &&
167
188
  utils_1.t.isObjectExpression(args[0].expression)) {
168
- const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, utils_1.tables.staticTable, utils_1.tables.keyframesHashTable, utils_1.tables.viewTransitionHashTable, utils_1.tables.themeTable);
189
+ const obj = (0, utils_1.objectExpressionToObject)(args[0].expression, mergedStaticTable, mergedKeyframesTable, mergedViewTransitionTable, mergedThemeTable);
169
190
  const themeHash = (0, zss_engine_1.genBase36Hash)(obj, 1, 8);
170
191
  utils_1.tables.createThemeObjectTable[themeHash] = obj;
171
192
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumeria/compiler",
3
- "version": "4.1.3",
3
+ "version": "4.2.1",
4
4
  "description": "Plumeria swc based compiler for statically extracting css",
5
5
  "author": "Refirst 11",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@
21
21
  "dist/"
22
22
  ],
23
23
  "dependencies": {
24
- "@plumeria/utils": "^4.1.3"
24
+ "@plumeria/utils": "^4.2.1"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@swc/core": "1.15.8",