mono-jsx-dom 0.1.5 → 0.1.7
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/bin/build.mjs +13 -13
- package/bin/dev.mjs +5 -3
- package/bin/init.mjs +7 -6
- package/package.json +6 -2
- package/server/node-server-hooks.mjs +17 -0
package/bin/build.mjs
CHANGED
|
@@ -15,14 +15,15 @@ function parseFlags() {
|
|
|
15
15
|
const arg = args[i];
|
|
16
16
|
if (arg.startsWith("--")) {
|
|
17
17
|
if (arg.includes("=")) {
|
|
18
|
-
const [key, value] = arg.split("=", 2);
|
|
18
|
+
const [key, value] = arg.slice(2).split("=", 2);
|
|
19
19
|
flags[key] = value;
|
|
20
20
|
} else {
|
|
21
|
+
const key = arg.slice(2);
|
|
21
22
|
const nextArg = args[i + 1];
|
|
22
23
|
if (!nextArg || nextArg.startsWith("--")) {
|
|
23
|
-
flags[
|
|
24
|
+
flags[key] = true;
|
|
24
25
|
} else {
|
|
25
|
-
flags[
|
|
26
|
+
flags[key] = nextArg;
|
|
26
27
|
i++;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -56,13 +57,6 @@ async function ensureDir(path) {
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
// bin/build.ts
|
|
59
|
-
async function run() {
|
|
60
|
-
const flags = parseFlags();
|
|
61
|
-
const start = performance.now();
|
|
62
|
-
const runtime = flags.node ?? "fetch-server";
|
|
63
|
-
await build({ serverType: runtime });
|
|
64
|
-
console.log("\x1B[32m\u2728 Build completed.\x1B[0m", "\x1B[90m(%d ms)\x1B[0m", performance.now() - start);
|
|
65
|
-
}
|
|
66
60
|
async function build(options) {
|
|
67
61
|
const workDir = join(cwd(), options?.appName ?? ".");
|
|
68
62
|
const outdir = join(workDir, options?.outdir ?? "dist");
|
|
@@ -178,6 +172,13 @@ async function build(options) {
|
|
|
178
172
|
await buildServerJS(workDir, outdir, options?.serverType, extraJS);
|
|
179
173
|
await dispose();
|
|
180
174
|
}
|
|
175
|
+
async function run() {
|
|
176
|
+
const flags = parseFlags();
|
|
177
|
+
const start = performance.now();
|
|
178
|
+
const serverType = flags.node ? "node" : "fetch-server";
|
|
179
|
+
await build({ serverType });
|
|
180
|
+
console.log("\x1B[32m\u2728 Build completed.\x1B[0m", "\x1B[90m(" + Math.ceil(performance.now() - start) + " ms)\x1B[0m");
|
|
181
|
+
}
|
|
181
182
|
async function buildServerJS(workDir, outdir, serverType = "fetch-server", extraJS, watch) {
|
|
182
183
|
const stdin2 = {
|
|
183
184
|
sourcefile: join(workDir, "server.js"),
|
|
@@ -191,7 +192,7 @@ async function buildServerJS(workDir, outdir, serverType = "fetch-server", extra
|
|
|
191
192
|
stdin2.sourcefile = join(workDir, "server-node.mjs");
|
|
192
193
|
stdin2.resolveDir = workDir;
|
|
193
194
|
stdin2.contents = [
|
|
194
|
-
'import { serve$ } from "mono-jsx-dom/
|
|
195
|
+
'import { serve as serve$ } from "mono-jsx-dom/node-fetch-server";',
|
|
195
196
|
'import server$ from "./server.' + loader + '";',
|
|
196
197
|
"serve$(server$);"
|
|
197
198
|
].join("\n");
|
|
@@ -215,7 +216,7 @@ async function buildServerJS(workDir, outdir, serverType = "fetch-server", extra
|
|
|
215
216
|
platform: "node",
|
|
216
217
|
format: "esm",
|
|
217
218
|
target: "es2024",
|
|
218
|
-
external: ["mono-jsx-dom/server", "mono-jsx-dom/
|
|
219
|
+
external: ["mono-jsx-dom/server", "mono-jsx-dom/node-fetch-server"]
|
|
219
220
|
};
|
|
220
221
|
if (extraJS) {
|
|
221
222
|
esbOptions.banner = { js: extraJS };
|
|
@@ -335,6 +336,5 @@ function isUrl(url) {
|
|
|
335
336
|
}
|
|
336
337
|
export {
|
|
337
338
|
build,
|
|
338
|
-
buildServerJS,
|
|
339
339
|
run
|
|
340
340
|
};
|
package/bin/dev.mjs
CHANGED
|
@@ -14,14 +14,15 @@ function parseFlags() {
|
|
|
14
14
|
const arg = args[i];
|
|
15
15
|
if (arg.startsWith("--")) {
|
|
16
16
|
if (arg.includes("=")) {
|
|
17
|
-
const [key, value] = arg.split("=", 2);
|
|
17
|
+
const [key, value] = arg.slice(2).split("=", 2);
|
|
18
18
|
flags[key] = value;
|
|
19
19
|
} else {
|
|
20
|
+
const key = arg.slice(2);
|
|
20
21
|
const nextArg = args[i + 1];
|
|
21
22
|
if (!nextArg || nextArg.startsWith("--")) {
|
|
22
|
-
flags[
|
|
23
|
+
flags[key] = true;
|
|
23
24
|
} else {
|
|
24
|
-
flags[
|
|
25
|
+
flags[key] = nextArg;
|
|
25
26
|
i++;
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -167,6 +168,7 @@ async function dev(options) {
|
|
|
167
168
|
const serverScript = await resolveModule(join(workDir, "server"), [".ts", ".mjs", ".js"]) ?? join(workDir, "node_modules/mono-jsx-dom/server/index.mjs");
|
|
168
169
|
const args = ["--watch", serverScript];
|
|
169
170
|
if (runtime === "node") {
|
|
171
|
+
args.unshift("--import", "mono-jsx-dom/node-server-hooks");
|
|
170
172
|
args.push("--port", port.toString());
|
|
171
173
|
} else {
|
|
172
174
|
args.unshift("--port", port.toString());
|
package/bin/init.mjs
CHANGED
|
@@ -32,7 +32,7 @@ async function input(prompt, placeholder = "") {
|
|
|
32
32
|
const chars = typeof buf === "string" ? buf : decoder.decode(buf);
|
|
33
33
|
switch (chars) {
|
|
34
34
|
case "":
|
|
35
|
-
stdout.write("\x1B[999C\n\x1B[
|
|
35
|
+
stdout.write("\x1B[999C\n\x1B[90mCancelled.\x1B[0m\n");
|
|
36
36
|
exit(130);
|
|
37
37
|
return;
|
|
38
38
|
case "\r":
|
|
@@ -97,7 +97,7 @@ async function confirm(prompt) {
|
|
|
97
97
|
const c = typeof buf === "string" ? buf.charCodeAt(0) : buf[0];
|
|
98
98
|
switch (c) {
|
|
99
99
|
case 3:
|
|
100
|
-
stdout.write("\x1B[999C\n\x1B[
|
|
100
|
+
stdout.write("\x1B[999C\n\x1B[90mCancelled.\x1B[0m\n");
|
|
101
101
|
exit(130);
|
|
102
102
|
break;
|
|
103
103
|
case 89:
|
|
@@ -166,6 +166,7 @@ var template = {
|
|
|
166
166
|
name: "mono-app",
|
|
167
167
|
version: "0.0.0",
|
|
168
168
|
private: true,
|
|
169
|
+
type: "module",
|
|
169
170
|
scripts: {
|
|
170
171
|
dev: (bun ? "bun --bun " : "") + "mono-jsx-dom dev",
|
|
171
172
|
build: (bun ? "bun --bun " : "") + "mono-jsx-dom build",
|
|
@@ -246,12 +247,12 @@ async function run() {
|
|
|
246
247
|
console.log("You can now start or build the app with the following commands:");
|
|
247
248
|
console.log("");
|
|
248
249
|
console.log(`cd ${appName}`);
|
|
249
|
-
console.log(`${npmCmd} dev
|
|
250
|
+
console.log(`${npmCmd} run dev \x1B[90m# start the app in development mode.\x1B[0m`);
|
|
250
251
|
if (wrangler) {
|
|
251
|
-
console.log(`${npmCmd}
|
|
252
|
+
console.log(`${npmCmd} run deploy \x1B[90m# deploy the app to Cloudflare Workers.\x1B[0m`);
|
|
252
253
|
} else {
|
|
253
|
-
console.log(`${npmCmd}
|
|
254
|
-
console.log(`${npmCmd} start
|
|
254
|
+
console.log(`${npmCmd} run build \x1B[90m# build the app for production.\x1B[0m`);
|
|
255
|
+
console.log(`${npmCmd} run start \x1B[90m# build and start the app in production mode.\x1B[0m`);
|
|
255
256
|
}
|
|
256
257
|
console.log("");
|
|
257
258
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mono-jsx-dom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "A JSX runtime for browsers.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jsx",
|
|
@@ -35,9 +35,13 @@
|
|
|
35
35
|
"node": "./server/index.mjs",
|
|
36
36
|
"import": "./server/index.mjs"
|
|
37
37
|
},
|
|
38
|
-
"./
|
|
38
|
+
"./node-fetch-server": {
|
|
39
39
|
"node": "./server/node-fetch-server.mjs",
|
|
40
40
|
"import": "./server/node-fetch-server.mjs"
|
|
41
|
+
},
|
|
42
|
+
"./node-server-hooks": {
|
|
43
|
+
"node": "./server/node-server-hooks.mjs",
|
|
44
|
+
"import": "./server/node-server-hooks.mjs"
|
|
41
45
|
}
|
|
42
46
|
},
|
|
43
47
|
"scripts": {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// server/node-server-hooks.ts
|
|
2
|
+
import { argv } from "node:process";
|
|
3
|
+
import { registerHooks } from "node:module";
|
|
4
|
+
var serverHook = `
|
|
5
|
+
import { serve as serve$ } from "mono-jsx-dom/node-fetch-server";
|
|
6
|
+
import(import.meta.url).then(m => serve$(m.default));
|
|
7
|
+
`;
|
|
8
|
+
registerHooks({
|
|
9
|
+
load(url, context, nextLoad) {
|
|
10
|
+
const result = nextLoad(url, context);
|
|
11
|
+
if (result.source && "file://" + argv[1] === url) {
|
|
12
|
+
const source = typeof result.source === "string" ? result.source : new TextDecoder().decode(result.source);
|
|
13
|
+
return { ...result, source: source + serverHook };
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
});
|