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 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[arg] = true;
24
+ flags[key] = true;
24
25
  } else {
25
- flags[arg] = nextArg;
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/server/node-fetch-server";',
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/server/node-fetch-server"]
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[arg] = true;
23
+ flags[key] = true;
23
24
  } else {
24
- flags[arg] = nextArg;
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[90mcancelled\x1B[0m\n");
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[90mcancelled\x1B[0m\n");
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${bun ? " " : ""} \x1B[90m# start the app in development mode.\x1B[0m`);
250
+ console.log(`${npmCmd} run dev \x1B[90m# start the app in development mode.\x1B[0m`);
250
251
  if (wrangler) {
251
- console.log(`${npmCmd}${bun ? " run" : ""} deploy \x1B[90m# deploy the app to Cloudflare Workers.\x1B[0m`);
252
+ console.log(`${npmCmd} run deploy \x1B[90m# deploy the app to Cloudflare Workers.\x1B[0m`);
252
253
  } else {
253
- console.log(`${npmCmd}${bun ? " run" : ""} build \x1B[90m# build the app for production.\x1B[0m`);
254
- console.log(`${npmCmd} start${bun ? " " : ""} \x1B[90m# build and start the app in production mode.\x1B[0m`);
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.5",
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
- "./server/node-fetch-server": {
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
+ });