Take advantage of full middleware order control in order to be able to resolve priority conflicts with parametrized urls and custom urls

This commit is contained in:
Kuba Orlik 2025-06-01 16:29:37 +02:00
parent fa276c454f
commit 6a4dcae8d3
5 changed files with 612 additions and 102 deletions

624
package-lock.json generated
View File

@ -15,9 +15,9 @@
"@sealcode/add-to-head": "^1.0.0", "@sealcode/add-to-head": "^1.0.0",
"@sealcode/crud-ui": "^0.0.17", "@sealcode/crud-ui": "^0.0.17",
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
"@sealcode/jdd": "^0.7.6", "@sealcode/jdd": "^0.7.7",
"@sealcode/jdd-editor": "^0.1.22", "@sealcode/jdd-editor": "^0.1.23",
"@sealcode/sealgen": "^0.17.29", "@sealcode/sealgen": "^0.17.31",
"@sealcode/simplemde": "^1.12.1", "@sealcode/simplemde": "^1.12.1",
"@sealcode/ts-predicates": "^0.6.2", "@sealcode/ts-predicates": "^0.6.2",
"@types/kill-port": "^2.0.0", "@types/kill-port": "^2.0.0",
@ -30,14 +30,17 @@
"escape-goat": "^4.0.0", "escape-goat": "^4.0.0",
"get-port": "^7.0.0", "get-port": "^7.0.0",
"js-convert-case": "^4.2.0", "js-convert-case": "^4.2.0",
"koa-mount": "^4.2.0",
"koa-qs": "^3.0.0",
"koa-responsive-image-router": "^0.2.37", "koa-responsive-image-router": "^0.2.37",
"koa-static": "^5.0.0",
"locreq": "^3.0.0", "locreq": "^3.0.0",
"meilisearch": "^0.41.0", "meilisearch": "^0.41.0",
"multiple-scripts-tmux": "^1.0.4", "multiple-scripts-tmux": "^1.0.4",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"object-path": "^0.11.8", "object-path": "^0.11.8",
"qs": "^6.12.0", "qs": "^6.12.0",
"sealious": "^0.19.41", "sealious": "^0.20.0",
"slug": "^9.1.0", "slug": "^9.1.0",
"stimulus": "^3.2.2", "stimulus": "^3.2.2",
"tempstream": "^0.4.6", "tempstream": "^0.4.6",
@ -49,6 +52,9 @@
"@sealcode/ansi-html-stream": "^1.0.1", "@sealcode/ansi-html-stream": "^1.0.1",
"@types/hotwired__turbo": "^8.0.2", "@types/hotwired__turbo": "^8.0.2",
"@types/koa__router": "^12.0.4", "@types/koa__router": "^12.0.4",
"@types/koa-mount": "^4.0.5",
"@types/koa-qs": "^2.0.3",
"@types/koa-static": "^4.0.4",
"@types/node": "^20.8.4", "@types/node": "^20.8.4",
"@types/object-path": "^0.11.4", "@types/object-path": "^0.11.4",
"@types/slug": "^5.0.9", "@types/slug": "^5.0.9",
@ -497,12 +503,133 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/aix-ppc64": {
"version": "0.20.2", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
"integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
"cpu": [
"ppc64"
],
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
"integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
"integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
"integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"license": "MIT", "optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
"integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
"integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
"integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
"integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
"integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
"cpu": [
"arm"
],
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
@ -511,6 +638,216 @@
"node": ">=12" "node": ">=12"
} }
}, },
"node_modules/@esbuild/linux-arm64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
"integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
"integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
"integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
"cpu": [
"loong64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
"integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
"cpu": [
"mips64el"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
"integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
"cpu": [
"ppc64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
"integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
"cpu": [
"riscv64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
"integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
"cpu": [
"s390x"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
"integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
"integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
"integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
"integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
"integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
"integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
"integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@eslint-community/eslint-utils": { "node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0", "version": "4.4.0",
"dev": true, "dev": true,
@ -936,9 +1273,9 @@
} }
}, },
"node_modules/@sealcode/jdd": { "node_modules/@sealcode/jdd": {
"version": "0.7.6", "version": "0.7.7",
"resolved": "https://registry.npmjs.org/@sealcode/jdd/-/jdd-0.7.6.tgz", "resolved": "https://registry.npmjs.org/@sealcode/jdd/-/jdd-0.7.7.tgz",
"integrity": "sha512-YGXAbf+evGjjG7CG6g1wwUZrBUmece1x6oaVBWFISfsNLkVFC5WXXaBWUZftKF9gHoneBL/YZQdZHWnFmtsxTA==", "integrity": "sha512-L99aj9q6V1sRqFmMmtwKuzS6wNId22mKxJQc0pQH1StumYVpDfiSmtknPD6ZNLRWMGtmN7PYqal3cqBk+X4vTQ==",
"dependencies": { "dependencies": {
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
"@sealcode/ts-predicates": "^0.5.3", "@sealcode/ts-predicates": "^0.5.3",
@ -955,23 +1292,23 @@
"uuid": "^9.0.1" "uuid": "^9.0.1"
}, },
"peerDependencies": { "peerDependencies": {
"sealious": "^0.19.36" "sealious": "^0.20"
} }
}, },
"node_modules/@sealcode/jdd-editor": { "node_modules/@sealcode/jdd-editor": {
"version": "0.1.22", "version": "0.1.23",
"resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.1.22.tgz", "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.1.23.tgz",
"integrity": "sha512-/30o7C6v/P7M8KUCEBPuCN73Q+W1kXT5h4NtR/f8bTieGDTB0yjbG3zFdE/UeSrAznJdr4CXG3uePOm+NIOK4A==", "integrity": "sha512-PUogLAYskZ4LtbOwixP/KyexTUoWT8Z/Ht4r+k1spa6+4t+z0MK15AD6Oj3Gs8vfr20/YHZjMHiG+5NHvsDdDg==",
"dependencies": { "dependencies": {
"@koa/router": "^13.1.0", "@koa/router": "^13.1.0",
"@sealcode/jdd": "^0.7.6", "@sealcode/jdd": "^0.7.7",
"@sealcode/sealcodemirror": "^5.70.0-beta5", "@sealcode/sealcodemirror": "^5.70.0-beta5",
"@sealcode/sealgen": "^0.17.4", "@sealcode/sealgen": "^0.17.31",
"@types/object-path": "^0.11.4", "@types/object-path": "^0.11.4",
"@types/throttle-debounce": "^5.0.2", "@types/throttle-debounce": "^5.0.2",
"@types/turndown": "^5.0.5", "@types/turndown": "^5.0.5",
"object-path": "^0.11.8", "object-path": "^0.11.8",
"sealious": "^0.19.36", "sealious": "^0.20.0",
"stimulus": "^3.2.2", "stimulus": "^3.2.2",
"tempstream": "^0.4.6", "tempstream": "^0.4.6",
"throttle-debounce": "^5.0.2", "throttle-debounce": "^5.0.2",
@ -1015,9 +1352,9 @@
"integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg==" "integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
}, },
"node_modules/@sealcode/sealgen": { "node_modules/@sealcode/sealgen": {
"version": "0.17.29", "version": "0.17.31",
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.29.tgz", "resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.31.tgz",
"integrity": "sha512-fE2gXogW5Rz/yRWNZHNk41z9tA6JKlHYvQxxB1oqAsvowWAUT/V8ip4MVfjhwgW1LbiAg9X5Mav0BoSAxNol+g==", "integrity": "sha512-QvlwmLlbGVJBE10Oa4sfJ1/3X2IBilK43qOZBD8Q3ZDkaiuGPtYgYghTFtKYg8BqjvuVgfkhPmL+CYZ5NmkmOg==",
"dependencies": { "dependencies": {
"@koa/router": "^12.0.1", "@koa/router": "^12.0.1",
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
@ -1051,12 +1388,13 @@
"peerDependencies": { "peerDependencies": {
"koa": "^2.13.0", "koa": "^2.13.0",
"koa-responsive-image-router": "^0.2.24", "koa-responsive-image-router": "^0.2.24",
"sealious": "^0.19.8" "sealious": "^0.20"
} }
}, },
"node_modules/@sealcode/sealgen/node_modules/@sealcode/ts-predicates": { "node_modules/@sealcode/sealgen/node_modules/@sealcode/ts-predicates": {
"version": "0.4.3", "version": "0.4.3",
"license": "ISC" "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
"integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A=="
}, },
"node_modules/@sealcode/sealgen/node_modules/prettier": { "node_modules/@sealcode/sealgen/node_modules/prettier": {
"version": "2.8.8", "version": "2.8.8",
@ -1182,10 +1520,6 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"node_modules/@types/bluebird": {
"version": "3.5.42",
"license": "MIT"
},
"node_modules/@types/body-parser": { "node_modules/@types/body-parser": {
"version": "1.19.5", "version": "1.19.5",
"license": "MIT", "license": "MIT",
@ -1374,14 +1708,16 @@
}, },
"node_modules/@types/koa-mount": { "node_modules/@types/koa-mount": {
"version": "4.0.5", "version": "4.0.5",
"license": "MIT", "resolved": "https://registry.npmjs.org/@types/koa-mount/-/koa-mount-4.0.5.tgz",
"integrity": "sha512-pV1njJ7r94iqAFzT9D5sGSYKUHFGudCLAnmr4WFli7V5tJf5MAgRQK9leTPJ4gjvgr+hnTf86fZsKoFN358c7w==",
"dependencies": { "dependencies": {
"@types/koa": "*" "@types/koa": "*"
} }
}, },
"node_modules/@types/koa-qs": { "node_modules/@types/koa-qs": {
"version": "2.0.3", "version": "2.0.3",
"license": "MIT", "resolved": "https://registry.npmjs.org/@types/koa-qs/-/koa-qs-2.0.3.tgz",
"integrity": "sha512-HS4oAQaUKUZJPHggg3DeHiuUwSSotieNRuS2ZlUZO14216Fhf7QDNx8mjR/ZwXaSBr/R46KFtE0OAvsF3yP44A==",
"dependencies": { "dependencies": {
"@types/koa": "*" "@types/koa": "*"
} }
@ -1395,7 +1731,8 @@
}, },
"node_modules/@types/koa-static": { "node_modules/@types/koa-static": {
"version": "4.0.4", "version": "4.0.4",
"license": "MIT", "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.4.tgz",
"integrity": "sha512-j1AUzzl7eJYEk9g01hNTlhmipFh8RFbOQmaMNLvLcNNAkPw0bdTs3XTa3V045XFlrWN0QYnblbDJv2RzawTn6A==",
"dependencies": { "dependencies": {
"@types/koa": "*", "@types/koa": "*",
"@types/koa-send": "*" "@types/koa-send": "*"
@ -2426,10 +2763,6 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/bluebird": {
"version": "3.7.2",
"license": "MIT"
},
"node_modules/boolbase": { "node_modules/boolbase": {
"version": "1.0.0", "version": "1.0.0",
"license": "ISC" "license": "ISC"
@ -2899,7 +3232,8 @@
}, },
"node_modules/charenc": { "node_modules/charenc": {
"version": "0.0.2", "version": "0.0.2",
"license": "BSD-3-Clause", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"engines": { "engines": {
"node": "*" "node": "*"
} }
@ -3382,7 +3716,8 @@
}, },
"node_modules/crypt": { "node_modules/crypt": {
"version": "0.0.2", "version": "0.0.2",
"license": "BSD-3-Clause", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
"engines": { "engines": {
"node": "*" "node": "*"
} }
@ -3876,8 +4211,9 @@
} }
}, },
"node_modules/destr": { "node_modules/destr": {
"version": "2.0.3", "version": "2.0.5",
"license": "MIT" "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
"integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="
}, },
"node_modules/destroy": { "node_modules/destroy": {
"version": "1.2.0", "version": "1.2.0",
@ -4398,8 +4734,9 @@
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.20.2", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
"integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT",
"bin": { "bin": {
"esbuild": "bin/esbuild" "esbuild": "bin/esbuild"
}, },
@ -5913,7 +6250,8 @@
}, },
"node_modules/globalyzer": { "node_modules/globalyzer": {
"version": "0.1.0", "version": "0.1.0",
"license": "MIT" "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
"integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
}, },
"node_modules/globby": { "node_modules/globby": {
"version": "11.1.0", "version": "11.1.0",
@ -5943,7 +6281,8 @@
}, },
"node_modules/globrex": { "node_modules/globrex": {
"version": "0.1.2", "version": "0.1.2",
"license": "MIT" "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
}, },
"node_modules/glogg": { "node_modules/glogg": {
"version": "1.0.2", "version": "1.0.2",
@ -5957,13 +6296,14 @@
} }
}, },
"node_modules/google-fonts-helper": { "node_modules/google-fonts-helper": {
"version": "3.5.0", "version": "3.7.3",
"license": "MIT", "resolved": "https://registry.npmjs.org/google-fonts-helper/-/google-fonts-helper-3.7.3.tgz",
"integrity": "sha512-dENZeK6RMvkCOFoKbLbS+pyoDgpmk4U6BYmfXnztMar2d8SjEG6valxql/Lkyi7bu5F+3FTdE+gAEYSYZ5zzMA==",
"dependencies": { "dependencies": {
"deepmerge": "^4.3.1", "deepmerge": "^4.3.1",
"hookable": "^5.5.3", "hookable": "^5.5.3",
"ofetch": "^1.3.3", "ofetch": "^1.4.1",
"ufo": "^1.4.0" "ufo": "^1.5.4"
} }
}, },
"node_modules/gopd": { "node_modules/gopd": {
@ -6363,7 +6703,8 @@
}, },
"node_modules/hookable": { "node_modules/hookable": {
"version": "5.5.3", "version": "5.5.3",
"license": "MIT" "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
"integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
}, },
"node_modules/html-entities": { "node_modules/html-entities": {
"version": "2.5.2", "version": "2.5.2",
@ -6712,7 +7053,8 @@
}, },
"node_modules/is-buffer": { "node_modules/is-buffer": {
"version": "1.1.6", "version": "1.1.6",
"license": "MIT" "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
}, },
"node_modules/is-bzip2": { "node_modules/is-bzip2": {
"version": "1.0.0", "version": "1.0.0",
@ -7092,7 +7434,8 @@
}, },
"node_modules/is-what": { "node_modules/is-what": {
"version": "4.1.16", "version": "4.1.16",
"license": "MIT", "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
"integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
"engines": { "engines": {
"node": ">=12.13" "node": ">=12.13"
}, },
@ -7464,7 +7807,8 @@
}, },
"node_modules/kleur": { "node_modules/kleur": {
"version": "3.0.3", "version": "3.0.3",
"license": "MIT", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@ -7533,8 +7877,9 @@
} }
}, },
"node_modules/koa-mount": { "node_modules/koa-mount": {
"version": "4.0.0", "version": "4.2.0",
"license": "MIT", "resolved": "https://registry.npmjs.org/koa-mount/-/koa-mount-4.2.0.tgz",
"integrity": "sha512-2iHQc7vbA9qLeVq5gKAYh3m5DOMMlMfIKjW/REPAS18Mf63daCJHHVXY9nbu7ivrnYn5PiPC4CE523Tf5qvjeQ==",
"dependencies": { "dependencies": {
"debug": "^4.0.1", "debug": "^4.0.1",
"koa-compose": "^4.1.0" "koa-compose": "^4.1.0"
@ -7545,7 +7890,8 @@
}, },
"node_modules/koa-qs": { "node_modules/koa-qs": {
"version": "3.0.0", "version": "3.0.0",
"license": "MIT", "resolved": "https://registry.npmjs.org/koa-qs/-/koa-qs-3.0.0.tgz",
"integrity": "sha512-05IB5KirwMs3heWW26iTz46HuMAtrlrRMus/aNH1BRDocLyF/099EtCB0MIfQpRuT0TISvaTsWwSy2gctIWiGA==",
"dependencies": { "dependencies": {
"merge-descriptors": "^1.0.1", "merge-descriptors": "^1.0.1",
"qs": "^6.9.4" "qs": "^6.9.4"
@ -7728,7 +8074,8 @@
}, },
"node_modules/koa-static": { "node_modules/koa-static": {
"version": "5.0.0", "version": "5.0.0",
"license": "MIT", "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz",
"integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==",
"dependencies": { "dependencies": {
"debug": "^3.1.0", "debug": "^3.1.0",
"koa-send": "^5.0.0" "koa-send": "^5.0.0"
@ -8146,7 +8493,8 @@
}, },
"node_modules/md5": { "node_modules/md5": {
"version": "2.3.0", "version": "2.3.0",
"license": "BSD-3-Clause", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dependencies": { "dependencies": {
"charenc": "0.0.2", "charenc": "0.0.2",
"crypt": "0.0.2", "crypt": "0.0.2",
@ -8214,7 +8562,8 @@
}, },
"node_modules/merge": { "node_modules/merge": {
"version": "2.1.1", "version": "2.1.1",
"license": "MIT" "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
"integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
}, },
"node_modules/merge-descriptors": { "node_modules/merge-descriptors": {
"version": "1.0.3", "version": "1.0.3",
@ -9449,8 +9798,9 @@
} }
}, },
"node_modules/node-fetch-native": { "node_modules/node-fetch-native": {
"version": "1.6.4", "version": "1.6.6",
"license": "MIT" "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
"integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ=="
}, },
"node_modules/node-fetch/node_modules/tr46": { "node_modules/node-fetch/node_modules/tr46": {
"version": "0.0.3", "version": "0.0.3",
@ -9691,12 +10041,13 @@
} }
}, },
"node_modules/ofetch": { "node_modules/ofetch": {
"version": "1.3.4", "version": "1.4.1",
"license": "MIT", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
"integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
"dependencies": { "dependencies": {
"destr": "^2.0.3", "destr": "^2.0.3",
"node-fetch-native": "^1.6.3", "node-fetch-native": "^1.6.4",
"ufo": "^1.5.3" "ufo": "^1.5.4"
} }
}, },
"node_modules/on-finished": { "node_modules/on-finished": {
@ -10094,6 +10445,87 @@
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
}, },
"node_modules/pg": {
"version": "8.16.0",
"resolved": "https://registry.npmjs.org/pg/-/pg-8.16.0.tgz",
"integrity": "sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==",
"dependencies": {
"pg-connection-string": "^2.9.0",
"pg-pool": "^3.10.0",
"pg-protocol": "^1.10.0",
"pg-types": "2.2.0",
"pgpass": "1.0.5"
},
"engines": {
"node": ">= 8.0.0"
},
"optionalDependencies": {
"pg-cloudflare": "^1.2.5"
},
"peerDependencies": {
"pg-native": ">=3.0.1"
},
"peerDependenciesMeta": {
"pg-native": {
"optional": true
}
}
},
"node_modules/pg-cloudflare": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz",
"integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==",
"optional": true
},
"node_modules/pg-connection-string": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.0.tgz",
"integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ=="
},
"node_modules/pg-int8": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/pg-pool": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.0.tgz",
"integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==",
"peerDependencies": {
"pg": ">=8.0"
}
},
"node_modules/pg-protocol": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz",
"integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q=="
},
"node_modules/pg-types": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
"dependencies": {
"pg-int8": "1.0.1",
"postgres-array": "~2.0.0",
"postgres-bytea": "~1.0.0",
"postgres-date": "~1.0.4",
"postgres-interval": "^1.1.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/pgpass": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
"integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
"dependencies": {
"split2": "^4.1.0"
}
},
"node_modules/pick-port": { "node_modules/pick-port": {
"version": "2.1.0", "version": "2.1.0",
"license": "MIT", "license": "MIT",
@ -10221,6 +10653,41 @@
"version": "0.2.1", "version": "0.2.1",
"license": "ISC" "license": "ISC"
}, },
"node_modules/postgres-array": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
"engines": {
"node": ">=4"
}
},
"node_modules/postgres-bytea": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
"integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/postgres-date": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
"integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/postgres-interval": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
"dependencies": {
"xtend": "^4.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/prebuild-install": { "node_modules/prebuild-install": {
"version": "7.1.2", "version": "7.1.2",
"license": "MIT", "license": "MIT",
@ -10357,7 +10824,8 @@
}, },
"node_modules/prompts": { "node_modules/prompts": {
"version": "2.4.2", "version": "2.4.2",
"license": "MIT", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
"integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"dependencies": { "dependencies": {
"kleur": "^3.0.3", "kleur": "^3.0.3",
"sisteransi": "^1.0.5" "sisteransi": "^1.0.5"
@ -10562,7 +11030,8 @@
}, },
"node_modules/recursive-readdir": { "node_modules/recursive-readdir": {
"version": "2.2.3", "version": "2.2.3",
"license": "MIT", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
"integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
"dependencies": { "dependencies": {
"minimatch": "^3.0.5" "minimatch": "^3.0.5"
}, },
@ -11019,14 +11488,13 @@
} }
}, },
"node_modules/sealious": { "node_modules/sealious": {
"version": "0.19.41", "version": "0.20.0",
"resolved": "https://registry.npmjs.org/sealious/-/sealious-0.19.41.tgz", "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.20.0.tgz",
"integrity": "sha512-D2KhetKsOiXJB90Rr5ayVB6H/2dBFTfQRIwJ79qOLUzLRLkR7NDpzGz+RIKUJMsaNA+MfIIBMPM8h6Uuf3x2Uw==", "integrity": "sha512-uoVXfjFvsLcKwjTbADkxgwIUJ6MV9LXOABrwCQkarVwHTMks2cwtWSQF0eDZ+VZdfy+rr5WroepUpUe+b3wt6A==",
"dependencies": { "dependencies": {
"@koa/router": "^12.0.1", "@koa/router": "^12.0.1",
"@sealcode/file-manager": "^1.0.1", "@sealcode/file-manager": "^1.0.1",
"@sealcode/ts-predicates": "^0.4.3", "@sealcode/ts-predicates": "^0.4.3",
"@types/bluebird": "^3.5.30",
"@types/boom": "^7.3.0", "@types/boom": "^7.3.0",
"@types/clone": "^0.1.30", "@types/clone": "^0.1.30",
"@types/color": "^3.0.1", "@types/color": "^3.0.1",
@ -11044,7 +11512,6 @@
"@types/object-hash": "^1.3.3", "@types/object-hash": "^1.3.3",
"@types/sanitize-html": "^2.11.0", "@types/sanitize-html": "^2.11.0",
"@types/uuid": "^8.3.0", "@types/uuid": "^8.3.0",
"bluebird": "^3.4.6",
"boom": "^7.3.0", "boom": "^7.3.0",
"chalk": "^4.1.0", "chalk": "^4.1.0",
"clone": "^1.0.2", "clone": "^1.0.2",
@ -11070,6 +11537,7 @@
"nanoid": "^5.0.9", "nanoid": "^5.0.9",
"nodemailer": "^6.4.6", "nodemailer": "^6.4.6",
"object-hash": "^2.0.3", "object-hash": "^2.0.3",
"pg": "^8.13.1",
"pretty-ms": "^7.0.0", "pretty-ms": "^7.0.0",
"qs": "^6.12.0", "qs": "^6.12.0",
"sanitize-html": "^1.13.0", "sanitize-html": "^1.13.0",
@ -11450,7 +11918,8 @@
}, },
"node_modules/sisteransi": { "node_modules/sisteransi": {
"version": "1.0.5", "version": "1.0.5",
"license": "MIT" "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
}, },
"node_modules/slash": { "node_modules/slash": {
"version": "3.0.0", "version": "3.0.0",
@ -11586,6 +12055,14 @@
"memory-pager": "^1.0.2" "memory-pager": "^1.0.2"
} }
}, },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"engines": {
"node": ">= 10.x"
}
},
"node_modules/sshpk": { "node_modules/sshpk": {
"version": "1.18.0", "version": "1.18.0",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
@ -12580,7 +13057,8 @@
}, },
"node_modules/tiny-glob": { "node_modules/tiny-glob": {
"version": "0.2.9", "version": "0.2.9",
"license": "MIT", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
"integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
"dependencies": { "dependencies": {
"globalyzer": "0.1.0", "globalyzer": "0.1.0",
"globrex": "^0.1.2" "globrex": "^0.1.2"
@ -13049,8 +13527,9 @@
"license": "BSD-3-Clause" "license": "BSD-3-Clause"
}, },
"node_modules/ufo": { "node_modules/ufo": {
"version": "1.5.3", "version": "1.6.1",
"license": "MIT" "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
"integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="
}, },
"node_modules/uglify-js": { "node_modules/uglify-js": {
"version": "3.17.4", "version": "3.17.4",
@ -13653,8 +14132,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/ws": { "node_modules/ws": {
"version": "8.16.0", "version": "8.18.2",
"license": "MIT", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
"integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
}, },

View File

@ -76,9 +76,9 @@
"@sealcode/add-to-head": "^1.0.0", "@sealcode/add-to-head": "^1.0.0",
"@sealcode/crud-ui": "^0.0.17", "@sealcode/crud-ui": "^0.0.17",
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
"@sealcode/jdd": "^0.7.6", "@sealcode/jdd": "^0.7.7",
"@sealcode/jdd-editor": "^0.1.22", "@sealcode/jdd-editor": "^0.1.23",
"@sealcode/sealgen": "^0.17.29", "@sealcode/sealgen": "^0.17.31",
"@sealcode/simplemde": "^1.12.1", "@sealcode/simplemde": "^1.12.1",
"@sealcode/ts-predicates": "^0.6.2", "@sealcode/ts-predicates": "^0.6.2",
"@types/kill-port": "^2.0.0", "@types/kill-port": "^2.0.0",
@ -91,14 +91,17 @@
"escape-goat": "^4.0.0", "escape-goat": "^4.0.0",
"get-port": "^7.0.0", "get-port": "^7.0.0",
"js-convert-case": "^4.2.0", "js-convert-case": "^4.2.0",
"koa-mount": "^4.2.0",
"koa-qs": "^3.0.0",
"koa-responsive-image-router": "^0.2.37", "koa-responsive-image-router": "^0.2.37",
"koa-static": "^5.0.0",
"locreq": "^3.0.0", "locreq": "^3.0.0",
"meilisearch": "^0.41.0", "meilisearch": "^0.41.0",
"multiple-scripts-tmux": "^1.0.4", "multiple-scripts-tmux": "^1.0.4",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"object-path": "^0.11.8", "object-path": "^0.11.8",
"qs": "^6.12.0", "qs": "^6.12.0",
"sealious": "^0.19.41", "sealious": "^0.20.0",
"slug": "^9.1.0", "slug": "^9.1.0",
"stimulus": "^3.2.2", "stimulus": "^3.2.2",
"tempstream": "^0.4.6", "tempstream": "^0.4.6",
@ -110,6 +113,9 @@
"@sealcode/ansi-html-stream": "^1.0.1", "@sealcode/ansi-html-stream": "^1.0.1",
"@types/hotwired__turbo": "^8.0.2", "@types/hotwired__turbo": "^8.0.2",
"@types/koa__router": "^12.0.4", "@types/koa__router": "^12.0.4",
"@types/koa-mount": "^4.0.5",
"@types/koa-qs": "^2.0.3",
"@types/koa-static": "^4.0.4",
"@types/node": "^20.8.4", "@types/node": "^20.8.4",
"@types/object-path": "^0.11.4", "@types/object-path": "^0.11.4",
"@types/slug": "^5.0.9", "@types/slug": "^5.0.9",

View File

@ -1,12 +1,15 @@
import Router from "@koa/router";
import kill from "kill-port"; import kill from "kill-port";
import _locreq from "locreq"; import { Middlewares } from "sealious";
import { default as Koa } from "koa";
import installQS from "koa-qs";
import TheApp from "./app.js"; import TheApp from "./app.js";
import { PORT, SEALIOUS_SANITY } from "./config.js"; import { PORT, SEALIOUS_SANITY } from "./config.js";
import { mainRouter } from "./routes/index.js"; import { mainRouter } from "./routes/index.js";
import { waitForMeilisearch } from "./services/meilisearch.js"; import { waitForMeilisearch } from "./services/meilisearch.js";
const locreq = _locreq(new URL("./", import.meta.url).pathname);
export const the_app = new TheApp(); export const the_app = new TheApp();
void (async function () { void (async function () {
@ -26,13 +29,22 @@ void (async function () {
} }
try { try {
the_app.HTTPServer.addStaticRoute("/", locreq.resolve("public")); const koa_app = new Koa();
const router = new Router();
installQS(koa_app);
koa_app.use(Middlewares.handleError());
koa_app.context.$app = the_app;
the_app.on("started", () => {
mainRouter(the_app, koa_app, router);
});
await the_app.start(); await the_app.start();
mainRouter(the_app, the_app.HTTPServer.router);
// eslint-disable-next-line no-console koa_app.listen(PORT);
console.log("Population finished"); the_app.Logger.info(
"STARTED",
`App running. URL set in manifest: ${the_app.manifest.base_url}`
);
if (SEALIOUS_SANITY) { if (SEALIOUS_SANITY) {
console.error("Exiting with error code 0"); console.error("Exiting with error code 0");

View File

@ -1,11 +1,16 @@
import type Router from "@koa/router"; import type Router from "@koa/router";
import { imageRouter, RESPONSIVE_IMAGES_URL_PATH } from "../image-router.js"; import type { default as Koa } from "koa";
import mountAutoRoutes from "./routes.js"; import mount from "koa-mount";
import { customUrlView } from "./middlewares/customUrlView.js"; import Static from "koa-static";
import type TheApp from "../app.js";
import { Middlewares } from "sealious"; import { Middlewares } from "sealious";
import type TheApp from "../app.js";
import { imageRouter, RESPONSIVE_IMAGES_URL_PATH } from "../image-router.js";
import { customUrlView } from "./middlewares/customUrlView.js";
import mountAutoRoutes from "./routes.js";
import _locreq from "locreq";
const locreq = _locreq(new URL("./", import.meta.url).pathname);
export const mainRouter = (app: TheApp, router: Router): void => { export const mainRouter = (app: TheApp, koa_app: Koa, router: Router): void => {
const started_at = Date.now(); // necessary to detect aplication restarts const started_at = Date.now(); // necessary to detect aplication restarts
router.get("(.*)", async (ctx, next) => { router.get("(.*)", async (ctx, next) => {
@ -25,6 +30,12 @@ export const mainRouter = (app: TheApp, router: Router): void => {
await next(); await next();
}); });
koa_app.use(mount("/", Static(locreq.resolve("public"))));
koa_app.use(Middlewares.extractContext());
koa_app.use(customUrlView(app));
app.initRouter(router);
koa_app.use(router.routes());
router.use(Middlewares.extractContext()); router.use(Middlewares.extractContext());
router.get("/status.json", Middlewares.extractContext(), async (ctx) => { router.get("/status.json", Middlewares.extractContext(), async (ctx) => {
ctx.body = { status: ctx.$app.status, started_at }; ctx.body = { status: ctx.$app.status, started_at };
@ -32,8 +43,5 @@ export const mainRouter = (app: TheApp, router: Router): void => {
router.use(RESPONSIVE_IMAGES_URL_PATH, imageRouter.getRoutes()); router.use(RESPONSIVE_IMAGES_URL_PATH, imageRouter.getRoutes());
app.HTTPServer.koa.use(Middlewares.extractContext());
app.HTTPServer.koa.use(customUrlView(app));
mountAutoRoutes(router); mountAutoRoutes(router);
}; };

View File

@ -1,17 +1,15 @@
import _locreq from "locreq";
import { v4 as uuid } from "uuid";
const locreq = _locreq(import.meta.dirname);
import { SMTPMailer } from "sealious";
import { TestUtils } from "sealious";
import TheApp from "../app.js";
import { mainRouter } from "../routes/index.js";
import getPort from "get-port"; import getPort from "get-port";
import { default as Koa } from "koa";
import { SMTPMailer, TestUtils, Middlewares } from "sealious";
import { v4 as uuid } from "uuid";
import TheApp from "../app.js";
import { import {
MAILCATCHER_API_PORT, MAILCATCHER_API_PORT,
MAILCATCHER_HOST, MAILCATCHER_HOST,
MAILCATCHER_SMTP_PORT, MAILCATCHER_SMTP_PORT,
} from "../config.js"; } from "../config.js";
import { mainRouter } from "../routes/index.js";
import Router from "@koa/router";
const port_numbers = async function* () { const port_numbers = async function* () {
yield await getPort(); yield await getPort();
@ -44,9 +42,14 @@ export async function withProdApp(
password: "any", password: "any",
}); });
mainRouter(app, app.HTTPServer.router); const koa_app = new Koa();
const router = new Router();
app.HTTPServer.addStaticRoute("/", locreq.resolve("public")); koa_app.use(Middlewares.handleError());
koa_app.context.$app = app;
const server = koa_app.listen(port);
app.on("started", () => {
mainRouter(app, koa_app, router);
});
await app.start(); await app.start();
const base_url = `http://127.0.0.1:${port}`; const base_url = `http://127.0.0.1:${port}`;
@ -59,6 +62,7 @@ export async function withProdApp(
async function stop() { async function stop() {
await app.removeAllData(); await app.removeAllData();
await app.stop(); await app.stop();
server.close();
} }
try { try {