@elurjs/kit 2.4.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 (255) hide show
  1. package/CHANGELOG.md +874 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1330 -0
  4. package/bin/elur-kit.js +54 -0
  5. package/dist/lib/action/define.d.cts +72 -0
  6. package/dist/lib/action/define.d.ts +72 -0
  7. package/dist/lib/action/error-store.d.cts +29 -0
  8. package/dist/lib/action/error-store.d.ts +29 -0
  9. package/dist/lib/action/index.cjs +1 -0
  10. package/dist/lib/action/index.d.cts +64 -0
  11. package/dist/lib/action/index.d.ts +64 -0
  12. package/dist/lib/action/index.js +2 -0
  13. package/dist/lib/action/origin.d.cts +20 -0
  14. package/dist/lib/action/origin.d.ts +20 -0
  15. package/dist/lib/action/scan.d.cts +28 -0
  16. package/dist/lib/action/scan.d.ts +28 -0
  17. package/dist/lib/action/server.d.cts +30 -0
  18. package/dist/lib/action/server.d.ts +30 -0
  19. package/dist/lib/action-BB6N5yD-.js +111 -0
  20. package/dist/lib/action-BB6N5yD-.js.map +1 -0
  21. package/dist/lib/action-DZHihU3Z.cjs +2 -0
  22. package/dist/lib/action-DZHihU3Z.cjs.map +1 -0
  23. package/dist/lib/adapters/bun.cjs +30 -0
  24. package/dist/lib/adapters/bun.cjs.map +1 -0
  25. package/dist/lib/adapters/bun.d.cts +13 -0
  26. package/dist/lib/adapters/bun.d.ts +13 -0
  27. package/dist/lib/adapters/bun.js +65 -0
  28. package/dist/lib/adapters/bun.js.map +1 -0
  29. package/dist/lib/adapters/index.cjs +0 -0
  30. package/dist/lib/adapters/index.d.cts +30 -0
  31. package/dist/lib/adapters/index.d.ts +30 -0
  32. package/dist/lib/adapters/index.js +0 -0
  33. package/dist/lib/adapters/netlify.cjs +10 -0
  34. package/dist/lib/adapters/netlify.cjs.map +1 -0
  35. package/dist/lib/adapters/netlify.d.cts +13 -0
  36. package/dist/lib/adapters/netlify.d.ts +13 -0
  37. package/dist/lib/adapters/netlify.js +51 -0
  38. package/dist/lib/adapters/netlify.js.map +1 -0
  39. package/dist/lib/adapters/node.cjs +46 -0
  40. package/dist/lib/adapters/node.cjs.map +1 -0
  41. package/dist/lib/adapters/node.d.cts +13 -0
  42. package/dist/lib/adapters/node.d.ts +13 -0
  43. package/dist/lib/adapters/node.js +105 -0
  44. package/dist/lib/adapters/node.js.map +1 -0
  45. package/dist/lib/adapters/shared.d.cts +17 -0
  46. package/dist/lib/adapters/shared.d.ts +17 -0
  47. package/dist/lib/adapters/vercel.cjs +2 -0
  48. package/dist/lib/adapters/vercel.cjs.map +1 -0
  49. package/dist/lib/adapters/vercel.d.cts +9 -0
  50. package/dist/lib/adapters/vercel.d.ts +9 -0
  51. package/dist/lib/adapters/vercel.js +62 -0
  52. package/dist/lib/adapters/vercel.js.map +1 -0
  53. package/dist/lib/build/build.d.cts +83 -0
  54. package/dist/lib/build/build.d.ts +83 -0
  55. package/dist/lib/build/document-shell.d.cts +48 -0
  56. package/dist/lib/build/document-shell.d.ts +48 -0
  57. package/dist/lib/build/transform-source.d.cts +26 -0
  58. package/dist/lib/build/transform-source.d.ts +26 -0
  59. package/dist/lib/build/vite-build.d.cts +78 -0
  60. package/dist/lib/build/vite-build.d.ts +78 -0
  61. package/dist/lib/cache/policy.d.cts +25 -0
  62. package/dist/lib/cache/policy.d.ts +25 -0
  63. package/dist/lib/cache.d.cts +13 -0
  64. package/dist/lib/cache.d.ts +13 -0
  65. package/dist/lib/capabilities-C0TDQoMY.cjs +2 -0
  66. package/dist/lib/capabilities-C0TDQoMY.cjs.map +1 -0
  67. package/dist/lib/capabilities-C7txofmY.js +45 -0
  68. package/dist/lib/capabilities-C7txofmY.js.map +1 -0
  69. package/dist/lib/cli/commands.d.cts +15 -0
  70. package/dist/lib/cli/commands.d.ts +15 -0
  71. package/dist/lib/cli.cjs +5132 -0
  72. package/dist/lib/cli.cjs.map +1 -0
  73. package/dist/lib/cli.d.cts +30 -0
  74. package/dist/lib/cli.d.ts +30 -0
  75. package/dist/lib/cli.js +5131 -0
  76. package/dist/lib/cli.js.map +1 -0
  77. package/dist/lib/collections-Dbc8aRLf.js +233 -0
  78. package/dist/lib/collections-Dbc8aRLf.js.map +1 -0
  79. package/dist/lib/collections-VDy5g9p8.cjs +13 -0
  80. package/dist/lib/collections-VDy5g9p8.cjs.map +1 -0
  81. package/dist/lib/config/index.cjs +2 -0
  82. package/dist/lib/config/index.cjs.map +1 -0
  83. package/dist/lib/config/index.d.cts +100 -0
  84. package/dist/lib/config/index.d.ts +100 -0
  85. package/dist/lib/config/index.js +122 -0
  86. package/dist/lib/config/index.js.map +1 -0
  87. package/dist/lib/content/collections.d.cts +69 -0
  88. package/dist/lib/content/collections.d.ts +69 -0
  89. package/dist/lib/content/frontmatter.d.cts +20 -0
  90. package/dist/lib/content/frontmatter.d.ts +20 -0
  91. package/dist/lib/content/index.cjs +2 -0
  92. package/dist/lib/content/index.cjs.map +1 -0
  93. package/dist/lib/content/index.d.cts +5 -0
  94. package/dist/lib/content/index.d.ts +5 -0
  95. package/dist/lib/content/index.js +28 -0
  96. package/dist/lib/content/index.js.map +1 -0
  97. package/dist/lib/content/markdown.d.cts +6 -0
  98. package/dist/lib/content/markdown.d.ts +6 -0
  99. package/dist/lib/content/raw.d.cts +9 -0
  100. package/dist/lib/content/raw.d.ts +9 -0
  101. package/dist/lib/content/schema.d.cts +14 -0
  102. package/dist/lib/content/schema.d.ts +14 -0
  103. package/dist/lib/errors-0X7pCFNU.cjs +2 -0
  104. package/dist/lib/errors-0X7pCFNU.cjs.map +1 -0
  105. package/dist/lib/errors-ePYxDlhU.js +70 -0
  106. package/dist/lib/errors-ePYxDlhU.js.map +1 -0
  107. package/dist/lib/errors.d.cts +84 -0
  108. package/dist/lib/errors.d.ts +84 -0
  109. package/dist/lib/hydrate-8a3TbQbs.cjs +2 -0
  110. package/dist/lib/hydrate-8a3TbQbs.cjs.map +1 -0
  111. package/dist/lib/hydrate-CgZGrTxF.js +126 -0
  112. package/dist/lib/hydrate-CgZGrTxF.js.map +1 -0
  113. package/dist/lib/image/index.cjs +2 -0
  114. package/dist/lib/image/index.cjs.map +1 -0
  115. package/dist/lib/image/index.d.cts +37 -0
  116. package/dist/lib/image/index.d.ts +37 -0
  117. package/dist/lib/image/index.js +49 -0
  118. package/dist/lib/image/index.js.map +1 -0
  119. package/dist/lib/image/pipeline.d.cts +37 -0
  120. package/dist/lib/image/pipeline.d.ts +37 -0
  121. package/dist/lib/image/registry.cjs +2 -0
  122. package/dist/lib/image/registry.cjs.map +1 -0
  123. package/dist/lib/image/registry.d.cts +26 -0
  124. package/dist/lib/image/registry.d.ts +26 -0
  125. package/dist/lib/image/registry.js +23 -0
  126. package/dist/lib/image/registry.js.map +1 -0
  127. package/dist/lib/image/service.cjs +2 -0
  128. package/dist/lib/image/service.cjs.map +1 -0
  129. package/dist/lib/image/service.d.cts +164 -0
  130. package/dist/lib/image/service.d.ts +164 -0
  131. package/dist/lib/image/service.js +308 -0
  132. package/dist/lib/image/service.js.map +1 -0
  133. package/dist/lib/index.cjs +1 -0
  134. package/dist/lib/index.cjs.map +1 -0
  135. package/dist/lib/index.d.cts +38 -0
  136. package/dist/lib/index.d.ts +38 -0
  137. package/dist/lib/index.js +1 -0
  138. package/dist/lib/index.js.map +1 -0
  139. package/dist/lib/integrations/hooks.d.cts +58 -0
  140. package/dist/lib/integrations/hooks.d.ts +58 -0
  141. package/dist/lib/integrations/index.cjs +1 -0
  142. package/dist/lib/integrations/index.d.cts +18 -0
  143. package/dist/lib/integrations/index.d.ts +18 -0
  144. package/dist/lib/integrations/index.js +2 -0
  145. package/dist/lib/integrations-7dpN1RYB.js +35 -0
  146. package/dist/lib/integrations-7dpN1RYB.js.map +1 -0
  147. package/dist/lib/integrations-DDqfWjvH.cjs +2 -0
  148. package/dist/lib/integrations-DDqfWjvH.cjs.map +1 -0
  149. package/dist/lib/interpolation-plugin-Bt-KRKVY.js +365 -0
  150. package/dist/lib/interpolation-plugin-Bt-KRKVY.js.map +1 -0
  151. package/dist/lib/interpolation-plugin-CMPCDlVJ.cjs +31 -0
  152. package/dist/lib/interpolation-plugin-CMPCDlVJ.cjs.map +1 -0
  153. package/dist/lib/island/generate-entry.d.cts +27 -0
  154. package/dist/lib/island/generate-entry.d.ts +27 -0
  155. package/dist/lib/island/hydrate.d.cts +33 -0
  156. package/dist/lib/island/hydrate.d.ts +33 -0
  157. package/dist/lib/island/index.cjs +1 -0
  158. package/dist/lib/island/index.d.cts +2 -0
  159. package/dist/lib/island/index.d.ts +2 -0
  160. package/dist/lib/island/index.js +1 -0
  161. package/dist/lib/island/island.d.cts +32 -0
  162. package/dist/lib/island/island.d.ts +32 -0
  163. package/dist/lib/island/scan.d.cts +14 -0
  164. package/dist/lib/island/scan.d.ts +14 -0
  165. package/dist/lib/manifest/index.cjs +3 -0
  166. package/dist/lib/manifest/index.cjs.map +1 -0
  167. package/dist/lib/manifest/index.d.cts +18 -0
  168. package/dist/lib/manifest/index.d.ts +18 -0
  169. package/dist/lib/manifest/index.js +110 -0
  170. package/dist/lib/manifest/index.js.map +1 -0
  171. package/dist/lib/middleware/index.d.cts +56 -0
  172. package/dist/lib/middleware/index.d.ts +56 -0
  173. package/dist/lib/middleware/stream-boundary.d.cts +53 -0
  174. package/dist/lib/middleware/stream-boundary.d.ts +53 -0
  175. package/dist/lib/node-http-DRAUhO0c.js +617 -0
  176. package/dist/lib/node-http-DRAUhO0c.js.map +1 -0
  177. package/dist/lib/node-http-DhxguYyz.cjs +13 -0
  178. package/dist/lib/node-http-DhxguYyz.cjs.map +1 -0
  179. package/dist/lib/render/render-to-string.d.cts +12 -0
  180. package/dist/lib/render/render-to-string.d.ts +12 -0
  181. package/dist/lib/render/ssr-flag.d.cts +4 -0
  182. package/dist/lib/render/ssr-flag.d.ts +4 -0
  183. package/dist/lib/route-scanner-JY6YrNH5.cjs +2 -0
  184. package/dist/lib/route-scanner-JY6YrNH5.cjs.map +1 -0
  185. package/dist/lib/route-scanner-XcLId7lK.js +100 -0
  186. package/dist/lib/route-scanner-XcLId7lK.js.map +1 -0
  187. package/dist/lib/router/client.cjs +2 -0
  188. package/dist/lib/router/client.cjs.map +1 -0
  189. package/dist/lib/router/client.d.cts +47 -0
  190. package/dist/lib/router/client.d.ts +47 -0
  191. package/dist/lib/router/client.js +298 -0
  192. package/dist/lib/router/client.js.map +1 -0
  193. package/dist/lib/router/route-scanner.d.cts +50 -0
  194. package/dist/lib/router/route-scanner.d.ts +50 -0
  195. package/dist/lib/runtime/capabilities.d.cts +47 -0
  196. package/dist/lib/runtime/capabilities.d.ts +47 -0
  197. package/dist/lib/runtime/context.d.cts +140 -0
  198. package/dist/lib/runtime/context.d.ts +140 -0
  199. package/dist/lib/runtime/handler.d.cts +39 -0
  200. package/dist/lib/runtime/handler.d.ts +39 -0
  201. package/dist/lib/runtime/index.cjs +1 -0
  202. package/dist/lib/runtime/index.d.cts +6 -0
  203. package/dist/lib/runtime/index.d.ts +6 -0
  204. package/dist/lib/runtime/index.js +4 -0
  205. package/dist/lib/runtime/node-http.d.cts +2 -0
  206. package/dist/lib/runtime/node-http.d.ts +2 -0
  207. package/dist/lib/runtime/security-headers.d.cts +13 -0
  208. package/dist/lib/runtime/security-headers.d.ts +13 -0
  209. package/dist/lib/runtime/static.d.cts +1 -0
  210. package/dist/lib/runtime/static.d.ts +1 -0
  211. package/dist/lib/runtime-CrH5X-Es.cjs +2 -0
  212. package/dist/lib/runtime-CrH5X-Es.cjs.map +1 -0
  213. package/dist/lib/runtime-Ds2-wH6P.js +520 -0
  214. package/dist/lib/runtime-Ds2-wH6P.js.map +1 -0
  215. package/dist/lib/scan-CY2O9ty6.cjs +2 -0
  216. package/dist/lib/scan-CY2O9ty6.cjs.map +1 -0
  217. package/dist/lib/scan-CjMUgnsd.js +22 -0
  218. package/dist/lib/scan-CjMUgnsd.js.map +1 -0
  219. package/dist/lib/scan-DXzYtmRQ.cjs +2 -0
  220. package/dist/lib/scan-DXzYtmRQ.cjs.map +1 -0
  221. package/dist/lib/scan-Dn93ycXG.js +33 -0
  222. package/dist/lib/scan-Dn93ycXG.js.map +1 -0
  223. package/dist/lib/seo/index.cjs +10 -0
  224. package/dist/lib/seo/index.cjs.map +1 -0
  225. package/dist/lib/seo/index.d.cts +99 -0
  226. package/dist/lib/seo/index.d.ts +99 -0
  227. package/dist/lib/seo/index.js +41 -0
  228. package/dist/lib/seo/index.js.map +1 -0
  229. package/dist/lib/shared-CfqOLsKj.cjs +183 -0
  230. package/dist/lib/shared-CfqOLsKj.cjs.map +1 -0
  231. package/dist/lib/shared-DU3iQgr7.js +236 -0
  232. package/dist/lib/shared-DU3iQgr7.js.map +1 -0
  233. package/dist/lib/ssr/match.d.cts +25 -0
  234. package/dist/lib/ssr/match.d.ts +25 -0
  235. package/dist/lib/ssr/render.d.cts +62 -0
  236. package/dist/lib/ssr/render.d.ts +62 -0
  237. package/dist/lib/ssr/server.d.cts +41 -0
  238. package/dist/lib/ssr/server.d.ts +41 -0
  239. package/dist/lib/ssr/stream.d.cts +48 -0
  240. package/dist/lib/ssr/stream.d.ts +48 -0
  241. package/dist/lib/stream-CpOG052V.js +104 -0
  242. package/dist/lib/stream-CpOG052V.js.map +1 -0
  243. package/dist/lib/stream-DmZjYqHm.cjs +17 -0
  244. package/dist/lib/stream-DmZjYqHm.cjs.map +1 -0
  245. package/dist/lib/types.d.cts +97 -0
  246. package/dist/lib/types.d.ts +97 -0
  247. package/dist/lib/vite/index.cjs +2 -0
  248. package/dist/lib/vite/index.cjs.map +1 -0
  249. package/dist/lib/vite/index.d.cts +41 -0
  250. package/dist/lib/vite/index.d.ts +41 -0
  251. package/dist/lib/vite/index.js +229 -0
  252. package/dist/lib/vite/index.js.map +1 -0
  253. package/dist/lib/vite/interpolation-plugin.d.cts +64 -0
  254. package/dist/lib/vite/interpolation-plugin.d.ts +64 -0
  255. package/package.json +292 -0
@@ -0,0 +1,617 @@
1
+ import { a as e, o as t, s as n } from "./errors-ePYxDlhU.js";
2
+ import { renderToString as r } from "@elurjs/core/server";
3
+ import { existsSync as i } from "node:fs";
4
+ import { createHmac as a, randomBytes as o, timingSafeEqual as s } from "node:crypto";
5
+ //#region src/render/ssr-flag.ts
6
+ var c = Symbol.for("@elurjs/core/reactivity-state");
7
+ function l() {
8
+ return globalThis[c];
9
+ }
10
+ function u(e) {
11
+ let t = l();
12
+ t && (t.ssr = e);
13
+ }
14
+ function d() {
15
+ return l()?.ssr ?? !1;
16
+ }
17
+ //#endregion
18
+ //#region src/render/render-to-string.ts
19
+ async function f(e, t = {}) {
20
+ u(!0);
21
+ try {
22
+ return await r(e(), { markers: t.markers ?? "hydration" });
23
+ } finally {
24
+ u(!1);
25
+ }
26
+ }
27
+ //#endregion
28
+ //#region src/build/document-shell.ts
29
+ var p = {
30
+ "&": "&",
31
+ "<": "&lt;",
32
+ ">": "&gt;",
33
+ "\"": "&quot;",
34
+ "'": "&#39;"
35
+ };
36
+ function m(e) {
37
+ return e.replace(/[&<>"']/g, (e) => p[e]);
38
+ }
39
+ function h(e) {
40
+ return JSON.stringify(e ?? null).replace(/</g, "\\u003c");
41
+ }
42
+ function g(e, t) {
43
+ let n = [], r = e.title ?? t;
44
+ e.title && n.push(`<title data-elur-head>${m(r)}</title>`), e.description && n.push(`<meta data-elur-head name="description" content="${m(e.description)}" />`), e.canonical && n.push(`<link data-elur-head rel="canonical" href="${m(e.canonical)}" />`), e.robots && n.push(`<meta data-elur-head name="robots" content="${m(e.robots)}" />`);
45
+ let i = e.openGraph;
46
+ i && (i.type && n.push(`<meta data-elur-head property="og:type" content="${m(i.type)}" />`), n.push(`<meta data-elur-head property="og:title" content="${m(i.title ?? r)}" />`), (i.description ?? e.description) && n.push(`<meta data-elur-head property="og:description" content="${m(i.description ?? e.description)}" />`), (i.url ?? e.canonical) && n.push(`<meta data-elur-head property="og:url" content="${m(i.url ?? e.canonical)}" />`), i.image && n.push(`<meta data-elur-head property="og:image" content="${m(i.image)}" />`), i.image && i.imageAlt && n.push(`<meta data-elur-head property="og:image:alt" content="${m(i.imageAlt)}" />`), i.image && i.imageWidth && n.push(`<meta data-elur-head property="og:image:width" content="${String(i.imageWidth)}" />`), i.image && i.imageHeight && n.push(`<meta data-elur-head property="og:image:height" content="${String(i.imageHeight)}" />`), i.image && i.imageType && n.push(`<meta data-elur-head property="og:image:type" content="${m(i.imageType)}" />`), i.siteName && n.push(`<meta data-elur-head property="og:site_name" content="${m(i.siteName)}" />`), i.locale && n.push(`<meta data-elur-head property="og:locale" content="${m(i.locale)}" />`));
47
+ let a = e.twitter;
48
+ if (a && (a.card && n.push(`<meta data-elur-head name="twitter:card" content="${m(a.card)}" />`), (a.title ?? r) && n.push(`<meta data-elur-head name="twitter:title" content="${m(a.title ?? r)}" />`), (a.description ?? e.description) && n.push(`<meta data-elur-head name="twitter:description" content="${m(a.description ?? e.description)}" />`), a.image && n.push(`<meta data-elur-head name="twitter:image" content="${m(a.image)}" />`), a.image && a.imageAlt && n.push(`<meta data-elur-head name="twitter:image:alt" content="${m(a.imageAlt)}" />`)), e.other) for (let [t, r] of Object.entries(e.other)) n.push(`<meta data-elur-head name="${m(t)}" content="${m(r)}" />`);
49
+ return n.map((e) => `\n ${e}`).join("");
50
+ }
51
+ function _(e) {
52
+ let { body: t, title: n = "Elur Kit App", lang: r = "es", data: i, actions: a, clientEntry: o, htmlAttributes: s, headScripts: c, headLinks: l, metadata: u } = e, d = i === void 0 ? "" : `\n <script type="application/json" id="elur-data">${h(i)}<\/script>`, f = a && Object.keys(a).length > 0 ? `\n <script type="application/json" id="elur-actions">${h(a)}<\/script>` : "", p = o ? `\n <script type="module" src="${m(o)}"><\/script>` : "", _ = s ? Object.entries(s).filter(([, e]) => e != null && e !== "").map(([e, t]) => ` ${m(e)}="${m(String(t))}"`).join("") : "", v = c ? c.filter((e) => typeof e == "string" && e.trim().length > 0).map((e) => e.trimStart().startsWith("<script") ? `\n ${e}` : `\n <script>${e.replace(/<\/script>/gi, "<\\/script>")}<\/script>`).join("") : "", y = u ? g(u, n) : "", b = u?.title ? "" : `\n <title>${m(n)}</title>`, x = l ? l.filter((e) => typeof e == "string" && e.trim().length > 0).map((e) => `\n ${e}`).join("") : "", S = e.renderEndpoint === !1 ? "\n <meta name=\"elur:render-endpoint\" content=\"off\" />" : "";
53
+ return `<!DOCTYPE html>
54
+ <html lang="${m(r)}"${_}>
55
+ <head>
56
+ <meta charset="utf-8" />
57
+ <meta name="viewport" content="width=device-width, initial-scale=1" />${S}${b}${y}${x}${v}
58
+ </head>
59
+ <body>
60
+ <div id="app">${t}</div>${d}${f}${p}
61
+ </body>
62
+ </html>
63
+ `;
64
+ }
65
+ //#endregion
66
+ //#region src/action/error-store.ts
67
+ var v = "__elur_js_action_error", y = 3500, b = 15e3, x = process.env.ELUR_JS_ACTION_SECRET ?? o(32).toString("hex"), S = /* @__PURE__ */ new Map(), C = !1;
68
+ function w() {
69
+ C || (C = !0, setTimeout(() => {
70
+ C = !1;
71
+ let e = Date.now();
72
+ for (let [t, n] of S) n.expiresAt <= e && S.delete(t);
73
+ }, b).unref?.());
74
+ }
75
+ function T(e) {
76
+ return `${a("sha256", x).update(e).digest("hex")}.${e}`;
77
+ }
78
+ function E(e) {
79
+ let t = e.indexOf(".");
80
+ if (t === -1) return;
81
+ let n = e.slice(0, t), r = e.slice(t + 1), i = a("sha256", x).update(r).digest("hex");
82
+ if (n.length === i.length) try {
83
+ if (s(Buffer.from(n), Buffer.from(i))) return r;
84
+ } catch {}
85
+ }
86
+ function D(e, t) {
87
+ let n = JSON.stringify({
88
+ d: e,
89
+ s: t
90
+ }), r = T(Buffer.from(n, "utf8").toString("base64url"));
91
+ if (r.length <= y) return { value: r };
92
+ let i = o(12).toString("hex");
93
+ return S.set(i, {
94
+ data: e,
95
+ status: t,
96
+ expiresAt: Date.now() + b
97
+ }), w(), {
98
+ value: T(`id:${i}`),
99
+ storeId: i
100
+ };
101
+ }
102
+ function O(e) {
103
+ if (!e) return;
104
+ let t = E(e);
105
+ if (t !== void 0) {
106
+ if (t.startsWith("id:")) {
107
+ let e = t.slice(3), n = S.get(e);
108
+ return !n || (S.delete(e), n.expiresAt <= Date.now()) ? void 0 : {
109
+ data: n.data,
110
+ status: n.status
111
+ };
112
+ }
113
+ try {
114
+ let e = Buffer.from(t, "base64url").toString("utf8"), n = JSON.parse(e);
115
+ return {
116
+ data: n.d,
117
+ status: n.s
118
+ };
119
+ } catch {
120
+ return;
121
+ }
122
+ }
123
+ }
124
+ var k = v;
125
+ function A() {
126
+ return `${v}=; Path=/; Max-Age=0; SameSite=Lax`;
127
+ }
128
+ function j(e) {
129
+ return `${v}=${e}; Path=/; Max-Age=15; SameSite=Lax; HttpOnly`;
130
+ }
131
+ //#endregion
132
+ //#region src/cache/policy.ts
133
+ var M = {
134
+ mode: "dynamic",
135
+ revalidate: 0
136
+ };
137
+ function N(e) {
138
+ if (!e || typeof e != "object") return M;
139
+ let t = e, n = t.mode;
140
+ return n !== "public" && n !== "private" && n !== "dynamic" ? M : {
141
+ mode: n,
142
+ revalidate: typeof t.revalidate == "number" ? t.revalidate : 0,
143
+ tags: Array.isArray(t.tags) ? t.tags.filter((e) => typeof e == "string") : void 0
144
+ };
145
+ }
146
+ function P(e, t) {
147
+ return !(e.mode !== "public" || e.revalidate <= 0 || t.headers.get("Cookie") || t.headers.get("Authorization"));
148
+ }
149
+ //#endregion
150
+ //#region src/ssr/render.ts
151
+ var F = (e) => import(e);
152
+ function I(e, t) {
153
+ let n = {}, r = [], i = [], a = (e) => {
154
+ if (!e || typeof e != "object") return;
155
+ let t = e.htmlAttributes;
156
+ t && Object.assign(n, t);
157
+ let a = e.headScripts;
158
+ Array.isArray(a) && r.push(...a);
159
+ let o = e.headLinks;
160
+ Array.isArray(o) && i.push(...o);
161
+ };
162
+ for (let e of t) a(e);
163
+ return a(e), {
164
+ htmlAttributes: n,
165
+ headScripts: [...new Set(r)],
166
+ headLinks: [...new Set(i)]
167
+ };
168
+ }
169
+ async function L(e) {
170
+ let { route: t, params: n = {}, searchParams: r = new URLSearchParams(), config: a, importer: o = F, actions: s, request: c } = e, { default: l, generateMetadata: u } = await o(t.pagePath), d, p, m, h = { response: void 0 };
171
+ if (t.dataPath) {
172
+ let e = await o(t.dataPath);
173
+ if (e.load) try {
174
+ d = await e.load({
175
+ params: n,
176
+ searchParams: r,
177
+ request: c
178
+ });
179
+ } catch (e) {
180
+ if (e instanceof Response) h.response = e;
181
+ else throw e;
182
+ }
183
+ typeof e.revalidate == "number" && (p = e.revalidate), e.cache && (m = N(e.cache), m.revalidate > 0 && (p = m.revalidate));
184
+ }
185
+ if (h.response) return {
186
+ html: "",
187
+ response: h.response,
188
+ status: h.response.status
189
+ };
190
+ let v, y;
191
+ if (c) {
192
+ let e = (c.headers.get("Cookie") ?? "").match(RegExp(`(?:^|;\\s*)${k}=([^;]+)`));
193
+ if (e) {
194
+ let t = O(e[1]);
195
+ t && (v = {
196
+ __elur_js_action_error: !0,
197
+ status: t.status,
198
+ data: t.data
199
+ }, y = `${k}=; Path=/; Max-Age=0; SameSite=Lax`);
200
+ }
201
+ }
202
+ let b = {
203
+ data: d ?? {},
204
+ params: n,
205
+ searchParams: r,
206
+ form: v
207
+ }, x = await Promise.all(t.layouts.map(async (e) => o(e))), S = await Promise.all(t.layouts.map(async (e) => {
208
+ let t = e.replace(/layout\.ts$/, "layout.data.ts");
209
+ if (!i(t)) return;
210
+ let a = await o(t);
211
+ if (a.load) try {
212
+ return await a.load({
213
+ params: n,
214
+ searchParams: r,
215
+ request: c
216
+ });
217
+ } catch (e) {
218
+ if (e instanceof Response) {
219
+ h.response = e;
220
+ return;
221
+ }
222
+ throw e;
223
+ }
224
+ })), C = h.response;
225
+ if (C) return {
226
+ html: "",
227
+ response: C,
228
+ status: C.status
229
+ };
230
+ let w;
231
+ if (t.slots) {
232
+ w = {};
233
+ for (let [e, n] of Object.entries(t.slots)) {
234
+ let t = await o(n);
235
+ w[e] = t.default(b);
236
+ }
237
+ }
238
+ let T = await f(() => {
239
+ let e = l(b);
240
+ for (let t = x.length - 1; t >= 0; t--) {
241
+ let { default: n } = x[t];
242
+ e = n({
243
+ children: e,
244
+ data: S[t],
245
+ slots: w
246
+ });
247
+ }
248
+ return e;
249
+ }), E = typeof d == "object" && d && "title" in d ? String(d.title ?? "Elur Kit") : "Elur Kit", { htmlAttributes: D, headScripts: A, headLinks: j } = I(d, S), M;
250
+ typeof u == "function" && (M = await u({
251
+ params: n,
252
+ searchParams: r,
253
+ request: c,
254
+ data: d
255
+ })), M ||= R(d) ?? z(S);
256
+ let P = M?.title ?? E, L = _({
257
+ title: P,
258
+ lang: a.lang,
259
+ body: T,
260
+ data: d,
261
+ actions: s,
262
+ htmlAttributes: D,
263
+ headScripts: A,
264
+ headLinks: j,
265
+ metadata: M,
266
+ clientEntry: a.clientEntry,
267
+ renderEndpoint: a.renderEndpoint
268
+ }), B = M ? g(M, P) : "";
269
+ return {
270
+ html: L,
271
+ revalidate: p,
272
+ clearActionErrorCookie: y,
273
+ head: B,
274
+ resolvedTitle: P,
275
+ cachePolicy: m
276
+ };
277
+ }
278
+ function R(e) {
279
+ if (e && typeof e == "object" && "metadata" in e) {
280
+ let t = e.metadata;
281
+ if (t && typeof t == "object") return t;
282
+ }
283
+ }
284
+ function z(e) {
285
+ for (let t of e) {
286
+ let e = R(t);
287
+ if (e) return e;
288
+ }
289
+ }
290
+ async function B(e) {
291
+ let t = e.status === 404 ? e.routes.error404 : e.routes.error500;
292
+ if (t) try {
293
+ let { html: n } = await L({
294
+ route: t,
295
+ params: {},
296
+ searchParams: new URLSearchParams(),
297
+ config: e.config,
298
+ actions: e.actions,
299
+ importer: e.importer
300
+ });
301
+ return {
302
+ html: n,
303
+ status: e.status
304
+ };
305
+ } catch (t) {
306
+ console.error(`[render] error ${e.status} page failed`, t);
307
+ return;
308
+ }
309
+ }
310
+ //#endregion
311
+ //#region src/ssr/match.ts
312
+ function V(e, t) {
313
+ let n = e.split("?")[0].split("/").filter(Boolean).map(U), r = [...t].sort((e, t) => W(t.path) - W(e.path));
314
+ for (let e of r) {
315
+ let t = G(n, e.path.split("/").filter(Boolean), e.optionalCatchAll);
316
+ if (t) return {
317
+ route: e,
318
+ params: t,
319
+ searchParams: new URLSearchParams()
320
+ };
321
+ }
322
+ }
323
+ function H(e, t) {
324
+ let n = e.split("?")[0].split("/").filter(Boolean).map(U), r = [...t].sort((e, t) => W(t.path) - W(e.path));
325
+ for (let e of r) {
326
+ let t = G(n, e.path.split("/").filter(Boolean));
327
+ if (t) return {
328
+ route: e,
329
+ params: t
330
+ };
331
+ }
332
+ }
333
+ function U(e) {
334
+ try {
335
+ return decodeURIComponent(e);
336
+ } catch {
337
+ return e;
338
+ }
339
+ }
340
+ function W(e) {
341
+ return e.split("/").filter(Boolean).reduce((e, t) => t.endsWith("*") ? e : t.startsWith(":") ? e + 1 : e + 2, 0);
342
+ }
343
+ function G(e, t, n = !1) {
344
+ let r = {}, i = 0;
345
+ for (let a = 0; a < t.length; a++) {
346
+ let o = t[a];
347
+ if (o.endsWith("*")) {
348
+ let t = o.slice(1, -1), a = e.slice(i);
349
+ return a.length === 0 && !n ? void 0 : (r[t] = a.length > 0 ? a : [], r);
350
+ }
351
+ if (o.startsWith(":")) {
352
+ let t = e[i];
353
+ if (t === void 0) return;
354
+ r[o.slice(1)] = t, i++;
355
+ continue;
356
+ }
357
+ if (o !== e[i]) return;
358
+ i++;
359
+ }
360
+ if (i === e.length) return r;
361
+ }
362
+ //#endregion
363
+ //#region src/action/origin.ts
364
+ function K(e) {
365
+ if (e) try {
366
+ let t = new URL(e);
367
+ return t.protocol !== "http:" && t.protocol !== "https:" ? void 0 : t.origin;
368
+ } catch {
369
+ return;
370
+ }
371
+ }
372
+ function q(e, t = {}) {
373
+ let n = K(e.url);
374
+ if (!n) return "Invalid target URL";
375
+ let r = e.headers.get("Origin"), i = e.headers.get("Referer");
376
+ if (!r && !i) return t.strictOrigin ? "Missing Origin and Referer headers" : void 0;
377
+ let a = K(r || i);
378
+ if (!a) return r ? "Invalid Origin header" : "Invalid Referer header";
379
+ if (a !== n && !t.allowedOrigins?.some((e) => K(e) === a)) return `Cross-origin request blocked: source "${a}" != target "${n}"`;
380
+ }
381
+ function J(e) {
382
+ return new Response(e, {
383
+ status: 403,
384
+ headers: { "Content-Type": "text/plain; charset=utf-8" }
385
+ });
386
+ }
387
+ //#endregion
388
+ //#region src/action/server.ts
389
+ var Y = 1048576;
390
+ async function X(e, t) {
391
+ let n = e.headers.get("Content-Length");
392
+ if (n && parseInt(n, 10) > t) return {
393
+ ok: !1,
394
+ response: new Response("Request body too large", {
395
+ status: 413,
396
+ headers: { "Content-Type": "text/plain" }
397
+ })
398
+ };
399
+ let r = e.body?.getReader();
400
+ if (!r) return {
401
+ ok: !0,
402
+ text: ""
403
+ };
404
+ let i = [], a = 0;
405
+ try {
406
+ for (;;) {
407
+ let { done: e, value: n } = await r.read();
408
+ if (e) break;
409
+ if (a += n.byteLength, a > t) {
410
+ try {
411
+ r.cancel();
412
+ } catch {}
413
+ return {
414
+ ok: !1,
415
+ response: new Response("Request body too large", {
416
+ status: 413,
417
+ headers: { "Content-Type": "text/plain" }
418
+ })
419
+ };
420
+ }
421
+ i.push(n);
422
+ }
423
+ } finally {
424
+ try {
425
+ r.releaseLock();
426
+ } catch {}
427
+ }
428
+ let o = new Uint8Array(a), s = 0;
429
+ for (let e of i) o.set(e, s), s += e.byteLength;
430
+ return {
431
+ ok: !0,
432
+ text: new TextDecoder().decode(o)
433
+ };
434
+ }
435
+ function Z(e) {
436
+ let t = new URLSearchParams(e), n = {};
437
+ for (let [e, r] of t) n[e] === void 0 ? n[e] = r : Array.isArray(n[e]) ? n[e].push(r) : n[e] = [n[e], r];
438
+ return n;
439
+ }
440
+ async function Q(e, t = Y) {
441
+ if (e.method !== "POST") return {
442
+ ok: !1,
443
+ response: new Response("Method not allowed", {
444
+ status: 405,
445
+ headers: { "Content-Type": "text/plain" }
446
+ })
447
+ };
448
+ let n = e.headers.get("Content-Type") ?? "", r = (e.headers.get("Accept") ?? "").includes("application/json"), i, a, o = [];
449
+ if (n.includes("application/json")) {
450
+ let n = await X(e, t);
451
+ if (!n.ok) return {
452
+ ok: !1,
453
+ response: n.response
454
+ };
455
+ let r;
456
+ try {
457
+ r = JSON.parse(n.text);
458
+ } catch {
459
+ return {
460
+ ok: !1,
461
+ response: new Response("Invalid JSON body", {
462
+ status: 400,
463
+ headers: { "Content-Type": "text/plain" }
464
+ })
465
+ };
466
+ }
467
+ i = r.name, a = r.page, o = Array.isArray(r.args) ? r.args : [];
468
+ } else if (n.includes("application/x-www-form-urlencoded") || n.includes("multipart/form-data")) {
469
+ if (n.includes("multipart/form-data")) {
470
+ let n = e.headers.get("Content-Length");
471
+ if (n && parseInt(n, 10) > t) return {
472
+ ok: !1,
473
+ response: new Response("Request body too large", {
474
+ status: 413,
475
+ headers: { "Content-Type": "text/plain" }
476
+ })
477
+ };
478
+ let r;
479
+ try {
480
+ r = await e.formData();
481
+ } catch {
482
+ return {
483
+ ok: !1,
484
+ response: new Response("Invalid form body", {
485
+ status: 400,
486
+ headers: { "Content-Type": "text/plain" }
487
+ })
488
+ };
489
+ }
490
+ i = r.get("__elur_js_action_name") ?? void 0, a = r.get("__elur_js_action_page") ?? void 0;
491
+ let s = {};
492
+ for (let [e, t] of r) e !== "__elur_js_action_name" && e !== "__elur_js_action_page" && (s[e] = t);
493
+ o = [s];
494
+ } else {
495
+ let n = await X(e, t);
496
+ if (!n.ok) return {
497
+ ok: !1,
498
+ response: n.response
499
+ };
500
+ let r = Z(n.text);
501
+ i = r.__elur_js_action_name, a = r.__elur_js_action_page;
502
+ let s = {};
503
+ for (let [e, t] of Object.entries(r)) e !== "__elur_js_action_name" && e !== "__elur_js_action_page" && (s[e] = t);
504
+ o = [s];
505
+ }
506
+ } else {
507
+ let n = await X(e, t);
508
+ if (!n.ok) return {
509
+ ok: !1,
510
+ response: n.response
511
+ };
512
+ let r = Z(n.text);
513
+ i = r.__elur_js_action_name, a = r.__elur_js_action_page;
514
+ let s = {};
515
+ for (let [e, t] of Object.entries(r)) e !== "__elur_js_action_name" && e !== "__elur_js_action_page" && (s[e] = t);
516
+ o = [s];
517
+ }
518
+ return !i || typeof i != "string" ? {
519
+ ok: !1,
520
+ response: new Response("Missing action name", {
521
+ status: 400,
522
+ headers: { "Content-Type": "text/plain" }
523
+ })
524
+ } : {
525
+ ok: !0,
526
+ name: i,
527
+ page: a,
528
+ args: o,
529
+ wantsJson: r
530
+ };
531
+ }
532
+ async function $(r, i, a = {}) {
533
+ let o = q(r, a);
534
+ if (o) return J(o);
535
+ let s = await Q(r, a.bodyLimit ?? Y);
536
+ if (!s.ok) return s.response;
537
+ let { name: c, page: l, args: u, wantsJson: d } = s;
538
+ try {
539
+ let n = await i(c, l);
540
+ if (!n) {
541
+ let e = l ? `Action not found: ${c} (page: ${l})` : `Action not found: ${c}`;
542
+ return new Response(e, {
543
+ status: 404,
544
+ headers: { "Content-Type": "text/plain" }
545
+ });
546
+ }
547
+ let a = await n(...u);
548
+ if (e(a)) {
549
+ if (d) return new Response(JSON.stringify({
550
+ __elur_js_action_failure: !0,
551
+ status: a.status,
552
+ data: a.data
553
+ }), {
554
+ status: a.status,
555
+ headers: { "Content-Type": "application/json" }
556
+ });
557
+ let e = r.headers.get("Referer") ?? "/", t = new URL(e, "http://localhost"), { value: n } = D(a.data, a.status);
558
+ return new Response(null, {
559
+ status: 303,
560
+ headers: {
561
+ Location: t.pathname + t.search,
562
+ "Content-Type": "text/plain",
563
+ "Set-Cookie": j(n)
564
+ }
565
+ });
566
+ }
567
+ if (t(a)) return d ? new Response(JSON.stringify({
568
+ __elur_js_action_redirect: !0,
569
+ status: a.status,
570
+ location: a.location
571
+ }), {
572
+ status: 200,
573
+ headers: { "Content-Type": "application/json" }
574
+ }) : new Response(null, {
575
+ status: a.status,
576
+ headers: {
577
+ Location: a.location,
578
+ "Content-Type": "text/plain"
579
+ }
580
+ });
581
+ if (d) return new Response(JSON.stringify(a ?? null), {
582
+ status: 200,
583
+ headers: { "Content-Type": "application/json" }
584
+ });
585
+ let o = r.headers.get("Referer") ?? "/";
586
+ return new Response(null, {
587
+ status: 303,
588
+ headers: {
589
+ Location: typeof a == "string" ? a : o,
590
+ "Content-Type": "text/plain"
591
+ }
592
+ });
593
+ } catch (e) {
594
+ return console.error("[elur-kit] Action error:", e), n(e, { includeDetail: !1 });
595
+ }
596
+ }
597
+ //#endregion
598
+ //#region src/runtime/node-http.ts
599
+ var ee = globalThis.AbortController ?? AbortController;
600
+ function te(e, t) {
601
+ let n = new Headers();
602
+ for (let t = 0; t < e.rawHeaders.length; t += 2) n.append(e.rawHeaders[t], e.rawHeaders[t + 1]);
603
+ let r = new ee();
604
+ e.once("aborted", () => r.abort()), e.once("close", () => {
605
+ e.complete || r.abort();
606
+ });
607
+ let i = e.socket.encrypted ? "https" : "http", a = {
608
+ method: e.method ?? "GET",
609
+ headers: n,
610
+ signal: r.signal
611
+ };
612
+ return t != null && a.method !== "GET" && a.method !== "HEAD" && (a.body = t), new Request(`${i}://${n.get("host") ?? "localhost"}${e.url ?? "/"}`, a);
613
+ }
614
+ //#endregion
615
+ export { _, H as a, B as c, k as d, A as f, g, j as h, q as i, L as l, D as m, $ as n, V as o, O as p, J as r, I as s, te as t, P as u, f as v, d as y };
616
+
617
+ //# sourceMappingURL=node-http-DRAUhO0c.js.map