authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-07-09 22:34:07-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-10-14 02:40:46-07:00
log4806d9a59255af0ae518db8cc5e8e911ac484997
treefe545a2adb3ae808ad683f32bcf2abb27bc6166d
parent7bda48ef5d8953025b6c2bd49458753b0199f30b
signature Commit is signed but in an unrecognized format.

setup source of truth server


10 files changed, 341 insertions(+), 277 deletions(-)

.dockerignore created+4
...@@ -0,0 +1,4 @@
1.clover
2.env
3node_modules
4
.gitignore+1
...@@ -1,3 +1,4 @@...@@ -1,3 +1,4 @@
1.clover 1.clover
2.env
2node_modules 3node_modules
3 4
framework/backend/entry-node.ts+7-1
...@@ -1,6 +1,8 @@...@@ -1,6 +1,8 @@
1import "@paperclover/console/inject";1import "@paperclover/console/inject";
2import "#debug";2import "#debug";
33
4const app = require(globalThis.CLOVER_SERVER_ENTRY ?? process.argv[2]);
5
4const protocol = "http";6const protocol = "http";
57
6const server = serve({8const server = serve({
...@@ -29,7 +31,11 @@ process.on("SIGTERM", () => {...@@ -29,7 +31,11 @@ process.on("SIGTERM", () => {
29 });31 });
30});32});
3133
32import app from "#backend";34declare global {
35 /* Control via --define:globalThis.CLOVER_SERVER_ENTRY="..." */
36 var CLOVER_SERVER_ENTRY: string;
37}
38
33import url from "node:url";39import url from "node:url";
34import { serve } from "@hono/node-server";40import { serve } from "@hono/node-server";
35import process from "node:process";41import process from "node:process";
framework/lib/fs.ts+2
...@@ -15,6 +15,7 @@ export {...@@ -15,6 +15,7 @@ export {
15 statSync,15 statSync,
16 writeFile,16 writeFile,
17 writeFileSync,17 writeFileSync,
18 type FileHandle,
18};19};
1920
20export function mkdir(dir: string) {21export function mkdir(dir: string) {
...@@ -105,5 +106,6 @@ import {...@@ -105,5 +106,6 @@ import {
105 rmdir,106 rmdir,
106 stat,107 stat,
107 writeFile,108 writeFile,
109 type FileHandle,
108} from "node:fs/promises";110} from "node:fs/promises";
109export { Stats } from "node:fs";111export { Stats } from "node:fs";
framework/lib/sqlite.ts+1-1
...@@ -10,7 +10,7 @@ export function getDb(file: string) {...@@ -10,7 +10,7 @@ export function getDb(file: string) {
10 if (db) return db;10 if (db) return db;
11 const fileWithExt = file.includes(".") ? file : file + ".sqlite";11 const fileWithExt = file.includes(".") ? file : file + ".sqlite";
12 db = new WrappedDatabase(12 db = new WrappedDatabase(
13 new DatabaseSync(path.join(".clover/", fileWithExt)),13 new DatabaseSync(path.join(process.env.CLOVER_DB ?? ".clover", fileWithExt)),
14 );14 );
15 map.set(file, db);15 map.set(file, db);
16 return db;16 return db;
package-lock.json+269-265
...@@ -54,30 +54,30 @@...@@ -54,30 +54,30 @@
54 }54 }
55 },55 },
56 "node_modules/@babel/compat-data": {56 "node_modules/@babel/compat-data": {
57 "version": "7.27.5",57 "version": "7.28.0",
58 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",58 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz",
59 "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",59 "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==",
60 "license": "MIT",60 "license": "MIT",
61 "engines": {61 "engines": {
62 "node": ">=6.9.0"62 "node": ">=6.9.0"
63 }63 }
64 },64 },
65 "node_modules/@babel/core": {65 "node_modules/@babel/core": {
66 "version": "7.27.4",66 "version": "7.28.0",
67 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",67 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz",
68 "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",68 "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==",
69 "license": "MIT",69 "license": "MIT",
70 "dependencies": {70 "dependencies": {
71 "@ampproject/remapping": "^2.2.0",71 "@ampproject/remapping": "^2.2.0",
72 "@babel/code-frame": "^7.27.1",72 "@babel/code-frame": "^7.27.1",
73 "@babel/generator": "^7.27.3",73 "@babel/generator": "^7.28.0",
74 "@babel/helper-compilation-targets": "^7.27.2",74 "@babel/helper-compilation-targets": "^7.27.2",
75 "@babel/helper-module-transforms": "^7.27.3",75 "@babel/helper-module-transforms": "^7.27.3",
76 "@babel/helpers": "^7.27.4",76 "@babel/helpers": "^7.27.6",
77 "@babel/parser": "^7.27.4",77 "@babel/parser": "^7.28.0",
78 "@babel/template": "^7.27.2",78 "@babel/template": "^7.27.2",
79 "@babel/traverse": "^7.27.4",79 "@babel/traverse": "^7.28.0",
80 "@babel/types": "^7.27.3",80 "@babel/types": "^7.28.0",
81 "convert-source-map": "^2.0.0",81 "convert-source-map": "^2.0.0",
82 "debug": "^4.1.0",82 "debug": "^4.1.0",
83 "gensync": "^1.0.0-beta.2",83 "gensync": "^1.0.0-beta.2",
...@@ -93,15 +93,15 @@...@@ -93,15 +93,15 @@
93 }93 }
94 },94 },
95 "node_modules/@babel/generator": {95 "node_modules/@babel/generator": {
96 "version": "7.27.5",96 "version": "7.28.0",
97 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",97 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz",
98 "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",98 "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==",
99 "license": "MIT",99 "license": "MIT",
100 "dependencies": {100 "dependencies": {
101 "@babel/parser": "^7.27.5",101 "@babel/parser": "^7.28.0",
102 "@babel/types": "^7.27.3",102 "@babel/types": "^7.28.0",
103 "@jridgewell/gen-mapping": "^0.3.5",103 "@jridgewell/gen-mapping": "^0.3.12",
104 "@jridgewell/trace-mapping": "^0.3.25",104 "@jridgewell/trace-mapping": "^0.3.28",
105 "jsesc": "^3.0.2"105 "jsesc": "^3.0.2"
106 },106 },
107 "engines": {107 "engines": {
...@@ -157,6 +157,15 @@...@@ -157,6 +157,15 @@
157 "@babel/core": "^7.0.0"157 "@babel/core": "^7.0.0"
158 }158 }
159 },159 },
160 "node_modules/@babel/helper-globals": {
161 "version": "7.28.0",
162 "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
163 "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
164 "license": "MIT",
165 "engines": {
166 "node": ">=6.9.0"
167 }
168 },
160 "node_modules/@babel/helper-member-expression-to-functions": {169 "node_modules/@babel/helper-member-expression-to-functions": {
161 "version": "7.27.1",170 "version": "7.27.1",
162 "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",171 "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
...@@ -292,12 +301,12 @@...@@ -292,12 +301,12 @@
292 }301 }
293 },302 },
294 "node_modules/@babel/parser": {303 "node_modules/@babel/parser": {
295 "version": "7.27.5",304 "version": "7.28.0",
296 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",305 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz",
297 "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",306 "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
298 "license": "MIT",307 "license": "MIT",
299 "dependencies": {308 "dependencies": {
300 "@babel/types": "^7.27.3"309 "@babel/types": "^7.28.0"
301 },310 },
302 "bin": {311 "bin": {
303 "parser": "bin/babel-parser.js"312 "parser": "bin/babel-parser.js"
...@@ -338,12 +347,12 @@...@@ -338,12 +347,12 @@
338 }347 }
339 },348 },
340 "node_modules/@babel/plugin-transform-typescript": {349 "node_modules/@babel/plugin-transform-typescript": {
341 "version": "7.27.1",350 "version": "7.28.0",
342 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz",351 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz",
343 "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==",352 "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==",
344 "license": "MIT",353 "license": "MIT",
345 "dependencies": {354 "dependencies": {
346 "@babel/helper-annotate-as-pure": "^7.27.1",355 "@babel/helper-annotate-as-pure": "^7.27.3",
347 "@babel/helper-create-class-features-plugin": "^7.27.1",356 "@babel/helper-create-class-features-plugin": "^7.27.1",
348 "@babel/helper-plugin-utils": "^7.27.1",357 "@babel/helper-plugin-utils": "^7.27.1",
349 "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",358 "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
...@@ -380,27 +389,27 @@...@@ -380,27 +389,27 @@
380 }389 }
381 },390 },
382 "node_modules/@babel/traverse": {391 "node_modules/@babel/traverse": {
383 "version": "7.27.4",392 "version": "7.28.0",
384 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",393 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz",
385 "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",394 "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==",
386 "license": "MIT",395 "license": "MIT",
387 "dependencies": {396 "dependencies": {
388 "@babel/code-frame": "^7.27.1",397 "@babel/code-frame": "^7.27.1",
389 "@babel/generator": "^7.27.3",398 "@babel/generator": "^7.28.0",
390 "@babel/parser": "^7.27.4",399 "@babel/helper-globals": "^7.28.0",
400 "@babel/parser": "^7.28.0",
391 "@babel/template": "^7.27.2",401 "@babel/template": "^7.27.2",
392 "@babel/types": "^7.27.3",402 "@babel/types": "^7.28.0",
393 "debug": "^4.3.1",403 "debug": "^4.3.1"
394 "globals": "^11.1.0"
395 },404 },
396 "engines": {405 "engines": {
397 "node": ">=6.9.0"406 "node": ">=6.9.0"
398 }407 }
399 },408 },
400 "node_modules/@babel/types": {409 "node_modules/@babel/types": {
401 "version": "7.27.6",410 "version": "7.28.0",
402 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",411 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz",
403 "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",412 "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==",
404 "license": "MIT",413 "license": "MIT",
405 "dependencies": {414 "dependencies": {
406 "@babel/helper-string-parser": "^7.27.1",415 "@babel/helper-string-parser": "^7.27.1",
...@@ -435,9 +444,9 @@...@@ -435,9 +444,9 @@
435 }444 }
436 },445 },
437 "node_modules/@codemirror/language": {446 "node_modules/@codemirror/language": {
438 "version": "6.11.1",447 "version": "6.11.2",
439 "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.1.tgz",448 "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.2.tgz",
440 "integrity": "sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==",449 "integrity": "sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==",
441 "license": "MIT",450 "license": "MIT",
442 "dependencies": {451 "dependencies": {
443 "@codemirror/state": "^6.0.0",452 "@codemirror/state": "^6.0.0",
...@@ -480,9 +489,9 @@...@@ -480,9 +489,9 @@
480 }489 }
481 },490 },
482 "node_modules/@codemirror/view": {491 "node_modules/@codemirror/view": {
483 "version": "6.37.2",492 "version": "6.38.0",
484 "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.37.2.tgz",493 "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.0.tgz",
485 "integrity": "sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==",494 "integrity": "sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==",
486 "license": "MIT",495 "license": "MIT",
487 "dependencies": {496 "dependencies": {
488 "@codemirror/state": "^6.5.0",497 "@codemirror/state": "^6.5.0",
...@@ -492,9 +501,9 @@...@@ -492,9 +501,9 @@
492 }501 }
493 },502 },
494 "node_modules/@emnapi/runtime": {503 "node_modules/@emnapi/runtime": {
495 "version": "1.4.3",504 "version": "1.4.4",
496 "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",505 "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz",
497 "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",506 "integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==",
498 "license": "MIT",507 "license": "MIT",
499 "optional": true,508 "optional": true,
500 "dependencies": {509 "dependencies": {
...@@ -502,9 +511,9 @@...@@ -502,9 +511,9 @@
502 }511 }
503 },512 },
504 "node_modules/@esbuild/aix-ppc64": {513 "node_modules/@esbuild/aix-ppc64": {
505 "version": "0.25.5",514 "version": "0.25.6",
506 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",515 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz",
507 "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",516 "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==",
508 "cpu": [517 "cpu": [
509 "ppc64"518 "ppc64"
510 ],519 ],
...@@ -518,9 +527,9 @@...@@ -518,9 +527,9 @@
518 }527 }
519 },528 },
520 "node_modules/@esbuild/android-arm": {529 "node_modules/@esbuild/android-arm": {
521 "version": "0.25.5",530 "version": "0.25.6",
522 "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",531 "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz",
523 "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",532 "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==",
524 "cpu": [533 "cpu": [
525 "arm"534 "arm"
526 ],535 ],
...@@ -534,9 +543,9 @@...@@ -534,9 +543,9 @@
534 }543 }
535 },544 },
536 "node_modules/@esbuild/android-arm64": {545 "node_modules/@esbuild/android-arm64": {
537 "version": "0.25.5",546 "version": "0.25.6",
538 "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",547 "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz",
539 "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",548 "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==",
540 "cpu": [549 "cpu": [
541 "arm64"550 "arm64"
542 ],551 ],
...@@ -550,9 +559,9 @@...@@ -550,9 +559,9 @@
550 }559 }
551 },560 },
552 "node_modules/@esbuild/android-x64": {561 "node_modules/@esbuild/android-x64": {
553 "version": "0.25.5",562 "version": "0.25.6",
554 "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",563 "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz",
555 "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",564 "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==",
556 "cpu": [565 "cpu": [
557 "x64"566 "x64"
558 ],567 ],
...@@ -566,9 +575,9 @@...@@ -566,9 +575,9 @@
566 }575 }
567 },576 },
568 "node_modules/@esbuild/darwin-arm64": {577 "node_modules/@esbuild/darwin-arm64": {
569 "version": "0.25.5",578 "version": "0.25.6",
570 "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",579 "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz",
571 "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",580 "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==",
572 "cpu": [581 "cpu": [
573 "arm64"582 "arm64"
574 ],583 ],
...@@ -582,9 +591,9 @@...@@ -582,9 +591,9 @@
582 }591 }
583 },592 },
584 "node_modules/@esbuild/darwin-x64": {593 "node_modules/@esbuild/darwin-x64": {
585 "version": "0.25.5",594 "version": "0.25.6",
586 "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",595 "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz",
587 "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",596 "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==",
588 "cpu": [597 "cpu": [
589 "x64"598 "x64"
590 ],599 ],
...@@ -598,9 +607,9 @@...@@ -598,9 +607,9 @@
598 }607 }
599 },608 },
600 "node_modules/@esbuild/freebsd-arm64": {609 "node_modules/@esbuild/freebsd-arm64": {
601 "version": "0.25.5",610 "version": "0.25.6",
602 "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",611 "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz",
603 "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",612 "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==",
604 "cpu": [613 "cpu": [
605 "arm64"614 "arm64"
606 ],615 ],
...@@ -614,9 +623,9 @@...@@ -614,9 +623,9 @@
614 }623 }
615 },624 },
616 "node_modules/@esbuild/freebsd-x64": {625 "node_modules/@esbuild/freebsd-x64": {
617 "version": "0.25.5",626 "version": "0.25.6",
618 "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",627 "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz",
619 "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",628 "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==",
620 "cpu": [629 "cpu": [
621 "x64"630 "x64"
622 ],631 ],
...@@ -630,9 +639,9 @@...@@ -630,9 +639,9 @@
630 }639 }
631 },640 },
632 "node_modules/@esbuild/linux-arm": {641 "node_modules/@esbuild/linux-arm": {
633 "version": "0.25.5",642 "version": "0.25.6",
634 "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",643 "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz",
635 "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",644 "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==",
636 "cpu": [645 "cpu": [
637 "arm"646 "arm"
638 ],647 ],
...@@ -646,9 +655,9 @@...@@ -646,9 +655,9 @@
646 }655 }
647 },656 },
648 "node_modules/@esbuild/linux-arm64": {657 "node_modules/@esbuild/linux-arm64": {
649 "version": "0.25.5",658 "version": "0.25.6",
650 "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",659 "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz",
651 "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",660 "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==",
652 "cpu": [661 "cpu": [
653 "arm64"662 "arm64"
654 ],663 ],
...@@ -662,9 +671,9 @@...@@ -662,9 +671,9 @@
662 }671 }
663 },672 },
664 "node_modules/@esbuild/linux-ia32": {673 "node_modules/@esbuild/linux-ia32": {
665 "version": "0.25.5",674 "version": "0.25.6",
666 "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",675 "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz",
667 "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",676 "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==",
668 "cpu": [677 "cpu": [
669 "ia32"678 "ia32"
670 ],679 ],
...@@ -678,9 +687,9 @@...@@ -678,9 +687,9 @@
678 }687 }
679 },688 },
680 "node_modules/@esbuild/linux-loong64": {689 "node_modules/@esbuild/linux-loong64": {
681 "version": "0.25.5",690 "version": "0.25.6",
682 "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",691 "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz",
683 "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",692 "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==",
684 "cpu": [693 "cpu": [
685 "loong64"694 "loong64"
686 ],695 ],
...@@ -694,9 +703,9 @@...@@ -694,9 +703,9 @@
694 }703 }
695 },704 },
696 "node_modules/@esbuild/linux-mips64el": {705 "node_modules/@esbuild/linux-mips64el": {
697 "version": "0.25.5",706 "version": "0.25.6",
698 "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",707 "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz",
699 "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",708 "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==",
700 "cpu": [709 "cpu": [
701 "mips64el"710 "mips64el"
702 ],711 ],
...@@ -710,9 +719,9 @@...@@ -710,9 +719,9 @@
710 }719 }
711 },720 },
712 "node_modules/@esbuild/linux-ppc64": {721 "node_modules/@esbuild/linux-ppc64": {
713 "version": "0.25.5",722 "version": "0.25.6",
714 "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",723 "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz",
715 "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",724 "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==",
716 "cpu": [725 "cpu": [
717 "ppc64"726 "ppc64"
718 ],727 ],
...@@ -726,9 +735,9 @@...@@ -726,9 +735,9 @@
726 }735 }
727 },736 },
728 "node_modules/@esbuild/linux-riscv64": {737 "node_modules/@esbuild/linux-riscv64": {
729 "version": "0.25.5",738 "version": "0.25.6",
730 "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",739 "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz",
731 "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",740 "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==",
732 "cpu": [741 "cpu": [
733 "riscv64"742 "riscv64"
734 ],743 ],
...@@ -742,9 +751,9 @@...@@ -742,9 +751,9 @@
742 }751 }
743 },752 },
744 "node_modules/@esbuild/linux-s390x": {753 "node_modules/@esbuild/linux-s390x": {
745 "version": "0.25.5",754 "version": "0.25.6",
746 "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",755 "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz",
747 "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",756 "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==",
748 "cpu": [757 "cpu": [
749 "s390x"758 "s390x"
750 ],759 ],
...@@ -758,9 +767,9 @@...@@ -758,9 +767,9 @@
758 }767 }
759 },768 },
760 "node_modules/@esbuild/linux-x64": {769 "node_modules/@esbuild/linux-x64": {
761 "version": "0.25.5",770 "version": "0.25.6",
762 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",771 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz",
763 "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",772 "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==",
764 "cpu": [773 "cpu": [
765 "x64"774 "x64"
766 ],775 ],
...@@ -774,9 +783,9 @@...@@ -774,9 +783,9 @@
774 }783 }
775 },784 },
776 "node_modules/@esbuild/netbsd-arm64": {785 "node_modules/@esbuild/netbsd-arm64": {
777 "version": "0.25.5",786 "version": "0.25.6",
778 "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",787 "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz",
779 "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",788 "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==",
780 "cpu": [789 "cpu": [
781 "arm64"790 "arm64"
782 ],791 ],
...@@ -790,9 +799,9 @@...@@ -790,9 +799,9 @@
790 }799 }
791 },800 },
792 "node_modules/@esbuild/netbsd-x64": {801 "node_modules/@esbuild/netbsd-x64": {
793 "version": "0.25.5",802 "version": "0.25.6",
794 "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",803 "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz",
795 "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",804 "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==",
796 "cpu": [805 "cpu": [
797 "x64"806 "x64"
798 ],807 ],
...@@ -806,9 +815,9 @@...@@ -806,9 +815,9 @@
806 }815 }
807 },816 },
808 "node_modules/@esbuild/openbsd-arm64": {817 "node_modules/@esbuild/openbsd-arm64": {
809 "version": "0.25.5",818 "version": "0.25.6",
810 "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",819 "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz",
811 "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",820 "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==",
812 "cpu": [821 "cpu": [
813 "arm64"822 "arm64"
814 ],823 ],
...@@ -822,9 +831,9 @@...@@ -822,9 +831,9 @@
822 }831 }
823 },832 },
824 "node_modules/@esbuild/openbsd-x64": {833 "node_modules/@esbuild/openbsd-x64": {
825 "version": "0.25.5",834 "version": "0.25.6",
826 "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",835 "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz",
827 "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",836 "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==",
828 "cpu": [837 "cpu": [
829 "x64"838 "x64"
830 ],839 ],
...@@ -837,10 +846,26 @@...@@ -837,10 +846,26 @@
837 "node": ">=18"846 "node": ">=18"
838 }847 }
839 },848 },
849 "node_modules/@esbuild/openharmony-arm64": {
850 "version": "0.25.6",
851 "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz",
852 "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==",
853 "cpu": [
854 "arm64"
855 ],
856 "license": "MIT",
857 "optional": true,
858 "os": [
859 "openharmony"
860 ],
861 "engines": {
862 "node": ">=18"
863 }
864 },
840 "node_modules/@esbuild/sunos-x64": {865 "node_modules/@esbuild/sunos-x64": {
841 "version": "0.25.5",866 "version": "0.25.6",
842 "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",867 "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz",
843 "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",868 "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==",
844 "cpu": [869 "cpu": [
845 "x64"870 "x64"
846 ],871 ],
...@@ -854,9 +879,9 @@...@@ -854,9 +879,9 @@
854 }879 }
855 },880 },
856 "node_modules/@esbuild/win32-arm64": {881 "node_modules/@esbuild/win32-arm64": {
857 "version": "0.25.5",882 "version": "0.25.6",
858 "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",883 "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz",
859 "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",884 "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==",
860 "cpu": [885 "cpu": [
861 "arm64"886 "arm64"
862 ],887 ],
...@@ -870,9 +895,9 @@...@@ -870,9 +895,9 @@
870 }895 }
871 },896 },
872 "node_modules/@esbuild/win32-ia32": {897 "node_modules/@esbuild/win32-ia32": {
873 "version": "0.25.5",898 "version": "0.25.6",
874 "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",899 "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz",
875 "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",900 "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==",
876 "cpu": [901 "cpu": [
877 "ia32"902 "ia32"
878 ],903 ],
...@@ -886,9 +911,9 @@...@@ -886,9 +911,9 @@
886 }911 }
887 },912 },
888 "node_modules/@esbuild/win32-x64": {913 "node_modules/@esbuild/win32-x64": {
889 "version": "0.25.5",914 "version": "0.25.6",
890 "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",915 "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz",
891 "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",916 "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==",
892 "cpu": [917 "cpu": [
893 "x64"918 "x64"
894 ],919 ],
...@@ -902,9 +927,9 @@...@@ -902,9 +927,9 @@
902 }927 }
903 },928 },
904 "node_modules/@hono/node-server": {929 "node_modules/@hono/node-server": {
905 "version": "1.14.4",930 "version": "1.15.0",
906 "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.14.4.tgz",931 "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.15.0.tgz",
907 "integrity": "sha512-DnxpshhYewr2q9ZN8ez/M5mmc3sucr8CT1sIgIy1bkeUXut9XWDkqHoFHRhWIQgkYnKpVRxunyhK7WzpJeJ6qQ==",932 "integrity": "sha512-MjmK4l5N4dQpZ9OSWN0tCj7ejuc7WvuWMzSKtc89bnknJykAeHxzRigXBTYZk85H6Awrii6RM59iUiUluApu2A==",
908 "license": "MIT",933 "license": "MIT",
909 "engines": {934 "engines": {
910 "node": ">=18.14.1"935 "node": ">=18.14.1"
...@@ -1310,17 +1335,13 @@...@@ -1310,17 +1335,13 @@
1310 }1335 }
1311 },1336 },
1312 "node_modules/@jridgewell/gen-mapping": {1337 "node_modules/@jridgewell/gen-mapping": {
1313 "version": "0.3.8",1338 "version": "0.3.12",
1314 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",1339 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
1315 "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",1340 "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==",
1316 "license": "MIT",1341 "license": "MIT",
1317 "dependencies": {1342 "dependencies": {
1318 "@jridgewell/set-array": "^1.2.1",1343 "@jridgewell/sourcemap-codec": "^1.5.0",
1319 "@jridgewell/sourcemap-codec": "^1.4.10",
1320 "@jridgewell/trace-mapping": "^0.3.24"1344 "@jridgewell/trace-mapping": "^0.3.24"
1321 },
1322 "engines": {
1323 "node": ">=6.0.0"
1324 }1345 }
1325 },1346 },
1326 "node_modules/@jridgewell/resolve-uri": {1347 "node_modules/@jridgewell/resolve-uri": {
...@@ -1332,25 +1353,16 @@...@@ -1332,25 +1353,16 @@
1332 "node": ">=6.0.0"1353 "node": ">=6.0.0"
1333 }1354 }
1334 },1355 },
1335 "node_modules/@jridgewell/set-array": {
1336 "version": "1.2.1",
1337 "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
1338 "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
1339 "license": "MIT",
1340 "engines": {
1341 "node": ">=6.0.0"
1342 }
1343 },
1344 "node_modules/@jridgewell/sourcemap-codec": {1356 "node_modules/@jridgewell/sourcemap-codec": {
1345 "version": "1.5.0",1357 "version": "1.5.4",
1346 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",1358 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz",
1347 "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",1359 "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==",
1348 "license": "MIT"1360 "license": "MIT"
1349 },1361 },
1350 "node_modules/@jridgewell/trace-mapping": {1362 "node_modules/@jridgewell/trace-mapping": {
1351 "version": "0.3.25",1363 "version": "0.3.29",
1352 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",1364 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz",
1353 "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",1365 "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==",
1354 "license": "MIT",1366 "license": "MIT",
1355 "dependencies": {1367 "dependencies": {
1356 "@jridgewell/resolve-uri": "^3.1.0",1368 "@jridgewell/resolve-uri": "^3.1.0",
...@@ -1397,9 +1409,9 @@...@@ -1397,9 +1409,9 @@
1397 "license": "MIT"1409 "license": "MIT"
1398 },1410 },
1399 "node_modules/@marko/compiler": {1411 "node_modules/@marko/compiler": {
1400 "version": "5.39.21",1412 "version": "5.39.28",
1401 "resolved": "https://registry.npmjs.org/@marko/compiler/-/compiler-5.39.21.tgz",1413 "resolved": "https://registry.npmjs.org/@marko/compiler/-/compiler-5.39.28.tgz",
1402 "integrity": "sha512-wDLJYjINuH4ESSlVGXmUnEQV+VcHXEEbXK7BWRjp3Bg+nLyLapa+hBBrYLRt9/ctyWXgzYscInKQpGAxm/Sgdg==",1414 "integrity": "sha512-jO/GGNWwyHlCE/fAhiLc1+Xc3apU73wfmjqBFiQmFHyAT2KZRyKJbPz7aVs8uutrPY8Xks9ZCXiXOk0RgvUlvg==",
1403 "license": "MIT",1415 "license": "MIT",
1404 "dependencies": {1416 "dependencies": {
1405 "@babel/code-frame": "^7.26.2",1417 "@babel/code-frame": "^7.26.2",
...@@ -1467,7 +1479,7 @@...@@ -1467,7 +1479,7 @@
1467 }1479 }
1468 },1480 },
1469 "node_modules/@paperclover/console": {1481 "node_modules/@paperclover/console": {
1470 "resolved": "git+https://git.paperclover.net/clo/console.git#acdad1b233b5e27dd8ff817d3b8ee7f1a88519d3",1482 "resolved": "git+https://git.paperclover.net/clo/console.git#1a6ac2b79fdd8a21a1c57d25723975872bc07e3e",
1471 "dependencies": {1483 "dependencies": {
1472 "ansi-escapes": "^7.0.0",1484 "ansi-escapes": "^7.0.0",
1473 "chalk": "^5.4.1",1485 "chalk": "^5.4.1",
...@@ -1568,9 +1580,9 @@...@@ -1568,9 +1580,9 @@
1568 "license": "MIT"1580 "license": "MIT"
1569 },1581 },
1570 "node_modules/@types/node": {1582 "node_modules/@types/node": {
1571 "version": "24.0.10",1583 "version": "24.0.12",
1572 "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.10.tgz",1584 "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.12.tgz",
1573 "integrity": "sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==",1585 "integrity": "sha512-LtOrbvDf5ndC9Xi+4QZjVL0woFymF/xSTKZKPgrrl7H7XoeDvnD+E2IclKVDyaK9UM756W/3BXqSU+JEHopA9g==",
1574 "devOptional": true,1586 "devOptional": true,
1575 "license": "MIT",1587 "license": "MIT",
1576 "dependencies": {1588 "dependencies": {
...@@ -1621,9 +1633,9 @@...@@ -1621,9 +1633,9 @@
1621 }1633 }
1622 },1634 },
1623 "node_modules/agent-base": {1635 "node_modules/agent-base": {
1624 "version": "7.1.3",1636 "version": "7.1.4",
1625 "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",1637 "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
1626 "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",1638 "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
1627 "license": "MIT",1639 "license": "MIT",
1628 "engines": {1640 "engines": {
1629 "node": ">= 14"1641 "node": ">= 14"
...@@ -1715,16 +1727,16 @@...@@ -1715,16 +1727,16 @@
1715 }1727 }
1716 },1728 },
1717 "node_modules/bare-events": {1729 "node_modules/bare-events": {
1718 "version": "2.5.4",1730 "version": "2.6.0",
1719 "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",1731 "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz",
1720 "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",1732 "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==",
1721 "license": "Apache-2.0",1733 "license": "Apache-2.0",
1722 "optional": true1734 "optional": true
1723 },1735 },
1724 "node_modules/bare-fs": {1736 "node_modules/bare-fs": {
1725 "version": "4.1.5",1737 "version": "4.1.6",
1726 "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz",1738 "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz",
1727 "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==",1739 "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==",
1728 "license": "Apache-2.0",1740 "license": "Apache-2.0",
1729 "optional": true,1741 "optional": true,
1730 "dependencies": {1742 "dependencies": {
...@@ -1802,9 +1814,9 @@...@@ -1802,9 +1814,9 @@
1802 "license": "MIT"1814 "license": "MIT"
1803 },1815 },
1804 "node_modules/browserslist": {1816 "node_modules/browserslist": {
1805 "version": "4.25.0",1817 "version": "4.25.1",
1806 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",1818 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
1807 "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",1819 "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
1808 "funding": [1820 "funding": [
1809 {1821 {
1810 "type": "opencollective",1822 "type": "opencollective",
...@@ -1821,8 +1833,8 @@...@@ -1821,8 +1833,8 @@
1821 ],1833 ],
1822 "license": "MIT",1834 "license": "MIT",
1823 "dependencies": {1835 "dependencies": {
1824 "caniuse-lite": "^1.0.30001718",1836 "caniuse-lite": "^1.0.30001726",
1825 "electron-to-chromium": "^1.5.160",1837 "electron-to-chromium": "^1.5.173",
1826 "node-releases": "^2.0.19",1838 "node-releases": "^2.0.19",
1827 "update-browserslist-db": "^1.1.3"1839 "update-browserslist-db": "^1.1.3"
1828 },1840 },
...@@ -1858,9 +1870,9 @@...@@ -1858,9 +1870,9 @@
1858 }1870 }
1859 },1871 },
1860 "node_modules/caniuse-lite": {1872 "node_modules/caniuse-lite": {
1861 "version": "1.0.30001721",1873 "version": "1.0.30001727",
1862 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz",1874 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz",
1863 "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==",1875 "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==",
1864 "funding": [1876 "funding": [
1865 {1877 {
1866 "type": "opencollective",1878 "type": "opencollective",
...@@ -1988,9 +2000,9 @@...@@ -1988,9 +2000,9 @@
1988 }2000 }
1989 },2001 },
1990 "node_modules/codemirror": {2002 "node_modules/codemirror": {
1991 "version": "6.0.1",2003 "version": "6.0.2",
1992 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",2004 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz",
1993 "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",2005 "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==",
1994 "license": "MIT",2006 "license": "MIT",
1995 "dependencies": {2007 "dependencies": {
1996 "@codemirror/autocomplete": "^6.0.0",2008 "@codemirror/autocomplete": "^6.0.0",
...@@ -2143,9 +2155,9 @@...@@ -2143,9 +2155,9 @@
2143 }2155 }
2144 },2156 },
2145 "node_modules/decode-named-character-reference": {2157 "node_modules/decode-named-character-reference": {
2146 "version": "1.1.0",2158 "version": "1.2.0",
2147 "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz",2159 "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
2148 "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==",2160 "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
2149 "license": "MIT",2161 "license": "MIT",
2150 "dependencies": {2162 "dependencies": {
2151 "character-entities": "^2.0.0"2163 "character-entities": "^2.0.0"
...@@ -2207,15 +2219,15 @@...@@ -2207,15 +2219,15 @@
2207 }2219 }
2208 },2220 },
2209 "node_modules/devtools-protocol": {2221 "node_modules/devtools-protocol": {
2210 "version": "0.0.1452169",2222 "version": "0.0.1464554",
2211 "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1452169.tgz",2223 "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1464554.tgz",
2212 "integrity": "sha512-FOFDVMGrAUNp0dDKsAU1TorWJUx2JOU1k9xdgBKKJF3IBh/Uhl2yswG5r3TEAOrCiGY2QRp1e6LVDQrCsTKO4g==",2224 "integrity": "sha512-CAoP3lYfwAGQTaAXYvA6JZR0fjGUb7qec1qf4mToyoH2TZgUFeIqYcjh6f9jNuhHfuZiEdH+PONHYrLhRQX6aw==",
2213 "license": "BSD-3-Clause"2225 "license": "BSD-3-Clause"
2214 },2226 },
2215 "node_modules/electron-to-chromium": {2227 "node_modules/electron-to-chromium": {
2216 "version": "1.5.165",2228 "version": "1.5.181",
2217 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz",2229 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.181.tgz",
2218 "integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==",2230 "integrity": "sha512-+ISMj8OIQ+0qEeDj14Rt8WwcTOiqHyAB+5bnK1K7xNNLjBJ4hRCQfUkw8RWtcLbfBzDwc15ZnKH0c7SNOfwiyA==",
2219 "license": "ISC"2231 "license": "ISC"
2220 },2232 },
2221 "node_modules/emoji-regex": {2233 "node_modules/emoji-regex": {
...@@ -2225,9 +2237,9 @@...@@ -2225,9 +2237,9 @@
2225 "license": "MIT"2237 "license": "MIT"
2226 },2238 },
2227 "node_modules/end-of-stream": {2239 "node_modules/end-of-stream": {
2228 "version": "1.4.4",2240 "version": "1.4.5",
2229 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",2241 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
2230 "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",2242 "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
2231 "license": "MIT",2243 "license": "MIT",
2232 "dependencies": {2244 "dependencies": {
2233 "once": "^1.4.0"2245 "once": "^1.4.0"
...@@ -2305,9 +2317,9 @@...@@ -2305,9 +2317,9 @@
2305 }2317 }
2306 },2318 },
2307 "node_modules/esbuild": {2319 "node_modules/esbuild": {
2308 "version": "0.25.5",2320 "version": "0.25.6",
2309 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",2321 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz",
2310 "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",2322 "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==",
2311 "hasInstallScript": true,2323 "hasInstallScript": true,
2312 "license": "MIT",2324 "license": "MIT",
2313 "bin": {2325 "bin": {
...@@ -2317,31 +2329,32 @@...@@ -2317,31 +2329,32 @@
2317 "node": ">=18"2329 "node": ">=18"
2318 },2330 },
2319 "optionalDependencies": {2331 "optionalDependencies": {
2320 "@esbuild/aix-ppc64": "0.25.5",2332 "@esbuild/aix-ppc64": "0.25.6",
2321 "@esbuild/android-arm": "0.25.5",2333 "@esbuild/android-arm": "0.25.6",
2322 "@esbuild/android-arm64": "0.25.5",2334 "@esbuild/android-arm64": "0.25.6",
2323 "@esbuild/android-x64": "0.25.5",2335 "@esbuild/android-x64": "0.25.6",
2324 "@esbuild/darwin-arm64": "0.25.5",2336 "@esbuild/darwin-arm64": "0.25.6",
2325 "@esbuild/darwin-x64": "0.25.5",2337 "@esbuild/darwin-x64": "0.25.6",
2326 "@esbuild/freebsd-arm64": "0.25.5",2338 "@esbuild/freebsd-arm64": "0.25.6",
2327 "@esbuild/freebsd-x64": "0.25.5",2339 "@esbuild/freebsd-x64": "0.25.6",
2328 "@esbuild/linux-arm": "0.25.5",2340 "@esbuild/linux-arm": "0.25.6",
2329 "@esbuild/linux-arm64": "0.25.5",2341 "@esbuild/linux-arm64": "0.25.6",
2330 "@esbuild/linux-ia32": "0.25.5",2342 "@esbuild/linux-ia32": "0.25.6",
2331 "@esbuild/linux-loong64": "0.25.5",2343 "@esbuild/linux-loong64": "0.25.6",
2332 "@esbuild/linux-mips64el": "0.25.5",2344 "@esbuild/linux-mips64el": "0.25.6",
2333 "@esbuild/linux-ppc64": "0.25.5",2345 "@esbuild/linux-ppc64": "0.25.6",
2334 "@esbuild/linux-riscv64": "0.25.5",2346 "@esbuild/linux-riscv64": "0.25.6",
2335 "@esbuild/linux-s390x": "0.25.5",2347 "@esbuild/linux-s390x": "0.25.6",
2336 "@esbuild/linux-x64": "0.25.5",2348 "@esbuild/linux-x64": "0.25.6",
2337 "@esbuild/netbsd-arm64": "0.25.5",2349 "@esbuild/netbsd-arm64": "0.25.6",
2338 "@esbuild/netbsd-x64": "0.25.5",2350 "@esbuild/netbsd-x64": "0.25.6",
2339 "@esbuild/openbsd-arm64": "0.25.5",2351 "@esbuild/openbsd-arm64": "0.25.6",
2340 "@esbuild/openbsd-x64": "0.25.5",2352 "@esbuild/openbsd-x64": "0.25.6",
2341 "@esbuild/sunos-x64": "0.25.5",2353 "@esbuild/openharmony-arm64": "0.25.6",
2342 "@esbuild/win32-arm64": "0.25.5",2354 "@esbuild/sunos-x64": "0.25.6",
2343 "@esbuild/win32-ia32": "0.25.5",2355 "@esbuild/win32-arm64": "0.25.6",
2344 "@esbuild/win32-x64": "0.25.5"2356 "@esbuild/win32-ia32": "0.25.6",
2357 "@esbuild/win32-x64": "0.25.6"
2345 }2358 }
2346 },2359 },
2347 "node_modules/escalade": {2360 "node_modules/escalade": {
...@@ -2581,9 +2594,9 @@...@@ -2581,9 +2594,9 @@
2581 }2594 }
2582 },2595 },
2583 "node_modules/get-uri": {2596 "node_modules/get-uri": {
2584 "version": "6.0.4",2597 "version": "6.0.5",
2585 "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",2598 "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
2586 "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",2599 "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
2587 "license": "MIT",2600 "license": "MIT",
2588 "dependencies": {2601 "dependencies": {
2589 "basic-ftp": "^5.0.2",2602 "basic-ftp": "^5.0.2",
...@@ -2594,15 +2607,6 @@...@@ -2594,15 +2607,6 @@
2594 "node": ">= 14"2607 "node": ">= 14"
2595 }2608 }
2596 },2609 },
2597 "node_modules/globals": {
2598 "version": "11.12.0",
2599 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
2600 "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
2601 "license": "MIT",
2602 "engines": {
2603 "node": ">=4"
2604 }
2605 },
2606 "node_modules/hast-util-to-estree": {2610 "node_modules/hast-util-to-estree": {
2607 "version": "3.1.3",2611 "version": "3.1.3",
2608 "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz",2612 "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz",
...@@ -2681,15 +2685,15 @@...@@ -2681,15 +2685,15 @@
2681 }2685 }
2682 },2686 },
2683 "node_modules/hls.js": {2687 "node_modules/hls.js": {
2684 "version": "1.6.5",2688 "version": "1.6.7",
2685 "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.5.tgz",2689 "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.7.tgz",
2686 "integrity": "sha512-KMn5n7JBK+olC342740hDPHnGWfE8FiHtGMOdJPfUjRdARTWj9OB+8c13fnsf9sk1VtpuU2fKSgUjHvg4rNbzQ==",2690 "integrity": "sha512-QW2fnwDGKGc9DwQUGLbmMOz8G48UZK7PVNJPcOUql1b8jubKx4/eMHNP5mGqr6tYlJNDG1g10Lx2U/qPzL6zwQ==",
2687 "license": "Apache-2.0"2691 "license": "Apache-2.0"
2688 },2692 },
2689 "node_modules/hono": {2693 "node_modules/hono": {
2690 "version": "4.7.11",2694 "version": "4.8.4",
2691 "resolved": "https://registry.npmjs.org/hono/-/hono-4.7.11.tgz",2695 "resolved": "https://registry.npmjs.org/hono/-/hono-4.8.4.tgz",
2692 "integrity": "sha512-rv0JMwC0KALbbmwJDEnxvQCeJh+xbS3KEWW5PC9cMJ08Ur9xgatI0HmtgYZfOdOSOeYsp5LO2cOhdI8cLEbDEQ==",2696 "integrity": "sha512-KOIBp1+iUs0HrKztM4EHiB2UtzZDTBihDtOF5K6+WaJjCPeaW4Q92R8j63jOhvJI5+tZSMuKD9REVEXXY9illg==",
2693 "license": "MIT",2697 "license": "MIT",
2694 "engines": {2698 "engines": {
2695 "node": ">=16.9.0"2699 "node": ">=16.9.0"
...@@ -2970,12 +2974,12 @@...@@ -2970,12 +2974,12 @@
2970 }2974 }
2971 },2975 },
2972 "node_modules/marko": {2976 "node_modules/marko": {
2973 "version": "6.0.21",2977 "version": "6.0.35",
2974 "resolved": "https://registry.npmjs.org/marko/-/marko-6.0.21.tgz",2978 "resolved": "https://registry.npmjs.org/marko/-/marko-6.0.35.tgz",
2975 "integrity": "sha512-yBMI1GfqAncP/R24vATKOr/VkAOox49hr6Jqw/HBwYQqU/QMpwYOMMNii09K3mJm0ABcq/oGk/CF81a3AZ3EsQ==",2979 "integrity": "sha512-1zoMBeMEfltQ8QtmW0WoYYsjC0vUJaomQPpXQSlDw9i1o7YZ6T9v8ZSPcScv4ODRM1+XQ0hfNuUT+u7qijXcsA==",
2976 "license": "MIT",2980 "license": "MIT",
2977 "dependencies": {2981 "dependencies": {
2978 "@marko/compiler": "^5.39.21",2982 "@marko/compiler": "^5.39.28",
2979 "csstype": "^3.1.3",2983 "csstype": "^3.1.3",
2980 "magic-string": "^0.30.17"2984 "magic-string": "^0.30.17"
2981 },2985 },
...@@ -3938,9 +3942,9 @@...@@ -3938,9 +3942,9 @@
3938 "license": "MIT"3942 "license": "MIT"
3939 },3943 },
3940 "node_modules/pump": {3944 "node_modules/pump": {
3941 "version": "3.0.2",3945 "version": "3.0.3",
3942 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",3946 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
3943 "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",3947 "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
3944 "license": "MIT",3948 "license": "MIT",
3945 "dependencies": {3949 "dependencies": {
3946 "end-of-stream": "^1.1.0",3950 "end-of-stream": "^1.1.0",
...@@ -3948,17 +3952,17 @@...@@ -3948,17 +3952,17 @@
3948 }3952 }
3949 },3953 },
3950 "node_modules/puppeteer": {3954 "node_modules/puppeteer": {
3951 "version": "24.10.1",3955 "version": "24.12.1",
3952 "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.10.1.tgz",3956 "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.12.1.tgz",
3953 "integrity": "sha512-7T3rfSaaPt5A31VITV5YKQ4wPCCv4aPn8byDaV+9lhDU9v7BWYY4Ncwerw3ZR5mIolrh/PvzGdIDK7yiBth75g==",3957 "integrity": "sha512-+vvwl+Xo4z5uXLLHG+XW8uXnUXQ62oY6KU6bEFZJvHWLutbmv5dw9A/jcMQ0fqpQdLydHmK0Uy7/9Ilj8ufwSQ==",
3954 "hasInstallScript": true,3958 "hasInstallScript": true,
3955 "license": "Apache-2.0",3959 "license": "Apache-2.0",
3956 "dependencies": {3960 "dependencies": {
3957 "@puppeteer/browsers": "2.10.5",3961 "@puppeteer/browsers": "2.10.5",
3958 "chromium-bidi": "5.1.0",3962 "chromium-bidi": "5.1.0",
3959 "cosmiconfig": "^9.0.0",3963 "cosmiconfig": "^9.0.0",
3960 "devtools-protocol": "0.0.1452169",3964 "devtools-protocol": "0.0.1464554",
3961 "puppeteer-core": "24.10.1",3965 "puppeteer-core": "24.12.1",
3962 "typed-query-selector": "^2.12.0"3966 "typed-query-selector": "^2.12.0"
3963 },3967 },
3964 "bin": {3968 "bin": {
...@@ -3969,17 +3973,17 @@...@@ -3969,17 +3973,17 @@
3969 }3973 }
3970 },3974 },
3971 "node_modules/puppeteer-core": {3975 "node_modules/puppeteer-core": {
3972 "version": "24.10.1",3976 "version": "24.12.1",
3973 "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.10.1.tgz",3977 "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.12.1.tgz",
3974 "integrity": "sha512-AE6doA9znmEEps/pC5lc9p0zejCdNLR6UBp3EZ49/15Nbvh+uklXxGox7Qh8/lFGqGVwxInl0TXmsOmIuIMwiQ==",3978 "integrity": "sha512-8odp6d3ERKBa3BAVaYWXn95UxQv3sxvP1reD+xZamaX6ed8nCykhwlOiHSaHR9t/MtmIB+rJmNencI6Zy4Gxvg==",
3975 "license": "Apache-2.0",3979 "license": "Apache-2.0",
3976 "dependencies": {3980 "dependencies": {
3977 "@puppeteer/browsers": "2.10.5",3981 "@puppeteer/browsers": "2.10.5",
3978 "chromium-bidi": "5.1.0",3982 "chromium-bidi": "5.1.0",
3979 "debug": "^4.4.1",3983 "debug": "^4.4.1",
3980 "devtools-protocol": "0.0.1452169",3984 "devtools-protocol": "0.0.1464554",
3981 "typed-query-selector": "^2.12.0",3985 "typed-query-selector": "^2.12.0",
3982 "ws": "^8.18.2"3986 "ws": "^8.18.3"
3983 },3987 },
3984 "engines": {3988 "engines": {
3985 "node": ">=18"3989 "node": ">=18"
...@@ -4411,27 +4415,27 @@...@@ -4411,27 +4415,27 @@
4411 "license": "MIT"4415 "license": "MIT"
4412 },4416 },
4413 "node_modules/style-to-js": {4417 "node_modules/style-to-js": {
4414 "version": "1.1.16",4418 "version": "1.1.17",
4415 "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz",4419 "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz",
4416 "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==",4420 "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==",
4417 "license": "MIT",4421 "license": "MIT",
4418 "dependencies": {4422 "dependencies": {
4419 "style-to-object": "1.0.8"4423 "style-to-object": "1.0.9"
4420 }4424 }
4421 },4425 },
4422 "node_modules/style-to-object": {4426 "node_modules/style-to-object": {
4423 "version": "1.0.8",4427 "version": "1.0.9",
4424 "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",4428 "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz",
4425 "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",4429 "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==",
4426 "license": "MIT",4430 "license": "MIT",
4427 "dependencies": {4431 "dependencies": {
4428 "inline-style-parser": "0.2.4"4432 "inline-style-parser": "0.2.4"
4429 }4433 }
4430 },4434 },
4431 "node_modules/tar-fs": {4435 "node_modules/tar-fs": {
4432 "version": "3.0.9",4436 "version": "3.1.0",
4433 "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz",4437 "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.0.tgz",
4434 "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==",4438 "integrity": "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==",
4435 "license": "MIT",4439 "license": "MIT",
4436 "dependencies": {4440 "dependencies": {
4437 "pump": "^3.0.0",4441 "pump": "^3.0.0",
...@@ -4745,9 +4749,9 @@...@@ -4745,9 +4749,9 @@
4745 "license": "ISC"4749 "license": "ISC"
4746 },4750 },
4747 "node_modules/ws": {4751 "node_modules/ws": {
4748 "version": "8.18.2",4752 "version": "8.18.3",
4749 "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",4753 "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
4750 "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",4754 "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
4751 "license": "MIT",4755 "license": "MIT",
4752 "engines": {4756 "engines": {
4753 "node": ">=10.0.0"4757 "node": ">=10.0.0"
...@@ -4818,9 +4822,9 @@...@@ -4818,9 +4822,9 @@
4818 }4822 }
4819 },4823 },
4820 "node_modules/zod": {4824 "node_modules/zod": {
4821 "version": "3.25.64",4825 "version": "3.25.76",
4822 "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz",4826 "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
4823 "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==",4827 "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
4824 "license": "MIT",4828 "license": "MIT",
4825 "funding": {4829 "funding": {
4826 "url": "https://github.com/sponsors/colinhacks"4830 "url": "https://github.com/sponsors/colinhacks"
src/backend.ts-2
...@@ -34,10 +34,8 @@ async function removeDuplicateSlashes(c: Context, next: Next) {...@@ -34,10 +34,8 @@ async function removeDuplicateSlashes(c: Context, next: Next) {
34}34}
3535
36import { type Context, Hono, type Next } from "#hono";36import { type Context, Hono, type Next } from "#hono";
37import { HTTPException } from "hono/http-exception";
38import { logger } from "hono/logger";37import { logger } from "hono/logger";
39import { trimTrailingSlash } from "hono/trailing-slash";38import { trimTrailingSlash } from "hono/trailing-slash";
40import * as assets from "#sitegen/assets";39import * as assets from "#sitegen/assets";
41import * as admin from "./admin.ts";40import * as admin from "./admin.ts";
42import { scoped } from "@paperclover/console";41import { scoped } from "@paperclover/console";
43import * as util from "node:util";
src/blog/pages/25/file-viewer-internals.mdx created+10
...@@ -0,0 +1,10 @@
1export const blog: BlogMeta = {
2 title: "Marko is the coziest HTML templating language",
3 desc: "...todo...",
4 date: "2025-07-08",
5 draft: true,
6};
7export const meta = formatBlogMeta(blob);
8export * as layout from "@/blog/layout.tsx";
9
10
src/source-of-truth.dockerfile created+31
...@@ -0,0 +1,31 @@
1from node:24-alpine as builder
2
3run apk add --no-cache git
4
5workdir /paperclover.net
6copy package*.json ./
7run npm ci
8copy . ./
9run npx esbuild --bundle \
10 framework/backend/entry-node.ts \
11 --platform=node \
12 --format=esm \
13 --define:globalThis.CLOVER_SERVER_ENTRY='"@/source-of-truth.ts"' \
14 --minify \
15 --sourcemap=linked \
16 --entry-names=index \
17 --outdir=/app
18
19from node:24-alpine as runtime
20
21workdir /app
22copy --from=builder /app/ ./
23
24env PORT=3001
25# must be configured
26env CLOVER_DB=/dev/null
27env CLOVER_FILE_RAW=/dev/null
28env CLOVER_FILE_DERIVED=/dev/null
29
30cmd ["node", "--enable-source-maps", "/app/index.js"]
31
src/source-of-truth.ts+16-8
...@@ -20,14 +20,21 @@...@@ -20,14 +20,21 @@
20const app = new Hono();20const app = new Hono();
21export default app;21export default app;
2222
23const token = "bwaa";23const token = process.env.CLOVER_SOT_KEY;
24const nasRoot = "/Volumes/clover";
2524
26const rawFileRoot = path.join(nasRoot, "Published");25const nasRoot = process.platform === "win32"
27const derivedFileRoot = path.join(26 ? "\\\\zenith\\clover"
28 nasRoot,27 : process.platform === "darwin"
29 "Documents/Config/clover_file/derived",28 ? "/Volumes/clover"
30);29 : "/media/clover";
30
31const rawFileRoot = process.env.CLOVER_FILE_RAW ??
32 path.join(nasRoot, "Published");
33const derivedFileRoot = process.env.CLOVER_FILE_DERIVED ??
34 path.join(nasRoot, "Documents/Config/clover_file/derived");
35
36if (!fs.existsSync(rawFileRoot)) throw new Error(`${rawFileRoot} does not exist`);
37if (!fs.existsSync(derivedFileRoot)) throw new Error(`${derivedFileRoot} does not exist`);
3138
32type Awaitable<T> = T | Promise<T>;39type Awaitable<T> = T | Promise<T>;
3340
...@@ -88,8 +95,9 @@ app.get("/file/*", async (c) => {...@@ -88,8 +95,9 @@ app.get("/file/*", async (c) => {
88 },95 },
89 });96 });
90 c.header("Content-Type", mime.contentTypeFor(fullPath));97 c.header("Content-Type", mime.contentTypeFor(fullPath));
91 if (!derivedAsset)98 if (!derivedAsset) {
92 c.header("Content-Length", file.size.toString());99 c.header("Content-Length", file.size.toString());
100 }
93 return c.body(stream.Readable.toWeb(nodeStream) as ReadableStream);101 return c.body(stream.Readable.toWeb(nodeStream) as ReadableStream);
94});102});
95103