YYou3 commited on
Commit
5e9feb1
·
1 Parent(s): 04ee51b

add initial

Browse files
Files changed (7) hide show
  1. .gitignore +1 -0
  2. Dockerfile +7 -0
  3. common/access-control.ts +10 -0
  4. index.ts +34 -0
  5. package-lock.json +1187 -0
  6. package.json +27 -0
  7. sandBox.ts +106 -0
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ node_modules/
Dockerfile ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ FROM node:lts-alpine
2
+
3
+ WORKDIR "/app"
4
+
5
+ COPY ./ ./
6
+ ENTRYPOINT ["node"]
7
+ CMD ["./index.ts", "--port", "80"]
common/access-control.ts ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ export function policy(req:any, res:any, next:any) {
3
+ if (req.header('Origin')) {
4
+ res.header("Access-Control-Allow-Origin", "*");
5
+ res.header("Access-Control-Allow-Headers", "*");
6
+ res.header("Access-Control-Allow-Headers", "Content-Type");
7
+ res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
8
+ }
9
+ next();
10
+ }
index.ts ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { policy } from "./common/access-control.ts";
2
+ import express from "express";
3
+ import yargs from 'yargs';
4
+ import { hideBin } from 'yargs/helpers';
5
+ const argv: any = yargs(hideBin(process.argv)).parse();
6
+
7
+ import { sandBox } from "./sandBox.ts";
8
+
9
+ let port = argv.port || process.env.PORT || 8080;
10
+ let app = express();
11
+ app.use(policy);
12
+
13
+ app.post("/sandBox", express.text());
14
+ app.post("/sandBox", sandBox);
15
+ app.use("/api/ping", express.json({ limit: "900kb" }));
16
+ app.use("/api/ping", (req, res) => {
17
+ res.status(200).json({
18
+ query: req.query,
19
+ headers: req.rawHeaders,
20
+ body: req.body,
21
+ });
22
+ });
23
+
24
+ app
25
+ .listen(port, () => {
26
+ console.log(
27
+ `starting at ${port} node ${process.version}`
28
+ );
29
+ })
30
+ .on("error", function (err) {
31
+ console.log(
32
+ `failed to start at ${port} ${err}`
33
+ );
34
+ });
package-lock.json ADDED
@@ -0,0 +1,1187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "node",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "node",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "express": "^5.1.0",
13
+ "systeminformation": "^5.27.11",
14
+ "uuid": "^13.0.0",
15
+ "yargs": "^18.0.0"
16
+ },
17
+ "devDependencies": {
18
+ "@types/express": "^5.0.5",
19
+ "@types/yargs": "^17.0.34"
20
+ }
21
+ },
22
+ "node_modules/@types/body-parser": {
23
+ "version": "1.19.6",
24
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
25
+ "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
26
+ "dev": true,
27
+ "license": "MIT",
28
+ "dependencies": {
29
+ "@types/connect": "*",
30
+ "@types/node": "*"
31
+ }
32
+ },
33
+ "node_modules/@types/connect": {
34
+ "version": "3.4.38",
35
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
36
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
37
+ "dev": true,
38
+ "license": "MIT",
39
+ "dependencies": {
40
+ "@types/node": "*"
41
+ }
42
+ },
43
+ "node_modules/@types/express": {
44
+ "version": "5.0.5",
45
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.5.tgz",
46
+ "integrity": "sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==",
47
+ "dev": true,
48
+ "license": "MIT",
49
+ "dependencies": {
50
+ "@types/body-parser": "*",
51
+ "@types/express-serve-static-core": "^5.0.0",
52
+ "@types/serve-static": "^1"
53
+ }
54
+ },
55
+ "node_modules/@types/express-serve-static-core": {
56
+ "version": "5.1.0",
57
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz",
58
+ "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==",
59
+ "dev": true,
60
+ "license": "MIT",
61
+ "dependencies": {
62
+ "@types/node": "*",
63
+ "@types/qs": "*",
64
+ "@types/range-parser": "*",
65
+ "@types/send": "*"
66
+ }
67
+ },
68
+ "node_modules/@types/http-errors": {
69
+ "version": "2.0.5",
70
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
71
+ "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
72
+ "dev": true,
73
+ "license": "MIT"
74
+ },
75
+ "node_modules/@types/mime": {
76
+ "version": "1.3.5",
77
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
78
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
79
+ "dev": true,
80
+ "license": "MIT"
81
+ },
82
+ "node_modules/@types/node": {
83
+ "version": "24.10.0",
84
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz",
85
+ "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==",
86
+ "dev": true,
87
+ "license": "MIT",
88
+ "dependencies": {
89
+ "undici-types": "~7.16.0"
90
+ }
91
+ },
92
+ "node_modules/@types/qs": {
93
+ "version": "6.14.0",
94
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
95
+ "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
96
+ "dev": true,
97
+ "license": "MIT"
98
+ },
99
+ "node_modules/@types/range-parser": {
100
+ "version": "1.2.7",
101
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
102
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
103
+ "dev": true,
104
+ "license": "MIT"
105
+ },
106
+ "node_modules/@types/send": {
107
+ "version": "1.2.1",
108
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
109
+ "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
110
+ "dev": true,
111
+ "license": "MIT",
112
+ "dependencies": {
113
+ "@types/node": "*"
114
+ }
115
+ },
116
+ "node_modules/@types/serve-static": {
117
+ "version": "1.15.10",
118
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
119
+ "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
120
+ "dev": true,
121
+ "license": "MIT",
122
+ "dependencies": {
123
+ "@types/http-errors": "*",
124
+ "@types/node": "*",
125
+ "@types/send": "<1"
126
+ }
127
+ },
128
+ "node_modules/@types/serve-static/node_modules/@types/send": {
129
+ "version": "0.17.6",
130
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
131
+ "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
132
+ "dev": true,
133
+ "license": "MIT",
134
+ "dependencies": {
135
+ "@types/mime": "^1",
136
+ "@types/node": "*"
137
+ }
138
+ },
139
+ "node_modules/@types/yargs": {
140
+ "version": "17.0.34",
141
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz",
142
+ "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==",
143
+ "dev": true,
144
+ "license": "MIT",
145
+ "dependencies": {
146
+ "@types/yargs-parser": "*"
147
+ }
148
+ },
149
+ "node_modules/@types/yargs-parser": {
150
+ "version": "21.0.3",
151
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
152
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
153
+ "dev": true,
154
+ "license": "MIT"
155
+ },
156
+ "node_modules/accepts": {
157
+ "version": "2.0.0",
158
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
159
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
160
+ "license": "MIT",
161
+ "dependencies": {
162
+ "mime-types": "^3.0.0",
163
+ "negotiator": "^1.0.0"
164
+ },
165
+ "engines": {
166
+ "node": ">= 0.6"
167
+ }
168
+ },
169
+ "node_modules/ansi-regex": {
170
+ "version": "6.2.2",
171
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
172
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
173
+ "license": "MIT",
174
+ "engines": {
175
+ "node": ">=12"
176
+ },
177
+ "funding": {
178
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
179
+ }
180
+ },
181
+ "node_modules/ansi-styles": {
182
+ "version": "6.2.3",
183
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
184
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
185
+ "license": "MIT",
186
+ "engines": {
187
+ "node": ">=12"
188
+ },
189
+ "funding": {
190
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
191
+ }
192
+ },
193
+ "node_modules/body-parser": {
194
+ "version": "2.2.0",
195
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
196
+ "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
197
+ "license": "MIT",
198
+ "dependencies": {
199
+ "bytes": "^3.1.2",
200
+ "content-type": "^1.0.5",
201
+ "debug": "^4.4.0",
202
+ "http-errors": "^2.0.0",
203
+ "iconv-lite": "^0.6.3",
204
+ "on-finished": "^2.4.1",
205
+ "qs": "^6.14.0",
206
+ "raw-body": "^3.0.0",
207
+ "type-is": "^2.0.0"
208
+ },
209
+ "engines": {
210
+ "node": ">=18"
211
+ }
212
+ },
213
+ "node_modules/bytes": {
214
+ "version": "3.1.2",
215
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
216
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
217
+ "license": "MIT",
218
+ "engines": {
219
+ "node": ">= 0.8"
220
+ }
221
+ },
222
+ "node_modules/call-bind-apply-helpers": {
223
+ "version": "1.0.2",
224
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
225
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
226
+ "license": "MIT",
227
+ "dependencies": {
228
+ "es-errors": "^1.3.0",
229
+ "function-bind": "^1.1.2"
230
+ },
231
+ "engines": {
232
+ "node": ">= 0.4"
233
+ }
234
+ },
235
+ "node_modules/call-bound": {
236
+ "version": "1.0.4",
237
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
238
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
239
+ "license": "MIT",
240
+ "dependencies": {
241
+ "call-bind-apply-helpers": "^1.0.2",
242
+ "get-intrinsic": "^1.3.0"
243
+ },
244
+ "engines": {
245
+ "node": ">= 0.4"
246
+ },
247
+ "funding": {
248
+ "url": "https://github.com/sponsors/ljharb"
249
+ }
250
+ },
251
+ "node_modules/cliui": {
252
+ "version": "9.0.1",
253
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
254
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
255
+ "license": "ISC",
256
+ "dependencies": {
257
+ "string-width": "^7.2.0",
258
+ "strip-ansi": "^7.1.0",
259
+ "wrap-ansi": "^9.0.0"
260
+ },
261
+ "engines": {
262
+ "node": ">=20"
263
+ }
264
+ },
265
+ "node_modules/content-disposition": {
266
+ "version": "1.0.0",
267
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
268
+ "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
269
+ "license": "MIT",
270
+ "dependencies": {
271
+ "safe-buffer": "5.2.1"
272
+ },
273
+ "engines": {
274
+ "node": ">= 0.6"
275
+ }
276
+ },
277
+ "node_modules/content-type": {
278
+ "version": "1.0.5",
279
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
280
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
281
+ "license": "MIT",
282
+ "engines": {
283
+ "node": ">= 0.6"
284
+ }
285
+ },
286
+ "node_modules/cookie": {
287
+ "version": "0.7.2",
288
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
289
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
290
+ "license": "MIT",
291
+ "engines": {
292
+ "node": ">= 0.6"
293
+ }
294
+ },
295
+ "node_modules/cookie-signature": {
296
+ "version": "1.2.2",
297
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
298
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
299
+ "license": "MIT",
300
+ "engines": {
301
+ "node": ">=6.6.0"
302
+ }
303
+ },
304
+ "node_modules/debug": {
305
+ "version": "4.4.3",
306
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
307
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
308
+ "license": "MIT",
309
+ "dependencies": {
310
+ "ms": "^2.1.3"
311
+ },
312
+ "engines": {
313
+ "node": ">=6.0"
314
+ },
315
+ "peerDependenciesMeta": {
316
+ "supports-color": {
317
+ "optional": true
318
+ }
319
+ }
320
+ },
321
+ "node_modules/depd": {
322
+ "version": "2.0.0",
323
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
324
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
325
+ "license": "MIT",
326
+ "engines": {
327
+ "node": ">= 0.8"
328
+ }
329
+ },
330
+ "node_modules/dunder-proto": {
331
+ "version": "1.0.1",
332
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
333
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
334
+ "license": "MIT",
335
+ "dependencies": {
336
+ "call-bind-apply-helpers": "^1.0.1",
337
+ "es-errors": "^1.3.0",
338
+ "gopd": "^1.2.0"
339
+ },
340
+ "engines": {
341
+ "node": ">= 0.4"
342
+ }
343
+ },
344
+ "node_modules/ee-first": {
345
+ "version": "1.1.1",
346
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
347
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
348
+ "license": "MIT"
349
+ },
350
+ "node_modules/emoji-regex": {
351
+ "version": "10.6.0",
352
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
353
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
354
+ "license": "MIT"
355
+ },
356
+ "node_modules/encodeurl": {
357
+ "version": "2.0.0",
358
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
359
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
360
+ "license": "MIT",
361
+ "engines": {
362
+ "node": ">= 0.8"
363
+ }
364
+ },
365
+ "node_modules/es-define-property": {
366
+ "version": "1.0.1",
367
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
368
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
369
+ "license": "MIT",
370
+ "engines": {
371
+ "node": ">= 0.4"
372
+ }
373
+ },
374
+ "node_modules/es-errors": {
375
+ "version": "1.3.0",
376
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
377
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
378
+ "license": "MIT",
379
+ "engines": {
380
+ "node": ">= 0.4"
381
+ }
382
+ },
383
+ "node_modules/es-object-atoms": {
384
+ "version": "1.1.1",
385
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
386
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
387
+ "license": "MIT",
388
+ "dependencies": {
389
+ "es-errors": "^1.3.0"
390
+ },
391
+ "engines": {
392
+ "node": ">= 0.4"
393
+ }
394
+ },
395
+ "node_modules/escalade": {
396
+ "version": "3.2.0",
397
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
398
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
399
+ "license": "MIT",
400
+ "engines": {
401
+ "node": ">=6"
402
+ }
403
+ },
404
+ "node_modules/escape-html": {
405
+ "version": "1.0.3",
406
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
407
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
408
+ "license": "MIT"
409
+ },
410
+ "node_modules/etag": {
411
+ "version": "1.8.1",
412
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
413
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
414
+ "license": "MIT",
415
+ "engines": {
416
+ "node": ">= 0.6"
417
+ }
418
+ },
419
+ "node_modules/express": {
420
+ "version": "5.1.0",
421
+ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
422
+ "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
423
+ "license": "MIT",
424
+ "dependencies": {
425
+ "accepts": "^2.0.0",
426
+ "body-parser": "^2.2.0",
427
+ "content-disposition": "^1.0.0",
428
+ "content-type": "^1.0.5",
429
+ "cookie": "^0.7.1",
430
+ "cookie-signature": "^1.2.1",
431
+ "debug": "^4.4.0",
432
+ "encodeurl": "^2.0.0",
433
+ "escape-html": "^1.0.3",
434
+ "etag": "^1.8.1",
435
+ "finalhandler": "^2.1.0",
436
+ "fresh": "^2.0.0",
437
+ "http-errors": "^2.0.0",
438
+ "merge-descriptors": "^2.0.0",
439
+ "mime-types": "^3.0.0",
440
+ "on-finished": "^2.4.1",
441
+ "once": "^1.4.0",
442
+ "parseurl": "^1.3.3",
443
+ "proxy-addr": "^2.0.7",
444
+ "qs": "^6.14.0",
445
+ "range-parser": "^1.2.1",
446
+ "router": "^2.2.0",
447
+ "send": "^1.1.0",
448
+ "serve-static": "^2.2.0",
449
+ "statuses": "^2.0.1",
450
+ "type-is": "^2.0.1",
451
+ "vary": "^1.1.2"
452
+ },
453
+ "engines": {
454
+ "node": ">= 18"
455
+ },
456
+ "funding": {
457
+ "type": "opencollective",
458
+ "url": "https://opencollective.com/express"
459
+ }
460
+ },
461
+ "node_modules/finalhandler": {
462
+ "version": "2.1.0",
463
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
464
+ "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
465
+ "license": "MIT",
466
+ "dependencies": {
467
+ "debug": "^4.4.0",
468
+ "encodeurl": "^2.0.0",
469
+ "escape-html": "^1.0.3",
470
+ "on-finished": "^2.4.1",
471
+ "parseurl": "^1.3.3",
472
+ "statuses": "^2.0.1"
473
+ },
474
+ "engines": {
475
+ "node": ">= 0.8"
476
+ }
477
+ },
478
+ "node_modules/forwarded": {
479
+ "version": "0.2.0",
480
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
481
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
482
+ "license": "MIT",
483
+ "engines": {
484
+ "node": ">= 0.6"
485
+ }
486
+ },
487
+ "node_modules/fresh": {
488
+ "version": "2.0.0",
489
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
490
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
491
+ "license": "MIT",
492
+ "engines": {
493
+ "node": ">= 0.8"
494
+ }
495
+ },
496
+ "node_modules/function-bind": {
497
+ "version": "1.1.2",
498
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
499
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
500
+ "license": "MIT",
501
+ "funding": {
502
+ "url": "https://github.com/sponsors/ljharb"
503
+ }
504
+ },
505
+ "node_modules/get-caller-file": {
506
+ "version": "2.0.5",
507
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
508
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
509
+ "license": "ISC",
510
+ "engines": {
511
+ "node": "6.* || 8.* || >= 10.*"
512
+ }
513
+ },
514
+ "node_modules/get-east-asian-width": {
515
+ "version": "1.4.0",
516
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
517
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
518
+ "license": "MIT",
519
+ "engines": {
520
+ "node": ">=18"
521
+ },
522
+ "funding": {
523
+ "url": "https://github.com/sponsors/sindresorhus"
524
+ }
525
+ },
526
+ "node_modules/get-intrinsic": {
527
+ "version": "1.3.0",
528
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
529
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
530
+ "license": "MIT",
531
+ "dependencies": {
532
+ "call-bind-apply-helpers": "^1.0.2",
533
+ "es-define-property": "^1.0.1",
534
+ "es-errors": "^1.3.0",
535
+ "es-object-atoms": "^1.1.1",
536
+ "function-bind": "^1.1.2",
537
+ "get-proto": "^1.0.1",
538
+ "gopd": "^1.2.0",
539
+ "has-symbols": "^1.1.0",
540
+ "hasown": "^2.0.2",
541
+ "math-intrinsics": "^1.1.0"
542
+ },
543
+ "engines": {
544
+ "node": ">= 0.4"
545
+ },
546
+ "funding": {
547
+ "url": "https://github.com/sponsors/ljharb"
548
+ }
549
+ },
550
+ "node_modules/get-proto": {
551
+ "version": "1.0.1",
552
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
553
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
554
+ "license": "MIT",
555
+ "dependencies": {
556
+ "dunder-proto": "^1.0.1",
557
+ "es-object-atoms": "^1.0.0"
558
+ },
559
+ "engines": {
560
+ "node": ">= 0.4"
561
+ }
562
+ },
563
+ "node_modules/gopd": {
564
+ "version": "1.2.0",
565
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
566
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
567
+ "license": "MIT",
568
+ "engines": {
569
+ "node": ">= 0.4"
570
+ },
571
+ "funding": {
572
+ "url": "https://github.com/sponsors/ljharb"
573
+ }
574
+ },
575
+ "node_modules/has-symbols": {
576
+ "version": "1.1.0",
577
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
578
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
579
+ "license": "MIT",
580
+ "engines": {
581
+ "node": ">= 0.4"
582
+ },
583
+ "funding": {
584
+ "url": "https://github.com/sponsors/ljharb"
585
+ }
586
+ },
587
+ "node_modules/hasown": {
588
+ "version": "2.0.2",
589
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
590
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
591
+ "license": "MIT",
592
+ "dependencies": {
593
+ "function-bind": "^1.1.2"
594
+ },
595
+ "engines": {
596
+ "node": ">= 0.4"
597
+ }
598
+ },
599
+ "node_modules/http-errors": {
600
+ "version": "2.0.0",
601
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
602
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
603
+ "license": "MIT",
604
+ "dependencies": {
605
+ "depd": "2.0.0",
606
+ "inherits": "2.0.4",
607
+ "setprototypeof": "1.2.0",
608
+ "statuses": "2.0.1",
609
+ "toidentifier": "1.0.1"
610
+ },
611
+ "engines": {
612
+ "node": ">= 0.8"
613
+ }
614
+ },
615
+ "node_modules/http-errors/node_modules/statuses": {
616
+ "version": "2.0.1",
617
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
618
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
619
+ "license": "MIT",
620
+ "engines": {
621
+ "node": ">= 0.8"
622
+ }
623
+ },
624
+ "node_modules/iconv-lite": {
625
+ "version": "0.6.3",
626
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
627
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
628
+ "license": "MIT",
629
+ "dependencies": {
630
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
631
+ },
632
+ "engines": {
633
+ "node": ">=0.10.0"
634
+ }
635
+ },
636
+ "node_modules/inherits": {
637
+ "version": "2.0.4",
638
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
639
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
640
+ "license": "ISC"
641
+ },
642
+ "node_modules/ipaddr.js": {
643
+ "version": "1.9.1",
644
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
645
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
646
+ "license": "MIT",
647
+ "engines": {
648
+ "node": ">= 0.10"
649
+ }
650
+ },
651
+ "node_modules/is-promise": {
652
+ "version": "4.0.0",
653
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
654
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
655
+ "license": "MIT"
656
+ },
657
+ "node_modules/math-intrinsics": {
658
+ "version": "1.1.0",
659
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
660
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
661
+ "license": "MIT",
662
+ "engines": {
663
+ "node": ">= 0.4"
664
+ }
665
+ },
666
+ "node_modules/media-typer": {
667
+ "version": "1.1.0",
668
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
669
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
670
+ "license": "MIT",
671
+ "engines": {
672
+ "node": ">= 0.8"
673
+ }
674
+ },
675
+ "node_modules/merge-descriptors": {
676
+ "version": "2.0.0",
677
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
678
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
679
+ "license": "MIT",
680
+ "engines": {
681
+ "node": ">=18"
682
+ },
683
+ "funding": {
684
+ "url": "https://github.com/sponsors/sindresorhus"
685
+ }
686
+ },
687
+ "node_modules/mime-db": {
688
+ "version": "1.54.0",
689
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
690
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
691
+ "license": "MIT",
692
+ "engines": {
693
+ "node": ">= 0.6"
694
+ }
695
+ },
696
+ "node_modules/mime-types": {
697
+ "version": "3.0.1",
698
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
699
+ "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
700
+ "license": "MIT",
701
+ "dependencies": {
702
+ "mime-db": "^1.54.0"
703
+ },
704
+ "engines": {
705
+ "node": ">= 0.6"
706
+ }
707
+ },
708
+ "node_modules/ms": {
709
+ "version": "2.1.3",
710
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
711
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
712
+ "license": "MIT"
713
+ },
714
+ "node_modules/negotiator": {
715
+ "version": "1.0.0",
716
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
717
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
718
+ "license": "MIT",
719
+ "engines": {
720
+ "node": ">= 0.6"
721
+ }
722
+ },
723
+ "node_modules/object-inspect": {
724
+ "version": "1.13.4",
725
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
726
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
727
+ "license": "MIT",
728
+ "engines": {
729
+ "node": ">= 0.4"
730
+ },
731
+ "funding": {
732
+ "url": "https://github.com/sponsors/ljharb"
733
+ }
734
+ },
735
+ "node_modules/on-finished": {
736
+ "version": "2.4.1",
737
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
738
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
739
+ "license": "MIT",
740
+ "dependencies": {
741
+ "ee-first": "1.1.1"
742
+ },
743
+ "engines": {
744
+ "node": ">= 0.8"
745
+ }
746
+ },
747
+ "node_modules/once": {
748
+ "version": "1.4.0",
749
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
750
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
751
+ "license": "ISC",
752
+ "dependencies": {
753
+ "wrappy": "1"
754
+ }
755
+ },
756
+ "node_modules/parseurl": {
757
+ "version": "1.3.3",
758
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
759
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
760
+ "license": "MIT",
761
+ "engines": {
762
+ "node": ">= 0.8"
763
+ }
764
+ },
765
+ "node_modules/path-to-regexp": {
766
+ "version": "8.3.0",
767
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
768
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
769
+ "license": "MIT",
770
+ "funding": {
771
+ "type": "opencollective",
772
+ "url": "https://opencollective.com/express"
773
+ }
774
+ },
775
+ "node_modules/proxy-addr": {
776
+ "version": "2.0.7",
777
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
778
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
779
+ "license": "MIT",
780
+ "dependencies": {
781
+ "forwarded": "0.2.0",
782
+ "ipaddr.js": "1.9.1"
783
+ },
784
+ "engines": {
785
+ "node": ">= 0.10"
786
+ }
787
+ },
788
+ "node_modules/qs": {
789
+ "version": "6.14.0",
790
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
791
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
792
+ "license": "BSD-3-Clause",
793
+ "dependencies": {
794
+ "side-channel": "^1.1.0"
795
+ },
796
+ "engines": {
797
+ "node": ">=0.6"
798
+ },
799
+ "funding": {
800
+ "url": "https://github.com/sponsors/ljharb"
801
+ }
802
+ },
803
+ "node_modules/range-parser": {
804
+ "version": "1.2.1",
805
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
806
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
807
+ "license": "MIT",
808
+ "engines": {
809
+ "node": ">= 0.6"
810
+ }
811
+ },
812
+ "node_modules/raw-body": {
813
+ "version": "3.0.1",
814
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
815
+ "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
816
+ "license": "MIT",
817
+ "dependencies": {
818
+ "bytes": "3.1.2",
819
+ "http-errors": "2.0.0",
820
+ "iconv-lite": "0.7.0",
821
+ "unpipe": "1.0.0"
822
+ },
823
+ "engines": {
824
+ "node": ">= 0.10"
825
+ }
826
+ },
827
+ "node_modules/raw-body/node_modules/iconv-lite": {
828
+ "version": "0.7.0",
829
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
830
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
831
+ "license": "MIT",
832
+ "dependencies": {
833
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
834
+ },
835
+ "engines": {
836
+ "node": ">=0.10.0"
837
+ },
838
+ "funding": {
839
+ "type": "opencollective",
840
+ "url": "https://opencollective.com/express"
841
+ }
842
+ },
843
+ "node_modules/router": {
844
+ "version": "2.2.0",
845
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
846
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
847
+ "license": "MIT",
848
+ "dependencies": {
849
+ "debug": "^4.4.0",
850
+ "depd": "^2.0.0",
851
+ "is-promise": "^4.0.0",
852
+ "parseurl": "^1.3.3",
853
+ "path-to-regexp": "^8.0.0"
854
+ },
855
+ "engines": {
856
+ "node": ">= 18"
857
+ }
858
+ },
859
+ "node_modules/safe-buffer": {
860
+ "version": "5.2.1",
861
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
862
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
863
+ "funding": [
864
+ {
865
+ "type": "github",
866
+ "url": "https://github.com/sponsors/feross"
867
+ },
868
+ {
869
+ "type": "patreon",
870
+ "url": "https://www.patreon.com/feross"
871
+ },
872
+ {
873
+ "type": "consulting",
874
+ "url": "https://feross.org/support"
875
+ }
876
+ ],
877
+ "license": "MIT"
878
+ },
879
+ "node_modules/safer-buffer": {
880
+ "version": "2.1.2",
881
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
882
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
883
+ "license": "MIT"
884
+ },
885
+ "node_modules/send": {
886
+ "version": "1.2.0",
887
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
888
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
889
+ "license": "MIT",
890
+ "dependencies": {
891
+ "debug": "^4.3.5",
892
+ "encodeurl": "^2.0.0",
893
+ "escape-html": "^1.0.3",
894
+ "etag": "^1.8.1",
895
+ "fresh": "^2.0.0",
896
+ "http-errors": "^2.0.0",
897
+ "mime-types": "^3.0.1",
898
+ "ms": "^2.1.3",
899
+ "on-finished": "^2.4.1",
900
+ "range-parser": "^1.2.1",
901
+ "statuses": "^2.0.1"
902
+ },
903
+ "engines": {
904
+ "node": ">= 18"
905
+ }
906
+ },
907
+ "node_modules/serve-static": {
908
+ "version": "2.2.0",
909
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
910
+ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
911
+ "license": "MIT",
912
+ "dependencies": {
913
+ "encodeurl": "^2.0.0",
914
+ "escape-html": "^1.0.3",
915
+ "parseurl": "^1.3.3",
916
+ "send": "^1.2.0"
917
+ },
918
+ "engines": {
919
+ "node": ">= 18"
920
+ }
921
+ },
922
+ "node_modules/setprototypeof": {
923
+ "version": "1.2.0",
924
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
925
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
926
+ "license": "ISC"
927
+ },
928
+ "node_modules/side-channel": {
929
+ "version": "1.1.0",
930
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
931
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
932
+ "license": "MIT",
933
+ "dependencies": {
934
+ "es-errors": "^1.3.0",
935
+ "object-inspect": "^1.13.3",
936
+ "side-channel-list": "^1.0.0",
937
+ "side-channel-map": "^1.0.1",
938
+ "side-channel-weakmap": "^1.0.2"
939
+ },
940
+ "engines": {
941
+ "node": ">= 0.4"
942
+ },
943
+ "funding": {
944
+ "url": "https://github.com/sponsors/ljharb"
945
+ }
946
+ },
947
+ "node_modules/side-channel-list": {
948
+ "version": "1.0.0",
949
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
950
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
951
+ "license": "MIT",
952
+ "dependencies": {
953
+ "es-errors": "^1.3.0",
954
+ "object-inspect": "^1.13.3"
955
+ },
956
+ "engines": {
957
+ "node": ">= 0.4"
958
+ },
959
+ "funding": {
960
+ "url": "https://github.com/sponsors/ljharb"
961
+ }
962
+ },
963
+ "node_modules/side-channel-map": {
964
+ "version": "1.0.1",
965
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
966
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
967
+ "license": "MIT",
968
+ "dependencies": {
969
+ "call-bound": "^1.0.2",
970
+ "es-errors": "^1.3.0",
971
+ "get-intrinsic": "^1.2.5",
972
+ "object-inspect": "^1.13.3"
973
+ },
974
+ "engines": {
975
+ "node": ">= 0.4"
976
+ },
977
+ "funding": {
978
+ "url": "https://github.com/sponsors/ljharb"
979
+ }
980
+ },
981
+ "node_modules/side-channel-weakmap": {
982
+ "version": "1.0.2",
983
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
984
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
985
+ "license": "MIT",
986
+ "dependencies": {
987
+ "call-bound": "^1.0.2",
988
+ "es-errors": "^1.3.0",
989
+ "get-intrinsic": "^1.2.5",
990
+ "object-inspect": "^1.13.3",
991
+ "side-channel-map": "^1.0.1"
992
+ },
993
+ "engines": {
994
+ "node": ">= 0.4"
995
+ },
996
+ "funding": {
997
+ "url": "https://github.com/sponsors/ljharb"
998
+ }
999
+ },
1000
+ "node_modules/statuses": {
1001
+ "version": "2.0.2",
1002
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
1003
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
1004
+ "license": "MIT",
1005
+ "engines": {
1006
+ "node": ">= 0.8"
1007
+ }
1008
+ },
1009
+ "node_modules/string-width": {
1010
+ "version": "7.2.0",
1011
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
1012
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
1013
+ "license": "MIT",
1014
+ "dependencies": {
1015
+ "emoji-regex": "^10.3.0",
1016
+ "get-east-asian-width": "^1.0.0",
1017
+ "strip-ansi": "^7.1.0"
1018
+ },
1019
+ "engines": {
1020
+ "node": ">=18"
1021
+ },
1022
+ "funding": {
1023
+ "url": "https://github.com/sponsors/sindresorhus"
1024
+ }
1025
+ },
1026
+ "node_modules/strip-ansi": {
1027
+ "version": "7.1.2",
1028
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
1029
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
1030
+ "license": "MIT",
1031
+ "dependencies": {
1032
+ "ansi-regex": "^6.0.1"
1033
+ },
1034
+ "engines": {
1035
+ "node": ">=12"
1036
+ },
1037
+ "funding": {
1038
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1039
+ }
1040
+ },
1041
+ "node_modules/systeminformation": {
1042
+ "version": "5.27.11",
1043
+ "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.27.11.tgz",
1044
+ "integrity": "sha512-K3Lto/2m3K2twmKHdgx5B+0in9qhXK4YnoT9rIlgwN/4v7OV5c8IjbeAUkuky/6VzCQC7iKCAqi8rZathCdjHg==",
1045
+ "license": "MIT",
1046
+ "os": [
1047
+ "darwin",
1048
+ "linux",
1049
+ "win32",
1050
+ "freebsd",
1051
+ "openbsd",
1052
+ "netbsd",
1053
+ "sunos",
1054
+ "android"
1055
+ ],
1056
+ "bin": {
1057
+ "systeminformation": "lib/cli.js"
1058
+ },
1059
+ "engines": {
1060
+ "node": ">=8.0.0"
1061
+ },
1062
+ "funding": {
1063
+ "type": "Buy me a coffee",
1064
+ "url": "https://www.buymeacoffee.com/systeminfo"
1065
+ }
1066
+ },
1067
+ "node_modules/toidentifier": {
1068
+ "version": "1.0.1",
1069
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1070
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1071
+ "license": "MIT",
1072
+ "engines": {
1073
+ "node": ">=0.6"
1074
+ }
1075
+ },
1076
+ "node_modules/type-is": {
1077
+ "version": "2.0.1",
1078
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
1079
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
1080
+ "license": "MIT",
1081
+ "dependencies": {
1082
+ "content-type": "^1.0.5",
1083
+ "media-typer": "^1.1.0",
1084
+ "mime-types": "^3.0.0"
1085
+ },
1086
+ "engines": {
1087
+ "node": ">= 0.6"
1088
+ }
1089
+ },
1090
+ "node_modules/undici-types": {
1091
+ "version": "7.16.0",
1092
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
1093
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
1094
+ "dev": true,
1095
+ "license": "MIT"
1096
+ },
1097
+ "node_modules/unpipe": {
1098
+ "version": "1.0.0",
1099
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1100
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1101
+ "license": "MIT",
1102
+ "engines": {
1103
+ "node": ">= 0.8"
1104
+ }
1105
+ },
1106
+ "node_modules/uuid": {
1107
+ "version": "13.0.0",
1108
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz",
1109
+ "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==",
1110
+ "funding": [
1111
+ "https://github.com/sponsors/broofa",
1112
+ "https://github.com/sponsors/ctavan"
1113
+ ],
1114
+ "license": "MIT",
1115
+ "bin": {
1116
+ "uuid": "dist-node/bin/uuid"
1117
+ }
1118
+ },
1119
+ "node_modules/vary": {
1120
+ "version": "1.1.2",
1121
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1122
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1123
+ "license": "MIT",
1124
+ "engines": {
1125
+ "node": ">= 0.8"
1126
+ }
1127
+ },
1128
+ "node_modules/wrap-ansi": {
1129
+ "version": "9.0.2",
1130
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
1131
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
1132
+ "license": "MIT",
1133
+ "dependencies": {
1134
+ "ansi-styles": "^6.2.1",
1135
+ "string-width": "^7.0.0",
1136
+ "strip-ansi": "^7.1.0"
1137
+ },
1138
+ "engines": {
1139
+ "node": ">=18"
1140
+ },
1141
+ "funding": {
1142
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1143
+ }
1144
+ },
1145
+ "node_modules/wrappy": {
1146
+ "version": "1.0.2",
1147
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1148
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1149
+ "license": "ISC"
1150
+ },
1151
+ "node_modules/y18n": {
1152
+ "version": "5.0.8",
1153
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
1154
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
1155
+ "license": "ISC",
1156
+ "engines": {
1157
+ "node": ">=10"
1158
+ }
1159
+ },
1160
+ "node_modules/yargs": {
1161
+ "version": "18.0.0",
1162
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
1163
+ "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
1164
+ "license": "MIT",
1165
+ "dependencies": {
1166
+ "cliui": "^9.0.1",
1167
+ "escalade": "^3.1.1",
1168
+ "get-caller-file": "^2.0.5",
1169
+ "string-width": "^7.2.0",
1170
+ "y18n": "^5.0.5",
1171
+ "yargs-parser": "^22.0.0"
1172
+ },
1173
+ "engines": {
1174
+ "node": "^20.19.0 || ^22.12.0 || >=23"
1175
+ }
1176
+ },
1177
+ "node_modules/yargs-parser": {
1178
+ "version": "22.0.0",
1179
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
1180
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
1181
+ "license": "ISC",
1182
+ "engines": {
1183
+ "node": "^20.19.0 || ^22.12.0 || >=23"
1184
+ }
1185
+ }
1186
+ }
1187
+ }
package.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "node",
3
+ "version": "1.0.0",
4
+ "description": "---\r title: Node\r emoji: 👀\r colorFrom: pink\r colorTo: gray\r sdk: docker\r pinned: false\r short_description: freenode\r ---",
5
+ "main": "index.js",
6
+ "module": "commonjs",
7
+ "type": "module",
8
+ "scripts": {
9
+ "test": "echo \"Error: no test specified\" && exit 1"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://huggingface.co/spaces/huggingyoyoyo/node"
14
+ },
15
+ "author": "",
16
+ "license": "ISC",
17
+ "dependencies": {
18
+ "express": "^5.1.0",
19
+ "systeminformation": "^5.27.11",
20
+ "uuid": "^13.0.0",
21
+ "yargs": "^18.0.0"
22
+ },
23
+ "devDependencies": {
24
+ "@types/express": "^5.0.5",
25
+ "@types/yargs": "^17.0.34"
26
+ }
27
+ }
sandBox.ts ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import * as path from "path";
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import * as fs from 'node:fs';
4
+ import * as child_process from 'node:child_process';
5
+
6
+ export async function sandBox(req:any,res:any,next:any){
7
+ let timeout = req.query.timeout || 60000;
8
+ const code = req.body;
9
+
10
+ let name = uuidv4();
11
+ let file = path.join(__dirname,`./${name}.js`);
12
+ console.log(`writing file ${file}`);
13
+ fs.writeFileSync(
14
+ file,
15
+ `
16
+ console.log('entering ${name}');
17
+ const done = async (result)=>{
18
+ let data = await result
19
+ console.log('done ${name}');
20
+ let fs = require('fs');
21
+ let path = require('path');
22
+ fs.writeFileSync(path.join(__dirname,'./${name}.child.json'),JSON.stringify({data},null,4));
23
+ process.exit(0);
24
+ }
25
+ ${code}
26
+ `,
27
+ "utf-8"
28
+ );
29
+ let child_logs: any = {
30
+ start: new Date().toString(),
31
+ timestamp: new Date().toString(),
32
+ end: null,
33
+ success: null,
34
+ value: null,
35
+ stdout: [],
36
+ stderr: [],
37
+ close: null,
38
+ err: null
39
+ };
40
+ let childProc = child_process.exec(`node ${file}`, {
41
+ cwd: __dirname,
42
+ });
43
+
44
+ childProc.stdout?.on("data", function (data) {
45
+ child_logs.stdout.push(data);
46
+ });
47
+ childProc.stderr?.on("data", function (data) {
48
+ child_logs.stderr.push(data);
49
+ });
50
+ childProc.on("close", function (code) {
51
+ child_logs.success = code == 0;
52
+ child_logs.close = `exit code : ${code}`;
53
+ });
54
+ childProc.on("error", function (err) {
55
+ child_logs.err = err;
56
+ });
57
+
58
+ let checkHandle:any;
59
+ let timeoutHandle:any;
60
+ let task = Promise.race([
61
+ new Promise((resolve) => {
62
+ timeoutHandle = setTimeout(() => {
63
+ clearInterval(checkHandle);
64
+ childProc.kill();
65
+ child_logs.end = new Date().toString();
66
+ child_logs.success = false;
67
+ child_logs.value = "timeout";
68
+ fs.writeFileSync(
69
+ path.join(__dirname,`./${name}.json`),
70
+ JSON.stringify(child_logs, null, 4)
71
+ );
72
+ resolve("timeout");
73
+ }, timeout);
74
+ }),
75
+ new Promise((resolve) => {
76
+ checkHandle = setInterval(() => {
77
+ child_logs.timestamp = new Date().toString();
78
+ fs.writeFileSync(
79
+ path.join(__dirname,`./${name}.json`),
80
+ JSON.stringify(child_logs, null, 4)
81
+ );
82
+ if (child_logs.close) {
83
+ clearTimeout(timeoutHandle);
84
+ child_logs.end = new Date().toString();
85
+ try{
86
+ child_logs.value = require(path.join(__dirname,`./${name}.child.json`)).data;
87
+ }catch(e: any){
88
+ child_logs.value = e.message;
89
+ }
90
+ fs.writeFileSync(
91
+ path.join(__dirname,`./${name}.json`),
92
+ JSON.stringify(child_logs, null, 4)
93
+ );
94
+ resolve("done");
95
+ }
96
+ }, 1000);
97
+ }),
98
+ ]);
99
+ let waitHandle = await task;
100
+ if (waitHandle == "done") {
101
+ res.status(200).send(child_logs);
102
+ } else {
103
+ res.status(500).send(child_logs);
104
+ }
105
+
106
+ }