@demiurgejs/core 0.2.0-beta.2 → 0.2.0-beta.4

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.
Files changed (232) hide show
  1. package/README.md +13 -11
  2. package/bin/demiurge.mjs +30 -12
  3. package/dist/adapter/testing.js.map +1 -1
  4. package/dist/browser/file-router.d.ts +388 -5
  5. package/dist/browser/file-router.d.ts.map +1 -1
  6. package/dist/browser/focus.d.ts +20 -0
  7. package/dist/browser/focus.d.ts.map +1 -0
  8. package/dist/browser/index.d.ts +7 -1
  9. package/dist/browser/index.d.ts.map +1 -1
  10. package/dist/browser/mutation-action.d.ts +81 -0
  11. package/dist/browser/mutation-action.d.ts.map +1 -0
  12. package/dist/chunks/document-shell-CpJnFtSC.js +36 -0
  13. package/dist/chunks/document-shell-CpJnFtSC.js.map +1 -0
  14. package/dist/chunks/env-startup-DOBYWlZD.js +257 -0
  15. package/dist/chunks/env-startup-DOBYWlZD.js.map +1 -0
  16. package/dist/chunks/{image-codec-BGTx_t5K.js → image-codec-BmzWnH6W.js} +2 -2
  17. package/dist/chunks/{image-codec-BGTx_t5K.js.map → image-codec-BmzWnH6W.js.map} +1 -1
  18. package/dist/chunks/{images-B9MqcjSA.js → images-BQ80950B.js} +99 -91
  19. package/dist/chunks/images-BQ80950B.js.map +1 -0
  20. package/dist/chunks/index-BVk9zWbe.js +832 -0
  21. package/dist/chunks/index-BVk9zWbe.js.map +1 -0
  22. package/dist/chunks/manifest-vO6c0G0W.js +19 -0
  23. package/dist/chunks/manifest-vO6c0G0W.js.map +1 -0
  24. package/dist/chunks/plugin-BQgMiHxa.js +1827 -0
  25. package/dist/chunks/plugin-BQgMiHxa.js.map +1 -0
  26. package/dist/chunks/session-store-ChModVcq.js +92 -0
  27. package/dist/chunks/session-store-ChModVcq.js.map +1 -0
  28. package/dist/chunks/static-files-ehaD1kE7.js +51 -0
  29. package/dist/chunks/static-files-ehaD1kE7.js.map +1 -0
  30. package/dist/chunks/{streaming-BQ1bykDo.js → streaming-BEbPN7Uk.js} +163 -163
  31. package/dist/chunks/streaming-BEbPN7Uk.js.map +1 -0
  32. package/dist/chunks/testing-DueXbMo4.js +4167 -0
  33. package/dist/chunks/testing-DueXbMo4.js.map +1 -0
  34. package/dist/chunks/vite-DO70kZA6.js +259 -0
  35. package/dist/chunks/vite-DO70kZA6.js.map +1 -0
  36. package/dist/cli.d.ts +17 -25
  37. package/dist/cli.d.ts.map +1 -1
  38. package/dist/cli.js +159 -124
  39. package/dist/cli.js.map +1 -1
  40. package/dist/config/define.d.ts +3 -0
  41. package/dist/config/define.d.ts.map +1 -0
  42. package/dist/config/index.d.ts +7 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/config/index.js +78 -0
  45. package/dist/config/index.js.map +1 -0
  46. package/dist/config/load.d.ts +12 -0
  47. package/dist/config/load.d.ts.map +1 -0
  48. package/dist/config/types.d.ts +64 -0
  49. package/dist/config/types.d.ts.map +1 -0
  50. package/dist/config/validate.d.ts +9 -0
  51. package/dist/config/validate.d.ts.map +1 -0
  52. package/dist/config/vite.d.ts +12 -0
  53. package/dist/config/vite.d.ts.map +1 -0
  54. package/dist/data/cache.d.ts +10 -0
  55. package/dist/data/cache.d.ts.map +1 -1
  56. package/dist/data/idempotency.d.ts.map +1 -1
  57. package/dist/data/index.d.ts +3 -1
  58. package/dist/data/index.d.ts.map +1 -1
  59. package/dist/data/testing.d.ts.map +1 -1
  60. package/dist/data/testing.js +94 -72
  61. package/dist/data/testing.js.map +1 -1
  62. package/dist/data/tiered.d.ts +7 -0
  63. package/dist/data/tiered.d.ts.map +1 -0
  64. package/dist/deployment/testing.d.ts +25 -0
  65. package/dist/deployment/testing.d.ts.map +1 -0
  66. package/dist/deployment/testing.js +171 -0
  67. package/dist/deployment/testing.js.map +1 -0
  68. package/dist/document/deferred-scripts.d.ts.map +1 -1
  69. package/dist/document/hydration.d.ts +9 -0
  70. package/dist/document/hydration.d.ts.map +1 -1
  71. package/dist/document/index.d.ts +5 -2
  72. package/dist/document/index.d.ts.map +1 -1
  73. package/dist/document/metadata.d.ts +8 -0
  74. package/dist/document/metadata.d.ts.map +1 -1
  75. package/dist/document/navigation.d.ts +28 -0
  76. package/dist/document/navigation.d.ts.map +1 -0
  77. package/dist/document/render.d.ts +3 -1
  78. package/dist/document/render.d.ts.map +1 -1
  79. package/dist/document/seo.d.ts.map +1 -1
  80. package/dist/document/trusted-types.d.ts +10 -0
  81. package/dist/document/trusted-types.d.ts.map +1 -0
  82. package/dist/edge/assets.d.ts.map +1 -1
  83. package/dist/edge/index.js +55 -73
  84. package/dist/edge/index.js.map +1 -1
  85. package/dist/index.d.ts +15 -13
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2078 -573
  88. package/dist/index.js.map +1 -1
  89. package/dist/internal/testing.js +11 -11
  90. package/dist/kv/index.d.ts +4 -0
  91. package/dist/kv/index.d.ts.map +1 -1
  92. package/dist/kv/index.js +180 -60
  93. package/dist/kv/index.js.map +1 -1
  94. package/dist/kv/rate-limit-store.d.ts +8 -0
  95. package/dist/kv/rate-limit-store.d.ts.map +1 -0
  96. package/dist/kv/session-store.d.ts +20 -0
  97. package/dist/kv/session-store.d.ts.map +1 -0
  98. package/dist/kv/store.d.ts.map +1 -1
  99. package/dist/manifest.d.ts +10 -0
  100. package/dist/manifest.d.ts.map +1 -0
  101. package/dist/node/http.d.ts.map +1 -1
  102. package/dist/node/image.d.ts.map +1 -1
  103. package/dist/node/index.d.ts +3 -0
  104. package/dist/node/index.d.ts.map +1 -1
  105. package/dist/node/index.js +251 -178
  106. package/dist/node/index.js.map +1 -1
  107. package/dist/node/serve.d.ts +47 -0
  108. package/dist/node/serve.d.ts.map +1 -0
  109. package/dist/node/static.d.ts.map +1 -1
  110. package/dist/node/streaming.d.ts.map +1 -1
  111. package/dist/platform/fonts.d.ts.map +1 -1
  112. package/dist/platform/image-url.d.ts.map +1 -1
  113. package/dist/platform/images.d.ts.map +1 -1
  114. package/dist/platform/index.d.ts +5 -1
  115. package/dist/platform/index.d.ts.map +1 -1
  116. package/dist/platform/observability.d.ts +2 -1
  117. package/dist/platform/observability.d.ts.map +1 -1
  118. package/dist/platform/url.d.ts +19 -0
  119. package/dist/platform/url.d.ts.map +1 -0
  120. package/dist/platform/web-vitals-client.d.ts +32 -0
  121. package/dist/platform/web-vitals-client.d.ts.map +1 -0
  122. package/dist/platform/web-vitals.d.ts +78 -0
  123. package/dist/platform/web-vitals.d.ts.map +1 -0
  124. package/dist/redis/index.d.ts +4 -0
  125. package/dist/redis/index.d.ts.map +1 -1
  126. package/dist/redis/index.js +209 -54
  127. package/dist/redis/index.js.map +1 -1
  128. package/dist/redis/rate-limit-store.d.ts +8 -0
  129. package/dist/redis/rate-limit-store.d.ts.map +1 -0
  130. package/dist/redis/session-store.d.ts +9 -0
  131. package/dist/redis/session-store.d.ts.map +1 -0
  132. package/dist/redis/store.d.ts.map +1 -1
  133. package/dist/route/index.d.ts +2 -2
  134. package/dist/route/index.d.ts.map +1 -1
  135. package/dist/route/middleware.d.ts.map +1 -1
  136. package/dist/route/mutation.d.ts +97 -0
  137. package/dist/route/mutation.d.ts.map +1 -0
  138. package/dist/route/response.d.ts.map +1 -1
  139. package/dist/route/types.d.ts +6 -1
  140. package/dist/route/types.d.ts.map +1 -1
  141. package/dist/router/index.d.ts +1 -1
  142. package/dist/router/index.d.ts.map +1 -1
  143. package/dist/router/manifest.d.ts +9 -0
  144. package/dist/router/manifest.d.ts.map +1 -1
  145. package/dist/router/navigation-data.d.ts +9 -1
  146. package/dist/router/navigation-data.d.ts.map +1 -1
  147. package/dist/routing/generate.d.ts +3 -0
  148. package/dist/routing/generate.d.ts.map +1 -1
  149. package/dist/routing/index.d.ts +3 -1
  150. package/dist/routing/index.d.ts.map +1 -1
  151. package/dist/routing/locale.d.ts +43 -0
  152. package/dist/routing/locale.d.ts.map +1 -0
  153. package/dist/routing/types.d.ts +12 -0
  154. package/dist/routing/types.d.ts.map +1 -1
  155. package/dist/security/cookie-session.d.ts +43 -0
  156. package/dist/security/cookie-session.d.ts.map +1 -0
  157. package/dist/security/cookies.d.ts +26 -0
  158. package/dist/security/cookies.d.ts.map +1 -0
  159. package/dist/security/csrf.d.ts +1 -1
  160. package/dist/security/csrf.d.ts.map +1 -1
  161. package/dist/security/env-startup.d.ts +15 -0
  162. package/dist/security/env-startup.d.ts.map +1 -0
  163. package/dist/security/env.d.ts +25 -6
  164. package/dist/security/env.d.ts.map +1 -1
  165. package/dist/security/fetch-metadata.d.ts +29 -0
  166. package/dist/security/fetch-metadata.d.ts.map +1 -0
  167. package/dist/security/index.d.ts +14 -2
  168. package/dist/security/index.d.ts.map +1 -1
  169. package/dist/security/policy.d.ts.map +1 -1
  170. package/dist/security/rate-limit.d.ts +6 -3
  171. package/dist/security/rate-limit.d.ts.map +1 -1
  172. package/dist/security/report.d.ts.map +1 -1
  173. package/dist/security/request.d.ts.map +1 -1
  174. package/dist/security/session-manager.d.ts +32 -0
  175. package/dist/security/session-manager.d.ts.map +1 -0
  176. package/dist/security/session-store.d.ts +51 -0
  177. package/dist/security/session-store.d.ts.map +1 -0
  178. package/dist/security/testing.d.ts +10 -0
  179. package/dist/security/testing.d.ts.map +1 -0
  180. package/dist/security/testing.js +145 -0
  181. package/dist/security/testing.js.map +1 -0
  182. package/dist/security/types.d.ts +73 -3
  183. package/dist/security/types.d.ts.map +1 -1
  184. package/dist/server/document-shell.d.ts.map +1 -1
  185. package/dist/server/errors.d.ts +1 -0
  186. package/dist/server/errors.d.ts.map +1 -1
  187. package/dist/server/index.d.ts +2 -1
  188. package/dist/server/index.d.ts.map +1 -1
  189. package/dist/server/not-found.d.ts +1 -0
  190. package/dist/server/not-found.d.ts.map +1 -1
  191. package/dist/server/render-tree.d.ts.map +1 -1
  192. package/dist/server/request-handler.d.ts +10 -2
  193. package/dist/server/request-handler.d.ts.map +1 -1
  194. package/dist/server/request-metadata.d.ts +1 -0
  195. package/dist/server/request-metadata.d.ts.map +1 -1
  196. package/dist/server/ssr.d.ts +2 -0
  197. package/dist/server/ssr.d.ts.map +1 -1
  198. package/dist/static/index.d.ts +2 -0
  199. package/dist/static/index.d.ts.map +1 -1
  200. package/dist/static/index.js +380 -363
  201. package/dist/static/index.js.map +1 -1
  202. package/dist/static/preview.d.ts.map +1 -1
  203. package/dist/static/vercel.d.ts +11 -2
  204. package/dist/static/vercel.d.ts.map +1 -1
  205. package/dist/static-files.d.ts +12 -0
  206. package/dist/static-files.d.ts.map +1 -1
  207. package/dist/type-guards.d.ts +19 -0
  208. package/dist/type-guards.d.ts.map +1 -0
  209. package/dist/vite/env-boundary.d.ts +14 -0
  210. package/dist/vite/env-boundary.d.ts.map +1 -0
  211. package/dist/vite/index.d.ts +8 -3
  212. package/dist/vite/index.d.ts.map +1 -1
  213. package/dist/vite/index.js +22 -1196
  214. package/dist/vite/index.js.map +1 -1
  215. package/dist/vite/plugin.d.ts +8 -1
  216. package/dist/vite/plugin.d.ts.map +1 -1
  217. package/dist/vite/policy-verification.d.ts.map +1 -1
  218. package/dist/vite/route-audit.d.ts +50 -0
  219. package/dist/vite/route-audit.d.ts.map +1 -0
  220. package/package.json +19 -6
  221. package/dist/chunks/document-shell-D1xo6cEA.js +0 -35
  222. package/dist/chunks/document-shell-D1xo6cEA.js.map +0 -1
  223. package/dist/chunks/images-B9MqcjSA.js.map +0 -1
  224. package/dist/chunks/request-metadata-D5NrT8ks.js +0 -642
  225. package/dist/chunks/request-metadata-D5NrT8ks.js.map +0 -1
  226. package/dist/chunks/static-files-DUjHw-4H.js +0 -11
  227. package/dist/chunks/static-files-DUjHw-4H.js.map +0 -1
  228. package/dist/chunks/streaming-BQ1bykDo.js.map +0 -1
  229. package/dist/chunks/testing-B_iMFYz_.js +0 -3321
  230. package/dist/chunks/testing-B_iMFYz_.js.map +0 -1
  231. package/dist/route/action.d.ts +0 -33
  232. package/dist/route/action.d.ts.map +0 -1
@@ -1,95 +1,79 @@
1
- import { createServer as C } from "node:http";
2
- import { d as O } from "../chunks/request-metadata-D5NrT8ks.js";
3
- import { v, t as A, U as M, w as H, a as L, b as k } from "../chunks/streaming-BQ1bykDo.js";
4
- import { c as Oe, d as ve, r as Ae, e as Me, f as He } from "../chunks/streaming-BQ1bykDo.js";
1
+ import { createServer as H } from "node:http";
2
+ import { d as I } from "../chunks/index-BVk9zWbe.js";
3
+ import { r as C, v as L, t as x, U as A, w as F, a as M, b as k } from "../chunks/streaming-BEbPN7Uk.js";
4
+ import { c as _e, d as je, e as Be, f as ze } from "../chunks/streaming-BEbPN7Uk.js";
5
5
  import { constants as S } from "node:fs";
6
- import { realpath as T, open as F, lstat as j } from "node:fs/promises";
7
- import { resolve as x, sep as w, extname as P, relative as W, join as $ } from "node:path";
6
+ import { realpath as T, open as W, lstat as D, readFile as $ } from "node:fs/promises";
7
+ import { resolve as P, sep as y, extname as U, relative as _, join as O } from "node:path";
8
8
  import { Readable as N } from "node:stream";
9
- import { I as _, R as D, i as U } from "../chunks/static-files-DUjHw-4H.js";
10
- const z = {
11
- ".avif": "image/avif",
12
- ".css": "text/css; charset=utf-8",
13
- ".gif": "image/gif",
14
- ".html": "text/html; charset=utf-8",
15
- ".ico": "image/x-icon",
16
- ".jpeg": "image/jpeg",
17
- ".jpg": "image/jpeg",
18
- ".js": "text/javascript; charset=utf-8",
19
- ".json": "application/json; charset=utf-8",
20
- ".mjs": "text/javascript; charset=utf-8",
21
- ".png": "image/png",
22
- ".svg": "image/svg+xml",
23
- ".txt": "text/plain; charset=utf-8",
24
- ".webmanifest": "application/manifest+json",
25
- ".webp": "image/webp",
26
- ".woff": "font/woff",
27
- ".woff2": "font/woff2"
28
- }, G = /* @__PURE__ */ new Set(["demiurge-manifest.json", "index.html"]);
29
- function V(e) {
30
- const t = x(e.root), n = T(t), r = te(e.prefix), o = e.exclude ?? re, i = e.immutable ?? ne;
31
- return async function(s) {
32
- if (s.method !== "GET" && s.method !== "HEAD")
9
+ import { I as j, R as B, i as z, c as G } from "../chunks/static-files-ehaD1kE7.js";
10
+ import { fileURLToPath as V } from "node:url";
11
+ import { p as q } from "../chunks/manifest-vO6c0G0W.js";
12
+ const Y = /* @__PURE__ */ new Set(["demiurge-manifest.json", "index.html"]);
13
+ function J(e) {
14
+ const t = P(e.root), n = T(t), r = ae(e.prefix), o = e.exclude ?? se, a = e.immutable ?? ie;
15
+ return async function(c) {
16
+ if (c.method !== "GET" && c.method !== "HEAD")
33
17
  return null;
34
- const m = K(
18
+ const m = ee(
35
19
  t,
36
20
  r,
37
- new URL(s.url).pathname
21
+ new URL(c.url).pathname
38
22
  );
39
- if (!m || o(oe(t, m)))
23
+ if (!m || o(ce(t, m)))
40
24
  return null;
41
- const g = await X(t, await Q(n), m);
25
+ const g = await ne(t, await te(n), m);
42
26
  if (!g)
43
27
  return null;
44
- const { file: h, stats: a } = g, l = q(a.size, a.mtimeMs), f = a.mtime.toUTCString(), c = new Headers({
28
+ const { file: h, stats: i } = g, s = K(i.size, i.mtimeMs), f = i.mtime.toUTCString(), l = new Headers({
45
29
  "accept-ranges": "bytes",
46
- "cache-control": i(ie(m)) ? _ : D,
47
- "content-length": String(a.size),
48
- "content-type": ae(m),
30
+ "cache-control": a(le(m)) ? j : B,
31
+ "content-length": String(i.size),
32
+ "content-type": ue(m),
49
33
  "cross-origin-resource-policy": "same-origin",
50
- etag: l,
34
+ etag: s,
51
35
  "last-modified": f,
52
36
  "x-content-type-options": "nosniff"
53
37
  });
54
- if (B(s, l, a.mtimeMs))
55
- return await h.close(), c.delete("content-length"), c.delete("content-type"), new Response(null, { headers: c, status: 304 });
56
- const d = J(s, a.mtimeMs) ? Y(s.headers.get("range"), a.size) : null;
57
- if (d === "unsatisfiable")
58
- return await h.close(), c.delete("content-length"), c.delete("content-type"), c.set("content-range", `bytes */${a.size}`), new Response(null, { headers: c, status: 416 });
59
- if (d) {
60
- const p = d.end - d.start + 1;
61
- return c.set("content-length", String(p)), c.set("content-range", `bytes ${d.start}-${d.end}/${a.size}`), s.method === "HEAD" ? (await h.close(), new Response(null, { headers: c, status: 206 })) : new Response(
38
+ if (Q(c, s, i.mtimeMs))
39
+ return await h.close(), l.delete("content-length"), l.delete("content-type"), new Response(null, { headers: l, status: 304 });
40
+ const u = Z(c, i.mtimeMs) ? X(c.headers.get("range"), i.size) : null;
41
+ if (u === "unsatisfiable")
42
+ return await h.close(), l.delete("content-length"), l.delete("content-type"), l.set("content-range", `bytes */${i.size}`), new Response(null, { headers: l, status: 416 });
43
+ if (u) {
44
+ const w = u.end - u.start + 1;
45
+ return l.set("content-length", String(w)), l.set("content-range", `bytes ${u.start}-${u.end}/${i.size}`), c.method === "HEAD" ? (await h.close(), new Response(null, { headers: l, status: 206 })) : new Response(
62
46
  N.toWeb(
63
- h.createReadStream({ end: d.end, start: d.start })
47
+ h.createReadStream({ end: u.end, start: u.start })
64
48
  ),
65
- { headers: c, status: 206 }
49
+ { headers: l, status: 206 }
66
50
  );
67
51
  }
68
- return s.method === "HEAD" ? (await h.close(), new Response(null, { headers: c })) : new Response(
52
+ return c.method === "HEAD" ? (await h.close(), new Response(null, { headers: l })) : new Response(
69
53
  N.toWeb(h.createReadStream()),
70
- { headers: c }
54
+ { headers: l }
71
55
  );
72
56
  };
73
57
  }
74
- function q(e, t) {
58
+ function K(e, t) {
75
59
  return `W/"${e.toString(16)}-${Math.trunc(t).toString(16)}"`;
76
60
  }
77
- function B(e, t, n) {
61
+ function Q(e, t, n) {
78
62
  const r = e.headers.get("if-none-match");
79
63
  if (r !== null)
80
64
  return r.trim() === "*" || r.split(",").some(
81
- (u) => E(u) === E(t)
65
+ (d) => E(d) === E(t)
82
66
  );
83
67
  const o = e.headers.get("if-modified-since");
84
68
  if (o === null)
85
69
  return !1;
86
- const i = Date.parse(o);
87
- return Number.isFinite(i) && Math.floor(n / 1e3) * 1e3 <= i;
70
+ const a = Date.parse(o);
71
+ return Number.isFinite(a) && Math.floor(n / 1e3) * 1e3 <= a;
88
72
  }
89
73
  function E(e) {
90
74
  return e.trim().replace(/^W\//i, "");
91
75
  }
92
- function Y(e, t) {
76
+ function X(e, t) {
93
77
  if (e === null)
94
78
  return null;
95
79
  const n = /^bytes=(\d*)-(\d*)$/.exec(e.trim());
@@ -98,13 +82,13 @@ function Y(e, t) {
98
82
  if (t === 0)
99
83
  return "unsatisfiable";
100
84
  if (!n[1]) {
101
- const i = Number(n[2]);
102
- return !Number.isSafeInteger(i) || i <= 0 ? null : { start: Math.max(0, t - i), end: t - 1 };
85
+ const a = Number(n[2]);
86
+ return !Number.isSafeInteger(a) || a <= 0 ? null : { start: Math.max(0, t - a), end: t - 1 };
103
87
  }
104
88
  const r = Number(n[1]), o = n[2] ? Number(n[2]) : t - 1;
105
89
  return !Number.isSafeInteger(r) || !Number.isSafeInteger(o) ? null : r >= t ? "unsatisfiable" : n[2] && o < r ? null : { start: r, end: Math.min(o, t - 1) };
106
90
  }
107
- function J(e, t) {
91
+ function Z(e, t) {
108
92
  const n = e.headers.get("if-range");
109
93
  if (n === null)
110
94
  return !0;
@@ -113,7 +97,7 @@ function J(e, t) {
113
97
  const r = Date.parse(n);
114
98
  return Number.isFinite(r) && Math.floor(t / 1e3) * 1e3 <= r;
115
99
  }
116
- function K(e, t, n) {
100
+ function ee(e, t, n) {
117
101
  let r;
118
102
  try {
119
103
  r = decodeURIComponent(n);
@@ -129,18 +113,18 @@ function K(e, t, n) {
129
113
  }
130
114
  if (r.endsWith("/"))
131
115
  return null;
132
- const o = x(e, `.${r}`);
133
- return o.startsWith(`${e}${w}`) ? o : null;
116
+ const o = P(e, `.${r}`);
117
+ return o.startsWith(`${e}${y}`) ? o : null;
134
118
  }
135
- async function Q(e) {
119
+ async function te(e) {
136
120
  try {
137
121
  return await e;
138
122
  } catch {
139
123
  return null;
140
124
  }
141
125
  }
142
- async function X(e, t, n) {
143
- if (!t || !await Z(e, n))
126
+ async function ne(e, t, n) {
127
+ if (!t || !await re(e, n))
144
128
  return null;
145
129
  let r;
146
130
  try {
@@ -148,56 +132,120 @@ async function X(e, t, n) {
148
132
  } catch {
149
133
  return null;
150
134
  }
151
- if (!ee(t, r))
135
+ if (!oe(t, r))
152
136
  return null;
153
137
  const o = typeof S.O_NOFOLLOW == "number" ? S.O_NOFOLLOW : 0;
154
- let i;
138
+ let a;
155
139
  try {
156
- i = await F(n, S.O_RDONLY | o);
140
+ a = await W(n, S.O_RDONLY | o);
157
141
  } catch {
158
142
  return null;
159
143
  }
160
144
  try {
161
- const u = await i.stat();
162
- return u.isFile() ? { file: i, stats: u } : (await i.close(), null);
145
+ const d = await a.stat();
146
+ return d.isFile() ? { file: a, stats: d } : (await a.close(), null);
163
147
  } catch {
164
- return await i.close(), null;
148
+ return await a.close(), null;
165
149
  }
166
150
  }
167
- async function Z(e, t) {
168
- const n = W(e, t).split(w);
151
+ async function re(e, t) {
152
+ const n = _(e, t).split(y);
169
153
  let r = e;
170
154
  try {
171
155
  for (const o of n)
172
- if (r = $(r, o), (await j(r)).isSymbolicLink())
156
+ if (r = O(r, o), (await D(r)).isSymbolicLink())
173
157
  return !1;
174
158
  } catch {
175
159
  return !1;
176
160
  }
177
161
  return !0;
178
162
  }
179
- function ee(e, t) {
180
- return t.startsWith(`${e}${w}`);
163
+ function oe(e, t) {
164
+ return t.startsWith(`${e}${y}`);
181
165
  }
182
- function te(e) {
166
+ function ae(e) {
183
167
  return !e || e === "/" ? "" : `/${e.replace(/^\/|\/$/g, "")}/`;
184
168
  }
185
- function ne(e) {
186
- return U(e);
169
+ function ie(e) {
170
+ return z(e);
187
171
  }
188
- function re(e) {
189
- return G.has(e);
172
+ function se(e) {
173
+ return Y.has(e);
190
174
  }
191
- function oe(e, t) {
192
- return t.slice(e.length + 1).split(w).join("/");
175
+ function ce(e, t) {
176
+ return t.slice(e.length + 1).split(y).join("/");
193
177
  }
194
- function ie(e) {
195
- return e.slice(e.lastIndexOf(w) + 1);
178
+ function le(e) {
179
+ return e.slice(e.lastIndexOf(y) + 1);
196
180
  }
197
- function ae(e) {
198
- return z[P(e).toLowerCase()] ?? "application/octet-stream";
181
+ function ue(e) {
182
+ return G(U(e));
183
+ }
184
+ const de = "dist/client", fe = "/.well-known/ready";
185
+ async function We(e) {
186
+ const t = e.env ?? process.env, n = V(
187
+ new URL(e.clientDir ?? de, e.base)
188
+ ), r = q(
189
+ await $(O(n, "demiurge-manifest.json"), "utf8")
190
+ ), o = e.host ?? t.HOST ?? "127.0.0.1", a = me(t.PORT, e.port), d = he(
191
+ e.allowedHosts,
192
+ t.ALLOWED_HOSTS,
193
+ o
194
+ ), c = e.name ?? "Demiurge Node server", m = e.readyPath === !1 ? void 0 : e.readyPath ?? fe, g = [], h = {
195
+ page: {
196
+ clientEntry: r.clientEntry,
197
+ renderPage: C,
198
+ styles: r.styles
199
+ },
200
+ root: n,
201
+ waitUntil(u) {
202
+ g.push(u);
203
+ }
204
+ }, i = await e.createHandler(h), s = Se({
205
+ allowedHosts: d,
206
+ handler: i,
207
+ onError: e.onError,
208
+ readyPath: m,
209
+ shutdown: e.shutdown,
210
+ static: ge(e.static, h),
211
+ timeouts: e.timeouts,
212
+ trustProxy: e.trustProxy
213
+ });
214
+ h.waitUntil = (u) => {
215
+ s.waitUntil(u);
216
+ };
217
+ for (const u of g)
218
+ s.waitUntil(u);
219
+ await new Promise((u, w) => {
220
+ s.once("error", w), s.listen(a, o, () => {
221
+ s.off("error", w), u();
222
+ });
223
+ });
224
+ const f = s.address(), l = typeof f == "object" && f ? f.port : a;
225
+ return e.onListen ? e.onListen({ host: o, port: l, server: s }) : console.log(`${c} listening on http://${o}:${l}`), s;
226
+ }
227
+ function me(e, t) {
228
+ const n = e ?? String(t ?? 4173), r = Number(n);
229
+ if (!Number.isSafeInteger(r) || r < 0 || r > 65535)
230
+ throw new Error("Demiurge Node PORT must be an integer from 0 through 65535.");
231
+ return r;
232
+ }
233
+ function he(e, t, n) {
234
+ return e || (t ? t.split(",").map((r) => r.trim()).filter(Boolean) : n === "localhost" ? [n] : [n, "localhost"]);
235
+ }
236
+ function ge(e, t) {
237
+ if (!e)
238
+ return { root: t.root };
239
+ if (typeof e != "function")
240
+ return e;
241
+ const n = e(t);
242
+ if (n instanceof Promise)
243
+ throw new TypeError(
244
+ "The `static` option must be a StaticFileHandlerOptions object or a factory `(context) => StaticFileHandler | StaticFileHandlerOptions`. It looks like a StaticFileHandler was passed directly. Wrap it: `static: () => yourHandler`."
245
+ );
246
+ return n;
199
247
  }
200
- const Te = O({
248
+ const De = I({
201
249
  name: "node",
202
250
  capabilities: {
203
251
  backgroundLifetime: !0,
@@ -205,47 +253,47 @@ const Te = O({
205
253
  nonceInjection: !0,
206
254
  streaming: !0
207
255
  }
208
- }), se = {
256
+ }), we = {
209
257
  headersTimeout: 66e3,
210
258
  keepAliveTimeout: 65e3,
211
259
  requestTimeout: 3e5
212
- }, ce = 3e4;
213
- function le(e) {
214
- v(e);
215
- const t = ge(e.static), n = e.onError ?? b;
216
- return function(i, u) {
217
- const s = ue(i, u);
218
- r(i, u, s.signal).catch((m) => {
219
- s.signal.aborted || (n(m, i), he(u));
220
- }).finally(s.cleanup);
260
+ }, ye = 3e4;
261
+ function pe(e) {
262
+ L(e);
263
+ const t = Pe(e.static), n = e.onError ?? p;
264
+ return function(a, d) {
265
+ const c = be(a, d);
266
+ r(a, d, c.signal).catch((m) => {
267
+ c.signal.aborted || (n(m, a), Oe(d));
268
+ }).finally(c.cleanup);
221
269
  };
222
- async function r(o, i, u) {
223
- let s;
270
+ async function r(o, a, d) {
271
+ let c;
224
272
  try {
225
- s = A(o, {
273
+ c = x(o, {
226
274
  allowedHosts: e.allowedHosts,
227
- signal: u,
275
+ signal: d,
228
276
  trustProxy: e.trustProxy
229
277
  });
230
278
  } catch (g) {
231
- if (g instanceof M) {
232
- H(i);
279
+ if (g instanceof A) {
280
+ F(a);
233
281
  return;
234
282
  }
235
- if (g instanceof L) {
236
- fe(i);
283
+ if (g instanceof M) {
284
+ Re(a);
237
285
  return;
238
286
  }
239
287
  throw g;
240
288
  }
241
- const m = await t?.(s);
289
+ const m = await t?.(c);
242
290
  await k(
243
- i,
244
- m ?? await e.handler(s)
291
+ a,
292
+ m ?? await e.handler(c)
245
293
  );
246
294
  }
247
295
  }
248
- function ue(e, t) {
296
+ function be(e, t) {
249
297
  const n = new AbortController(), r = () => {
250
298
  n.signal.aborted || n.abort(new DOMException("Client disconnected.", "AbortError"));
251
299
  }, o = () => {
@@ -258,16 +306,38 @@ function ue(e, t) {
258
306
  signal: n.signal
259
307
  };
260
308
  }
261
- function fe(e) {
309
+ function Re(e) {
262
310
  e.statusCode = 421, e.setHeader("content-type", "text/plain; charset=utf-8"), e.end("Misdirected Request");
263
311
  }
264
- function xe(e) {
265
- const t = de(e.timeouts), n = C(le(e));
266
- return n.keepAliveTimeout = t.keepAliveTimeout, n.headersTimeout = t.headersTimeout, n.requestTimeout = t.requestTimeout, me(n, e.shutdown);
312
+ function Se(e) {
313
+ const t = Ee(e.timeouts), n = Ne(e.readyPath), r = n ? async (a) => {
314
+ if (new URL(a.url).pathname !== n)
315
+ return e.handler(a);
316
+ const d = o.isReady();
317
+ return new Response(d ? "ready" : "draining", {
318
+ headers: {
319
+ "cache-control": "no-store",
320
+ "content-type": "text/plain; charset=utf-8"
321
+ },
322
+ status: d ? 200 : 503
323
+ });
324
+ } : e.handler, o = H(
325
+ pe({ ...e, handler: r })
326
+ );
327
+ return o.keepAliveTimeout = t.keepAliveTimeout, o.headersTimeout = t.headersTimeout, o.requestTimeout = t.requestTimeout, Te(o, e.shutdown);
328
+ }
329
+ function Ne(e) {
330
+ if (e !== void 0) {
331
+ if (!e.startsWith("/") || e.includes("?"))
332
+ throw new Error(
333
+ "Demiurge Node readyPath must be an absolute path without a query string."
334
+ );
335
+ return e;
336
+ }
267
337
  }
268
- function de(e) {
338
+ function Ee(e) {
269
339
  const t = {
270
- ...se,
340
+ ...we,
271
341
  ...e
272
342
  };
273
343
  for (const [n, r] of Object.entries(t))
@@ -281,87 +351,87 @@ function de(e) {
281
351
  );
282
352
  return t;
283
353
  }
284
- function me(e, t) {
285
- const n = t?.gracePeriod ?? ce;
354
+ function Te(e, t) {
355
+ const n = t?.gracePeriod ?? ye;
286
356
  if (!Number.isSafeInteger(n) || n < 0)
287
357
  throw new Error(
288
358
  "Demiurge Node shutdown gracePeriod must be a non-negative integer in milliseconds."
289
359
  );
290
- let r = !1, o, i;
291
- const u = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set();
292
- e.on("connection", (a) => {
293
- s.set(a, 0), a.once("close", () => s.delete(a));
294
- }), e.on("request", (a, l) => {
295
- const f = l.socket;
360
+ let r = !1, o, a;
361
+ const d = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set();
362
+ e.on("connection", (i) => {
363
+ c.set(i, 0), i.once("close", () => c.delete(i));
364
+ }), e.on("request", (i, s) => {
365
+ const f = s.socket;
296
366
  if (!f)
297
367
  return;
298
- s.set(f, (s.get(f) ?? 0) + 1);
299
- let c = !1;
300
- const d = () => {
301
- if (c)
368
+ c.set(f, (c.get(f) ?? 0) + 1);
369
+ let l = !1;
370
+ const u = () => {
371
+ if (l)
302
372
  return;
303
- c = !0;
304
- const p = Math.max(0, (s.get(f) ?? 1) - 1);
305
- s.set(f, p), r && p === 0 && f.destroy();
373
+ l = !0;
374
+ const w = Math.max(0, (c.get(f) ?? 1) - 1);
375
+ c.set(f, w), r && w === 0 && f.destroy();
306
376
  };
307
- l.once("finish", d), l.once("close", d);
308
- }), e.isReady = () => e.listening && !r, e.waitUntil = (a) => {
309
- const l = Promise.resolve(a).catch((f) => {
377
+ s.once("finish", u), s.once("close", u);
378
+ }), e.isReady = () => e.listening && !r, e.waitUntil = (i) => {
379
+ const s = Promise.resolve(i).catch((f) => {
310
380
  try {
311
- (t?.onBackgroundError ?? b)(f);
312
- } catch (c) {
313
- b(c);
381
+ (t?.onBackgroundError ?? p)(f);
382
+ } catch (l) {
383
+ p(l);
314
384
  }
315
385
  }).then(() => {
316
386
  }).finally(() => {
317
- m.delete(l), i?.();
387
+ m.delete(s), a?.();
318
388
  });
319
- m.add(l);
320
- }, e.shutdown = () => o || (r = !0, t?.onStateChange?.("draining"), o = new Promise((a, l) => {
321
- let f, c = !1, d = !1, p = !1;
322
- const I = setTimeout(() => {
323
- c = !0, e.closeAllConnections(), y();
389
+ m.add(s);
390
+ }, e.shutdown = () => o || (r = !0, t?.onStateChange?.("draining"), o = new Promise((i, s) => {
391
+ let f, l = !1, u = !1, w = !1;
392
+ const v = setTimeout(() => {
393
+ l = !0, e.closeAllConnections(), b();
324
394
  }, n);
325
395
  e.close((R) => {
326
- R && R.code !== "ERR_SERVER_NOT_RUNNING" && (f = R), d = !0, y();
396
+ R && R.code !== "ERR_SERVER_NOT_RUNNING" && (f = R), u = !0, b();
327
397
  }), e.closeIdleConnections(), h(), setImmediate(() => {
328
398
  e.closeIdleConnections(), h();
329
- }), i = y;
330
- function y() {
331
- if (!(p || !d || !c && m.size > 0)) {
332
- if (p = !0, i = void 0, clearTimeout(I), g(), t?.onStateChange?.("stopped"), f) {
333
- l(f);
399
+ }), a = b;
400
+ function b() {
401
+ if (!(w || !u || !l && m.size > 0)) {
402
+ if (w = !0, a = void 0, clearTimeout(v), g(), t?.onStateChange?.("stopped"), f) {
403
+ s(f);
334
404
  return;
335
405
  }
336
- a();
406
+ i();
337
407
  }
338
408
  }
339
409
  }), o), e.on("listening", () => t?.onStateChange?.("ready"));
340
- for (const a of new Set(t?.signals ?? [])) {
341
- const l = () => {
342
- e.shutdown().catch(b);
410
+ for (const i of new Set(t?.signals ?? [])) {
411
+ const s = () => {
412
+ e.shutdown().catch(p);
343
413
  };
344
- u.set(a, l), process.once(a, l);
414
+ d.set(i, s), process.once(i, s);
345
415
  }
346
416
  return e.once("close", g), e;
347
417
  function g() {
348
- for (const [a, l] of u)
349
- process.off(a, l);
350
- u.clear();
418
+ for (const [i, s] of d)
419
+ process.off(i, s);
420
+ d.clear();
351
421
  }
352
422
  function h() {
353
- for (const [a, l] of s)
354
- l === 0 && a.destroy();
423
+ for (const [i, s] of c)
424
+ s === 0 && i.destroy();
355
425
  }
356
426
  }
357
- function ge(e) {
427
+ function Pe(e) {
358
428
  if (e)
359
- return typeof e == "function" ? e : V(e);
429
+ return typeof e == "function" ? e : J(e);
360
430
  }
361
- function b(e) {
431
+ function p(e) {
362
432
  console.error(e);
363
433
  }
364
- function he(e) {
434
+ function Oe(e) {
365
435
  if (e.headersSent) {
366
436
  e.destroy();
367
437
  return;
@@ -369,20 +439,23 @@ function he(e) {
369
439
  e.statusCode = 500, e.setHeader("content-type", "text/plain; charset=utf-8"), e.end("Internal Server Error");
370
440
  }
371
441
  export {
372
- M as UnsupportedMethodError,
373
- L as UntrustedHostError,
374
- Oe as createFontAssetHandler,
375
- ve as createImageOptimizer,
376
- le as createNodeRequestListener,
377
- xe as createNodeServer,
378
- V as createStaticFileHandler,
379
- se as defaultNodeServerTimeouts,
380
- Te as nodeAdapter,
381
- Ae as renderNodePageResponse,
382
- Me as renderStreamingPageResponse,
383
- He as toHeaders,
384
- A as toWebRequest,
385
- v as validateNodeOriginPolicy,
442
+ A as UnsupportedMethodError,
443
+ M as UntrustedHostError,
444
+ _e as createFontAssetHandler,
445
+ je as createImageOptimizer,
446
+ pe as createNodeRequestListener,
447
+ Se as createNodeServer,
448
+ J as createStaticFileHandler,
449
+ de as defaultNodeBuildClientDir,
450
+ fe as defaultNodeBuildReadyPath,
451
+ we as defaultNodeServerTimeouts,
452
+ De as nodeAdapter,
453
+ C as renderNodePageResponse,
454
+ Be as renderStreamingPageResponse,
455
+ We as serveNodeBuild,
456
+ ze as toHeaders,
457
+ x as toWebRequest,
458
+ L as validateNodeOriginPolicy,
386
459
  k as writeWebResponse
387
460
  };
388
461
  //# sourceMappingURL=index.js.map