@salty-css/astro 0.1.0-alpha.8 → 0.1.0-alpha.9
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/astro-vite-plugin.cjs +6 -6
- package/astro-vite-plugin.js +72 -67
- package/package.json +2 -2
package/astro-vite-plugin.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
2
|
-
${
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const N=require("@salty-css/core/compiler/helpers"),b=require("@salty-css/core/compiler/get-function-range"),k=require("@salty-css/core/compiler/salty-compiler"),O=require("@salty-css/core/server"),P=require("@salty-css/core/util"),g=require("fs/promises"),x=require("path"),q=E=>{const l=new k.SaltyCompiler(E);return{name:"stylegen",configureServer(t){l.importFile=async o=>{const n=Date.now();return t.ssrLoadModule(`${o}?t=${n}`)}},buildStart:async()=>{await l.generateCss()},load:async function(t){var n,d;if(N.isSaltyFile(t)){const m=await l.getDestDir();if(/.+\?configFile=(\w+).+/.test(t)){const h=new URLSearchParams(t.split("?")[1]).get("configFile");if(!h)return;const r=x.join(m,"astro",h);this.addWatchFile(r);const y=await g.readFile(r,"utf-8");if(!y)return;try{const c=JSON.parse(y),{clientProps:F={},classNames:s="",tagIsComponent:w,tagName:i="div"}=c,$=["import { resolveAstroProps } from '@salty-css/astro/element-props';",...c.imports||[]],j=w?i:`__r.element || ${JSON.stringify(F.element||i)}`;return`---
|
|
2
|
+
${$.join(`
|
|
3
3
|
`)}
|
|
4
|
-
const __gp = ${JSON.stringify(
|
|
4
|
+
const __gp = ${JSON.stringify(F)};
|
|
5
5
|
const __r = resolveAstroProps(Astro.props, __gp, ${JSON.stringify(s)});
|
|
6
6
|
const Element = ${j};
|
|
7
7
|
---
|
|
8
|
-
<Element class:list={__r.class} style={__r.style} {...__r.rest}><slot/></Element>`}catch(
|
|
8
|
+
<Element class:list={__r.class} style={__r.style} {...__r.rest}><slot/></Element>`}catch(c){console.error("Error parsing config file:",c);return}}const u=["import { classNameInstance } from '@salty-css/core/instances/classname-instance';"],f=[],a=[],S=await g.readFile(t,"utf-8"),J=await l.compileSaltyFile(t,m),R=Object.entries(J.contents);for(const[e,h]of R){const r=await N.resolveExportValue(h,1);if(!r.generator)continue;if(r.isClassName){const v=r.generator._withBuildContext({callerName:e,isProduction:!1,config:{}});f.push(`const ${e} = classNameInstance(${JSON.stringify(v.params)});`),a.push(e);continue}const[y,c]=await b.getFunctionRange(S,e),F=S.slice(y,c),s=(d=(n=/styled\(([^,]+),/.exec(F))==null?void 0:n.at(1))==null?void 0:d.trim();if(!s){console.warn(`Could not determine tag name for ${e} in ${t}`);continue}const w=r.generator._withBuildContext({callerName:e,isProduction:!1,config:{}}),i={componentName:e,tagName:s.replace(/['"`]/g,""),tagIsComponent:!1,classNames:w.classNames,imports:[],clientProps:w.clientProps},C=/^\w+$/.test(s);if(i.tagIsComponent=C,C){const v=R.some(([p])=>p===s),I=S.match(new RegExp(`import[^;]*${s}[^;]*;`));if(v){const p=P.toHash(s),D=`import ${s} from '${t}.astro?configFile=${p}.config';`;i.imports=[D]}else if(I){const p=I.at(0);i.imports=[p]}}const $=x.join(m,"astro");await g.readFile($,"utf-8").catch(()=>!1)||await g.mkdir($,{recursive:!0});const _=P.toHash(e),M=x.join(m,"astro",`${_}.config`);await g.writeFile(M,JSON.stringify(i)),u.push(`import ${e} from '${t}.astro?configFile=${_}.config';`),a.push(e)}return`${u.join(`
|
|
9
9
|
`)}
|
|
10
|
-
${
|
|
10
|
+
${f.join(`
|
|
11
11
|
`)}
|
|
12
|
-
export { ${
|
|
12
|
+
export { ${a.join(", ")} };`}},handleHotUpdate:async({file:t,server:o,modules:n})=>{if(await O.checkShouldRestart(t))return o.restart();if(!N.isSaltyFile(t))return;const u=[];for(const[f,a]of o.moduleGraph.idToModuleMap)f.startsWith(t+".astro?configFile=")&&(o.moduleGraph.invalidateModule(a),u.push(a));return[...n,...u]},watchChange:{handler:async(t,o)=>{N.isSaltyFile(t)&&o.event!=="delete"&&(await O.checkShouldRestart(t)||await l.generateFile(t))}}}};exports.default=q;exports.saltyPlugin=q;
|
package/astro-vite-plugin.js
CHANGED
|
@@ -1,112 +1,117 @@
|
|
|
1
|
-
import { isSaltyFile as
|
|
2
|
-
import { getFunctionRange as
|
|
3
|
-
import { SaltyCompiler as
|
|
1
|
+
import { isSaltyFile as S, resolveExportValue as A } from "@salty-css/core/compiler/helpers";
|
|
2
|
+
import { getFunctionRange as b } from "@salty-css/core/compiler/get-function-range";
|
|
3
|
+
import { SaltyCompiler as k } from "@salty-css/core/compiler/salty-compiler";
|
|
4
4
|
import { checkShouldRestart as O } from "@salty-css/core/server";
|
|
5
5
|
import { toHash as j } from "@salty-css/core/util";
|
|
6
|
-
import { readFile as
|
|
7
|
-
import { join as
|
|
8
|
-
const
|
|
9
|
-
const
|
|
6
|
+
import { readFile as v, mkdir as B, writeFile as G } from "fs/promises";
|
|
7
|
+
import { join as x } from "path";
|
|
8
|
+
const K = (J) => {
|
|
9
|
+
const l = new k(J);
|
|
10
10
|
return {
|
|
11
11
|
name: "stylegen",
|
|
12
12
|
configureServer(t) {
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
return t.ssrLoadModule(`${
|
|
13
|
+
l.importFile = async (e) => {
|
|
14
|
+
const n = Date.now();
|
|
15
|
+
return t.ssrLoadModule(`${e}?t=${n}`);
|
|
16
16
|
};
|
|
17
17
|
},
|
|
18
18
|
buildStart: async () => {
|
|
19
|
-
await
|
|
19
|
+
await l.generateCss();
|
|
20
20
|
},
|
|
21
21
|
load: async function(t) {
|
|
22
|
-
var
|
|
23
|
-
if (
|
|
24
|
-
const m = await
|
|
22
|
+
var n, u;
|
|
23
|
+
if (S(t)) {
|
|
24
|
+
const m = await l.getDestDir();
|
|
25
25
|
if (/.+\?configFile=(\w+).+/.test(t)) {
|
|
26
|
-
const
|
|
27
|
-
if (!
|
|
28
|
-
const
|
|
29
|
-
this.addWatchFile(
|
|
30
|
-
const
|
|
31
|
-
if (!
|
|
26
|
+
const d = new URLSearchParams(t.split("?")[1]).get("configFile");
|
|
27
|
+
if (!d) return;
|
|
28
|
+
const r = x(m, "astro", d);
|
|
29
|
+
this.addWatchFile(r);
|
|
30
|
+
const h = await v(r, "utf-8");
|
|
31
|
+
if (!h) return;
|
|
32
32
|
try {
|
|
33
|
-
const
|
|
33
|
+
const c = JSON.parse(h), { clientProps: y = {}, classNames: s = "", tagIsComponent: w, tagName: a = "div" } = c, $ = ["import { resolveAstroProps } from '@salty-css/astro/element-props';", ...c.imports || []], R = w ? a : `__r.element || ${JSON.stringify(y.element || a)}`;
|
|
34
34
|
return `---
|
|
35
|
-
${
|
|
35
|
+
${$.join(`
|
|
36
36
|
`)}
|
|
37
|
-
const __gp = ${JSON.stringify(
|
|
38
|
-
const __r = resolveAstroProps(Astro.props, __gp, ${JSON.stringify(
|
|
39
|
-
const Element = ${
|
|
37
|
+
const __gp = ${JSON.stringify(y)};
|
|
38
|
+
const __r = resolveAstroProps(Astro.props, __gp, ${JSON.stringify(s)});
|
|
39
|
+
const Element = ${R};
|
|
40
40
|
---
|
|
41
41
|
<Element class:list={__r.class} style={__r.style} {...__r.rest}><slot/></Element>`;
|
|
42
|
-
} catch (
|
|
43
|
-
console.error("Error parsing config file:",
|
|
42
|
+
} catch (c) {
|
|
43
|
+
console.error("Error parsing config file:", c);
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
const
|
|
48
|
-
for (const [
|
|
49
|
-
const
|
|
50
|
-
if (!
|
|
51
|
-
if (
|
|
52
|
-
const
|
|
53
|
-
callerName:
|
|
47
|
+
const p = ["import { classNameInstance } from '@salty-css/core/instances/classname-instance';"], g = [], i = [], F = await v(t, "utf-8"), P = await l.compileSaltyFile(t, m), I = Object.entries(P.contents);
|
|
48
|
+
for (const [o, d] of I) {
|
|
49
|
+
const r = await A(d, 1);
|
|
50
|
+
if (!r.generator) continue;
|
|
51
|
+
if (r.isClassName) {
|
|
52
|
+
const _ = r.generator._withBuildContext({
|
|
53
|
+
callerName: o,
|
|
54
54
|
isProduction: !1,
|
|
55
55
|
config: {}
|
|
56
56
|
});
|
|
57
|
-
|
|
57
|
+
g.push(`const ${o} = classNameInstance(${JSON.stringify(_.params)});`), i.push(o);
|
|
58
58
|
continue;
|
|
59
59
|
}
|
|
60
|
-
const [
|
|
61
|
-
if (!
|
|
62
|
-
console.warn(`Could not determine tag name for ${
|
|
60
|
+
const [h, c] = await b(F, o), y = F.slice(h, c), s = (u = (n = /styled\(([^,]+),/.exec(y)) == null ? void 0 : n.at(1)) == null ? void 0 : u.trim();
|
|
61
|
+
if (!s) {
|
|
62
|
+
console.warn(`Could not determine tag name for ${o} in ${t}`);
|
|
63
63
|
continue;
|
|
64
64
|
}
|
|
65
|
-
const
|
|
66
|
-
callerName:
|
|
65
|
+
const w = r.generator._withBuildContext({
|
|
66
|
+
callerName: o,
|
|
67
67
|
isProduction: !1,
|
|
68
68
|
config: {}
|
|
69
|
-
}),
|
|
70
|
-
componentName:
|
|
71
|
-
tagName:
|
|
69
|
+
}), a = {
|
|
70
|
+
componentName: o,
|
|
71
|
+
tagName: s.replace(/['"`]/g, ""),
|
|
72
72
|
tagIsComponent: !1,
|
|
73
|
-
classNames:
|
|
73
|
+
classNames: w.classNames,
|
|
74
74
|
imports: [],
|
|
75
|
-
clientProps:
|
|
76
|
-
},
|
|
77
|
-
if (
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
} else if (
|
|
83
|
-
const
|
|
84
|
-
|
|
75
|
+
clientProps: w.clientProps
|
|
76
|
+
}, N = /^\w+$/.test(s);
|
|
77
|
+
if (a.tagIsComponent = N, N) {
|
|
78
|
+
const _ = I.some(([f]) => f === s), E = F.match(new RegExp(`import[^;]*${s}[^;]*;`));
|
|
79
|
+
if (_) {
|
|
80
|
+
const f = j(s), M = `import ${s} from '${t}.astro?configFile=${f}.config';`;
|
|
81
|
+
a.imports = [M];
|
|
82
|
+
} else if (E) {
|
|
83
|
+
const f = E.at(0);
|
|
84
|
+
a.imports = [f];
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
const
|
|
88
|
-
await
|
|
89
|
-
const
|
|
90
|
-
await
|
|
87
|
+
const $ = x(m, "astro");
|
|
88
|
+
await v($, "utf-8").catch(() => !1) || await B($, { recursive: !0 });
|
|
89
|
+
const C = j(o), D = x(m, "astro", `${C}.config`);
|
|
90
|
+
await G(D, JSON.stringify(a)), p.push(`import ${o} from '${t}.astro?configFile=${C}.config';`), i.push(o);
|
|
91
91
|
}
|
|
92
|
-
return `${
|
|
92
|
+
return `${p.join(`
|
|
93
93
|
`)}
|
|
94
|
-
${
|
|
94
|
+
${g.join(`
|
|
95
95
|
`)}
|
|
96
|
-
export { ${
|
|
96
|
+
export { ${i.join(", ")} };`;
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
-
handleHotUpdate: async ({ file: t, server:
|
|
100
|
-
await O(t)
|
|
99
|
+
handleHotUpdate: async ({ file: t, server: e, modules: n }) => {
|
|
100
|
+
if (await O(t)) return e.restart();
|
|
101
|
+
if (!S(t)) return;
|
|
102
|
+
const p = [];
|
|
103
|
+
for (const [g, i] of e.moduleGraph.idToModuleMap)
|
|
104
|
+
g.startsWith(t + ".astro?configFile=") && (e.moduleGraph.invalidateModule(i), p.push(i));
|
|
105
|
+
return [...n, ...p];
|
|
101
106
|
},
|
|
102
107
|
watchChange: {
|
|
103
|
-
handler: async (t,
|
|
104
|
-
|
|
108
|
+
handler: async (t, e) => {
|
|
109
|
+
S(t) && e.event !== "delete" && (await O(t) || await l.generateFile(t));
|
|
105
110
|
}
|
|
106
111
|
}
|
|
107
112
|
};
|
|
108
113
|
};
|
|
109
114
|
export {
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
K as default,
|
|
116
|
+
K as saltyPlugin
|
|
112
117
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salty-css/astro",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.9",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"typings": "./dist/index.d.ts",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
}
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@salty-css/core": "^0.1.0-alpha.
|
|
81
|
+
"@salty-css/core": "^0.1.0-alpha.9",
|
|
82
82
|
"astro": "^5.13.2",
|
|
83
83
|
"vite": "^6.3.5"
|
|
84
84
|
}
|