+6
.dockerignore
+6
.dockerignore
+18
.github/workflows/fly-deploy.yml
+18
.github/workflows/fly-deploy.yml
···
1
+
# See https://fly.io/docs/app-guides/continuous-deployment-with-github-actions/
2
+
3
+
name: Fly Deploy
4
+
on:
5
+
push:
6
+
branches:
7
+
- main
8
+
jobs:
9
+
deploy:
10
+
name: Deploy app
11
+
runs-on: ubuntu-latest
12
+
concurrency: deploy-group # optional: ensure only one action runs at a time
13
+
steps:
14
+
- uses: actions/checkout@v4
15
+
- uses: superfly/flyctl-actions/setup-flyctl@master
16
+
- run: flyctl deploy --remote-only
17
+
env:
18
+
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
+45
Dockerfile
+45
Dockerfile
···
1
+
# syntax = docker/dockerfile:1
2
+
3
+
# Adjust NODE_VERSION as desired
4
+
ARG NODE_VERSION=18.18.2
5
+
FROM node:${NODE_VERSION}-slim AS base
6
+
7
+
LABEL fly_launch_runtime="Node.js"
8
+
9
+
# Node.js app lives here
10
+
WORKDIR /app
11
+
12
+
# Set production environment
13
+
ENV NODE_ENV="production"
14
+
15
+
16
+
# Throw-away build stage to reduce size of final image
17
+
FROM base AS build
18
+
19
+
# Install packages needed to build node modules
20
+
RUN apt-get update -qq && \
21
+
apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3
22
+
23
+
# Install node modules
24
+
COPY package-lock.json package.json ./
25
+
RUN npm ci --include=dev
26
+
27
+
# Copy application code
28
+
COPY . .
29
+
30
+
# Build application
31
+
RUN npm run build
32
+
33
+
# Remove development dependencies
34
+
RUN npm prune --omit=dev
35
+
36
+
37
+
# Final stage for app image
38
+
FROM base
39
+
40
+
# Copy built application
41
+
COPY --from=build /app /app
42
+
43
+
# Start the server by default, this can be overwritten at runtime
44
+
EXPOSE 3000
45
+
CMD [ "node", "index.js" ]
+22
fly.toml
+22
fly.toml
···
1
+
# fly.toml app configuration file generated for annos on 2025-05-13T18:45:49-07:00
2
+
#
3
+
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
4
+
#
5
+
6
+
app = 'annos'
7
+
primary_region = 'sea'
8
+
9
+
[build]
10
+
11
+
[http_service]
12
+
internal_port = 3000
13
+
force_https = true
14
+
auto_stop_machines = 'stop'
15
+
auto_start_machines = true
16
+
min_machines_running = 0
17
+
processes = ['app']
18
+
19
+
[[vm]]
20
+
memory = '1gb'
21
+
cpu_kind = 'shared'
22
+
cpus = 1
+490
package-lock.json
+490
package-lock.json
···
25
25
},
26
26
"devDependencies": {
27
27
"@atproto/lex-cli": "^0.8.0",
28
+
"@flydotio/dockerfile": "^0.7.10",
28
29
"@testcontainers/postgresql": "^10.24.2",
29
30
"@types/express": "^5.0.1",
30
31
"@types/jest": "^29.5.14",
···
2039
2040
"node": ">=14"
2040
2041
}
2041
2042
},
2043
+
"node_modules/@flydotio/dockerfile": {
2044
+
"version": "0.7.10",
2045
+
"resolved": "https://registry.npmjs.org/@flydotio/dockerfile/-/dockerfile-0.7.10.tgz",
2046
+
"integrity": "sha512-dTXqBjCl7nFmnhlyeDjjPtX+sdfYBWFH9PUKNqAYttvBiczKcYXxr7/0A0wZ+g1FB1tmMzsOzedgr6xap/AB9g==",
2047
+
"dev": true,
2048
+
"dependencies": {
2049
+
"chalk": "^5.4.1",
2050
+
"diff": "^7.0.0",
2051
+
"ejs": "^3.1.10",
2052
+
"inquirer": "^12.4.1",
2053
+
"shell-quote": "^1.8.2",
2054
+
"yargs": "^17.7.2"
2055
+
},
2056
+
"bin": {
2057
+
"dockerfile": "index.js"
2058
+
},
2059
+
"engines": {
2060
+
"node": ">=16.0.0"
2061
+
}
2062
+
},
2063
+
"node_modules/@flydotio/dockerfile/node_modules/chalk": {
2064
+
"version": "5.4.1",
2065
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
2066
+
"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
2067
+
"dev": true,
2068
+
"engines": {
2069
+
"node": "^12.17.0 || ^14.13 || >=16.0.0"
2070
+
},
2071
+
"funding": {
2072
+
"url": "https://github.com/chalk/chalk?sponsor=1"
2073
+
}
2074
+
},
2042
2075
"node_modules/@grpc/grpc-js": {
2043
2076
"version": "1.13.3",
2044
2077
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.3.tgz",
···
2070
2103
"node": ">=6"
2071
2104
}
2072
2105
},
2106
+
"node_modules/@inquirer/checkbox": {
2107
+
"version": "4.1.6",
2108
+
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.6.tgz",
2109
+
"integrity": "sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==",
2110
+
"dev": true,
2111
+
"dependencies": {
2112
+
"@inquirer/core": "^10.1.11",
2113
+
"@inquirer/figures": "^1.0.11",
2114
+
"@inquirer/type": "^3.0.6",
2115
+
"ansi-escapes": "^4.3.2",
2116
+
"yoctocolors-cjs": "^2.1.2"
2117
+
},
2118
+
"engines": {
2119
+
"node": ">=18"
2120
+
},
2121
+
"peerDependencies": {
2122
+
"@types/node": ">=18"
2123
+
},
2124
+
"peerDependenciesMeta": {
2125
+
"@types/node": {
2126
+
"optional": true
2127
+
}
2128
+
}
2129
+
},
2130
+
"node_modules/@inquirer/confirm": {
2131
+
"version": "5.1.10",
2132
+
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.10.tgz",
2133
+
"integrity": "sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==",
2134
+
"dev": true,
2135
+
"dependencies": {
2136
+
"@inquirer/core": "^10.1.11",
2137
+
"@inquirer/type": "^3.0.6"
2138
+
},
2139
+
"engines": {
2140
+
"node": ">=18"
2141
+
},
2142
+
"peerDependencies": {
2143
+
"@types/node": ">=18"
2144
+
},
2145
+
"peerDependenciesMeta": {
2146
+
"@types/node": {
2147
+
"optional": true
2148
+
}
2149
+
}
2150
+
},
2151
+
"node_modules/@inquirer/core": {
2152
+
"version": "10.1.11",
2153
+
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.11.tgz",
2154
+
"integrity": "sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==",
2155
+
"dev": true,
2156
+
"dependencies": {
2157
+
"@inquirer/figures": "^1.0.11",
2158
+
"@inquirer/type": "^3.0.6",
2159
+
"ansi-escapes": "^4.3.2",
2160
+
"cli-width": "^4.1.0",
2161
+
"mute-stream": "^2.0.0",
2162
+
"signal-exit": "^4.1.0",
2163
+
"wrap-ansi": "^6.2.0",
2164
+
"yoctocolors-cjs": "^2.1.2"
2165
+
},
2166
+
"engines": {
2167
+
"node": ">=18"
2168
+
},
2169
+
"peerDependencies": {
2170
+
"@types/node": ">=18"
2171
+
},
2172
+
"peerDependenciesMeta": {
2173
+
"@types/node": {
2174
+
"optional": true
2175
+
}
2176
+
}
2177
+
},
2178
+
"node_modules/@inquirer/core/node_modules/signal-exit": {
2179
+
"version": "4.1.0",
2180
+
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2181
+
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2182
+
"dev": true,
2183
+
"engines": {
2184
+
"node": ">=14"
2185
+
},
2186
+
"funding": {
2187
+
"url": "https://github.com/sponsors/isaacs"
2188
+
}
2189
+
},
2190
+
"node_modules/@inquirer/core/node_modules/wrap-ansi": {
2191
+
"version": "6.2.0",
2192
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
2193
+
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
2194
+
"dev": true,
2195
+
"dependencies": {
2196
+
"ansi-styles": "^4.0.0",
2197
+
"string-width": "^4.1.0",
2198
+
"strip-ansi": "^6.0.0"
2199
+
},
2200
+
"engines": {
2201
+
"node": ">=8"
2202
+
}
2203
+
},
2204
+
"node_modules/@inquirer/editor": {
2205
+
"version": "4.2.11",
2206
+
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.11.tgz",
2207
+
"integrity": "sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==",
2208
+
"dev": true,
2209
+
"dependencies": {
2210
+
"@inquirer/core": "^10.1.11",
2211
+
"@inquirer/type": "^3.0.6",
2212
+
"external-editor": "^3.1.0"
2213
+
},
2214
+
"engines": {
2215
+
"node": ">=18"
2216
+
},
2217
+
"peerDependencies": {
2218
+
"@types/node": ">=18"
2219
+
},
2220
+
"peerDependenciesMeta": {
2221
+
"@types/node": {
2222
+
"optional": true
2223
+
}
2224
+
}
2225
+
},
2226
+
"node_modules/@inquirer/expand": {
2227
+
"version": "4.0.13",
2228
+
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.13.tgz",
2229
+
"integrity": "sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==",
2230
+
"dev": true,
2231
+
"dependencies": {
2232
+
"@inquirer/core": "^10.1.11",
2233
+
"@inquirer/type": "^3.0.6",
2234
+
"yoctocolors-cjs": "^2.1.2"
2235
+
},
2236
+
"engines": {
2237
+
"node": ">=18"
2238
+
},
2239
+
"peerDependencies": {
2240
+
"@types/node": ">=18"
2241
+
},
2242
+
"peerDependenciesMeta": {
2243
+
"@types/node": {
2244
+
"optional": true
2245
+
}
2246
+
}
2247
+
},
2248
+
"node_modules/@inquirer/figures": {
2249
+
"version": "1.0.11",
2250
+
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz",
2251
+
"integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==",
2252
+
"dev": true,
2253
+
"engines": {
2254
+
"node": ">=18"
2255
+
}
2256
+
},
2257
+
"node_modules/@inquirer/input": {
2258
+
"version": "4.1.10",
2259
+
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.10.tgz",
2260
+
"integrity": "sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==",
2261
+
"dev": true,
2262
+
"dependencies": {
2263
+
"@inquirer/core": "^10.1.11",
2264
+
"@inquirer/type": "^3.0.6"
2265
+
},
2266
+
"engines": {
2267
+
"node": ">=18"
2268
+
},
2269
+
"peerDependencies": {
2270
+
"@types/node": ">=18"
2271
+
},
2272
+
"peerDependenciesMeta": {
2273
+
"@types/node": {
2274
+
"optional": true
2275
+
}
2276
+
}
2277
+
},
2278
+
"node_modules/@inquirer/number": {
2279
+
"version": "3.0.13",
2280
+
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.13.tgz",
2281
+
"integrity": "sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==",
2282
+
"dev": true,
2283
+
"dependencies": {
2284
+
"@inquirer/core": "^10.1.11",
2285
+
"@inquirer/type": "^3.0.6"
2286
+
},
2287
+
"engines": {
2288
+
"node": ">=18"
2289
+
},
2290
+
"peerDependencies": {
2291
+
"@types/node": ">=18"
2292
+
},
2293
+
"peerDependenciesMeta": {
2294
+
"@types/node": {
2295
+
"optional": true
2296
+
}
2297
+
}
2298
+
},
2299
+
"node_modules/@inquirer/password": {
2300
+
"version": "4.0.13",
2301
+
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.13.tgz",
2302
+
"integrity": "sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==",
2303
+
"dev": true,
2304
+
"dependencies": {
2305
+
"@inquirer/core": "^10.1.11",
2306
+
"@inquirer/type": "^3.0.6",
2307
+
"ansi-escapes": "^4.3.2"
2308
+
},
2309
+
"engines": {
2310
+
"node": ">=18"
2311
+
},
2312
+
"peerDependencies": {
2313
+
"@types/node": ">=18"
2314
+
},
2315
+
"peerDependenciesMeta": {
2316
+
"@types/node": {
2317
+
"optional": true
2318
+
}
2319
+
}
2320
+
},
2321
+
"node_modules/@inquirer/prompts": {
2322
+
"version": "7.5.1",
2323
+
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.1.tgz",
2324
+
"integrity": "sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==",
2325
+
"dev": true,
2326
+
"dependencies": {
2327
+
"@inquirer/checkbox": "^4.1.6",
2328
+
"@inquirer/confirm": "^5.1.10",
2329
+
"@inquirer/editor": "^4.2.11",
2330
+
"@inquirer/expand": "^4.0.13",
2331
+
"@inquirer/input": "^4.1.10",
2332
+
"@inquirer/number": "^3.0.13",
2333
+
"@inquirer/password": "^4.0.13",
2334
+
"@inquirer/rawlist": "^4.1.1",
2335
+
"@inquirer/search": "^3.0.13",
2336
+
"@inquirer/select": "^4.2.1"
2337
+
},
2338
+
"engines": {
2339
+
"node": ">=18"
2340
+
},
2341
+
"peerDependencies": {
2342
+
"@types/node": ">=18"
2343
+
},
2344
+
"peerDependenciesMeta": {
2345
+
"@types/node": {
2346
+
"optional": true
2347
+
}
2348
+
}
2349
+
},
2350
+
"node_modules/@inquirer/rawlist": {
2351
+
"version": "4.1.1",
2352
+
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.1.tgz",
2353
+
"integrity": "sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==",
2354
+
"dev": true,
2355
+
"dependencies": {
2356
+
"@inquirer/core": "^10.1.11",
2357
+
"@inquirer/type": "^3.0.6",
2358
+
"yoctocolors-cjs": "^2.1.2"
2359
+
},
2360
+
"engines": {
2361
+
"node": ">=18"
2362
+
},
2363
+
"peerDependencies": {
2364
+
"@types/node": ">=18"
2365
+
},
2366
+
"peerDependenciesMeta": {
2367
+
"@types/node": {
2368
+
"optional": true
2369
+
}
2370
+
}
2371
+
},
2372
+
"node_modules/@inquirer/search": {
2373
+
"version": "3.0.13",
2374
+
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.13.tgz",
2375
+
"integrity": "sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==",
2376
+
"dev": true,
2377
+
"dependencies": {
2378
+
"@inquirer/core": "^10.1.11",
2379
+
"@inquirer/figures": "^1.0.11",
2380
+
"@inquirer/type": "^3.0.6",
2381
+
"yoctocolors-cjs": "^2.1.2"
2382
+
},
2383
+
"engines": {
2384
+
"node": ">=18"
2385
+
},
2386
+
"peerDependencies": {
2387
+
"@types/node": ">=18"
2388
+
},
2389
+
"peerDependenciesMeta": {
2390
+
"@types/node": {
2391
+
"optional": true
2392
+
}
2393
+
}
2394
+
},
2395
+
"node_modules/@inquirer/select": {
2396
+
"version": "4.2.1",
2397
+
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.1.tgz",
2398
+
"integrity": "sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==",
2399
+
"dev": true,
2400
+
"dependencies": {
2401
+
"@inquirer/core": "^10.1.11",
2402
+
"@inquirer/figures": "^1.0.11",
2403
+
"@inquirer/type": "^3.0.6",
2404
+
"ansi-escapes": "^4.3.2",
2405
+
"yoctocolors-cjs": "^2.1.2"
2406
+
},
2407
+
"engines": {
2408
+
"node": ">=18"
2409
+
},
2410
+
"peerDependencies": {
2411
+
"@types/node": ">=18"
2412
+
},
2413
+
"peerDependenciesMeta": {
2414
+
"@types/node": {
2415
+
"optional": true
2416
+
}
2417
+
}
2418
+
},
2419
+
"node_modules/@inquirer/type": {
2420
+
"version": "3.0.6",
2421
+
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
2422
+
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
2423
+
"dev": true,
2424
+
"engines": {
2425
+
"node": ">=18"
2426
+
},
2427
+
"peerDependencies": {
2428
+
"@types/node": ">=18"
2429
+
},
2430
+
"peerDependenciesMeta": {
2431
+
"@types/node": {
2432
+
"optional": true
2433
+
}
2434
+
}
2435
+
},
2073
2436
"node_modules/@ipld/dag-cbor": {
2074
2437
"version": "7.0.3",
2075
2438
"resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz",
···
4177
4540
"node": ">=10"
4178
4541
}
4179
4542
},
4543
+
"node_modules/chardet": {
4544
+
"version": "0.7.0",
4545
+
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
4546
+
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
4547
+
"dev": true
4548
+
},
4180
4549
"node_modules/chokidar": {
4181
4550
"version": "4.0.3",
4182
4551
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
···
4218
4587
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
4219
4588
"integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
4220
4589
"dev": true
4590
+
},
4591
+
"node_modules/cli-width": {
4592
+
"version": "4.1.0",
4593
+
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
4594
+
"integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
4595
+
"dev": true,
4596
+
"engines": {
4597
+
"node": ">= 12"
4598
+
}
4221
4599
},
4222
4600
"node_modules/cliui": {
4223
4601
"version": "8.0.1",
···
4593
4971
"dependencies": {
4594
4972
"asap": "^2.0.0",
4595
4973
"wrappy": "1"
4974
+
}
4975
+
},
4976
+
"node_modules/diff": {
4977
+
"version": "7.0.0",
4978
+
"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
4979
+
"integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
4980
+
"dev": true,
4981
+
"engines": {
4982
+
"node": ">=0.3.1"
4596
4983
}
4597
4984
},
4598
4985
"node_modules/diff-sequences": {
···
5229
5616
"node": ">= 0.6"
5230
5617
}
5231
5618
},
5619
+
"node_modules/external-editor": {
5620
+
"version": "3.1.0",
5621
+
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
5622
+
"integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
5623
+
"dev": true,
5624
+
"dependencies": {
5625
+
"chardet": "^0.7.0",
5626
+
"iconv-lite": "^0.4.24",
5627
+
"tmp": "^0.0.33"
5628
+
},
5629
+
"engines": {
5630
+
"node": ">=4"
5631
+
}
5632
+
},
5633
+
"node_modules/external-editor/node_modules/iconv-lite": {
5634
+
"version": "0.4.24",
5635
+
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
5636
+
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
5637
+
"dev": true,
5638
+
"dependencies": {
5639
+
"safer-buffer": ">= 2.1.2 < 3"
5640
+
},
5641
+
"engines": {
5642
+
"node": ">=0.10.0"
5643
+
}
5644
+
},
5645
+
"node_modules/external-editor/node_modules/tmp": {
5646
+
"version": "0.0.33",
5647
+
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
5648
+
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
5649
+
"dev": true,
5650
+
"dependencies": {
5651
+
"os-tmpdir": "~1.0.2"
5652
+
},
5653
+
"engines": {
5654
+
"node": ">=0.6.0"
5655
+
}
5656
+
},
5232
5657
"node_modules/fast-fifo": {
5233
5658
"version": "1.3.2",
5234
5659
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
···
5745
6170
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
5746
6171
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
5747
6172
},
6173
+
"node_modules/inquirer": {
6174
+
"version": "12.6.1",
6175
+
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.1.tgz",
6176
+
"integrity": "sha512-MGFnzHVS3l3oM3cy+LWkyR7UUtVEn3D5U41CZbEY34szToWoJAvaVtCTz1mxsEzZFk/HXWyCArn0HDgloTXMDw==",
6177
+
"dev": true,
6178
+
"dependencies": {
6179
+
"@inquirer/core": "^10.1.11",
6180
+
"@inquirer/prompts": "^7.5.1",
6181
+
"@inquirer/type": "^3.0.6",
6182
+
"ansi-escapes": "^4.3.2",
6183
+
"mute-stream": "^2.0.0",
6184
+
"run-async": "^3.0.0",
6185
+
"rxjs": "^7.8.2"
6186
+
},
6187
+
"engines": {
6188
+
"node": ">=18"
6189
+
},
6190
+
"peerDependencies": {
6191
+
"@types/node": ">=18"
6192
+
},
6193
+
"peerDependenciesMeta": {
6194
+
"@types/node": {
6195
+
"optional": true
6196
+
}
6197
+
}
6198
+
},
5748
6199
"node_modules/ipaddr.js": {
5749
6200
"version": "2.2.0",
5750
6201
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
···
6991
7442
"version": "9.9.0",
6992
7443
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
6993
7444
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="
7445
+
},
7446
+
"node_modules/mute-stream": {
7447
+
"version": "2.0.0",
7448
+
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
7449
+
"integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
7450
+
"dev": true,
7451
+
"engines": {
7452
+
"node": "^18.17.0 || >=20.5.0"
7453
+
}
6994
7454
},
6995
7455
"node_modules/mz": {
6996
7456
"version": "2.7.0",
···
7139
7599
"url": "https://github.com/sponsors/sindresorhus"
7140
7600
}
7141
7601
},
7602
+
"node_modules/os-tmpdir": {
7603
+
"version": "1.0.2",
7604
+
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
7605
+
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
7606
+
"dev": true,
7607
+
"engines": {
7608
+
"node": ">=0.10.0"
7609
+
}
7610
+
},
7142
7611
"node_modules/p-finally": {
7143
7612
"version": "1.0.0",
7144
7613
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
···
8070
8539
},
8071
8540
"engines": {
8072
8541
"node": ">= 18"
8542
+
}
8543
+
},
8544
+
"node_modules/run-async": {
8545
+
"version": "3.0.0",
8546
+
"resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
8547
+
"integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
8548
+
"dev": true,
8549
+
"engines": {
8550
+
"node": ">=0.12.0"
8073
8551
}
8074
8552
},
8075
8553
"node_modules/rxjs": {
···
9447
9925
"dev": true,
9448
9926
"engines": {
9449
9927
"node": ">=10"
9928
+
},
9929
+
"funding": {
9930
+
"url": "https://github.com/sponsors/sindresorhus"
9931
+
}
9932
+
},
9933
+
"node_modules/yoctocolors-cjs": {
9934
+
"version": "2.1.2",
9935
+
"resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
9936
+
"integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
9937
+
"dev": true,
9938
+
"engines": {
9939
+
"node": ">=18"
9450
9940
},
9451
9941
"funding": {
9452
9942
"url": "https://github.com/sponsors/sindresorhus"