@jalvin/vite-plugin 2.0.38 → 2.0.39
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.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -122
- package/dist/index.js.map +1 -1
- package/package.json +4 -5
- package/dist/__tests__/entry-module.test.d.ts +0 -2
- package/dist/__tests__/entry-module.test.d.ts.map +0 -1
- package/dist/__tests__/entry-module.test.js +0 -25
- package/dist/__tests__/entry-module.test.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface JalvinAppEntry {
|
|
2
2
|
/** Path to the root .jalvin file, relative to the Vite project root. */
|
|
3
3
|
file: string;
|
|
4
|
-
/** Name of the component to mount as the
|
|
4
|
+
/** Name of the component to mount as the DOM root. */
|
|
5
5
|
component: string;
|
|
6
6
|
/** Optional page title for the generated HTML. */
|
|
7
7
|
title?: string;
|
|
@@ -23,8 +23,8 @@ export interface JalvinViteOptions {
|
|
|
23
23
|
*/
|
|
24
24
|
runtimeImport?: string;
|
|
25
25
|
/**
|
|
26
|
-
* When set, the plugin generates a virtual index.html and
|
|
27
|
-
* so no hand-written index.html or main.
|
|
26
|
+
* When set, the plugin generates a virtual index.html and entry point
|
|
27
|
+
* so no hand-written index.html or main.ts is needed in the project.
|
|
28
28
|
*/
|
|
29
29
|
entry?: JalvinAppEntry;
|
|
30
30
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AA+FD,wBAAgB,MAAM,CAAC,IAAI,GAAE,iBAAsB,GAAG,GAAG,CAmIxD;AAED,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
2
|
// @jalvin/vite-plugin — Vite plugin for the Jalvin language
|
|
4
3
|
//
|
|
@@ -23,44 +22,9 @@
|
|
|
23
22
|
// })],
|
|
24
23
|
// });
|
|
25
24
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
30
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
31
|
-
}
|
|
32
|
-
Object.defineProperty(o, k2, desc);
|
|
33
|
-
}) : (function(o, m, k, k2) {
|
|
34
|
-
if (k2 === undefined) k2 = k;
|
|
35
|
-
o[k2] = m[k];
|
|
36
|
-
}));
|
|
37
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
38
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
39
|
-
}) : function(o, v) {
|
|
40
|
-
o["default"] = v;
|
|
41
|
-
});
|
|
42
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
43
|
-
var ownKeys = function(o) {
|
|
44
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
45
|
-
var ar = [];
|
|
46
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
47
|
-
return ar;
|
|
48
|
-
};
|
|
49
|
-
return ownKeys(o);
|
|
50
|
-
};
|
|
51
|
-
return function (mod) {
|
|
52
|
-
if (mod && mod.__esModule) return mod;
|
|
53
|
-
var result = {};
|
|
54
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
55
|
-
__setModuleDefault(result, mod);
|
|
56
|
-
return result;
|
|
57
|
-
};
|
|
58
|
-
})();
|
|
59
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
-
exports.jalvin = jalvin;
|
|
61
|
-
const path = __importStar(require("node:path"));
|
|
62
|
-
const fs = __importStar(require("node:fs"));
|
|
63
|
-
const compiler_1 = require("@jalvin/compiler");
|
|
25
|
+
import * as path from "node:path";
|
|
26
|
+
import * as fs from "node:fs";
|
|
27
|
+
import { compile } from "@jalvin/compiler";
|
|
64
28
|
const VIRTUAL_ENTRY = "virtual:@jalvin/app-entry";
|
|
65
29
|
const VIRTUAL_ENTRY_RESOLVED = "\0virtual:@jalvin/app-entry";
|
|
66
30
|
function generateIndexHtml(title, scriptSrc) {
|
|
@@ -91,73 +55,70 @@ function generateIndexHtml(title, scriptSrc) {
|
|
|
91
55
|
</body>
|
|
92
56
|
</html>`;
|
|
93
57
|
}
|
|
94
|
-
function generateEntryModule(entryFilePath, component) {
|
|
95
|
-
|
|
58
|
+
function generateEntryModule(entryFilePath, component, runtimeImport) {
|
|
59
|
+
const buildId = Date.now();
|
|
96
60
|
return [
|
|
97
|
-
`
|
|
98
|
-
|
|
99
|
-
`
|
|
100
|
-
|
|
61
|
+
`console.log("JALVIN APP-ENTRY LOADED - BUILD ${buildId}");`,
|
|
62
|
+
`// React Trap`,
|
|
63
|
+
`window.React = {`,
|
|
64
|
+
` createElement: (type, props, ...children) => {`,
|
|
65
|
+
` console.error("[TRAP] React.createElement called for:", type, "Props:", props);`,
|
|
66
|
+
` console.trace();`,
|
|
67
|
+
` // If it's one of our components, just call it directly to bypass the React wrapper`,
|
|
68
|
+
` if (typeof type === "function") return type(props, children);`,
|
|
69
|
+
` return { $$typeof: Symbol.for("react.transitional.element"), type, props, children };`,
|
|
70
|
+
` }`,
|
|
71
|
+
`};`,
|
|
72
|
+
`import { render } from ${JSON.stringify(runtimeImport)};`,
|
|
101
73
|
`const rootEl = document.getElementById("root");`,
|
|
102
74
|
`if (!rootEl) throw new Error("Missing #root element");`,
|
|
103
|
-
`const root = ReactDOM.createRoot(rootEl);`,
|
|
104
75
|
``,
|
|
105
76
|
`function showError(err) {`,
|
|
106
|
-
`
|
|
107
|
-
`
|
|
108
|
-
`
|
|
109
|
-
`
|
|
110
|
-
`
|
|
111
|
-
`
|
|
112
|
-
`
|
|
113
|
-
`
|
|
114
|
-
|
|
115
|
-
`
|
|
116
|
-
`
|
|
117
|
-
`
|
|
118
|
-
`
|
|
119
|
-
`
|
|
120
|
-
`
|
|
121
|
-
|
|
122
|
-
`
|
|
123
|
-
`
|
|
124
|
-
`
|
|
125
|
-
`
|
|
126
|
-
`
|
|
127
|
-
`
|
|
128
|
-
`
|
|
129
|
-
`
|
|
130
|
-
`
|
|
131
|
-
`
|
|
132
|
-
|
|
133
|
-
`
|
|
134
|
-
` fontSize: "13px",`,
|
|
135
|
-
` },`,
|
|
136
|
-
` },`,
|
|
137
|
-
` String(err?.stack ?? err)`,
|
|
138
|
-
` )`,
|
|
139
|
-
` )`,
|
|
140
|
-
` );`,
|
|
77
|
+
` rootEl.innerHTML = "";`,
|
|
78
|
+
` const container = document.createElement("div");`,
|
|
79
|
+
` container.style.fontFamily = "monospace";`,
|
|
80
|
+
` container.style.padding = "32px";`,
|
|
81
|
+
` container.style.background = "#1a1a1a";`,
|
|
82
|
+
` container.style.color = "#ff6b6b";`,
|
|
83
|
+
` container.style.minHeight = "100vh";`,
|
|
84
|
+
` container.style.boxSizing = "border-box";`,
|
|
85
|
+
``,
|
|
86
|
+
` const heading = document.createElement("h2");`,
|
|
87
|
+
` heading.style.margin = "0 0 16px";`,
|
|
88
|
+
` heading.style.fontSize = "18px";`,
|
|
89
|
+
` heading.style.color = "#ff4444";`,
|
|
90
|
+
` heading.innerText = "\u26a0\ufe0f Jalvin App Error";`,
|
|
91
|
+
` container.appendChild(heading);`,
|
|
92
|
+
``,
|
|
93
|
+
` const pre = document.createElement("pre");`,
|
|
94
|
+
` pre.style.whiteSpace = "pre-wrap";`,
|
|
95
|
+
` pre.style.wordBreak = "break-word";`,
|
|
96
|
+
` pre.style.background = "#111";`,
|
|
97
|
+
` pre.style.padding = "16px";`,
|
|
98
|
+
` pre.style.borderRadius = "6px";`,
|
|
99
|
+
` pre.style.color = "#ff9898";`,
|
|
100
|
+
` pre.style.fontSize = "13px";`,
|
|
101
|
+
` pre.innerText = String(err?.stack ?? err);`,
|
|
102
|
+
` container.appendChild(pre);`,
|
|
103
|
+
``,
|
|
104
|
+
` rootEl.appendChild(container);`,
|
|
141
105
|
`}`,
|
|
142
106
|
``,
|
|
143
107
|
`window.addEventListener('unhandledrejection', e => showError(e.reason));`,
|
|
144
108
|
`window.addEventListener('error', e => showError(e.error ?? e.message));`,
|
|
145
109
|
``,
|
|
146
110
|
`try {`,
|
|
147
|
-
` const
|
|
148
|
-
`
|
|
149
|
-
`
|
|
150
|
-
`
|
|
151
|
-
`
|
|
152
|
-
` )`,
|
|
153
|
-
` )`,
|
|
154
|
-
` );`,
|
|
111
|
+
` const mod = await import(${JSON.stringify(entryFilePath)});`,
|
|
112
|
+
` const App = mod.${component};`,
|
|
113
|
+
` if (typeof App !== "function") throw new Error("Component ${component} not found in " + ${JSON.stringify(entryFilePath)});`,
|
|
114
|
+
` console.log("JALVIN MOUNTING ROOT COMPONENT:", App.name);`,
|
|
115
|
+
` render(App, rootEl);`,
|
|
155
116
|
`} catch (err) {`,
|
|
156
117
|
` showError(err);`,
|
|
157
118
|
`}`,
|
|
158
119
|
].join("\n");
|
|
159
120
|
}
|
|
160
|
-
function jalvin(opts = {}) {
|
|
121
|
+
export function jalvin(opts = {}) {
|
|
161
122
|
const extensions = opts.extensions ?? [".jalvin"];
|
|
162
123
|
let viteConfig;
|
|
163
124
|
const isJalvinFile = (id) => extensions.some((ext) => id.endsWith(ext));
|
|
@@ -168,21 +129,15 @@ function jalvin(opts = {}) {
|
|
|
168
129
|
viteConfig = config;
|
|
169
130
|
},
|
|
170
131
|
config(cfg, { command }) {
|
|
171
|
-
// Ensure @jalvin/runtime (CJS) is pre-bundled by Vite's esbuild so the
|
|
172
|
-
// browser receives a proper ES module instead of bare CommonJS.
|
|
173
132
|
cfg.optimizeDeps = cfg.optimizeDeps ?? {};
|
|
174
|
-
|
|
175
|
-
if (!
|
|
176
|
-
|
|
177
|
-
cfg.optimizeDeps.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const exclude = cfg.optimizeDeps.exclude ?? [];
|
|
183
|
-
if (!exclude.includes("@jalvin/ui"))
|
|
184
|
-
exclude.push("@jalvin/ui");
|
|
185
|
-
cfg.optimizeDeps.exclude = exclude;
|
|
133
|
+
cfg.optimizeDeps.exclude = cfg.optimizeDeps.exclude ?? [];
|
|
134
|
+
if (!cfg.optimizeDeps.exclude.includes("@jalvin/runtime"))
|
|
135
|
+
cfg.optimizeDeps.exclude.push("@jalvin/runtime");
|
|
136
|
+
if (!cfg.optimizeDeps.exclude.includes("@jalvin/ui"))
|
|
137
|
+
cfg.optimizeDeps.exclude.push("@jalvin/ui");
|
|
138
|
+
cfg.esbuild = cfg.esbuild ?? {};
|
|
139
|
+
cfg.esbuild.jsxFactory = "jalvinCreateElement";
|
|
140
|
+
cfg.esbuild.jsxFragment = "Fragment";
|
|
186
141
|
if (!opts.entry)
|
|
187
142
|
return;
|
|
188
143
|
if (command === "build") {
|
|
@@ -204,12 +159,13 @@ function jalvin(opts = {}) {
|
|
|
204
159
|
return null;
|
|
205
160
|
const root = viteConfig?.root ?? process.cwd();
|
|
206
161
|
const entryFilePath = path.resolve(root, opts.entry.file);
|
|
207
|
-
|
|
162
|
+
const runtimeImport = opts.runtimeImport ?? "@jalvin/runtime";
|
|
163
|
+
return generateEntryModule(entryFilePath, opts.entry.component, runtimeImport);
|
|
208
164
|
},
|
|
209
165
|
async transform(code, id) {
|
|
210
166
|
if (!isJalvinFile(id))
|
|
211
167
|
return null;
|
|
212
|
-
const result =
|
|
168
|
+
const result = compile(code, id, {
|
|
213
169
|
emitTypes: opts.emitTypes ?? false,
|
|
214
170
|
runtimeImport: opts.runtimeImport ?? "@jalvin/runtime",
|
|
215
171
|
sourceRoot: viteConfig?.root ?? process.cwd(),
|
|
@@ -225,7 +181,6 @@ function jalvin(opts = {}) {
|
|
|
225
181
|
this.error(`Jalvin compilation failed:\n${errors}`);
|
|
226
182
|
return null;
|
|
227
183
|
}
|
|
228
|
-
// Surface warnings through Vite
|
|
229
184
|
for (const diag of result.diagnostics.items) {
|
|
230
185
|
if (diag.severity === "warning") {
|
|
231
186
|
this.warn({
|
|
@@ -234,26 +189,20 @@ function jalvin(opts = {}) {
|
|
|
234
189
|
});
|
|
235
190
|
}
|
|
236
191
|
}
|
|
237
|
-
// The compiled output is TSX with JSX syntax. We need to transform
|
|
238
|
-
// JSX → JS here because Vite's React plugin only handles .tsx/.jsx files.
|
|
239
|
-
// Use a dynamic import to work around vite's deprecated CJS type stub.
|
|
240
192
|
const { transformWithEsbuild } = await import("vite");
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
loader: "tsx",
|
|
193
|
+
const tsResult = await transformWithEsbuild(result.code, id + ".ts", {
|
|
194
|
+
loader: "ts",
|
|
244
195
|
target: "esnext",
|
|
196
|
+
jsx: "preserve",
|
|
245
197
|
});
|
|
246
198
|
return {
|
|
247
|
-
code:
|
|
248
|
-
map:
|
|
199
|
+
code: tsResult.code,
|
|
200
|
+
map: tsResult.map,
|
|
249
201
|
};
|
|
250
202
|
},
|
|
251
203
|
configureServer(server) {
|
|
252
204
|
if (!opts.entry)
|
|
253
205
|
return;
|
|
254
|
-
// Return a post-hook (runs after Vite's own middlewares).
|
|
255
|
-
// When no static index.html exists, Vite passes requests for "/" through,
|
|
256
|
-
// so this middleware catches them and serves the generated HTML.
|
|
257
206
|
return () => {
|
|
258
207
|
server.middlewares.use(async (req, res, next) => {
|
|
259
208
|
const url = req.url ?? "/";
|
|
@@ -262,7 +211,6 @@ function jalvin(opts = {}) {
|
|
|
262
211
|
return;
|
|
263
212
|
}
|
|
264
213
|
const root = viteConfig?.root ?? process.cwd();
|
|
265
|
-
// If a static index.html already exists, let Vite handle it normally.
|
|
266
214
|
if (fs.existsSync(path.join(root, "index.html"))) {
|
|
267
215
|
next();
|
|
268
216
|
return;
|
|
@@ -278,7 +226,6 @@ function jalvin(opts = {}) {
|
|
|
278
226
|
generateBundle(_, bundle) {
|
|
279
227
|
if (!opts.entry)
|
|
280
228
|
return;
|
|
281
|
-
// Find the entry chunk to reference in the emitted HTML.
|
|
282
229
|
const entryChunk = Object.values(bundle).find((c) => c.type === "chunk" && c.isEntry);
|
|
283
230
|
const scriptSrc = entryChunk ? `./${entryChunk.fileName}` : `./${VIRTUAL_ENTRY}`;
|
|
284
231
|
const title = opts.entry.title ?? "Jalvin App";
|
|
@@ -288,11 +235,10 @@ function jalvin(opts = {}) {
|
|
|
288
235
|
handleHotUpdate({ file, server }) {
|
|
289
236
|
if (!isJalvinFile(file))
|
|
290
237
|
return;
|
|
291
|
-
// Force full reload for now — incremental recompile is straightforward
|
|
292
238
|
server.ws.send({ type: "full-reload", path: file });
|
|
293
239
|
return [];
|
|
294
240
|
},
|
|
295
241
|
};
|
|
296
242
|
}
|
|
297
|
-
|
|
243
|
+
export default jalvin;
|
|
298
244
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4DAA4D;AAC5D,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,8CAA8C;AAC9C,EAAE;AACF,kCAAkC;AAClC,2BAA2B;AAC3B,QAAQ;AACR,EAAE;AACF,0DAA0D;AAC1D,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,4EAA4E;AAC5E,6BAA6B;AAC7B,EAAE;AACF,kCAAkC;AAClC,yBAAyB;AACzB,wEAAwE;AACxE,WAAW;AACX,QAAQ;AACR,gFAAgF;AAEhF,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAkC7D,SAAS,iBAAiB,CAAC,KAAa,EAAE,SAAiB;IACzD,OAAO;;;;;aAKI,KAAK;;;;;;;;;;;;;;;;;;iCAkBe,SAAS;;QAElC,CAAC;AACT,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAqB,EAAE,SAAiB,EAAE,aAAqB;IAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,OAAO;QACL,gDAAgD,OAAO,KAAK;QAC5D,eAAe;QACf,kBAAkB;QAClB,kDAAkD;QAClD,qFAAqF;QACrF,sBAAsB;QACtB,yFAAyF;QACzF,mEAAmE;QACnE,2FAA2F;QAC3F,KAAK;QACL,IAAI;QACJ,0BAA0B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG;QAC1D,iDAAiD;QACjD,wDAAwD;QACxD,EAAE;QACF,2BAA2B;QAC3B,0BAA0B;QAC1B,oDAAoD;QACpD,6CAA6C;QAC7C,qCAAqC;QACrC,2CAA2C;QAC3C,sCAAsC;QACtC,wCAAwC;QACxC,6CAA6C;QAC7C,EAAE;QACF,iDAAiD;QACjD,sCAAsC;QACtC,oCAAoC;QACpC,oCAAoC;QACpC,wDAAwD;QACxD,mCAAmC;QACnC,EAAE;QACF,8CAA8C;QAC9C,sCAAsC;QACtC,uCAAuC;QACvC,kCAAkC;QAClC,+BAA+B;QAC/B,mCAAmC;QACnC,gCAAgC;QAChC,gCAAgC;QAChC,8CAA8C;QAC9C,+BAA+B;QAC/B,EAAE;QACF,kCAAkC;QAClC,GAAG;QACH,EAAE;QACF,0EAA0E;QAC1E,yEAAyE;QACzE,EAAE;QACF,OAAO;QACP,8BAA8B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI;QAC/D,qBAAqB,SAAS,GAAG;QACjC,+DAA+D,SAAS,qBAAqB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI;QAC9H,6DAA6D;QAC7D,wBAAwB;QACxB,iBAAiB;QACjB,mBAAmB;QACnB,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAA0B,EAAE;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,UAAe,CAAC;IAEpB,MAAM,YAAY,GAAG,CAAC,EAAU,EAAW,EAAE,CAC3C,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,KAAK;QAEd,cAAc,CAAC,MAAW;YACxB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,GAAQ,EAAE,EAAE,OAAO,EAAuB;YAC/C,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YAC1C,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5G,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAElG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,qBAAqB,CAAC;YAC/C,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;YAErC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,yDAAyD;gBACzD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;gBACrD,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC;gBACpC,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;QAED,SAAS,CAAC,EAAU,EAAE,QAA4B;YAChD,IAAI,EAAE,KAAK,aAAa;gBAAE,OAAO,sBAAsB,CAAC;YACxD,IAAI,YAAY,CAAC,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,EAAU;YACb,IAAI,EAAE,KAAK,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YAC9D,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,iBAAiB,CAAC;YAC9D,OAAO,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACjF,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,EAAU;YACtC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;gBAClC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,iBAAiB;gBACtD,UAAU,EAAE,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE;aAC9C,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK;qBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;qBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACT,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;gBAC9C,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC;wBACR,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,EAAE;qBACH,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAO,MAAM,CAAC,MAAM,CAAkB,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE;gBACnE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,UAAU;aAChB,CAAC,CAAC;YAEH,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;aAClB,CAAC;QACJ,CAAC;QAED,eAAe,CAAC,MAAW;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAgB,EAAE,EAAE;oBACpE,MAAM,GAAG,GAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;oBACnC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;wBACzC,IAAI,EAAE,CAAC;wBACP,OAAO;oBACT,CAAC;oBACD,MAAM,IAAI,GAAW,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;wBACjD,IAAI,EAAE,CAAC;wBACP,OAAO;oBACT,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC,KAAK,IAAI,YAAY,CAAC;oBAChD,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,aAAa,EAAE,CAAC,CAAC;oBAC/D,MAAM,WAAW,GAAW,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACvE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;oBAC3C,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,CAAM,EAAE,MAA2B;YAChD,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CACzB,CAAC;YACrB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC;YAC/C,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAiC;YAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,OAAO;YAChC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jalvin/vite-plugin",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.39",
|
|
4
4
|
"description": "Vite plugin for the Jalvin language — import .jalvin files directly",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
|
-
"module": "dist/index.mjs",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"import": "./dist/index.
|
|
11
|
-
"require": "./dist/index.js",
|
|
10
|
+
"import": "./dist/index.js",
|
|
12
11
|
"types": "./dist/index.d.ts"
|
|
13
12
|
}
|
|
14
13
|
},
|
|
@@ -22,7 +21,7 @@
|
|
|
22
21
|
"vite": ">=5.0.0"
|
|
23
22
|
},
|
|
24
23
|
"dependencies": {
|
|
25
|
-
"@jalvin/compiler": "
|
|
24
|
+
"@jalvin/compiler": "2.0.39"
|
|
26
25
|
},
|
|
27
26
|
"devDependencies": {
|
|
28
27
|
"typescript": "^5.4.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry-module.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/entry-module.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const index_js_1 = require("../../dist/index.js");
|
|
5
|
-
(0, vitest_1.describe)("vite-plugin virtual entry", () => {
|
|
6
|
-
(0, vitest_1.it)("uses one React root and never mutates #root via innerHTML", () => {
|
|
7
|
-
const plugin = (0, index_js_1.jalvin)({
|
|
8
|
-
entry: {
|
|
9
|
-
file: "./UIShowcase.jalvin",
|
|
10
|
-
component: "UIShowcase",
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
plugin.configResolved?.({ root: "/tmp/jalvin-app" });
|
|
14
|
-
const virtualId = plugin.resolveId?.("virtual:@jalvin/app-entry", undefined);
|
|
15
|
-
(0, vitest_1.expect)(virtualId).toBe("\0virtual:@jalvin/app-entry");
|
|
16
|
-
const generated = plugin.load?.(virtualId);
|
|
17
|
-
(0, vitest_1.expect)(typeof generated).toBe("string");
|
|
18
|
-
const entryModule = generated;
|
|
19
|
-
(0, vitest_1.expect)(entryModule).toContain('const root = ReactDOM.createRoot(rootEl);');
|
|
20
|
-
(0, vitest_1.expect)(entryModule).not.toContain("root.innerHTML");
|
|
21
|
-
const createRootCalls = entryModule.match(/createRoot\(/g) ?? [];
|
|
22
|
-
(0, vitest_1.expect)(createRootCalls).toHaveLength(1);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=entry-module.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entry-module.test.js","sourceRoot":"","sources":["../../src/__tests__/entry-module.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,kDAA6C;AAE7C,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,IAAA,iBAAM,EAAC;YACpB,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,SAAS,EAAE,YAAY;aACxB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAErD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;QAC7E,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,MAAM,WAAW,GAAG,SAAmB,CAAC;QACxC,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QAC3E,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEpD,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACjE,IAAA,eAAM,EAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|