@celsoft/coordinator 0.0.0 → 0.1.0
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/CHANGELOG.md +11 -0
- package/README.md +107 -0
- package/THIRD_PARTY_NOTICES.md +2005 -0
- package/agents/console.md +20 -0
- package/agents/free.md +110 -0
- package/build/0-JP6XL6LB.js +17 -0
- package/build/1-A52YZWNS.js +17 -0
- package/build/2-CLH2NM6F.js +32 -0
- package/build/3-4N467IB6.js +45 -0
- package/build/4-WL5H4LUW.js +29 -0
- package/build/_layout.svelte-KPUSX7LQ.js +27 -0
- package/build/_page.svelte-22H56UR6.js +7972 -0
- package/build/_page.svelte-CVWUNRQC.js +135 -0
- package/build/_page.svelte-LTZXBHMT.js +57 -0
- package/build/_server.ts-3KVBYN6P.js +20 -0
- package/build/_server.ts-3POPKVEM.js +47 -0
- package/build/_server.ts-5735T2V5.js +31 -0
- package/build/_server.ts-5VXGNWV2.js +38 -0
- package/build/_server.ts-645KP7WP.js +42 -0
- package/build/_server.ts-A3AA24Z2.js +28 -0
- package/build/_server.ts-CITUOEM6.js +58 -0
- package/build/_server.ts-I7HMTPOA.js +25 -0
- package/build/_server.ts-M5BQ4LLX.js +30 -0
- package/build/_server.ts-OB4O27HF.js +683 -0
- package/build/_server.ts-OJT7HE7M.js +15 -0
- package/build/_server.ts-OYGWVLZM.js +12 -0
- package/build/_server.ts-T75UVMQP.js +38 -0
- package/build/_server.ts-WYZYNHUZ.js +28 -0
- package/build/_server.ts-Z26EB47B.js +486 -0
- package/build/chunk-4CIG53L5.js +33 -0
- package/build/chunk-BJTJS3XY.js +338 -0
- package/build/chunk-F2CNWJZM.js +14 -0
- package/build/chunk-HGYE3UTU.js +416 -0
- package/build/chunk-KAYW2W7H.js +1311 -0
- package/build/chunk-LFP3UPCM.js +10 -0
- package/build/chunk-M44JEFEH.js +62 -0
- package/build/chunk-MC5AGLMY.js +39 -0
- package/build/chunk-NCZ77J5E.js +19798 -0
- package/build/chunk-NVNLDPUJ.js +2122 -0
- package/build/chunk-PDCON4KS.js +494 -0
- package/build/chunk-Q4OQNY5M.js +25 -0
- package/build/chunk-QCUOR2U5.js +75 -0
- package/build/chunk-R6RYZZWA.js +46 -0
- package/build/chunk-SOJTASZC.js +51 -0
- package/build/chunk-SU26PJVX.js +410 -0
- package/build/chunk-U5BSBG4R.js +506 -0
- package/build/chunk-UEKOZGRO.js +37 -0
- package/build/chunk-W6EFUWJ2.js +9 -0
- package/build/chunk-WOPREK6Q.js +117 -0
- package/build/chunk-WWJ3F4QS.js +127 -0
- package/build/chunk-ZGZJEEE3.js +1091 -0
- package/build/client/_app/immutable/assets/0.BGa5ZNDM.css +1 -0
- package/build/client/_app/immutable/chunks/BUrrLYDt.js +2 -0
- package/build/client/_app/immutable/chunks/BgFr_EyZ.js +4 -0
- package/build/client/_app/immutable/chunks/Bjy-W4x2.js +82 -0
- package/build/client/_app/immutable/chunks/C8qZab0y.js +56 -0
- package/build/client/_app/immutable/chunks/C90fLsA5.js +4 -0
- package/build/client/_app/immutable/chunks/CRzLMJPS.js +1 -0
- package/build/client/_app/immutable/chunks/DLT1iIlz.js +2 -0
- package/build/client/_app/immutable/chunks/pIrVVOVY.js +2 -0
- package/build/client/_app/immutable/entry/app.0DERehLW.js +3 -0
- package/build/client/_app/immutable/entry/payload.DSmR2FwN.js +2 -0
- package/build/client/_app/immutable/entry/start.B7srFiqh.js +3 -0
- package/build/client/_app/immutable/nodes/0.aD9vJoxR.js +2 -0
- package/build/client/_app/immutable/nodes/1.Br4FL91i.js +2 -0
- package/build/client/_app/immutable/nodes/2.vl6OYfu3.js +8 -0
- package/build/client/_app/immutable/nodes/3.VYqJOLAF.js +2 -0
- package/build/client/_app/immutable/nodes/4.jF9UVlFN.js +2 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/apple-touch-icon.png +0 -0
- package/build/client/favicon.ico +0 -0
- package/build/client/favicon.svg +48 -0
- package/build/client/icon-192.png +0 -0
- package/build/client/icon-512.png +0 -0
- package/build/client/icon-maskable-512.png +0 -0
- package/build/client/icon.svg +44 -0
- package/build/client/manifest.webmanifest +15 -0
- package/build/error.svelte-JXZDY65F.js +51 -0
- package/build/handler.js +716 -0
- package/build/hooks.server-34IMHRKC.js +43 -0
- package/build/instance-NP3FJIWW.js +2967 -0
- package/client/client.mjs +28 -0
- package/client/hooks.mjs +7 -0
- package/client/register.mjs +5 -0
- package/dist/cli.js +62826 -0
- package/dist/port.js +36691 -0
- package/package.json +20 -1
- package/skills/agents/.claude-plugin/plugin.json +5 -0
- package/skills/agents/hooks/hooks.json +1 -0
- package/skills/agents/hooks/register.ts +57 -0
- package/skills/agents/skills/bus-work/SKILL.md +66 -0
- package/skills/agents/skills/plan/SKILL.md +98 -0
- package/skills/console/.claude-plugin/plugin.json +5 -0
- package/skills/console/hooks/hooks.json +1 -0
- package/skills/console/hooks/register.ts +10 -0
- package/skills/console/skills/bus/SKILL.md +61 -0
- package/skills/default/.claude-plugin/plugin.json +5 -0
- package/skills/default/skills/git-workflow/SKILL.md +294 -0
- package/skills/default/skills/git-workflow/mise-tasks/_lib.sh +107 -0
- package/skills/default/skills/git-workflow/mise-tasks/clone +36 -0
- package/skills/default/skills/git-workflow/mise-tasks/repo-list +8 -0
- package/skills/default/skills/git-workflow/mise-tasks/unpushed +26 -0
- package/skills/default/skills/git-workflow/mise-tasks/worktree-add +60 -0
- package/skills/default/skills/github/SKILL.md +208 -0
- package/skills/default/skills/github/scripts/gh-org +196 -0
- package/skills/default/skills/plan-page/SKILL.md +300 -0
- package/skills/default/skills/plan-page/assets/index.html +854 -0
- package/skills/default/skills/plan-page/scripts/inline +46 -0
- package/skills/default/skills/plan-page/scripts/stage +26 -0
- package/skills/default/skills/secrets/SKILL.md +134 -0
- package/skills/default/skills/secrets/scripts/secrets-check +87 -0
- package/skills/default/skills/writing-style/SKILL.md +45 -0
- package/skills/extra/.claude-plugin/plugin.json +5 -0
- package/skills/extra/skills/artifacts/SKILL.md +52 -0
- package/skills/extra/skills/github-actions/SKILL.md +78 -0
- package/skills/extra/skills/github-actions/scan +32 -0
- package/skills/extra/skills/markdown-review/SKILL.md +70 -0
- package/skills/extra/skills/markdown-review/assets/index.html +201 -0
- package/skills/extra/skills/markdown-review/scripts/stage +36 -0
- package/skills/extra/skills/mise-usage/SKILL.md +155 -0
- package/skills/extra/skills/plugin-authoring/SKILL.md +317 -0
- package/skills/extra/skills/project-conventions/SKILL.md +64 -0
- package/skills/extra/skills/questions/SKILL.md +156 -0
- package/skills/extra/skills/questions/assets/index.html +376 -0
- package/skills/extra/skills/questions/scripts/stage +26 -0
- package/skills/extra/skills/serve/SKILL.md +165 -0
- package/skills/extra/skills/serve/scripts/serve +268 -0
- package/skills/extra/skills/serve/scripts/server.py +345 -0
- package/skills/extra/skills/skill-dependencies/SKILL.md +65 -0
- package/skills/extra/skills/skill-maintenance/SKILL.md +101 -0
- package/skills/extra/skills/ticketing/SKILL.md +125 -0
package/build/handler.js
ADDED
|
@@ -0,0 +1,716 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
enable_verbose_errors,
|
|
4
|
+
set_assets,
|
|
5
|
+
set_fix_stack_trace,
|
|
6
|
+
set_manifest,
|
|
7
|
+
set_read_implementation
|
|
8
|
+
} from "./chunk-NVNLDPUJ.js";
|
|
9
|
+
import {
|
|
10
|
+
SvelteKitError
|
|
11
|
+
} from "./chunk-SU26PJVX.js";
|
|
12
|
+
import "./chunk-WWJ3F4QS.js";
|
|
13
|
+
import "./chunk-U5BSBG4R.js";
|
|
14
|
+
import "./chunk-LFP3UPCM.js";
|
|
15
|
+
|
|
16
|
+
// build/server/adapter-node-env.js
|
|
17
|
+
import process from "node:process";
|
|
18
|
+
|
|
19
|
+
// build/adapter-node.js
|
|
20
|
+
import { dirname } from "node:path";
|
|
21
|
+
import { fileURLToPath } from "node:url";
|
|
22
|
+
|
|
23
|
+
// build/server/chunks/server.js
|
|
24
|
+
var prerendering = false;
|
|
25
|
+
function set_building() {
|
|
26
|
+
}
|
|
27
|
+
function set_prerendering() {
|
|
28
|
+
prerendering = true;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// build/server/index.js
|
|
32
|
+
async function configure({ building, prerendering: prerendering2, manifest: manifest2, read, assets: assets2, fix_stack_trace, env: env2 }) {
|
|
33
|
+
if (building) {
|
|
34
|
+
set_building();
|
|
35
|
+
enable_verbose_errors();
|
|
36
|
+
}
|
|
37
|
+
if (prerendering2) set_prerendering();
|
|
38
|
+
if (manifest2) set_manifest(manifest2);
|
|
39
|
+
if (read) set_read_implementation(read);
|
|
40
|
+
if (assets2 !== void 0) set_assets(assets2);
|
|
41
|
+
if (fix_stack_trace) set_fix_stack_trace(fix_stack_trace);
|
|
42
|
+
const instance = await import("./instance-NP3FJIWW.js");
|
|
43
|
+
if (env2) instance.set_env(env2);
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
function create_server(manifest2) {
|
|
47
|
+
let server2;
|
|
48
|
+
return {
|
|
49
|
+
init: async ({ env: env2, read }) => {
|
|
50
|
+
server2 = await configure({
|
|
51
|
+
manifest: manifest2,
|
|
52
|
+
env: env2,
|
|
53
|
+
read
|
|
54
|
+
});
|
|
55
|
+
await server2.init();
|
|
56
|
+
},
|
|
57
|
+
/** @type {import('types').ServerInstance['respond']} */
|
|
58
|
+
respond: (request, options) => server2.respond(request, options)
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// build/server/server.js
|
|
63
|
+
var manifest = (() => {
|
|
64
|
+
function __memo(fn) {
|
|
65
|
+
let value;
|
|
66
|
+
return () => value ??= value = fn();
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
app_dir: "_app",
|
|
70
|
+
app_path: "_app",
|
|
71
|
+
assets: /* @__PURE__ */ new Set(["apple-touch-icon.png", "favicon.ico", "favicon.svg", "icon-192.png", "icon-512.png", "icon-maskable-512.png", "icon.svg", "manifest.webmanifest"]),
|
|
72
|
+
mime_types: { ".png": "image/png", ".ico": "image/x-icon", ".svg": "image/svg+xml", ".webmanifest": "application/manifest+json" },
|
|
73
|
+
client: { start: "_app/immutable/entry/start.B7srFiqh.js", app: "_app/immutable/entry/app.0DERehLW.js", imports: ["_app/immutable/entry/start.B7srFiqh.js", "_app/immutable/entry/payload.DSmR2FwN.js", "_app/immutable/chunks/CRzLMJPS.js", "_app/immutable/chunks/C90fLsA5.js", "_app/immutable/chunks/BgFr_EyZ.js", "_app/immutable/chunks/DLT1iIlz.js", "_app/immutable/entry/app.0DERehLW.js"], stylesheets: [], fonts: [], uses_env_dynamic_public: false },
|
|
74
|
+
nodes: [
|
|
75
|
+
__memo(() => import("./0-JP6XL6LB.js")),
|
|
76
|
+
__memo(() => import("./1-A52YZWNS.js")),
|
|
77
|
+
__memo(() => import("./2-CLH2NM6F.js")),
|
|
78
|
+
__memo(() => import("./3-4N467IB6.js")),
|
|
79
|
+
__memo(() => import("./4-WL5H4LUW.js"))
|
|
80
|
+
],
|
|
81
|
+
remotes: {},
|
|
82
|
+
routes: [
|
|
83
|
+
{
|
|
84
|
+
id: "/",
|
|
85
|
+
pattern: /^\/$/,
|
|
86
|
+
params: [],
|
|
87
|
+
page: { layouts: [0], errors: [1], leaf: 2 },
|
|
88
|
+
endpoint: null
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "/act",
|
|
92
|
+
pattern: /^\/act\/?$/,
|
|
93
|
+
params: [],
|
|
94
|
+
page: null,
|
|
95
|
+
endpoint: __memo(() => import("./_server.ts-I7HMTPOA.js"))
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: "/cleanup.json",
|
|
99
|
+
pattern: /^\/cleanup\.json\/?$/,
|
|
100
|
+
params: [],
|
|
101
|
+
page: null,
|
|
102
|
+
endpoint: __memo(() => import("./_server.ts-OJT7HE7M.js"))
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: "/cleanup",
|
|
106
|
+
pattern: /^\/cleanup\/?$/,
|
|
107
|
+
params: [],
|
|
108
|
+
page: null,
|
|
109
|
+
endpoint: __memo(() => import("./_server.ts-5VXGNWV2.js"))
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: "/docs/doc.js",
|
|
113
|
+
pattern: /^\/docs\/doc\.js\/?$/,
|
|
114
|
+
params: [],
|
|
115
|
+
page: null,
|
|
116
|
+
endpoint: __memo(() => import("./_server.ts-OYGWVLZM.js"))
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: "/docs/[org]/[repo]/[slug]/[name]",
|
|
120
|
+
pattern: /^\/docs\/([^/]+?)\/([^/]+?)\/([^/]+?)\/([^/]+?)\/?$/,
|
|
121
|
+
params: [{ "name": "org", "optional": false, "rest": false, "chained": false }, { "name": "repo", "optional": false, "rest": false, "chained": false }, { "name": "slug", "optional": false, "rest": false, "chained": false }, { "name": "name", "optional": false, "rest": false, "chained": false }],
|
|
122
|
+
page: { layouts: [0], errors: [1], leaf: 3 },
|
|
123
|
+
endpoint: null
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "/docs/[org]/[repo]/[slug]/[name]/f/[key]/[version]/[...file]",
|
|
127
|
+
pattern: /^\/docs\/([^/]+?)\/([^/]+?)\/([^/]+?)\/([^/]+?)\/f\/([^/]+?)\/([^/]+?)(?:\/([^]*))?\/?$/,
|
|
128
|
+
params: [{ "name": "org", "optional": false, "rest": false, "chained": false }, { "name": "repo", "optional": false, "rest": false, "chained": false }, { "name": "slug", "optional": false, "rest": false, "chained": false }, { "name": "name", "optional": false, "rest": false, "chained": false }, { "name": "key", "optional": false, "rest": false, "chained": false }, { "name": "version", "optional": false, "rest": false, "chained": false }, { "name": "file", "optional": false, "rest": true, "chained": true }],
|
|
129
|
+
page: null,
|
|
130
|
+
endpoint: __memo(() => import("./_server.ts-Z26EB47B.js"))
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "/focus",
|
|
134
|
+
pattern: /^\/focus\/?$/,
|
|
135
|
+
params: [],
|
|
136
|
+
page: null,
|
|
137
|
+
endpoint: __memo(() => import("./_server.ts-3POPKVEM.js"))
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: "/issue-draft",
|
|
141
|
+
pattern: /^\/issue-draft\/?$/,
|
|
142
|
+
params: [],
|
|
143
|
+
page: null,
|
|
144
|
+
endpoint: __memo(() => import("./_server.ts-5735T2V5.js"))
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: "/issue-groups",
|
|
148
|
+
pattern: /^\/issue-groups\/?$/,
|
|
149
|
+
params: [],
|
|
150
|
+
page: null,
|
|
151
|
+
endpoint: __memo(() => import("./_server.ts-CITUOEM6.js"))
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "/pair",
|
|
155
|
+
pattern: /^\/pair\/?$/,
|
|
156
|
+
params: [],
|
|
157
|
+
page: { layouts: [0], errors: [1], leaf: 4 },
|
|
158
|
+
endpoint: __memo(() => import("./_server.ts-M5BQ4LLX.js"))
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
id: "/secrets",
|
|
162
|
+
pattern: /^\/secrets\/?$/,
|
|
163
|
+
params: [],
|
|
164
|
+
page: null,
|
|
165
|
+
endpoint: __memo(() => import("./_server.ts-A3AA24Z2.js"))
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: "/settings",
|
|
169
|
+
pattern: /^\/settings\/?$/,
|
|
170
|
+
params: [],
|
|
171
|
+
page: null,
|
|
172
|
+
endpoint: __memo(() => import("./_server.ts-3KVBYN6P.js"))
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
id: "/state.json",
|
|
176
|
+
pattern: /^\/state\.json\/?$/,
|
|
177
|
+
params: [],
|
|
178
|
+
page: null,
|
|
179
|
+
endpoint: __memo(() => import("./_server.ts-OB4O27HF.js"))
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
id: "/terminal",
|
|
183
|
+
pattern: /^\/terminal\/?$/,
|
|
184
|
+
params: [],
|
|
185
|
+
page: null,
|
|
186
|
+
endpoint: __memo(() => import("./_server.ts-645KP7WP.js"))
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: "/throttle-release",
|
|
190
|
+
pattern: /^\/throttle-release\/?$/,
|
|
191
|
+
params: [],
|
|
192
|
+
page: null,
|
|
193
|
+
endpoint: __memo(() => import("./_server.ts-WYZYNHUZ.js"))
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: "/track-draft",
|
|
197
|
+
pattern: /^\/track-draft\/?$/,
|
|
198
|
+
params: [],
|
|
199
|
+
page: null,
|
|
200
|
+
endpoint: __memo(() => import("./_server.ts-T75UVMQP.js"))
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
prerendered_routes: /* @__PURE__ */ new Set([]),
|
|
204
|
+
matchers: async () => {
|
|
205
|
+
return {};
|
|
206
|
+
},
|
|
207
|
+
server_assets: {}
|
|
208
|
+
};
|
|
209
|
+
})();
|
|
210
|
+
var server = create_server(manifest);
|
|
211
|
+
|
|
212
|
+
// build/adapter-node.js
|
|
213
|
+
var dir = dirname(fileURLToPath(import.meta.url));
|
|
214
|
+
var base = "";
|
|
215
|
+
var app_path = "_app";
|
|
216
|
+
var origin = void 0;
|
|
217
|
+
var env_prefix = "";
|
|
218
|
+
var mime_types = { ".png": "image/png", ".ico": "image/x-icon", ".svg": "image/svg+xml", ".webmanifest": "application/manifest+json", ".json": "application/json", ".css": "text/css", ".js": "text/javascript", ".map": "application/json" };
|
|
219
|
+
var assets = JSON.parse('{"entries":[["/_app/immutable/assets/0.BGa5ZNDM.css",{"file":"_app/immutable/assets/0.BGa5ZNDM.css","size":39474,"etag":"Y1Ubbr9J0a5p1CMvnDrv3RU-Q1g157GYw3HI7XWd0TE"}],["/_app/immutable/chunks/BUrrLYDt.js",{"file":"_app/immutable/chunks/BUrrLYDt.js","size":6309,"etag":"BtOPgYCLgAEy2ut8rgQaxtyPfYc4nuRhN5DeZPIe8Rw"}],["/_app/immutable/chunks/BUrrLYDt.js.map",{"file":"_app/immutable/chunks/BUrrLYDt.js.map","size":25293,"etag":"ZmAbab5BXAu517jsS9NAUB8FLHnHAUgTJf6z1WxvYVA"}],["/_app/immutable/chunks/BgFr_EyZ.js",{"file":"_app/immutable/chunks/BgFr_EyZ.js","size":53701,"etag":"2brNAUdEfj5ggmDo4ZTocqMS-263i_QTGx4tVl1ibOU"}],["/_app/immutable/chunks/BgFr_EyZ.js.map",{"file":"_app/immutable/chunks/BgFr_EyZ.js.map","size":595014,"etag":"MhIJ7l3FAjU5RqHDKwzHGkGZU_URwvwxq5ORfjE9C7Q"}],["/_app/immutable/chunks/Bjy-W4x2.js",{"file":"_app/immutable/chunks/Bjy-W4x2.js","size":1402,"etag":"l_Yrf2PKccEd21jdVsk1K55CLuaJKiEe89WnbBVYZvQ"}],["/_app/immutable/chunks/Bjy-W4x2.js.map",{"file":"_app/immutable/chunks/Bjy-W4x2.js.map","size":2446,"etag":"G0y_6Cv5nQd9A19z3yDjqKA7WQYv_HkaEApCGyVfgSU"}],["/_app/immutable/chunks/C8qZab0y.js",{"file":"_app/immutable/chunks/C8qZab0y.js","size":126063,"etag":"Sxv8lHmT8IG3J2aClxSPeu23WPf4jBcl2hrD9ahD77s"}],["/_app/immutable/chunks/C8qZab0y.js.map",{"file":"_app/immutable/chunks/C8qZab0y.js.map","size":646251,"etag":"R1QWXP9trToo4c3aSIHWeAo3lQ11E_OKx3ufv2kzbcs"}],["/_app/immutable/chunks/C90fLsA5.js",{"file":"_app/immutable/chunks/C90fLsA5.js","size":42370,"etag":"8oPIyvYHTmPWJYvu95GkLhApsU7vq4aVD86EZEGceg0"}],["/_app/immutable/chunks/C90fLsA5.js.map",{"file":"_app/immutable/chunks/C90fLsA5.js.map","size":353811,"etag":"FX7OGlAj0osGnPpYVVytNVULqItDimPXEo3m3pKFTBA"}],["/_app/immutable/chunks/CRzLMJPS.js",{"file":"_app/immutable/chunks/CRzLMJPS.js","size":1534,"etag":"vMRl4-Ydw4eKaf-pXMtTy4LZWxY5raIjQgsoHr0VAEg"}],["/_app/immutable/chunks/DLT1iIlz.js",{"file":"_app/immutable/chunks/DLT1iIlz.js","size":4385,"etag":"jAIXqIZEdKk_kEjCKcnS2PBvh8MD4nvSd_znXyGiHVc"}],["/_app/immutable/chunks/DLT1iIlz.js.map",{"file":"_app/immutable/chunks/DLT1iIlz.js.map","size":45794,"etag":"-cqnZSPpOuCIw_osNIEgNJtv1sNf_cEtUiflEHk93Y8"}],["/_app/immutable/chunks/pIrVVOVY.js",{"file":"_app/immutable/chunks/pIrVVOVY.js","size":6164,"etag":"qJVKABVtr2Od1Js1qqSCUmNiYtbwGnV8kux_fdVVLIE"}],["/_app/immutable/chunks/pIrVVOVY.js.map",{"file":"_app/immutable/chunks/pIrVVOVY.js.map","size":10688,"etag":"amXgfXCOORESYaFHfyykieX9AK-B1CMtzHduy3sH1tM"}],["/_app/immutable/entry/app.0DERehLW.js",{"file":"_app/immutable/entry/app.0DERehLW.js","size":1495,"etag":"HTrsFAfRvoDhcd-8Nzk4rc7xY3ABj2EzSR942dRkKbQ"}],["/_app/immutable/entry/app.0DERehLW.js.map",{"file":"_app/immutable/entry/app.0DERehLW.js.map","size":2085,"etag":"T5EQsYHh9pyd0qMrUpms_RgHburtwCmD1mxiiApgQx0"}],["/_app/immutable/entry/payload.DSmR2FwN.js",{"file":"_app/immutable/entry/payload.DSmR2FwN.js","size":110,"etag":"5C64PZk_2Ey2wvAx3hdiw1C_EUw96PB6naN2eEK3mIs"}],["/_app/immutable/entry/payload.DSmR2FwN.js.map",{"file":"_app/immutable/entry/payload.DSmR2FwN.js.map","size":1076,"etag":"JNZ2CgSfegyhqAE0SKnjkPAI98ujHA5JWwvqVWUCXLA"}],["/_app/immutable/entry/start.B7srFiqh.js",{"file":"_app/immutable/entry/start.B7srFiqh.js","size":565,"etag":"W2AlvbVRvXkHLhgKDwH5aOu8R3I4hFKGernujdtcpQg"}],["/_app/immutable/entry/start.B7srFiqh.js.map",{"file":"_app/immutable/entry/start.B7srFiqh.js.map","size":1493,"etag":"Sj6CrSIml4jSjermSwVo5O35KWn2DI9dYLhzAkTM3MQ"}],["/_app/immutable/nodes/0.aD9vJoxR.js",{"file":"_app/immutable/nodes/0.aD9vJoxR.js","size":1306,"etag":"0s-1X4GtNO9skQ_pbwX88dYuReN74uD_CeOQxutyPbM"}],["/_app/immutable/nodes/0.aD9vJoxR.js.map",{"file":"_app/immutable/nodes/0.aD9vJoxR.js.map","size":5301023,"etag":"jpEE14LvB4ZSY2RxeYoF6SAfepqiiiCPNACDQO4AORw"}],["/_app/immutable/nodes/1.Br4FL91i.js",{"file":"_app/immutable/nodes/1.Br4FL91i.js","size":364,"etag":"scpPv4kQnDhzK76-adiugDAMjXJWdTUCleOkT-PZHXU"}],["/_app/immutable/nodes/1.Br4FL91i.js.map",{"file":"_app/immutable/nodes/1.Br4FL91i.js.map","size":934,"etag":"RxXp00sVeNiK9bKjYCglLza6e0MZUzK7MbbEsLe1VM4"}],["/_app/immutable/nodes/2.vl6OYfu3.js",{"file":"_app/immutable/nodes/2.vl6OYfu3.js","size":236633,"etag":"8oH82uAreiE7C13DV3We3vb2sQNrKImNP2Mof6l6Q0E"}],["/_app/immutable/nodes/2.vl6OYfu3.js.map",{"file":"_app/immutable/nodes/2.vl6OYfu3.js.map","size":686703,"etag":"iSvzJFVpxTa4xr68CRXFkEfznlx6_zy6ZaTLSMmoiq0"}],["/_app/immutable/nodes/3.VYqJOLAF.js",{"file":"_app/immutable/nodes/3.VYqJOLAF.js","size":1242,"etag":"NdTg-CBUfK6QntsCBjp92A3cCCWE3JpW9DkyJeycYrQ"}],["/_app/immutable/nodes/3.VYqJOLAF.js.map",{"file":"_app/immutable/nodes/3.VYqJOLAF.js.map","size":3365,"etag":"HZbWtT2Nw5EFFLCyafMJ2CKe_JETqlZAJwaCFmDRJJM"}],["/_app/immutable/nodes/4.jF9UVlFN.js",{"file":"_app/immutable/nodes/4.jF9UVlFN.js","size":5586,"etag":"uWR1EH1fCf2uxRtUwvyVt_LGIqd64TvpeNsYMuaYMA4"}],["/_app/immutable/nodes/4.jF9UVlFN.js.map",{"file":"_app/immutable/nodes/4.jF9UVlFN.js.map","size":17275,"etag":"qSndykPtpty17vtGaBakOW4_VEduSScyW4crzo5D3c0"}],["/_app/version.json",{"file":"_app/version.json","size":27,"etag":"GSIBGgo1-Ua-mihyiZuK7pdjn17l7Hgmmoz3C4OVqUM"}],["/apple-touch-icon.png",{"file":"apple-touch-icon.png","size":8466,"etag":"6AilkCcHfnJcDiiGvZ0mUGlNLXc9t5qN3n7RSQ2rKrE"}],["/favicon.ico",{"file":"favicon.ico","size":28974,"etag":"0_QZ2IeYbfJ3rDEPrwHiYLXCMl6fq4CMM9T9ZREoJcw"}],["/favicon.svg",{"file":"favicon.svg","size":4232,"etag":"_DFUQIx4sgsGECDIe_4jJ-wLKRlcJwvvXOPxTaPJ8BE"}],["/icon-192.png",{"file":"icon-192.png","size":10774,"etag":"DJuqd1QpL3O6CCIsoT78s52Di-yEvk5B9ERW1IF5hOs"}],["/icon-512.png",{"file":"icon-512.png","size":30178,"etag":"GVeOuOp8G3NoFt5UB4sCc5K1wBBzaUgH_KtB3U2zoTk"}],["/icon-maskable-512.png",{"file":"icon-maskable-512.png","size":21308,"etag":"tmghGd-M04Ri7MkaKklD3mExbn9WoAdbbmzN8qnoMQU"}],["/icon.svg",{"file":"icon.svg","size":4121,"etag":"Oao1GXTPX_HJpOA4RBH13_0gGoBzz_9_9iJZNsIQSFE"}],["/manifest.webmanifest",{"file":"manifest.webmanifest","size":504,"etag":"PbRDG6wAMNg9wmB7nf2v2mdN1abF_bo_3ocaJ6KSzhY"}]],"aliases":[]}');
|
|
220
|
+
var prerendered_assets = JSON.parse('{"entries":[],"aliases":[]}');
|
|
221
|
+
|
|
222
|
+
// build/server/adapter-node-env.js
|
|
223
|
+
var expected = /* @__PURE__ */ new Set([
|
|
224
|
+
"SOCKET_PATH",
|
|
225
|
+
"HOST",
|
|
226
|
+
"PORT",
|
|
227
|
+
"XFF_DEPTH",
|
|
228
|
+
"ADDRESS_HEADER",
|
|
229
|
+
"PROTOCOL_HEADER",
|
|
230
|
+
"HOST_HEADER",
|
|
231
|
+
"PORT_HEADER",
|
|
232
|
+
"BODY_SIZE_LIMIT",
|
|
233
|
+
"SHUTDOWN_TIMEOUT",
|
|
234
|
+
"IDLE_TIMEOUT",
|
|
235
|
+
"KEEP_ALIVE_TIMEOUT",
|
|
236
|
+
"HEADERS_TIMEOUT"
|
|
237
|
+
]);
|
|
238
|
+
var expected_unprefixed = /* @__PURE__ */ new Set(["LISTEN_PID", "LISTEN_FDS"]);
|
|
239
|
+
if (env_prefix) {
|
|
240
|
+
for (const name in process.env) if (name.startsWith(env_prefix)) {
|
|
241
|
+
const unprefixed = name.slice(env_prefix.length);
|
|
242
|
+
if (!expected.has(unprefixed)) throw new Error(`You should change envPrefix (${env_prefix}) to avoid conflicts with existing environment variables \u2014 unexpectedly saw ${name}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function env(name, fallback) {
|
|
246
|
+
const prefixed = (expected_unprefixed.has(name) ? "" : env_prefix) + name;
|
|
247
|
+
return prefixed in process.env ? process.env[prefixed] : fallback;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// build/server/adapter-node-handler.js
|
|
251
|
+
import fs from "node:fs";
|
|
252
|
+
import path from "node:path";
|
|
253
|
+
import process2 from "node:process";
|
|
254
|
+
|
|
255
|
+
// node_modules/.pnpm/@sveltejs+kit@3.1.1_@sveltejs+vite-plugin-svelte@7.3.1_svelte@5.57.3_vite@8.3.5_@types+_5f9037060038b4818f2cc347056790f8/node_modules/@sveltejs/kit/src/exports/node/index.js
|
|
256
|
+
import { createReadStream } from "node:fs";
|
|
257
|
+
import { Readable } from "node:stream";
|
|
258
|
+
|
|
259
|
+
// node_modules/.pnpm/@sveltejs+kit@3.1.1_@sveltejs+vite-plugin-svelte@7.3.1_svelte@5.57.3_vite@8.3.5_@types+_5f9037060038b4818f2cc347056790f8/node_modules/@sveltejs/kit/src/utils/functions.js
|
|
260
|
+
function noop() {
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// node_modules/.pnpm/@sveltejs+kit@3.1.1_@sveltejs+vite-plugin-svelte@7.3.1_svelte@5.57.3_vite@8.3.5_@types+_5f9037060038b4818f2cc347056790f8/node_modules/@sveltejs/kit/src/exports/node/index.js
|
|
264
|
+
var body_data_listeners = /* @__PURE__ */ new WeakMap();
|
|
265
|
+
function get_raw_body(req, body_size_limit2) {
|
|
266
|
+
const h = req.headers;
|
|
267
|
+
const content_length = Number(h["content-length"]);
|
|
268
|
+
const has_content_length = Number.isFinite(content_length);
|
|
269
|
+
if (req.httpVersionMajor === 1 && !has_content_length && h["transfer-encoding"] == null || content_length === 0) {
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
272
|
+
if (req.destroyed) {
|
|
273
|
+
const readable = new ReadableStream();
|
|
274
|
+
void readable.cancel();
|
|
275
|
+
return readable;
|
|
276
|
+
}
|
|
277
|
+
let size = 0;
|
|
278
|
+
let cancelled = false;
|
|
279
|
+
return new ReadableStream({
|
|
280
|
+
start(controller) {
|
|
281
|
+
if (body_size_limit2 !== void 0 && has_content_length && content_length > body_size_limit2) {
|
|
282
|
+
const error = new SvelteKitError(
|
|
283
|
+
413,
|
|
284
|
+
"Payload Too Large",
|
|
285
|
+
`Content-length of ${content_length} exceeds limit of ${body_size_limit2} bytes.`
|
|
286
|
+
);
|
|
287
|
+
controller.error(error);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const on_error = (error) => {
|
|
291
|
+
cancelled = true;
|
|
292
|
+
controller.error(error);
|
|
293
|
+
};
|
|
294
|
+
const on_end = () => {
|
|
295
|
+
if (cancelled) return;
|
|
296
|
+
controller.close();
|
|
297
|
+
};
|
|
298
|
+
const on_data = (chunk) => {
|
|
299
|
+
if (cancelled) return;
|
|
300
|
+
size += chunk.length;
|
|
301
|
+
if (body_size_limit2 !== void 0 && size > body_size_limit2) {
|
|
302
|
+
cancelled = true;
|
|
303
|
+
const message = `request body size exceeded BODY_SIZE_LIMIT of ${body_size_limit2}`;
|
|
304
|
+
const error = new SvelteKitError(413, "Payload Too Large", message);
|
|
305
|
+
controller.error(error);
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (has_content_length && size > content_length) {
|
|
309
|
+
cancelled = true;
|
|
310
|
+
const message = `request body size exceeded content-length of ${content_length}`;
|
|
311
|
+
const error = new SvelteKitError(413, "Payload Too Large", message);
|
|
312
|
+
controller.error(error);
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
controller.enqueue(chunk);
|
|
316
|
+
if (controller.desiredSize === null || controller.desiredSize <= 0) {
|
|
317
|
+
req.pause();
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
req.on("error", on_error);
|
|
321
|
+
req.on("end", on_end);
|
|
322
|
+
req.on("data", on_data);
|
|
323
|
+
body_data_listeners.set(req, on_data);
|
|
324
|
+
},
|
|
325
|
+
pull() {
|
|
326
|
+
req.resume();
|
|
327
|
+
},
|
|
328
|
+
cancel(reason) {
|
|
329
|
+
cancelled = true;
|
|
330
|
+
req.destroy(reason);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
function getRequest({ request, response, base: base2, bodySizeLimit }) {
|
|
335
|
+
let headers = (
|
|
336
|
+
/** @type {Record<string, string>} */
|
|
337
|
+
request.headers
|
|
338
|
+
);
|
|
339
|
+
if (request.httpVersionMajor >= 2) {
|
|
340
|
+
headers = Object.assign({}, headers);
|
|
341
|
+
if (headers[":authority"]) {
|
|
342
|
+
headers.host = headers[":authority"];
|
|
343
|
+
}
|
|
344
|
+
delete headers[":authority"];
|
|
345
|
+
delete headers[":method"];
|
|
346
|
+
delete headers[":path"];
|
|
347
|
+
delete headers[":scheme"];
|
|
348
|
+
}
|
|
349
|
+
const controller = new AbortController();
|
|
350
|
+
request.once("close", () => {
|
|
351
|
+
if (request.readableAborted) {
|
|
352
|
+
controller.abort();
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
response?.once("close", () => {
|
|
356
|
+
if (!response.writableEnded) {
|
|
357
|
+
controller.abort();
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
return new Request(base2 + request.url, {
|
|
361
|
+
// @ts-expect-error
|
|
362
|
+
duplex: "half",
|
|
363
|
+
method: request.method,
|
|
364
|
+
headers: Object.entries(headers),
|
|
365
|
+
signal: controller.signal,
|
|
366
|
+
body: request.method === "GET" || request.method === "HEAD" ? void 0 : get_raw_body(request, bodySizeLimit)
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
function drain_request(res) {
|
|
370
|
+
const req = res.req;
|
|
371
|
+
if (!req || req.readableEnded || req.destroyed) return;
|
|
372
|
+
const on_data = body_data_listeners.get(req);
|
|
373
|
+
if (on_data) {
|
|
374
|
+
req.removeListener("data", on_data);
|
|
375
|
+
body_data_listeners.delete(req);
|
|
376
|
+
}
|
|
377
|
+
req.resume();
|
|
378
|
+
}
|
|
379
|
+
function setResponse(res, response) {
|
|
380
|
+
res.once("finish", () => drain_request(res));
|
|
381
|
+
res.once("close", () => drain_request(res));
|
|
382
|
+
for (const [key, value] of response.headers) {
|
|
383
|
+
try {
|
|
384
|
+
res.setHeader(key, key === "set-cookie" ? response.headers.getSetCookie() : value);
|
|
385
|
+
} catch (error) {
|
|
386
|
+
res.getHeaderNames().forEach((name) => res.removeHeader(name));
|
|
387
|
+
res.writeHead(500).end(String(error));
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (!response.body) {
|
|
392
|
+
res.writeHead(response.status);
|
|
393
|
+
res.end();
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
if (response.body.locked) {
|
|
397
|
+
res.writeHead(response.status);
|
|
398
|
+
res.end(
|
|
399
|
+
"Fatal error: Response body is locked. This can happen when the response was already read (for example through 'response.json()' or 'response.text()')."
|
|
400
|
+
);
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
const reader = response.body.getReader();
|
|
404
|
+
if (res.destroyed) {
|
|
405
|
+
void reader.cancel();
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
const cancel = (error) => {
|
|
409
|
+
res.off("close", cancel);
|
|
410
|
+
res.off("error", cancel);
|
|
411
|
+
reader.cancel(error).catch(noop);
|
|
412
|
+
if (error) res.destroy(error);
|
|
413
|
+
};
|
|
414
|
+
res.on("close", cancel);
|
|
415
|
+
res.on("error", cancel);
|
|
416
|
+
const buffered = [];
|
|
417
|
+
let pending = null;
|
|
418
|
+
void probe();
|
|
419
|
+
async function probe() {
|
|
420
|
+
try {
|
|
421
|
+
const deadline = new Promise((fulfil) => setImmediate(() => fulfil(void 0)));
|
|
422
|
+
while (buffered.length < 2) {
|
|
423
|
+
pending = reader.read();
|
|
424
|
+
const result = await Promise.race([pending, deadline]);
|
|
425
|
+
if (!result) break;
|
|
426
|
+
pending = null;
|
|
427
|
+
if (result.done) {
|
|
428
|
+
if (!res.hasHeader("content-length") && !res.hasHeader("transfer-encoding")) {
|
|
429
|
+
res.setHeader(
|
|
430
|
+
"content-length",
|
|
431
|
+
buffered.reduce((total, chunk) => total + chunk.byteLength, 0)
|
|
432
|
+
);
|
|
433
|
+
}
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
buffered.push(result.value);
|
|
437
|
+
}
|
|
438
|
+
if (res.destroyed) return;
|
|
439
|
+
res.writeHead(response.status);
|
|
440
|
+
await next();
|
|
441
|
+
} catch (error) {
|
|
442
|
+
if (!res.headersSent) res.writeHead(response.status);
|
|
443
|
+
cancel(error instanceof Error ? error : new Error(String(error)));
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
async function next() {
|
|
447
|
+
try {
|
|
448
|
+
for (; ; ) {
|
|
449
|
+
let result;
|
|
450
|
+
if (buffered.length > 0) {
|
|
451
|
+
result = {
|
|
452
|
+
done: false,
|
|
453
|
+
value: (
|
|
454
|
+
/** @type {Uint8Array<ArrayBuffer>} */
|
|
455
|
+
buffered.shift()
|
|
456
|
+
)
|
|
457
|
+
};
|
|
458
|
+
} else if (pending) {
|
|
459
|
+
result = await pending;
|
|
460
|
+
pending = null;
|
|
461
|
+
} else {
|
|
462
|
+
result = await reader.read();
|
|
463
|
+
}
|
|
464
|
+
const { done, value } = result;
|
|
465
|
+
if (done) break;
|
|
466
|
+
if (!res.write(value)) {
|
|
467
|
+
res.once("drain", next);
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
res.end();
|
|
472
|
+
} catch (error) {
|
|
473
|
+
cancel(error instanceof Error ? error : new Error(String(error)));
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
function createReadableStream(file) {
|
|
478
|
+
return (
|
|
479
|
+
/** @type {ReadableStream} */
|
|
480
|
+
Readable.toWeb(createReadStream(file))
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// build/server/adapter-node-handler.js
|
|
485
|
+
import { pipeline } from "node:stream";
|
|
486
|
+
function parse_as_bytes(value) {
|
|
487
|
+
const multiplier = {
|
|
488
|
+
K: 1024,
|
|
489
|
+
M: 1048576,
|
|
490
|
+
G: 1073741824
|
|
491
|
+
}[value[value.length - 1]?.toUpperCase()] ?? 1;
|
|
492
|
+
return Number(multiplier != 1 ? value.substring(0, value.length - 1) : value) * multiplier;
|
|
493
|
+
}
|
|
494
|
+
function split_url(req) {
|
|
495
|
+
let pathname = req.url;
|
|
496
|
+
let search = "";
|
|
497
|
+
const query_index = pathname.indexOf("?");
|
|
498
|
+
if (query_index !== -1) {
|
|
499
|
+
search = pathname.slice(query_index);
|
|
500
|
+
pathname = pathname.slice(0, query_index);
|
|
501
|
+
}
|
|
502
|
+
if (pathname.includes("%")) try {
|
|
503
|
+
pathname = pathname.split("%25").map(decodeURI).join("%25");
|
|
504
|
+
} catch {
|
|
505
|
+
}
|
|
506
|
+
return {
|
|
507
|
+
pathname,
|
|
508
|
+
search
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
function relative_pathname(from, to) {
|
|
512
|
+
const segment = to.replace(/\/$/, "").split("/").at(-1);
|
|
513
|
+
return from.endsWith("/") ? `../${segment}` : `./${segment}/`;
|
|
514
|
+
}
|
|
515
|
+
function negotiate(header, asset) {
|
|
516
|
+
if (!header || !(asset.br || asset.gz)) return;
|
|
517
|
+
const weights = /* @__PURE__ */ new Map();
|
|
518
|
+
for (const part of header.toLowerCase().split(",")) {
|
|
519
|
+
const [coding, ...params] = part.split(";");
|
|
520
|
+
let weight2 = 1;
|
|
521
|
+
for (const param of params) {
|
|
522
|
+
const [name, value] = param.split("=");
|
|
523
|
+
if (name.trim() === "q") weight2 = parseFloat(value) || 0;
|
|
524
|
+
}
|
|
525
|
+
weights.set(coding.trim(), weight2);
|
|
526
|
+
}
|
|
527
|
+
const weight = (coding) => weights.get(coding) ?? weights.get("*") ?? 0;
|
|
528
|
+
const br = asset.br ? weight("br") : 0;
|
|
529
|
+
if ((asset.gz ? weight("gzip") : 0) > br) return "gz";
|
|
530
|
+
if (br > 0) return "br";
|
|
531
|
+
}
|
|
532
|
+
function etag_matches(header, etag) {
|
|
533
|
+
if (!header) return false;
|
|
534
|
+
if (header.trim() === "*") return true;
|
|
535
|
+
return header.split(",").some((tag) => tag.trim().replace(/^W\//, "") === etag);
|
|
536
|
+
}
|
|
537
|
+
function resolve(dir2, table, mime_types2) {
|
|
538
|
+
const files = /* @__PURE__ */ new Map();
|
|
539
|
+
for (const [key, entry] of table.entries) {
|
|
540
|
+
let type = mime_types2[entry.file.slice(entry.file.lastIndexOf("."))];
|
|
541
|
+
if (type === "text/html") type += ";charset=utf-8";
|
|
542
|
+
files.set(key, {
|
|
543
|
+
...entry,
|
|
544
|
+
file: path.join(dir2, entry.file),
|
|
545
|
+
type
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
for (const [alias, key] of table.aliases) files.set(alias, files.get(key));
|
|
549
|
+
return files;
|
|
550
|
+
}
|
|
551
|
+
function create_file_map({ dir: dir2, base: base2, app_path: app_path2, mime_types: mime_types2, assets: assets2, prerendered_assets: prerendered_assets2 }) {
|
|
552
|
+
const files = resolve(`${dir2}/client${base2}`, assets2, mime_types2);
|
|
553
|
+
const immutable = `/${app_path2}/immutable/`;
|
|
554
|
+
for (const [key, asset] of files) if (key.startsWith(immutable))
|
|
555
|
+
asset.cache_control = "public,max-age=31536000,immutable";
|
|
556
|
+
const prerendered = resolve(`${dir2}/prerendered${base2}`, prerendered_assets2, mime_types2);
|
|
557
|
+
for (const [key, asset] of prerendered) if (!files.has(key)) files.set(key, asset);
|
|
558
|
+
for (const key of prerendered.keys()) {
|
|
559
|
+
const inverted = key.at(-1) === "/" ? key.slice(0, -1) : key + "/";
|
|
560
|
+
if (inverted && !files.has(inverted)) files.set(inverted, { location: relative_pathname(inverted, key) });
|
|
561
|
+
}
|
|
562
|
+
return files;
|
|
563
|
+
}
|
|
564
|
+
function serve_static(files) {
|
|
565
|
+
return (req, res, next) => {
|
|
566
|
+
const { pathname, search } = split_url(req);
|
|
567
|
+
const asset = files.get(pathname);
|
|
568
|
+
if (!asset) return next();
|
|
569
|
+
if (req.method !== "GET" && req.method !== "HEAD") {
|
|
570
|
+
res.writeHead(405, { allow: "GET, HEAD" }).end();
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
if ("location" in asset) {
|
|
574
|
+
res.writeHead(308, { location: asset.location + search }).end();
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
let file = asset.file;
|
|
578
|
+
let size = asset.size;
|
|
579
|
+
let etag = `"${asset.etag}"`;
|
|
580
|
+
const variant = negotiate(req.headers["accept-encoding"], asset);
|
|
581
|
+
if (variant) {
|
|
582
|
+
size = asset[variant];
|
|
583
|
+
file += `.${variant}`;
|
|
584
|
+
etag = `"${asset.etag}.${variant}"`;
|
|
585
|
+
}
|
|
586
|
+
const headers = { etag };
|
|
587
|
+
if (asset.br || asset.gz) headers.vary = "Accept-Encoding";
|
|
588
|
+
if (asset.cache_control) headers["cache-control"] = asset.cache_control;
|
|
589
|
+
if (etag_matches(req.headers["if-none-match"], etag)) {
|
|
590
|
+
res.writeHead(304, headers).end();
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
headers["content-length"] = size;
|
|
594
|
+
headers["accept-ranges"] = "bytes";
|
|
595
|
+
if (asset.type) headers["content-type"] = asset.type;
|
|
596
|
+
if (variant) headers["content-encoding"] = variant === "gz" ? "gzip" : "br";
|
|
597
|
+
const range = {};
|
|
598
|
+
let status = 200;
|
|
599
|
+
const if_range = req.headers["if-range"];
|
|
600
|
+
if (req.headers.range && (!if_range || if_range === etag)) {
|
|
601
|
+
const match = /^bytes=(\d*)-(\d*)$/.exec(req.headers.range);
|
|
602
|
+
if (match && (match[1] || match[2])) {
|
|
603
|
+
let start = match[1] ? parseInt(match[1], 10) : NaN;
|
|
604
|
+
let end = match[2] ? parseInt(match[2], 10) : size - 1;
|
|
605
|
+
if (isNaN(start)) {
|
|
606
|
+
start = Math.max(size - end, 0);
|
|
607
|
+
end = size - 1;
|
|
608
|
+
} else end = Math.min(end, size - 1);
|
|
609
|
+
if (start >= size || start > end) {
|
|
610
|
+
res.writeHead(416, { "content-range": `bytes */${size}` }).end();
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
status = 206;
|
|
614
|
+
headers["content-range"] = `bytes ${start}-${end}/${size}`;
|
|
615
|
+
headers["content-length"] = end - start + 1;
|
|
616
|
+
range.start = start;
|
|
617
|
+
range.end = end;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
res.writeHead(status, headers);
|
|
621
|
+
if (req.method === "HEAD") {
|
|
622
|
+
res.end();
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
pipeline(fs.createReadStream(file, range), res, () => {
|
|
626
|
+
});
|
|
627
|
+
};
|
|
628
|
+
}
|
|
629
|
+
var xff_depth = parseInt(env("XFF_DEPTH", "1"));
|
|
630
|
+
var address_header = env("ADDRESS_HEADER", "").toLowerCase();
|
|
631
|
+
var protocol_header = env("PROTOCOL_HEADER", "").toLowerCase();
|
|
632
|
+
var host_header = env("HOST_HEADER", "").toLowerCase();
|
|
633
|
+
var port_header = env("PORT_HEADER", "").toLowerCase();
|
|
634
|
+
var body_size_limit = parse_as_bytes(env("BODY_SIZE_LIMIT", "512K"));
|
|
635
|
+
if (isNaN(body_size_limit)) throw new Error(`Invalid BODY_SIZE_LIMIT: '${env("BODY_SIZE_LIMIT")}'. Please provide a numeric value.`);
|
|
636
|
+
var asset_dir = `${dir}/client${base}`;
|
|
637
|
+
await server.init({
|
|
638
|
+
env: process2.env,
|
|
639
|
+
read: (file) => createReadableStream(`${asset_dir}/${file}`)
|
|
640
|
+
});
|
|
641
|
+
var ssr = async (req, res) => {
|
|
642
|
+
let request;
|
|
643
|
+
let request_origin = origin;
|
|
644
|
+
if (!request_origin) try {
|
|
645
|
+
request_origin = get_origin(req.headers);
|
|
646
|
+
} catch (error) {
|
|
647
|
+
console.error(`Could not determine request origin: ${error instanceof Error ? error.message : String(error)}`);
|
|
648
|
+
res.statusCode = 400;
|
|
649
|
+
res.end("Bad Request");
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
try {
|
|
653
|
+
request = getRequest({
|
|
654
|
+
base: request_origin,
|
|
655
|
+
request: req,
|
|
656
|
+
response: res,
|
|
657
|
+
bodySizeLimit: body_size_limit
|
|
658
|
+
});
|
|
659
|
+
} catch {
|
|
660
|
+
res.statusCode = 400;
|
|
661
|
+
res.end("Bad Request");
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
664
|
+
const response = await server.respond(request, {
|
|
665
|
+
platform: { req },
|
|
666
|
+
getClientAddress: () => {
|
|
667
|
+
if (address_header) {
|
|
668
|
+
if (!(address_header in req.headers)) throw new Error(`Address header was specified with ${env_prefix + "ADDRESS_HEADER"}=${address_header} but is absent from request`);
|
|
669
|
+
const value = req.headers[address_header] || "";
|
|
670
|
+
if (address_header === "x-forwarded-for") {
|
|
671
|
+
const addresses = value.split(",");
|
|
672
|
+
if (xff_depth < 1) throw new Error(`${env_prefix + "XFF_DEPTH"} must be a positive integer`);
|
|
673
|
+
if (xff_depth > addresses.length) throw new Error(`${env_prefix + "XFF_DEPTH"} is ${xff_depth}, but only found ${addresses.length} addresses`);
|
|
674
|
+
return addresses[addresses.length - xff_depth].trim();
|
|
675
|
+
}
|
|
676
|
+
return value;
|
|
677
|
+
}
|
|
678
|
+
return req.connection?.remoteAddress || req.connection?.socket?.remoteAddress || req.socket?.remoteAddress || req.info?.remoteAddress;
|
|
679
|
+
}
|
|
680
|
+
});
|
|
681
|
+
if (response.headers.get("content-type") === "text/event-stream") res.setHeader("x-accel-buffering", "no");
|
|
682
|
+
setResponse(res, response);
|
|
683
|
+
};
|
|
684
|
+
function normalise_header(name, value) {
|
|
685
|
+
if (!name) return void 0;
|
|
686
|
+
if (Array.isArray(value)) {
|
|
687
|
+
if (value.length === 0) return void 0;
|
|
688
|
+
if (value.length === 1) return value[0];
|
|
689
|
+
throw new Error(`Multiple values provided for ${name} header where only one expected: ${value}`);
|
|
690
|
+
}
|
|
691
|
+
return value;
|
|
692
|
+
}
|
|
693
|
+
function get_origin(headers) {
|
|
694
|
+
const protocol = decodeURIComponent(normalise_header(protocol_header, headers[protocol_header]) || "https");
|
|
695
|
+
if (protocol.includes(":")) throw new Error(`The ${protocol_header} header specified ${protocol} which is an invalid because it includes \`:\`. It should only contain the protocol scheme (e.g. \`https\`)`);
|
|
696
|
+
const host = normalise_header(host_header, headers[host_header]) || normalise_header("host", headers["host"]);
|
|
697
|
+
if (!host) {
|
|
698
|
+
const header_names = host_header ? `${host_header} or host headers` : "host header";
|
|
699
|
+
throw new Error(`Could not determine host. The request must have a value provided by the ${header_names}`);
|
|
700
|
+
}
|
|
701
|
+
const port = normalise_header(port_header, headers[port_header]);
|
|
702
|
+
if (port && isNaN(+port)) throw new Error(`The ${port_header} header specified ${port} which is an invalid port because it is not a number. The value should only contain the port number (e.g. 443)`);
|
|
703
|
+
return port ? `${protocol}://${host}:${port}` : `${protocol}://${host}`;
|
|
704
|
+
}
|
|
705
|
+
var serve = serve_static(create_file_map({
|
|
706
|
+
dir,
|
|
707
|
+
base,
|
|
708
|
+
app_path,
|
|
709
|
+
mime_types,
|
|
710
|
+
assets,
|
|
711
|
+
prerendered_assets
|
|
712
|
+
}));
|
|
713
|
+
var handler = (req, res, next) => serve(req, res, () => ssr(req, res, next));
|
|
714
|
+
export {
|
|
715
|
+
handler
|
|
716
|
+
};
|