@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.
- package/dist/index.js +44 -23
- 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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
+
"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
|
|
24
|
+
"@plumeria/utils": "^4.2.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@swc/core": "1.15.8",
|