# HG changeset patch # User MrJuneJune # Date 1769235750 28800 # Node ID dfdd6682539689c2b66b9d80ad0b0a4d3ea7b76c # Parent d6ab5921fedc9c8a250e6857acf1bf1df38d5b51# Parent 8c74204fd36284bb4aea203d58e960ba21dc4bbc Merged in keep alive changes and mrjunejune changes. diff -r d6ab5921fedc -r dfdd66825396 benchmark/BUILD --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/BUILD Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +# Benchmark package diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/.prettierrc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/.prettierrc Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,7 @@ +{ + "useTabs": true, + "trailingComma": "none", + "semi": false, + "singleQuote": true, + "tabWidth": 4 +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/.vscode/settings.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/.vscode/settings.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,5 @@ +{ + "deno.enable": true, + "deno.unstable": true, + "deno.enablePaths": ["./src/deno"] +} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/BUILD --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/BUILD Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +# HTTP Framework Benchmark package diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/README.md Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,97 @@ +# Bun HTTP Framework Benchmark + +Compare throughput benchmarks from various JavaScript HTTP framework + +Test method: Average throughput + +1. Ping + - Request to [GET] `/` + - Return `hi` + - Headers must contains text `Content-Type: text/plain`, additional context is acceptable eg. `Content-Type: text/plain; charset=utf-8` +2. Query + - Request to [GET] `/id/:id` + - Extract path parameter, query string and setting headers. + - For this benchmark, the request URL will be send as: `/id/1?name=bun` + - Headers must contains `x-powered-by` to `benchmark` + - Expected response: **"1 bun"** (`${id} ${query}`) + - You **MUST NOT use hardcode string or index** to extract querystring. + - In a real-world situation, there's no enforcement that the request will follow the specification, using hardcode index to extract `name=bun` querystring will be prone to error. + - To test if it pass the requirement, the implementation should be able to extract querystring **dynamically** (please treat the value of 'name=bun' can be any value beside 'bun', for example 'alice', 'hina'), which means that the same code should be able to extract querystring, for example: + - `/id/1?name=bun&id=1` -> should return `1 bun` not `1 bun&id=1` + - `/id/1?id=1` -> should return `1 ` + - Query beside `name` maybe not need to be extracted and is optional + - Headers must contains text `Content-Type: text/plain`, additional context is acceptable eg. `Content-Type: text/plain; charset=utf-8` +3. Body + - [POST] `/json` + - Mirror body to response + - Server **MUST parse body to JSON and serialize back to string** + - For the benchmark, the request body will be sent as: `{ "hello": "world" }` + - Expected response: `{ "hello": "world" }` + - Headers must contains text `Content-Type: application/json`, additional context is acceptable eg. `Content-Type: application/json; charset=utf-8`. + +## requirement + +- The framework must at-least has latest published in less than 9 month otherwise will be classified as unmaintained and removed unless is an industry standard (Express). + +# Prerequistes + +- [bombardier](https://github.com/codesenberg/bombardier) +- Nodejs +- Deno +- Bun + +# Run Test + +```typescript +bun benchmark +``` + +Dump result will be available at `results/[benchmark-name].txt` + +## Benchmark Condition + +This benchmark is tested under the following condition: + +- Intel I7-13700K, DDR5 32GB 5600MHz +- Arch Linux 6.10.9-arch1-2 (btw I use Arch) +- Bun 1.2.11 +- Node 22.15.0 +- Deno 2.2.0 + +Tested on 6 May 2025 20:55 (GMT+7) + +## Results + +These results are measured in req/s: + +| Framework | Runtime | Average | Ping | Query | Body | +| ---------------- | ------- | ------- | ---------- | ---------- | ---------- | +| uws | node | 526,295.397 | 535,079.45 | 509,759.27 | 534,047.47 | +| ultimate-express | node | 416,645.31 | 526,907.98 | 508,436.34 | 214,591.61 | +| elysia | bun | 397,259.163 | 533,560.05 | 300,716.41 | 357,501.03 | +| bun | bun | 366,716.193 | 386,961.93 | 317,958.96 | 395,227.69 | +| hyper-express | node | 315,844.147 | 370,809.65 | 299,522.59 | 277,200.2 | +| bun-web-standard | bun | 303,568.81 | 338,462.84 | 255,297.65 | 316,945.94 | +| nhttp | bun | 283,734.777 | 373,377.37 | 244,767.65 | 233,059.31 | | wobe | bun | 282,858.987 | 282,509.03 | 250,687.47 | 315,380.46 | +| hono | bun | 253,646.173 | 294,945.14 | 236,066.25 | 229,927.13 | +| deno | deno | 247,770.227 | 269,520.16 | 233,460.27 | 240,330.25 | +| nbit | bun | 229,226.153 | 252,902.81 | 196,843.1 | 237,932.55 | +| deno-web-standard | deno | 204,908.633 | 236,235.96 | 183,458.05 | 195,031.89 | +| hono | deno | 201,548.523 | 250,592.98 | 195,744.04 | 158,308.55 | +| fastify | node | 142,695.487 | 155,142.07 | 148,078.23 | 124,866.16 | +| hono | node | 129,234.593 | 144,842.92 | 134,412.44 | 108,448.42 | +| express | bun | 126,674.41 | 145,427.54 | 134,805.54 | 99,790.15 | +| oak | bun | 120,481.7 | 117,743.45 | 109,295.56 | 134,406.09 | +| h3 | bun | 109,739.16 | 132,720.75 | 104,854.13 | 91,642.6 | +| h3 | node | 101,237.803 | 136,023.12 | 111,361.83 | 56,328.46 | +| oak | deno | 100,205.983 | 105,824.67 | 93,335 | 101,458.28 | | koa | node | 96,456.887 | 103,217.62 | 97,582.12 | 88,570.92 | +| acorn | deno | 64,951.337 | 95,734.91 | 71,099.63 | 28,019.47 | +| express | node | 25,079.01 | 26,286.22 | 24,796.49 | 24,154.32 | + +See more detail in [results](https://github.com/SaltyAom/bun-http-framework-benchmark/tree/main/results) + +## Notice + +I highly recommended testing this benchmark on your machine yourself as performance in likely to vary between machine. + +If you are unable to run Deno, please run each Deno app individually first until the Deno finish installing the package, then proceed to run benchmark using `bench.sh` or `npm run benchmark` diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/__tests__/correction.spec.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/__tests__/correction.spec.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,74 @@ +import { describe, it, expect, beforeEach, beforeAll, afterAll } from 'bun:test' +import { readdirSync } from 'fs' +import { resolve } from 'path' + +import { spawn, type Subprocess } from 'bun' + +const startup = (ms = 5000) => new Promise((resolve) => setTimeout(resolve, ms)) + +const blacklists = ['bunrest', 'colston', 'fastify'] + +const frameworks = readdirSync(resolve('src')) + .filter((a) => a.endsWith('.ts') || !a.includes('.')) + .map((a) => (a.includes('.') ? a.replace('.ts', '') : `${a}/index`)) + .filter((a) => !blacklists.includes(a)) + +// ? Not usable atm (bun 0.2.2) +// ! Blocking on: https://github.com/oven-sh/bun/issues/1462 +describe('correctness', async () => { + for (const framework of ['kingworld']) { + const server = Bun.spawn({ + cmd: ['bun', `src/${framework}.ts`], + env: { + ENV: 'production' + } + }) + + await startup(100) + + let ops: Promise[] = [] + + const wrap = ( + executor: ( + resolve: (value: void) => void | Promise + ) => Promise + ): void => { + ops.push(new Promise(executor)) + } + + it('[GET /]: return hi in plain/text', () => { + wrap(async (resolve) => { + const res = await fetch('http://localhost:3000/') + expect(await res.text()).toBe('Hi') + + resolve() + }) + }) + + it('[GET /id/:id]: set header and return params and query', async () => { + const res = await fetch('http://localhost:3000/id/1?name=bun') + + expect(res.headers.get('x-powered-by')).toBe('benchmark') + expect(await res.text()).toBe('1 bun') + }) + + it('[POST /json]: mirror json result', () => + wrap(async () => { + const body = JSON.stringify({ + hello: 'world' + }) + + const res = await fetch('http://localhost:3000/json', { + method: 'POST', + body, + headers: { + 'content-type': 'application/json', + 'content-length': body.length.toString() + } + }) + + expect(res.headers.get('content-type')).toBe('application/json') + expect(await res.text()).toBe(body) + })) + } +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/bench.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/bench.sh Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,3 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://localhost:3000/ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://localhost:3000/id/1?name=bun +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type: application/json' -f ./scripts/body.json http://localhost:3000/json diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/bench.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/bench.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,398 @@ +import { + readdirSync, + mkdirSync, + existsSync, + lstatSync, + readFileSync, + writeFileSync +} from 'fs' +import killPort from 'kill-port' +import { $, pathToFileURL } from 'bun' + +const whitelists = [] + +// ? Not working +const blacklists = [ + // Not booting up in test + 'node/adonis/index', + // Not setting content-type header for some reason + 'node/nest/index', + // 'Not booting up in test' + 'node/hapi', + // Body: Result not match + 'bun/xirelta', + // Crash + 'bun/bagel', + // Crash + 'bun/bunrest', + // Doesn't work properly + 'bun/colston', + // Crash on 0.6.2 + 'bun/zarf', + // Crash due to invalid npm version requirement of uWebSockets + 'deno/byte', + // Crash + 'bun/fastify', + // failed to parse body in benchmark + 'bun/byte', + // doesn't run + 'bun/vixeny', + 'node/elysia', + 'c/BUILD/index', + 'deno/acorn', + 'deno/deno', + 'deno/deno-web-standard', + 'deno/hono', + 'deno/oak' +] as const + +const time = 10 + +const commands = [ + `/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d ${time}s http://127.0.0.1:3000/`, + `/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d ${time}s http://127.0.0.1:3000/id/1?name=bun`, + `/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d ${time}s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json` +] as const + +const runtimeCommand = { + node: 'node', + deno: 'deno run --allow-net --allow-env', + bun: 'bun', + c: '' // C binaries are run directly after bazel build +} as const + +// Path to the bazel-bin directory relative to project root +const getBazelBinaryPath = (framework: string) => + `../../bazel-bin/benchmark/bun-http-framework-benchmark/src/c/${framework}` + +const catchNumber = /Reqs\/sec\s+(\d+[.|,]\d+)/m +const format = (value: string | number) => + Intl.NumberFormat('en-US').format(+value) +const sleep = (s = 1) => new Promise((resolve) => setTimeout(resolve, s * 1000)) + +const secToMin = (seconds: number) => + Math.floor(seconds / 60) + + ':' + + (seconds % 60 < 10 ? '0' : '') + + (seconds % 60) + +// Fetch with retry +const retryFetch = ( + url: string, + options?: RequestInit, + time = 0, + resolveEnd?: Function, + rejectEnd?: Function +) => { + return new Promise((resolve, reject) => { + fetch(url, options) + .then((a) => { + if (resolveEnd) resolveEnd(a) + + resolve(a) + }) + .catch((e) => { + if (time > 7) { + if (rejectEnd) rejectEnd(e) + + return reject(e) + } + setTimeout( + () => retryFetch(url, options, time + 1, resolve, reject), + 200 + ) + }) + }) +} + +const test = async () => { + try { + const index = await retryFetch('http://127.0.0.1:3000/') + + if ((await index.text()) !== 'Hi') + throw new Error('Index: Result not match') + + if (!index.headers.get('Content-Type')?.includes('text/plain')) + throw new Error('Index: Content-Type not match') + + const query = await retryFetch('http://127.0.0.1:3000/id/1?name=bun') + if ((await query.text()) !== '1 bun') + throw new Error('Query: Result not match') + + if (!query.headers.get('Content-Type')?.includes('text/plain')) + throw new Error('Query: Content-Type not match') + + if (!query.headers.get('X-Powered-By')?.includes('benchmark')) + throw new Error('Query: X-Powered-By not match') + + const body = await retryFetch('http://127.0.0.1:3000/json', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + hello: 'world' + }) + }) + + if ((await body.text()) !== JSON.stringify({ hello: 'world' })) + throw new Error('Body: Result not match') + + if (!body.headers.get('Content-Type')?.includes('application/json')) + throw new Error('Body: Content-Type not match') + } catch (error) { + throw error + } +} + +const spawn = (target: string, title = true) => { + let [runtime, framework, index] = target.split('/') as [ + keyof typeof runtimeCommand, + string, + string + ] + if (index) framework += '/index' + + const name = framework.replace('/index', '') + + if (title) { + console.log('\n', name) + console.log(' >', runtime, framework, '\n') + } + + let cmd: string[] + + if (runtime === 'c') { + // For C, run the pre-built bazel binary directly + const binaryPath = getBazelBinaryPath(framework) + cmd = [binaryPath] + } else { + const file = existsSync(`./src/${runtime}/${framework}.ts`) + ? `src/${runtime}/${framework}.ts` + : `src/${runtime}/${framework}.js` + cmd = [...runtimeCommand[runtime].split(" "), file] + } + + const server = Bun.spawn({ + cmd, + env: { + ...Bun.env, + NODE_ENV: 'production' + } + }) + + return async () => { + await server.kill() + await sleep(0.3) + + try { + await fetch('http://127.0.0.1:3000') + await sleep(0.6) + await fetch('http://127.0.0.1:3000') + + await killPort(3000) + } catch { + // Empty + } + } +} + +try { + if (lstatSync('results').isDirectory()) rimraf.sync('results') +} catch {} +await Bun.$`rm -rf ./results` +mkdirSync('results') +writeFileSync('results/results.md', '') +const resultFile = Bun.file('results/results.md') +const result = resultFile.writer() + +const main = async () => { + try { + await fetch('http://127.0.0.1:3000') + await killPort(3000) + } catch { + // Empty + } + + const runtimes = [] + + let frameworks = readdirSync('src') + .flatMap((runtime) => { + if (!lstatSync(`src/${runtime}`).isDirectory()) return + + if (!existsSync(`results/${runtime}`)) + mkdirSync(`results/${runtime}`) + + return readdirSync(`src/${runtime}`) + .filter( + (a) => + a.endsWith('.ts') || + a.endsWith('.js') || + a.endsWith('.c') || + !a.includes('.') + ) + .map((a) => + a.includes('.') + ? `${runtime}/` + a.replace(/\.(j|t|c)s?$/, '') + : `${runtime}/${a}/index` + ) + .filter( + (a) => + !blacklists.includes(a as (typeof blacklists)[number]) + ) + }) + .filter((x) => x) + .sort() + + // Overwrite test here + frameworks = whitelists?.length ? whitelists : frameworks + + console.log(`${frameworks.length} frameworks`) + for (const framework of frameworks) console.log(`- ${framework}`) + + console.log('\nTest:') + for (const target of frameworks) { + const kill = spawn(target!, false) + + let [runtime, framework] = target!.split('/') + await sleep(0.1) + + if (runtimes.includes(runtime)) { + const folder = `results/${runtime}` + + if (!lstatSync(folder).isDirectory()) rimraf(folder) + } + + try { + const kill = await test() + + console.log(`✅ ${framework} (${runtime})`) + } catch (error) { + console.log(`❌ ${framework} (${runtime})`) + console.log(' ', (error as Error)?.message || error) + + frameworks.splice(frameworks.indexOf(target!), 1) + } finally { + await kill() + } + } + + const estimateTime = frameworks.length * (commands.length * time + 1) + + console.log() + console.log(`${frameworks.length} frameworks`) + for (const framework of frameworks) console.log(`- ${framework}`) + + console.log(`\nEstimate time: ${secToMin(estimateTime)} min`) + + // process.exit() + + result.write( + ` +| Framework | Runtime | Average | Ping | Query | Body | +| ---------------- | ------- | ------- | ---------- | ---------- | ---------- | +` + ) + + for (const target of frameworks) { + const kill = spawn(target!) + + let [runtime, framework, index] = target!.split('/') as [ + keyof typeof runtimeCommand, + string, + string + ] + + const name = framework.replace('/index', '') + + const frameworkResultFile = Bun.file(`results/${runtime}/${name}.txt`) + const frameworkResult = frameworkResultFile.writer() + + result.write(`| ${name} | ${runtime} `) + + // Wait .3 second for server to bootup + await sleep(0.4) + + let content = '' + const total = [] + + for (const command of commands) { + frameworkResult.write(`${command}\n`) + + console.log(command) + + const res = await Bun.spawn({ + cmd: command.split(' '), + env: Bun.env + }) + + const stdout = await new Response(res.stdout).text() + console.log(stdout) + + const results = catchNumber.exec(stdout) + if (!results?.[1]) continue + + content += `| ${format(results[1])} ` + total.push(toNumber(results[1])) + + frameworkResult.write(results + '\n') + } + + content = + `| ${format( + total.reduce((a, b) => +a + +b, 0) / commands.length + )} ` + + content + + '|\n' + + result.write(content) + await result.flush() + + await kill() + } +} + +const toNumber = (a: string) => +a.replaceAll(',', '') + +const arrange = () => { + const table = readFileSync('results/results.md', { + encoding: 'utf-8' + }) + + const orders = [] + + const [title, divider, ...rows] = table.split('\n') + for (const row of rows) { + const data = row + .replace(/\ /g, '') + .split('|') + .filter((a) => a) + + if (data.length !== commands.length + 3) continue + + const [name, runtime, total] = data + orders.push({ + name, + runtime, + total: toNumber(total), + row + }) + } + + const content = [ + title, + divider, + ...orders.sort((a, b) => b.total - a.total).map((a) => a.row) + ].join('\n') + + console.log(content) + writeFileSync('results/results.md', content) + + process.exit(0) +} + +process.on('beforeExit', async () => { + await killPort(3000) +}) + +main().then(arrange) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/bombardier-linux-386 Binary file benchmark/bun-http-framework-benchmark/bombardier-linux-386 has changed diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/bun.lockb Binary file benchmark/bun-http-framework-benchmark/bun.lockb has changed diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/deno.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/deno.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +{ + "imports": { + "@oak/acorn": "jsr:@oak/acorn@^1.1.0", + "@oak/oak": "jsr:@oak/oak@^16.1.0" + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/deno.lock --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/deno.lock Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,901 @@ +{ + "version": "4", + "specifiers": { + "jsr:@oak/acorn@^1.1.0": "1.1.0", + "jsr:@oak/commons@0.11": "0.11.0", + "jsr:@oak/commons@0.13": "0.13.0", + "jsr:@oak/oak@^16.1.0": "16.1.0", + "jsr:@std/assert@0.223": "0.223.0", + "jsr:@std/assert@0.224": "0.224.0", + "jsr:@std/assert@0.226": "0.226.0", + "jsr:@std/assert@1": "1.0.2", + "jsr:@std/bytes@0.223": "0.223.0", + "jsr:@std/bytes@0.224": "0.224.0", + "jsr:@std/crypto@0.223": "0.223.0", + "jsr:@std/crypto@0.224": "0.224.0", + "jsr:@std/encoding@0.223": "0.223.0", + "jsr:@std/encoding@1.0.0-rc.2": "1.0.0-rc.2", + "jsr:@std/fmt@^1.0.0-rc.1": "1.0.0", + "jsr:@std/fs@^1.0.0-rc.5": "1.0.1", + "jsr:@std/http@0.223": "0.223.0", + "jsr:@std/http@0.224": "0.224.5", + "jsr:@std/io@0.223": "0.223.0", + "jsr:@std/io@~0.224.3": "0.224.4", + "jsr:@std/log@0.224": "0.224.5", + "jsr:@std/media-types@0.223": "0.223.0", + "jsr:@std/media-types@0.224": "0.224.1", + "jsr:@std/media-types@1": "1.0.2", + "jsr:@std/path@0.223": "0.223.0", + "jsr:@valibot/valibot@0.36": "0.36.0", + "npm:buffer@6": "6.0.3", + "npm:hyperid@^3.2.0": "3.2.0", + "npm:path-to-regexp@6.2.1": "6.2.1", + "npm:path-to-regexp@^7.1.0": "7.1.0", + "npm:qs@^6.12.0": "6.13.0", + "npm:string_decoder@^1.3.0": "1.3.0", + "npm:undici@^6.18.0": "6.19.5" + }, + "jsr": { + "@oak/acorn@1.1.0": { + "integrity": "9054cc943c1ef1c0e5e77a2b277aa2884da343d4c63fcb4955dd2b22d6dc0fb7", + "dependencies": [ + "jsr:@oak/commons@0.13", + "jsr:@std/assert@1", + "jsr:@std/http@0.224", + "jsr:@std/log", + "jsr:@valibot/valibot", + "npm:buffer", + "npm:hyperid", + "npm:path-to-regexp@^7.1.0", + "npm:qs", + "npm:string_decoder", + "npm:undici" + ] + }, + "@oak/commons@0.11.0": { + "integrity": "07702bfe5c07cd8144c422022994da1f9fea466b185824f4be63a2b1b1a65125", + "dependencies": [ + "jsr:@std/assert@0.226", + "jsr:@std/bytes@0.224", + "jsr:@std/crypto@0.224", + "jsr:@std/http@0.224", + "jsr:@std/media-types@0.224" + ] + }, + "@oak/commons@0.13.0": { + "integrity": "64a34d8b754a981df3b16ad30afb980e016edd316cc61a026df32d65daba3e03", + "dependencies": [ + "jsr:@std/assert@1", + "jsr:@std/http@0.224", + "jsr:@std/media-types@1" + ] + }, + "@oak/oak@16.1.0": { + "integrity": "ab21506555fffeb08dc8f45ff5d28607e8087949ff58bd2964b27df65994480b", + "dependencies": [ + "jsr:@oak/commons@0.11", + "jsr:@std/assert@0.223", + "jsr:@std/bytes@0.223", + "jsr:@std/crypto@0.223", + "jsr:@std/http@0.223", + "jsr:@std/io@0.223", + "jsr:@std/media-types@0.223", + "jsr:@std/path", + "npm:path-to-regexp@6.2.1" + ] + }, + "@std/assert@0.223.0": { + "integrity": "eb8d6d879d76e1cc431205bd346ed4d88dc051c6366365b1af47034b0670be24" + }, + "@std/assert@0.224.0": { + "integrity": "8643233ec7aec38a940a8264a6e3eed9bfa44e7a71cc6b3c8874213ff401967f" + }, + "@std/assert@0.226.0": { + "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3" + }, + "@std/assert@1.0.2": { + "integrity": "ccacec332958126deaceb5c63ff8b4eaf9f5ed0eac9feccf124110435e59e49c" + }, + "@std/bytes@0.223.0": { + "integrity": "84b75052cd8680942c397c2631318772b295019098f40aac5c36cead4cba51a8" + }, + "@std/bytes@0.224.0": { + "integrity": "a2250e1d0eb7d1c5a426f21267ab9bdeac2447fa87a3d0d1a467d3f7a6058e49" + }, + "@std/crypto@0.223.0": { + "integrity": "1aa9555ff56b09e197ad988ea200f84bc6781fd4fd83f3a156ee44449af93000", + "dependencies": [ + "jsr:@std/assert@0.223", + "jsr:@std/encoding@0.223" + ] + }, + "@std/crypto@0.224.0": { + "integrity": "154ef3ff08ef535562ef1a718718c5b2c5fc3808f0f9100daad69e829bfcdf2d", + "dependencies": [ + "jsr:@std/assert@0.224" + ] + }, + "@std/encoding@0.223.0": { + "integrity": "2b5615a75e00337ce113f34cf2f9b8c18182c751a8dcc8b1a2c2fc0e117bef00" + }, + "@std/encoding@1.0.0-rc.2": { + "integrity": "160d7674a20ebfbccdf610b3801fee91cf6e42d1c106dd46bbaf46e395cd35ef" + }, + "@std/fmt@1.0.0": { + "integrity": "8a95c9fdbb61559418ccbc0f536080cf43341655e1444f9d375a66886ceaaa3d" + }, + "@std/fs@1.0.1": { + "integrity": "d6914ca2c21abe591f733b31dbe6331e446815e513e2451b3b9e472daddfefcb" + }, + "@std/http@0.223.0": { + "integrity": "15ab8a0c5a7e9d5be017a15b01600f20f66602ceec48b378939fa24fcec522aa", + "dependencies": [ + "jsr:@std/assert@0.223", + "jsr:@std/encoding@0.223" + ] + }, + "@std/http@0.224.5": { + "integrity": "b03b5d1529f6c423badfb82f6640f9f2557b4034cd7c30655ba5bb447ff750a4", + "dependencies": [ + "jsr:@std/encoding@1.0.0-rc.2" + ] + }, + "@std/io@0.223.0": { + "integrity": "2d8c3c2ab3a515619b90da2c6ff5ea7b75a94383259ef4d02116b228393f84f1", + "dependencies": [ + "jsr:@std/bytes@0.223" + ] + }, + "@std/io@0.224.4": { + "integrity": "bce1151765e4e70e376039fd72c71672b4d4aae363878a5ee3e58361b81197ec" + }, + "@std/log@0.224.5": { + "integrity": "4612a45189438441bbd923a4cad1cce5c44c6c4a039195a3e8d831ce38894eee", + "dependencies": [ + "jsr:@std/fmt", + "jsr:@std/fs", + "jsr:@std/io@~0.224.3" + ] + }, + "@std/media-types@0.223.0": { + "integrity": "84684680c2eb6bc6d9369c6d6f26a49decaf2c7603ff531862dda575d9d6776e" + }, + "@std/media-types@0.224.1": { + "integrity": "9e69a5daed37c5b5c6d3ce4731dc191f80e67f79bed392b0957d1d03b87f11e1" + }, + "@std/media-types@1.0.2": { + "integrity": "abb78dc8f7d88141cba8c4d60fc1e8b421e5c7b0d7c84f2f708bc666cad46784" + }, + "@std/path@0.223.0": { + "integrity": "593963402d7e6597f5a6e620931661053572c982fc014000459edc1f93cc3989", + "dependencies": [ + "jsr:@std/assert@0.223" + ] + }, + "@valibot/valibot@0.36.0": { + "integrity": "36139cd850af78a876b9d9abf904a8d48c559374ce64e5a5b309dfea460a16ed" + } + }, + "npm": { + "base64-js@1.5.1": { + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "buffer@5.7.1": { + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": [ + "base64-js", + "ieee754" + ] + }, + "buffer@6.0.3": { + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dependencies": [ + "base64-js", + "ieee754" + ] + }, + "call-bind@1.0.7": { + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": [ + "es-define-property", + "es-errors", + "function-bind", + "get-intrinsic", + "set-function-length" + ] + }, + "define-data-property@1.1.4": { + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": [ + "es-define-property", + "es-errors", + "gopd" + ] + }, + "es-define-property@1.0.0": { + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": [ + "get-intrinsic" + ] + }, + "es-errors@1.3.0": { + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic@1.2.4": { + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": [ + "es-errors", + "function-bind", + "has-proto", + "has-symbols", + "hasown" + ] + }, + "gopd@1.0.1": { + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": [ + "get-intrinsic" + ] + }, + "has-property-descriptors@1.0.2": { + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": [ + "es-define-property" + ] + }, + "has-proto@1.0.3": { + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols@1.0.3": { + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown@2.0.2": { + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": [ + "function-bind" + ] + }, + "hyperid@3.2.0": { + "integrity": "sha512-PdTtDo+Rmza9nEhTunaDSUKwbC69TIzLEpZUwiB6f+0oqmY0UPfhyHCPt6K1NQ4WFv5yJBTG5vELztVWP+nEVQ==", + "dependencies": [ + "buffer@5.7.1", + "uuid", + "uuid-parse" + ] + }, + "ieee754@1.2.1": { + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "object-inspect@1.13.2": { + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" + }, + "path-to-regexp@6.2.1": { + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, + "path-to-regexp@7.1.0": { + "integrity": "sha512-ZToe+MbUF4lBqk6dV8GKot4DKfzrxXsplOddH8zN3YK+qw9/McvP7+4ICjZvOne0jQhN4eJwHsX6tT0Ns19fvw==" + }, + "qs@6.13.0": { + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": [ + "side-channel" + ] + }, + "safe-buffer@5.2.1": { + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "set-function-length@1.2.2": { + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": [ + "define-data-property", + "es-errors", + "function-bind", + "get-intrinsic", + "gopd", + "has-property-descriptors" + ] + }, + "side-channel@1.0.6": { + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": [ + "call-bind", + "es-errors", + "get-intrinsic", + "object-inspect" + ] + }, + "string_decoder@1.3.0": { + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": [ + "safe-buffer" + ] + }, + "undici@6.19.5": { + "integrity": "sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==" + }, + "uuid-parse@1.1.0": { + "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==" + }, + "uuid@8.3.2": { + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + }, + "redirects": { + "https://deno.land/x/base64/base64url.ts": "https://deno.land/x/base64@v0.2.1/base64url.ts" + }, + "remote": { + "https://cdn.jsdelivr.net/npm/@cloudflare/workers-types@4.20230821.0/index.ts": "5d082a9306b12b156611931e9fe6b4da20e63debf4ea3e26fdd7c173bc987971", + "https://deno.land/std@0.161.0/encoding/base64.ts": "c57868ca7fa2fbe919f57f88a623ad34e3d970d675bdc1ff3a9d02bba7409db2", + "https://deno.land/std@0.161.0/encoding/base64url.ts": "a5f82a9fa703bd85a5eb8e7c1296bc6529e601ebd9642cc2b5eaa6b38fa9e05a", + "https://deno.land/std@0.163.0/async/abortable.ts": "87aa7230be8360c24ad437212311c9e8d4328854baec27b4c7abb26e85515c06", + "https://deno.land/std@0.163.0/async/deadline.ts": "48ac998d7564969f3e6ec6b6f9bf0217ebd00239b1b2292feba61272d5dd58d0", + "https://deno.land/std@0.163.0/async/debounce.ts": "dc8b92d4a4fe7eac32c924f2b8d3e62112530db70cadce27042689d82970b350", + "https://deno.land/std@0.163.0/async/deferred.ts": "d8fb253ffde2a056e4889ef7e90f3928f28be9f9294b6505773d33f136aab4e6", + "https://deno.land/std@0.163.0/async/delay.ts": "0419dfc993752849692d1f9647edf13407c7facc3509b099381be99ffbc9d699", + "https://deno.land/std@0.163.0/async/mod.ts": "dd0a8ed4f3984ffabe2fcca7c9f466b7932d57b1864ffee148a5d5388316db6b", + "https://deno.land/std@0.163.0/async/mux_async_iterator.ts": "3447b28a2a582224a3d4d3596bccbba6e85040da3b97ed64012f7decce98d093", + "https://deno.land/std@0.163.0/async/pool.ts": "ef9eb97b388543acbf0ac32647121e4dbe629236899586c4d4311a8770fbb239", + "https://deno.land/std@0.163.0/async/tee.ts": "9af3a3e7612af75861308b52249e167f5ebc3dcfc8a1a4d45462d96606ee2b70", + "https://deno.land/std@0.163.0/http/server.ts": "e99c1bee8a3f6571ee4cdeb2966efad465b8f6fe62bec1bdb59c1f007cc4d155", + "https://deno.land/std@0.182.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", + "https://deno.land/std@0.182.0/crypto/keystack.ts": "877ab0f19eb7d37ad6495190d3c3e39f58e9c52e0b6a966f82fd6df67ca55f90", + "https://deno.land/std@0.182.0/crypto/timing_safe_equal.ts": "0fae34ee02264f309ae0b6e54e9746a7aba3996e5454903ed106967a7a9ef665", + "https://deno.land/std@0.182.0/encoding/base64.ts": "144ae6234c1fbe5b68666c711dc15b1e9ee2aef6d42b3b4345bf9a6c91d70d0d", + "https://deno.land/std@0.182.0/encoding/base64url.ts": "2ed4ba122b20fedf226c5d337cf22ee2024fa73a8f85d915d442af7e9ce1fae1", + "https://deno.land/std@0.182.0/http/_negotiation/common.ts": "14d1a52427ab258a4b7161cd80e1d8a207b7cc64b46e911780f57ead5f4323c6", + "https://deno.land/std@0.182.0/http/_negotiation/encoding.ts": "ff747d107277c88cb7a6a62a08eeb8d56dad91564cbcccb30694d5dc126dcc53", + "https://deno.land/std@0.182.0/http/_negotiation/language.ts": "7bcddd8db3330bdb7ce4fc00a213c5547c1968139864201efd67ef2d0d51887d", + "https://deno.land/std@0.182.0/http/_negotiation/media_type.ts": "58847517cd549384ad677c0fe89e0a4815be36fe7a303ea63cee5f6a1d7e1692", + "https://deno.land/std@0.182.0/http/cookie_map.ts": "d148a5eaf35f19905dd5104126fa47ac71105306dd42f129732365e43108b28a", + "https://deno.land/std@0.182.0/http/http_errors.ts": "b9a18ef97d6c5966964de95e04d1f9f88a0f8bd8577c26fd402d9d632fb03a42", + "https://deno.land/std@0.182.0/http/http_status.ts": "8a7bcfe3ac025199ad804075385e57f63d055b2aed539d943ccc277616d6f932", + "https://deno.land/std@0.182.0/http/negotiation.ts": "46e74a6bad4b857333a58dc5b50fe8e5a4d5267e97292293ea65f980bd918086", + "https://deno.land/std@0.182.0/media_types/_db.ts": "7606d83e31f23ce1a7968cbaee852810c2cf477903a095696cdc62eaab7ce570", + "https://deno.land/std@0.182.0/media_types/_util.ts": "916efbd30b6148a716f110e67a4db29d6949bf4048997b754415dd7e42c52378", + "https://deno.land/std@0.182.0/media_types/content_type.ts": "ad98a5aa2d95f5965b2796072284258710a25e520952376ed432b0937ce743bc", + "https://deno.land/std@0.182.0/media_types/extension.ts": "a7cd28c9417143387cdfed27d4e8607ebcf5b1ec27eb8473d5b000144689fe65", + "https://deno.land/std@0.182.0/media_types/extensions_by_type.ts": "43806d6a52a0d6d965ada9d20e60a982feb40bc7a82268178d94edb764694fed", + "https://deno.land/std@0.182.0/media_types/format_media_type.ts": "f5e1073c05526a6f5a516ac5c5587a1abd043bf1039c71cde1166aa4328c8baf", + "https://deno.land/std@0.182.0/media_types/get_charset.ts": "18b88274796fda5d353806bf409eb1d2ddb3f004eb4bd311662c4cdd8ac173db", + "https://deno.land/std@0.182.0/media_types/mod.ts": "d3f0b99f85053bc0b98ecc24eaa3546dfa09b856dc0bbaf60d8956d2cdd710c8", + "https://deno.land/std@0.182.0/media_types/parse_media_type.ts": "835c4112e1357e95b4f10d7cdea5ae1801967e444f48673ff8f1cb4d32af9920", + "https://deno.land/std@0.182.0/media_types/type_by_extension.ts": "daa801eb0f11cdf199445d0f1b656cf116d47dcf9e5b85cc1e6b4469f5ee0432", + "https://deno.land/std@0.182.0/media_types/vendor/mime-db.v1.52.0.ts": "6925bbcae81ca37241e3f55908d0505724358cda3384eaea707773b2c7e99586", + "https://deno.land/std@0.185.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", + "https://deno.land/std@0.185.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", + "https://deno.land/std@0.185.0/async/deferred.ts": "42790112f36a75a57db4a96d33974a936deb7b04d25c6084a9fa8a49f135def8", + "https://deno.land/std@0.185.0/bytes/bytes_list.ts": "31d664f4d42fa922066405d0e421c56da89d751886ee77bbe25a88bf0310c9d0", + "https://deno.land/std@0.185.0/bytes/concat.ts": "d26d6f3d7922e6d663dacfcd357563b7bf4a380ce5b9c2bbe0c8586662f25ce2", + "https://deno.land/std@0.185.0/bytes/copy.ts": "939d89e302a9761dcf1d9c937c7711174ed74c59eef40a1e4569a05c9de88219", + "https://deno.land/std@0.185.0/bytes/ends_with.ts": "4228811ebc71615d27f065c54b5e815ec1972538772b0f413c0efe05245b472e", + "https://deno.land/std@0.185.0/bytes/equals.ts": "b87494ce5442dc786db46f91378100028c402f83a14a2f7bbff6bda7810aefe3", + "https://deno.land/std@0.185.0/bytes/includes_needle.ts": "76a8163126fb2f8bf86fd7f22192c3bb04bf6a20b987a095127c2ca08adf3ba6", + "https://deno.land/std@0.185.0/bytes/index_of_needle.ts": "65c939607df609374c4415598fa4dad04a2f14c4d98cd15775216f0aaf597f24", + "https://deno.land/std@0.185.0/bytes/last_index_of_needle.ts": "7181072883cb4908c6ce8f7a5bb1d96787eef2c2ab3aa94fe4268ab326a53cbf", + "https://deno.land/std@0.185.0/bytes/mod.ts": "e869bba1e7a2e3a9cc6c2d55471888429a544e70a840c087672e656e7ba21815", + "https://deno.land/std@0.185.0/bytes/repeat.ts": "6f5e490d8d72bcbf8d84a6bb04690b9b3eb5822c5a11687bca73a2318a842294", + "https://deno.land/std@0.185.0/bytes/starts_with.ts": "3e607a70c9c09f5140b7a7f17a695221abcc7244d20af3eb47ccbb63f5885135", + "https://deno.land/std@0.185.0/crypto/keystack.ts": "877ab0f19eb7d37ad6495190d3c3e39f58e9c52e0b6a966f82fd6df67ca55f90", + "https://deno.land/std@0.185.0/crypto/timing_safe_equal.ts": "0fae34ee02264f309ae0b6e54e9746a7aba3996e5454903ed106967a7a9ef665", + "https://deno.land/std@0.185.0/encoding/base64.ts": "144ae6234c1fbe5b68666c711dc15b1e9ee2aef6d42b3b4345bf9a6c91d70d0d", + "https://deno.land/std@0.185.0/encoding/base64url.ts": "2ed4ba122b20fedf226c5d337cf22ee2024fa73a8f85d915d442af7e9ce1fae1", + "https://deno.land/std@0.185.0/http/_negotiation/common.ts": "14d1a52427ab258a4b7161cd80e1d8a207b7cc64b46e911780f57ead5f4323c6", + "https://deno.land/std@0.185.0/http/_negotiation/encoding.ts": "ff747d107277c88cb7a6a62a08eeb8d56dad91564cbcccb30694d5dc126dcc53", + "https://deno.land/std@0.185.0/http/_negotiation/language.ts": "7bcddd8db3330bdb7ce4fc00a213c5547c1968139864201efd67ef2d0d51887d", + "https://deno.land/std@0.185.0/http/_negotiation/media_type.ts": "58847517cd549384ad677c0fe89e0a4815be36fe7a303ea63cee5f6a1d7e1692", + "https://deno.land/std@0.185.0/http/cookie_map.ts": "d148a5eaf35f19905dd5104126fa47ac71105306dd42f129732365e43108b28a", + "https://deno.land/std@0.185.0/http/etag.ts": "6ad8abbbb1045aabf2307959a2c5565054a8bf01c9824ddee836b1ff22706a58", + "https://deno.land/std@0.185.0/http/http_errors.ts": "b9a18ef97d6c5966964de95e04d1f9f88a0f8bd8577c26fd402d9d632fb03a42", + "https://deno.land/std@0.185.0/http/http_status.ts": "8a7bcfe3ac025199ad804075385e57f63d055b2aed539d943ccc277616d6f932", + "https://deno.land/std@0.185.0/http/negotiation.ts": "46e74a6bad4b857333a58dc5b50fe8e5a4d5267e97292293ea65f980bd918086", + "https://deno.land/std@0.185.0/http/server_sent_event.ts": "856764c8c058605bb618272833990b1f88b6de0dcc460f0f09749ba7e99dd656", + "https://deno.land/std@0.185.0/io/buf_reader.ts": "abeb92b18426f11d72b112518293a96aef2e6e55f80b84235e8971ac910affb5", + "https://deno.land/std@0.185.0/io/buf_writer.ts": "48c33c8f00b61dcbc7958706741cec8e59810bd307bc6a326cbd474fe8346dfd", + "https://deno.land/std@0.185.0/io/buffer.ts": "17f4410eaaa60a8a85733e8891349a619eadfbbe42e2f319283ce2b8f29723ab", + "https://deno.land/std@0.185.0/io/copy_n.ts": "0cc7ce07c75130f6fc18621ec1911c36e147eb9570664fee0ea12b1988167590", + "https://deno.land/std@0.185.0/io/limited_reader.ts": "6c9a216f8eef39c1ee2a6b37a29372c8fc63455b2eeb91f06d9646f8f759fc8b", + "https://deno.land/std@0.185.0/io/mod.ts": "2665bcccc1fd6e8627cca167c3e92aaecbd9897556b6f69e6d258070ef63fd9b", + "https://deno.land/std@0.185.0/io/multi_reader.ts": "9c2a0a31686c44b277e16da1d97b4686a986edcee48409b84be25eedbc39b271", + "https://deno.land/std@0.185.0/io/read_delim.ts": "c02b93cc546ae8caad8682ae270863e7ace6daec24c1eddd6faabc95a9d876a3", + "https://deno.land/std@0.185.0/io/read_int.ts": "7cb8bcdfaf1107586c3bacc583d11c64c060196cb070bb13ae8c2061404f911f", + "https://deno.land/std@0.185.0/io/read_lines.ts": "c526c12a20a9386dc910d500f9cdea43cba974e853397790bd146817a7eef8cc", + "https://deno.land/std@0.185.0/io/read_long.ts": "f0aaa420e3da1261c5d33c5e729f09922f3d9fa49f046258d4ff7a00d800c71e", + "https://deno.land/std@0.185.0/io/read_range.ts": "28152daf32e43dd9f7d41d8466852b0d18ad766cd5c4334c91fef6e1b3a74eb5", + "https://deno.land/std@0.185.0/io/read_short.ts": "805cb329574b850b84bf14a92c052c59b5977a492cd780c41df8ad40826c1a20", + "https://deno.land/std@0.185.0/io/read_string_delim.ts": "5dc9f53bdf78e7d4ee1e56b9b60352238ab236a71c3e3b2a713c3d78472a53ce", + "https://deno.land/std@0.185.0/io/slice_long_to_bytes.ts": "48d9bace92684e880e46aa4a2520fc3867f9d7ce212055f76ecc11b22f9644b7", + "https://deno.land/std@0.185.0/io/string_reader.ts": "da0f68251b3d5b5112485dfd4d1b1936135c9b4d921182a7edaf47f74c25cc8f", + "https://deno.land/std@0.185.0/io/string_writer.ts": "8a03c5858c24965a54c6538bed15f32a7c72f5704a12bda56f83a40e28e5433e", + "https://deno.land/std@0.185.0/media_types/_db.ts": "7606d83e31f23ce1a7968cbaee852810c2cf477903a095696cdc62eaab7ce570", + "https://deno.land/std@0.185.0/media_types/_util.ts": "916efbd30b6148a716f110e67a4db29d6949bf4048997b754415dd7e42c52378", + "https://deno.land/std@0.185.0/media_types/content_type.ts": "ad98a5aa2d95f5965b2796072284258710a25e520952376ed432b0937ce743bc", + "https://deno.land/std@0.185.0/media_types/extension.ts": "a7cd28c9417143387cdfed27d4e8607ebcf5b1ec27eb8473d5b000144689fe65", + "https://deno.land/std@0.185.0/media_types/extensions_by_type.ts": "43806d6a52a0d6d965ada9d20e60a982feb40bc7a82268178d94edb764694fed", + "https://deno.land/std@0.185.0/media_types/format_media_type.ts": "f5e1073c05526a6f5a516ac5c5587a1abd043bf1039c71cde1166aa4328c8baf", + "https://deno.land/std@0.185.0/media_types/get_charset.ts": "18b88274796fda5d353806bf409eb1d2ddb3f004eb4bd311662c4cdd8ac173db", + "https://deno.land/std@0.185.0/media_types/mod.ts": "d3f0b99f85053bc0b98ecc24eaa3546dfa09b856dc0bbaf60d8956d2cdd710c8", + "https://deno.land/std@0.185.0/media_types/parse_media_type.ts": "835c4112e1357e95b4f10d7cdea5ae1801967e444f48673ff8f1cb4d32af9920", + "https://deno.land/std@0.185.0/media_types/type_by_extension.ts": "daa801eb0f11cdf199445d0f1b656cf116d47dcf9e5b85cc1e6b4469f5ee0432", + "https://deno.land/std@0.185.0/media_types/vendor/mime-db.v1.52.0.ts": "6925bbcae81ca37241e3f55908d0505724358cda3384eaea707773b2c7e99586", + "https://deno.land/std@0.185.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.185.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.185.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", + "https://deno.land/std@0.185.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.185.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", + "https://deno.land/std@0.185.0/path/mod.ts": "bf718f19a4fdd545aee1b06409ca0805bd1b68ecf876605ce632e932fe54510c", + "https://deno.land/std@0.185.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", + "https://deno.land/std@0.185.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", + "https://deno.land/std@0.185.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", + "https://deno.land/std@0.185.0/streams/_common.ts": "f45cba84f0d813de3326466095539602364a9ba521f804cc758f7a475cda692d", + "https://deno.land/std@0.185.0/streams/buffer.ts": "d5b3d7d0299114e5b2ea895a8bf202a687fd915c5282f8096c7bae23b5a04407", + "https://deno.land/std@0.185.0/streams/byte_slice_stream.ts": "225d57263a34325d7c96cb3dafeb478eec0e6fd05cd0458d678752eadd132bb4", + "https://deno.land/std@0.185.0/streams/copy.ts": "75cbc795ff89291df22ddca5252de88b2e16d40c85d02840593386a8a1454f71", + "https://deno.land/std@0.185.0/streams/delimiter_stream.ts": "f69e849b3d1f59f02424497273f411105a6f76a9f13da92aeeb9a2d554236814", + "https://deno.land/std@0.185.0/streams/early_zip_readable_streams.ts": "4005fa74162b943f79899e5d7cb96adcbc0a6b867f9144974ed12d30e0a556e1", + "https://deno.land/std@0.185.0/streams/iterate_reader.ts": "bbec1d45c2df2c0c5920bad0549351446fdc8e0886d99e95959b259dbcdb6072", + "https://deno.land/std@0.185.0/streams/limited_bytes_transform_stream.ts": "05dc592ffaab83257494d22dd53917e56243c26e5e3129b3f13ddbbbc4785048", + "https://deno.land/std@0.185.0/streams/limited_transform_stream.ts": "d69ab790232c1b86f53621ad41ef03c235f2abb4b7a1cd51960ad6e12ee55e38", + "https://deno.land/std@0.185.0/streams/merge_readable_streams.ts": "5d6302888f4bb0616dafb5768771be0aec9bedc05fbae6b3d726d05ffbec5b15", + "https://deno.land/std@0.185.0/streams/mod.ts": "c07ec010e700b9ea887dc36ca08729828bc7912f711e4054e24d33fd46282252", + "https://deno.land/std@0.185.0/streams/read_all.ts": "ee319772fb0fd28302f97343cc48dfcf948f154fd0d755d8efe65814b70533be", + "https://deno.land/std@0.185.0/streams/readable_stream_from_iterable.ts": "cd4bb9e9bf6dbe84c213beb1f5085c326624421671473e410cfaecad15f01865", + "https://deno.land/std@0.185.0/streams/readable_stream_from_reader.ts": "bfc416c4576a30aac6b9af22c9dc292c20c6742141ee7c55b5e85460beb0c54e", + "https://deno.land/std@0.185.0/streams/reader_from_iterable.ts": "55f68110dce3f8f2c87b834d95f153bc904257fc65175f9f2abe78455cb8047c", + "https://deno.land/std@0.185.0/streams/reader_from_stream_reader.ts": "fa4971e5615a010e49492c5d1688ca1a4d17472a41e98b498ab89a64ebd7ac73", + "https://deno.land/std@0.185.0/streams/text_delimiter_stream.ts": "20e680ab8b751390e359288ce764f9c47d164af11a263870746eeca4bc7d976b", + "https://deno.land/std@0.185.0/streams/text_line_stream.ts": "0f2c4b33a5fdb2476f2e060974cba1347cefe99a4af33c28a57524b1a34750fa", + "https://deno.land/std@0.185.0/streams/to_transform_stream.ts": "7f55fc0b14cf3ed0f8d10d8f41d05bdc40726e44a65c37f58705d10a615f0159", + "https://deno.land/std@0.185.0/streams/writable_stream_from_writer.ts": "56fff5c82fb736fdd669b567cc0b2bbbe0351002cd13254eae26c366e2bed89a", + "https://deno.land/std@0.185.0/streams/write_all.ts": "aec90152978581ea62d56bb53a5cbf487e6a89c902f87c5969681ffbdf32b998", + "https://deno.land/std@0.185.0/streams/writer_from_stream_writer.ts": "07c7ee025151a190f37fc42cbb01ff93afc949119ebddc6e0d0df14df1bf6950", + "https://deno.land/std@0.185.0/streams/zip_readable_streams.ts": "a9d81aa451240f79230add674809dbee038d93aabe286e2d9671e66591fc86ca", + "https://deno.land/std@0.200.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.200.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.200.0/async/deadline.ts": "58f72a3cc0fcb731b2cc055ba046f4b5be3349ff6bf98f2e793c3b969354aab2", + "https://deno.land/std@0.200.0/async/delay.ts": "a6142eb44cdd856b645086af2b811b1fcce08ec06bb7d50969e6a872ee9b8659", + "https://deno.land/std@0.200.0/datetime/to_imf.ts": "8f9c0af8b167031ffe2e03da01a12a3b0672cc7562f89c61942a0ab0129771b2", + "https://deno.land/std@0.200.0/encoding/base64.ts": "144ae6234c1fbe5b68666c711dc15b1e9ee2aef6d42b3b4345bf9a6c91d70d0d", + "https://deno.land/std@0.200.0/fmt/colors.ts": "a7eecffdf3d1d54db890723b303847b6e0a1ab4b528ba6958b8f2e754cf1b3bc", + "https://deno.land/std@0.200.0/http/cookie.ts": "6a8a85f84e64ec548d8dc785fa646fc968234264fc00e8a5c7693c07cadff955", + "https://deno.land/std@0.200.0/http/user_agent.ts": "35d3c70d0926b0e121b8c1bbc324b3522479158acaa4f0c43928362b7bf4e6f4", + "https://deno.land/std@0.99.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", + "https://deno.land/std@0.99.0/_util/has_own_property.ts": "f5edd94ed3f3c20c517d812045deb97977e18501c9b7105b5f5c11a31893d7a2", + "https://deno.land/std@0.99.0/_util/os.ts": "e282950a0eaa96760c0cf11e7463e66babd15ec9157d4c9ed49cc0925686f6a7", + "https://deno.land/std@0.99.0/async/deferred.ts": "624bef4b755b71394620508a0c234a93cb8020cbd1b04bfcdad41c174392cef6", + "https://deno.land/std@0.99.0/async/delay.ts": "9de1d8d07d1927767ab7f82434b883f3d8294fb19cad819691a2ad81a728cf3d", + "https://deno.land/std@0.99.0/async/mod.ts": "f24e4a94f9fb7de78e8345e9590e1bf23da28a212541970413a023094448031b", + "https://deno.land/std@0.99.0/async/mux_async_iterator.ts": "62abff3af9ff619e8f2adc96fc70d4ca020fa48a50c23c13f12d02ed2b760dbe", + "https://deno.land/std@0.99.0/async/pool.ts": "353ce4f91865da203a097aa6f33de8966340c91b6f4a055611c8c5d534afd12f", + "https://deno.land/std@0.99.0/async/tee.ts": "6b8f1322b6dd2396202cfbe9cde9cab158d1e962cfd9197b0a97c6657bee79ce", + "https://deno.land/std@0.99.0/bytes/bytes_list.ts": "a13287edb03f19d27ba4927dec6d6de3e5bd46254cd4aee6f7e5815810122673", + "https://deno.land/std@0.99.0/bytes/mod.ts": "1ae1ccfe98c4b979f12b015982c7444f81fcb921bea7aa215bf37d84f46e1e13", + "https://deno.land/std@0.99.0/datetime/formatter.ts": "bf7befcd2c55c3060be199ebc10e40f9c33aef6141c20f7c781d03beef25a49e", + "https://deno.land/std@0.99.0/datetime/mod.ts": "c62a2c7e9d364f8d007f0f2496a4850a0f0790adb529de1988359d8d54f6103c", + "https://deno.land/std@0.99.0/datetime/tokenizer.ts": "492bb6251e75e0c03d5a89a66bd2b03e08e9cbc298d51e002cf59378aaa32c48", + "https://deno.land/std@0.99.0/fmt/colors.ts": "db22b314a2ae9430ae7460ce005e0a7130e23ae1c999157e3bb77cf55800f7e4", + "https://deno.land/std@0.99.0/http/_io.ts": "f4446e433d8d0009851c7de20d594746de228399c382cbee65da30eb87e70827", + "https://deno.land/std@0.99.0/http/cookie.ts": "5952a0a7973fcacb99fdcbe080b735a367194514217d2c6788f92a299c87136c", + "https://deno.land/std@0.99.0/http/http_status.ts": "ebaa9bebfb8adc3d7b20c49e11037e4eefd79629ad80d81383933f4cdc91b3eb", + "https://deno.land/std@0.99.0/http/server.ts": "39414681549353ebd0665e3df4145ee0a93a989cd0f55bed14fdb2c43d2faa3b", + "https://deno.land/std@0.99.0/io/buffer.ts": "3ead6bb11276ebcf093c403f74f67fd2205a515dbbb9061862c468ca56f37cd8", + "https://deno.land/std@0.99.0/io/bufio.ts": "82fe6a499cacf4604844472ccf328cb0a1c0571c0f83b5ee67e475018342b4ae", + "https://deno.land/std@0.99.0/io/ioutil.ts": "3c6b7c8be3b8cd19746de028c40063193578612244a935dcc27be9f3ff343b0c", + "https://deno.land/std@0.99.0/io/readers.ts": "17403919724fef2f343c88555606368868a5c752a1099ad801f6a381c170f62d", + "https://deno.land/std@0.99.0/io/util.ts": "318be78b7954da25f0faffe123fef0d9423ea61af98467e860c06b60265eff6d", + "https://deno.land/std@0.99.0/mime/multipart.ts": "f52b50c4d7c52a7ce4cc59e359c36085e7903073c9b06ed0064dd092cc3e3559", + "https://deno.land/std@0.99.0/path/_constants.ts": "1247fee4a79b70c89f23499691ef169b41b6ccf01887a0abd131009c5581b853", + "https://deno.land/std@0.99.0/path/_interface.ts": "1fa73b02aaa24867e481a48492b44f2598cd9dfa513c7b34001437007d3642e4", + "https://deno.land/std@0.99.0/path/_util.ts": "2e06a3b9e79beaf62687196bd4b60a4c391d862cfa007a20fc3a39f778ba073b", + "https://deno.land/std@0.99.0/path/common.ts": "eaf03d08b569e8a87e674e4e265e099f237472b6fd135b3cbeae5827035ea14a", + "https://deno.land/std@0.99.0/path/glob.ts": "314ad9ff263b895795208cdd4d5e35a44618ca3c6dd155e226fb15d065008652", + "https://deno.land/std@0.99.0/path/mod.ts": "4465dc494f271b02569edbb4a18d727063b5dbd6ed84283ff906260970a15d12", + "https://deno.land/std@0.99.0/path/posix.ts": "f56c3c99feb47f30a40ce9d252ef6f00296fa7c0fcb6dd81211bdb3b8b99ca3b", + "https://deno.land/std@0.99.0/path/separator.ts": "8fdcf289b1b76fd726a508f57d3370ca029ae6976fcde5044007f062e643ff1c", + "https://deno.land/std@0.99.0/path/win32.ts": "77f7b3604e0de40f3a7c698e8a79e7f601dc187035a1c21cb1e596666ce112f8", + "https://deno.land/std@0.99.0/testing/_diff.ts": "961eaf6d9f5b0a8556c9d835bbc6fa74f5addd7d3b02728ba7936ff93364f7a3", + "https://deno.land/std@0.99.0/testing/asserts.ts": "289b6ccf3b422ffb311cbf56996960d6530f8d8c0a7281803764c5ec672f9f9c", + "https://deno.land/std@0.99.0/textproto/mod.ts": "6e8430986393e3929720cec9c6668d75dee2ffd953886e842dc124c251cb86c8", + "https://deno.land/x/abc@v1.3.3/_header.ts": "111617a83e956c74f2bb2c3ccbb0cc39801b13365c11c050e74d0b74d31546ac", + "https://deno.land/x/abc@v1.3.3/_http_method.ts": "407c04d24eaee5ce9a1b00a9f1ef0d5b0b0cacfec080a98ece15ed8471ee9ef8", + "https://deno.land/x/abc@v1.3.3/_mime.ts": "2e99da483808e154a430f59c66ae35920576b1bd63b26020d95dd811195e2711", + "https://deno.land/x/abc@v1.3.3/app.ts": "1f53474297862c7f62e6d43ebab2d29cb094dab6f4c75830fb070ec750bf4a2d", + "https://deno.land/x/abc@v1.3.3/constants.ts": "1c04ea5873f9540a1c227c70ebbf97f3f3c2751a88b98f035f7eccf6b3ae4201", + "https://deno.land/x/abc@v1.3.3/context.ts": "ea13c47a98bc6316ea4593da186ee873150965a417bc6f6ea59ee647ab6551a1", + "https://deno.land/x/abc@v1.3.3/group.ts": "e6d990a470cce002a9a00e5666a4960b552c3f82116522bb1bd2b64490309653", + "https://deno.land/x/abc@v1.3.3/http_exception.ts": "45cd2e85f3f63f011af35064459d5180257766ebc4af981aef6c3a7fc9955ca3", + "https://deno.land/x/abc@v1.3.3/mod.ts": "861cbdf90446f40afc7ddcaacbcb69e432e0970e6c6ea830ea80fd988de3a2e8", + "https://deno.land/x/abc@v1.3.3/router.ts": "45be01701031eda4c95f9a68c6248014a4e939c2e9e0679d920867fe327a7da0", + "https://deno.land/x/abc@v1.3.3/types.ts": "2e8a6ebbacf3c814b3b1f40d9b38a8833d8e41b55b67a23e5bbedf4edb51212a", + "https://deno.land/x/abc@v1.3.3/util.ts": "8eb6a894461a1875132b4d380cf6e52396a5fbcc7e1cde4aa7d523183cadf51b", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/std/fmt/colors.ts": "93696b8a09812be4b29b97f4d827ba2d51ad0616d0822a5238d762fd203b97bc", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/std/http/cookie.ts": "78fb7a9bc4d69d7b0d987c03d68bf1e0f3f5711bf4a7da031aefc0daf712dc20", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/std/http/http_status.ts": "002623248dd90bafa10ebff7e7054edeafaddac7e73ca8427c2d9ae630bfa317", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/std/http/server.ts": "7499327efb3fb452b9ffe2385e2b863c474685177e420ef9f02e6cd267b958ea", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/std/mime/multipart.ts": "54ae11cbdb7f97b70e604126dab62b95d5943ffedcd297299ad3971a40729091", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/std/path/mod.ts": "58a5045f107db66313b8b07babc2072a3ff10d4f34df7d826979ae3998c12f7d", + "https://deno.land/x/abc@v1.3.3/vendor/https/deno.land/x/router/mod.ts": "a12a329c0b5d04e409fc7ad9f202fd3f78ed494e0236c04eba98a02e69731707", + "https://deno.land/x/acorn@0.2.0/context.ts": "ffa504e6b5213487b0557d59e86a65d353992c4d2a9727fc6476e0c59832f760", + "https://deno.land/x/acorn@0.2.0/deps.ts": "3e0a56b063f557f5fe3595071a05b921cc88b513518025c30c24d000c1cf95b0", + "https://deno.land/x/acorn@0.2.0/handlers.ts": "173eb1e7f72f86d0aab24f8780d02734b5a9d4a6fea10d0e22883146081f80c1", + "https://deno.land/x/acorn@0.2.0/http_server_native.ts": "19052fb8c44fe30040a67651ecbfca94c9d1cc913e5d1274c020a2555ebc4e81", + "https://deno.land/x/acorn@0.2.0/mod.ts": "8936d580657f955c36d28e4acd32e8bec9f73fc1207fcfb85a4262257e54f6c4", + "https://deno.land/x/acorn@0.2.0/router.ts": "2b817871fcf14ba83af3b49236563449c579e48b2e13ce2c54167022bc74892e", + "https://deno.land/x/acorn@0.2.0/util.ts": "161ca128f5698f4bdd10447cbceec65b8c196aa4cc6b416b8a3a1a0a5f5b6c4d", + "https://deno.land/x/authenticus@v2.0.3/_utils.ts": "8574a3b00a5b5e479f327cb696dbfff8d712c76fd7fe2b7f705584d0b4a4a4b5", + "https://deno.land/x/authenticus@v2.0.3/createAuthorizeUrl.ts": "a55aef5e108b6dd8212352fe7456f12d5fc5010b02857c8a5c3dfbcbec906d5a", + "https://deno.land/x/authenticus@v2.0.3/createPreset.ts": "0c46c3cf2b08bf4031693dc32de8f4bc8760b2fbb6737f8e8500643c104c959e", + "https://deno.land/x/authenticus@v2.0.3/getNormalizedUser.ts": "c4d10728c81521f42c3691cd0ee75dabb329b073469809d1918ed16c936110eb", + "https://deno.land/x/authenticus@v2.0.3/getToken.ts": "78db81b21281a9c533d611283cb41abf5054355768baeb34615c071221b50f38", + "https://deno.land/x/authenticus@v2.0.3/getUser.ts": "4d8923d474540a37adffbe05b01f9ed713366065b6d84cda03b53f2f3d437703", + "https://deno.land/x/authenticus@v2.0.3/mod.ts": "215ac6dd64c14b8d3f5d60911fe8940a1aa40b41953dfa4c734748e84f04a683", + "https://deno.land/x/authenticus@v2.0.3/preset.ts": "9d0197cb2d4b7c021cad42356e3c4363d6a170d22c3b8559eb43f4fe2eab1bcd", + "https://deno.land/x/authenticus@v2.0.3/presets/Discord.ts": "d9d173469e7161523dd9e025e359578f1816dcd6a15d172c51934c370ebc951c", + "https://deno.land/x/authenticus@v2.0.3/presets/GitHub.ts": "a9086bea9016dea7f77d0ddd9418bc14ec248a2138165c215a78380560e60ea7", + "https://deno.land/x/authenticus@v2.0.3/presets/GitLab.ts": "1de0d2ff0f8995e48dd83755c5d59fc060f241af2cd7749a4715f71821f93b22", + "https://deno.land/x/authenticus@v2.0.3/presets/Google.ts": "ddf6e1adaebf8b1584f8311a31e7ff47c79a77304b14eb695ad14c9f85af03b1", + "https://deno.land/x/authenticus@v2.0.3/presets/LinkedIn.ts": "d25db7fc80ef536ff5c9c64b104744485935d35aeb91601977b4675cc0fe504b", + "https://deno.land/x/authenticus@v2.0.3/presets/Spotify.ts": "b93d4896c77d65f389e1e404d3f1f6272287cc7fc7bf982a98fa7e59ab4a26be", + "https://deno.land/x/authenticus@v2.0.3/presets/Twitch.ts": "dde776b58876f82f72afff1a0dc42836af96a1c3329ba0529be6ae2ec994b7c5", + "https://deno.land/x/authenticus@v2.0.3/refreshToken.ts": "5216c5bbe08b6f58f96d447ddde8fcb216b8c093710c2b9cb4b518ca0ab12b5e", + "https://deno.land/x/base64@v0.2.1/base.ts": "47dc8d68f07dc91524bdd6db36eccbe59cf4d935b5fc09f27357a3944bb3ff7b", + "https://deno.land/x/base64@v0.2.1/base64url.ts": "18bbf879b31f1f32cca8adaa2b6885ae325c2cec6a66c5817b684ca12c46ad5e", + "https://deno.land/x/cheetah@v1.5.0/base.ts": "8f17f1a66947c1dce5dfca1a09dcb0f83063eb2e02d51b187c80945e0101123d", + "https://deno.land/x/cheetah@v1.5.0/cheetah.ts": "ff5e2e6c6d296e23c284d65c8a2707749d28cbff179dd7fdf4f7aa47a7c40810", + "https://deno.land/x/cheetah@v1.5.0/collection.ts": "cfdce30d204e72c634608ce2d95459e30a9c87cdf900251b84ca8d75dc06c2a7", + "https://deno.land/x/cheetah@v1.5.0/context.ts": "bd1370ed0da016c2a037b9d288d1146cc7cdb914c917b6b8b493d3d5ca99d692", + "https://deno.land/x/cheetah@v1.5.0/crypto.ts": "0591b3c3893f48d29f70d71d9423c9a072a75a0137643139a56a041d666e3415", + "https://deno.land/x/cheetah@v1.5.0/exception.ts": "132d8bbcfb43f26dee28f8f9022b0d64193f8655e4b29ea9ef2b1a81c7d0cb25", + "https://deno.land/x/cheetah@v1.5.0/extensions.ts": "85b0647aade7b40aa85297136c97fdeaa6dfab6082009b3c601d3e359971cda3", + "https://deno.land/x/cheetah@v1.5.0/handler.ts": "df0d87f5b40347d6782e9242d0ee6f0af23a1d0d9a8b2f160f991e908b9bb31d", + "https://deno.land/x/cheetah@v1.5.0/jwt.ts": "78d8c21b318b63878ce35ebe55b94a75a560ce7e3c24d928045345af068680f8", + "https://deno.land/x/cheetah@v1.5.0/location_data.ts": "feda89d1f39728b93ce2d9750dfcda3c15dd3a436f67777e8c0b943337aa958f", + "https://deno.land/x/cheetah@v1.5.0/mod.ts": "16eebac1494a247f11d9552850192e92b990237053f2d34e55c9e80c01f1a893", + "https://deno.land/x/cheetah@v1.5.0/oauth/client.ts": "865d46abe1bc583c85991cb924ec6ccc068a10036872d9023748ca296e17fe6e", + "https://deno.land/x/cheetah@v1.5.0/oauth/get_session_data.ts": "57cad84ce7ebbcb6ae3a8588776e25408933e69996eee406d38af9afecf207fc", + "https://deno.land/x/cheetah@v1.5.0/oauth/get_session_id.ts": "ae1297b4254cb99c8438433a02360922cb9e28a425253b1f254826bf7f246f5e", + "https://deno.land/x/cheetah@v1.5.0/oauth/get_session_token.ts": "16361fade9bc128388a664f83782c6463abc1c52612b2c906e2c33f302570ab8", + "https://deno.land/x/cheetah@v1.5.0/oauth/handle_callback.ts": "13f0ac8eb8ba60e033832336815c3291467976300696c6a9d05ff9630e82fd77", + "https://deno.land/x/cheetah@v1.5.0/oauth/is_signed_in.ts": "471dffa4346f725b0b0092caf3220fa60980ee959c9aba424491b33699d15abd", + "https://deno.land/x/cheetah@v1.5.0/oauth/mod.ts": "50443aff6cc96e94ceffc8641ecefe5fc9b787c922b4d955c2b4293435599516", + "https://deno.land/x/cheetah@v1.5.0/oauth/sign_in.ts": "fe8137ff299b607b5c57845e992412a537d3511667a9d2fff29e9c2feacfdf68", + "https://deno.land/x/cheetah@v1.5.0/oauth/sign_out.ts": "7350ccdf3ca5fb3e5ec3db0c21358e3c80e862c85df0226786c703646d4f641c", + "https://deno.land/x/cheetah@v1.5.0/oauth/store.ts": "1666d1c55ff1dc0a7ab14c1710eb181414e4e005418c134a091d9cde34b4c0ef", + "https://deno.land/x/cheetah@v1.5.0/oauth/types.ts": "134f14d791d97804f67f88853a12564d382a62b0ee8f6411786f877d0c0a7648", + "https://deno.land/x/cheetah@v1.5.0/otp.ts": "e6d17af3c723f3a1be36c8248471f80064c689474fe403f66ded40aa9d3a5aef", + "https://deno.land/x/cheetah@v1.5.0/render.ts": "51bf55484aa0b65d560213768f0ac8d70c41a30ba87428baacf0475ccd46f28b", + "https://deno.land/x/cheetah@v1.5.0/request_context.ts": "6c611438d949989d1b706fa0a13fd4f4a1195d68f10fe5b0cbbbc1a9ab7807d3", + "https://deno.land/x/cheetah@v1.5.0/response_context.ts": "4efe43a606d0e3a0e2cc32b9759957dcf47cc17991af0fbc9dba3c05c05300d1", + "https://deno.land/x/cheetah@v1.5.0/send_mail.ts": "c2af4dd507e35d525fb71370aff1d4011cbacff3b0fe384f7fd74e202a0fcceb", + "https://deno.land/x/cheetah@v1.5.0/x/env.ts": "b00940b8981df35f7e1c8a676ad61583e3f671d9c0d69cf318bb403c458ff52a", + "https://deno.land/x/cheetah@v1.5.0/x/jwt.ts": "bd08d8bb4b4667cfa763b5114ee84efc85a3257164159ce7151190f149ac44e8", + "https://deno.land/x/cheetah@v1.5.0/x/location_data.ts": "99afc7f351687fe0b7cd998f4482a2e7933ddda1ac9a06954935b150a2e007f9", + "https://deno.land/x/djwt@v2.8/algorithm.ts": "fa4c7354ab9f4808d38104fdc6f21c8270f65f109ed84136d4fe31a4504426d4", + "https://deno.land/x/djwt@v2.8/deps.ts": "261b7b6bfe2602329d8f9de2938c2a898cd6dfa746b3454ae415df2c53e6ae4d", + "https://deno.land/x/djwt@v2.8/mod.ts": "7abba8518688e88648882a95161b42391ac6043c142b1ab491b36f712189e1e1", + "https://deno.land/x/djwt@v2.8/signature.ts": "a5649368a4b433b2810e7d47f53661fe3b0f7fe1778cb49234ceae3d6e861185", + "https://deno.land/x/djwt@v2.8/util.ts": "0d78272bd23a4656ceabe137d496fcca37cf3de36212477642aa5d85a880d87a", + "https://deno.land/x/fast@6.0.0-alpha.1/app.ts": "0a853b869f7f96c8cc96528b6b6e4021fdb2ddf5f57887c4fe68ecdd54bafc8b", + "https://deno.land/x/fast@6.0.0-alpha.1/context.ts": "7d6da9fa9b56020992a43e573e0e7efa55318e88ddc258b008389ae15a0b9af3", + "https://deno.land/x/fast@6.0.0-alpha.1/decode.ts": "e170e2863733619e0e921cffe2458c0d66deedc73fd72cb3af0e3fa809148875", + "https://deno.land/x/fast@6.0.0-alpha.1/mod.ts": "210dfca65f8d1e209f0e68bf7bb5e04b7a2b0a4b804f4c1d02d15ec6252ad580", + "https://deno.land/x/fast@6.0.0-alpha.1/types.ts": "d370dd9baf5dc6419c78540433628961476479b4096ff994a64e7243bb485530", + "https://deno.land/x/hono@v3.2.5/client/client.ts": "7a819af2aa9aabc746add4d01715fa37f83676fdf1b63fba1bbcd655b2d066a5", + "https://deno.land/x/hono@v3.2.5/client/index.ts": "3ff4cf246f3543f827a85a2c84d66a025ac350ee927613629bda47e854bfb7ba", + "https://deno.land/x/hono@v3.2.5/client/utils.ts": "9f9825a3f96e0e332fa91f4cd1cfffe2ef9da796c58904941c8405e3f18bda07", + "https://deno.land/x/hono@v3.2.5/compose.ts": "e55ed7be2134f363ff3c8e8e2f520ff682c6a11a47d7189100ed69704ce10b9e", + "https://deno.land/x/hono@v3.2.5/context.ts": "15f884091751c1449a63b936d15c436bfab92b44303b571205b010f6a1f18130", + "https://deno.land/x/hono@v3.2.5/hono-base.ts": "d7372c75e41852e557c7d6e2da52a1f2f58c0bae5a53c964bbc22ae4f7cca5a6", + "https://deno.land/x/hono@v3.2.5/hono.ts": "c185fae30dc3aa9966b0f3e8599f81314ba5e8621b907d27cffb77414a1c0908", + "https://deno.land/x/hono@v3.2.5/http-exception.ts": "6071df078b5f76d279684d52fe82a590f447a64ffe1b75eb5064d0c8a8d2d676", + "https://deno.land/x/hono@v3.2.5/mod.ts": "ec8ad69c08e40bee63cac3d9e3df5fd062e9f4692a81cecf43a51feb3421625e", + "https://deno.land/x/hono@v3.2.5/request.ts": "c7b156bb5c16a9eaf59314836734e3b4f879dc5a53e0b0085660a711898ce319", + "https://deno.land/x/hono@v3.2.5/router.ts": "d03e2a9e862c898e8555b451ba80c65b1f39d487230815229e1f046dbd8546cb", + "https://deno.land/x/hono@v3.2.5/router/linear-router/index.ts": "8a2a7144c50b1f4a92d9ee99c2c396716af144c868e10608255f969695efccd0", + "https://deno.land/x/hono@v3.2.5/router/linear-router/router.ts": "90d4afc052b72f53dafbcf97fd32f24299b985f8a35dbdc70b28048201b3dcbc", + "https://deno.land/x/hono@v3.2.5/router/pattern-router/index.ts": "304a66c50e243872037ed41c7dd79ed0c89d815e17e172e7ad7cdc4bc07d3383", + "https://deno.land/x/hono@v3.2.5/router/pattern-router/router.ts": "38ffe40056f3aa7ecf441711d82af2d0357aae6c2fd168f534427579e89439f4", + "https://deno.land/x/hono@v3.2.5/router/reg-exp-router/index.ts": "52755829213941756159b7a963097bafde5cc4fc22b13b1c7c9184dc0512d1db", + "https://deno.land/x/hono@v3.2.5/router/reg-exp-router/node.ts": "8006b5bccb83d9fc98e0562a5545f6dd0be639ce445b089a6171c9c617aa8693", + "https://deno.land/x/hono@v3.2.5/router/reg-exp-router/router.ts": "aeddd88e16a7ec3cf088a13ee952cfcb3319f97559767253e1a600f72fc70f27", + "https://deno.land/x/hono@v3.2.5/router/reg-exp-router/trie.ts": "567493b301c44174f0895aedb8d055bbecf88f8a25626fa8ca61333bbd0c882c", + "https://deno.land/x/hono@v3.2.5/router/smart-router/index.ts": "74f9b4fe15ea535900f2b9b048581915f12fe94e531dd2b0032f5610e61c3bef", + "https://deno.land/x/hono@v3.2.5/router/smart-router/router.ts": "38209165dadea4182b42807a0a6c84a9258532a07ebf87262dc2b5b09d25a2a2", + "https://deno.land/x/hono@v3.2.5/router/trie-router/index.ts": "3eb75e7f71ba81801631b30de6b1f5cefb2c7239c03797e2b2cbab5085911b41", + "https://deno.land/x/hono@v3.2.5/router/trie-router/node.ts": "3e27c0ff9b1d677c4ab1fbf0895e81c8e3ba277c6c2ccbc68a98185b32040c95", + "https://deno.land/x/hono@v3.2.5/router/trie-router/router.ts": "ad0b3fdabc33abd11a9f5819734aec743602a743cfc9f90ddad73787cd5e7727", + "https://deno.land/x/hono@v3.2.5/utils/body.ts": "b6b5ed679122968a74845df4c5454c677f09adc4f3466d822f3b1397884e540e", + "https://deno.land/x/hono@v3.2.5/utils/cookie.ts": "4d57e055922f7e47fb1d45927aadbef04ae6aa433ccdd1a81450a54c3a4179d4", + "https://deno.land/x/hono@v3.2.5/utils/url.ts": "40a4192da0a655a124c95063e0ab3924432805fcf45a3ffc8e4458029d609bbc", + "https://deno.land/x/hono@v3.2.5/validator/index.ts": "6c986e8b91dcf857ecc8164a506ae8eea8665792a4ff7215471df669c632ae7c", + "https://deno.land/x/hono@v3.2.5/validator/validator.ts": "e52183ddf8cefc3cfe2788802fe6ce766df8ac904df485107b01cbcca167dbad", + "https://deno.land/x/hono@v4.3.11/client/client.ts": "dcda3887257fa3164db7b32c56665c6e757f0ef047a14f3f9599ef41725c1525", + "https://deno.land/x/hono@v4.3.11/client/index.ts": "30def535310a37bede261f1b23d11a9758983b8e9d60a6c56309cee5f6746ab2", + "https://deno.land/x/hono@v4.3.11/client/utils.ts": "8be84b49c5c7952666875a8e901fde3044c85c853ea6ba3a7e2c0468478459c0", + "https://deno.land/x/hono@v4.3.11/compose.ts": "37d6e33b7db80e4c43a0629b12fd3a1e3406e7d9e62a4bfad4b30426ea7ae4f1", + "https://deno.land/x/hono@v4.3.11/context.ts": "facfd749d823a645039571d66d9d228f5ae6836818b65d3b6c4c6891adfe071e", + "https://deno.land/x/hono@v4.3.11/helper/cookie/index.ts": "689c84eae410f0444a4598f136a4f859b9122ec6f790dff74412d34405883db8", + "https://deno.land/x/hono@v4.3.11/hono-base.ts": "fd7e9c1bba1e13119e95158270011784da3a7c3014c149ba0700e700f840ae0d", + "https://deno.land/x/hono@v4.3.11/hono.ts": "23edd0140bf0bd5a68c14ae96e5856a5cec6b844277e853b91025e91ea74f416", + "https://deno.land/x/hono@v4.3.11/http-exception.ts": "f5dd375e61aa4b764eb9b99dd45a7160f8317fd36d3f79ae22585b9a5e8ad7c5", + "https://deno.land/x/hono@v4.3.11/mod.ts": "35fd2a2e14b52365e0ad66f168b067363fd0a60d75cbcb1b01685b04de97d60e", + "https://deno.land/x/hono@v4.3.11/request.ts": "7b08602858e642d1626c3106c0bedc2aa8d97e30691a079351d9acef7c5955e6", + "https://deno.land/x/hono@v4.3.11/router.ts": "880316f561918fc197481755aac2165fdbe2f530b925c5357a9f98d6e2cc85c7", + "https://deno.land/x/hono@v4.3.11/router/linear-router/index.ts": "8a2a7144c50b1f4a92d9ee99c2c396716af144c868e10608255f969695efccd0", + "https://deno.land/x/hono@v4.3.11/router/linear-router/router.ts": "928d29894e4b45b047a4f453c7f1745c8b1869cd68447e1cb710c7bbf99a4e29", + "https://deno.land/x/hono@v4.3.11/router/pattern-router/index.ts": "304a66c50e243872037ed41c7dd79ed0c89d815e17e172e7ad7cdc4bc07d3383", + "https://deno.land/x/hono@v4.3.11/router/pattern-router/router.ts": "1b5f68e6af942579d3a40ee834294fea3d1f05fd5f70514e46ae301dd0107e46", + "https://deno.land/x/hono@v4.3.11/router/reg-exp-router/index.ts": "52755829213941756159b7a963097bafde5cc4fc22b13b1c7c9184dc0512d1db", + "https://deno.land/x/hono@v4.3.11/router/reg-exp-router/node.ts": "7efaa6f4301efc2aad0519c84973061be8555da02e5868409293a1fd98536aaf", + "https://deno.land/x/hono@v4.3.11/router/reg-exp-router/router.ts": "632f2fa426b3e45a66aeed03f7205dad6d13e8081bed6f8d1d987b6cad8fb455", + "https://deno.land/x/hono@v4.3.11/router/reg-exp-router/trie.ts": "852ce7207e6701e47fa30889a0d2b8bfcd56d8862c97e7bc9831e0a64bd8835f", + "https://deno.land/x/hono@v4.3.11/router/smart-router/index.ts": "74f9b4fe15ea535900f2b9b048581915f12fe94e531dd2b0032f5610e61c3bef", + "https://deno.land/x/hono@v4.3.11/router/smart-router/router.ts": "dc22a8505a0f345476f07dca3054c0c50a64d7b81c9af5a904476490dfd5cbb4", + "https://deno.land/x/hono@v4.3.11/router/trie-router/index.ts": "3eb75e7f71ba81801631b30de6b1f5cefb2c7239c03797e2b2cbab5085911b41", + "https://deno.land/x/hono@v4.3.11/router/trie-router/node.ts": "d3e00e8f1ba7fb26896459d5bba882356891a07793387c4655d1864c519a91de", + "https://deno.land/x/hono@v4.3.11/router/trie-router/router.ts": "54ced78d35676302c8fcdda4204f7bdf5a7cc907fbf9967c75674b1e394f830d", + "https://deno.land/x/hono@v4.3.11/utils/body.ts": "774cb319dfbe886a9d39f12c43dea15a39f9d01e45de0323167cdd5d0aad14d4", + "https://deno.land/x/hono@v4.3.11/utils/buffer.ts": "2fae689954b427b51fb84ad02bed11a72eae96692c2973802b3b4c1e39cd5b9c", + "https://deno.land/x/hono@v4.3.11/utils/cookie.ts": "662529d55703d2c0bad8736cb1274eb97524c0ef7882d99254fc7c8fa925b46c", + "https://deno.land/x/hono@v4.3.11/utils/crypto.ts": "bda0e141bbe46d3a4a20f8fbcb6380d473b617123d9fdfa93e4499410b537acc", + "https://deno.land/x/hono@v4.3.11/utils/html.ts": "6ea4f6bf41587a51607dff7a6d2865ef4d5001e4203b07e5c8a45b63a098e871", + "https://deno.land/x/hono@v4.3.11/utils/url.ts": "855169632c61d03703bd08cafb27664ba3fdb352892f01687d5cce8fd49e3cb1", + "https://deno.land/x/hono@v4.3.11/validator/index.ts": "6c986e8b91dcf857ecc8164a506ae8eea8665792a4ff7215471df669c632ae7c", + "https://deno.land/x/hono@v4.3.11/validator/validator.ts": "53f3d2ad442e22f0bc2d85b7d8d90320d4e5ecf5fdd58882f906055d33a18e13", + "https://deno.land/x/oak@v12.4.0/application.ts": "4819f2820617f04117ccafe5bb4daae004c3cc0100eb321afd9a35ba558794d9", + "https://deno.land/x/oak@v12.4.0/body.ts": "c7392f1dae04a360838f43b9cdd2f83d29c1eff4e6071d5f0cf1f3999b1602bc", + "https://deno.land/x/oak@v12.4.0/buf_reader.ts": "7cf96aa0ac670b75098113cf88a291a68332cc45efa8a9698f064ac5b8098a0f", + "https://deno.land/x/oak@v12.4.0/content_disposition.ts": "8b8c3cb2fba7138cd5b7f82fc3b5ea39b33db924a824b28261659db7e164621e", + "https://deno.land/x/oak@v12.4.0/context.ts": "9cff1251bb734e52020cb24512a608f7acbba2cb4e514ce73d00e75a79d8b4a5", + "https://deno.land/x/oak@v12.4.0/deps.ts": "2ecc4fd8f7d4ebdd9cf66e3830f2fbb99ed1c68a97809abf59734886754f4055", + "https://deno.land/x/oak@v12.4.0/etag.ts": "393cb69513b44058ea034571892ec6aa602ec50c45303a24c706d32ef57a3da4", + "https://deno.land/x/oak@v12.4.0/forwarded.ts": "e656f96a85574e2a6ee54dc35efc9f72d543c9ae0923760ef426ee7369eef01c", + "https://deno.land/x/oak@v12.4.0/headers.ts": "f50fb05614432bda971021633129aa2e8737e0844e0f01c27a937997b4d8dd4f", + "https://deno.land/x/oak@v12.4.0/helpers.ts": "42212afa07a560b2958359cc19577417e89d9574d6579551a0af36ff7f00cc6e", + "https://deno.land/x/oak@v12.4.0/http_server_native.ts": "0141e1339ed9a33bc26ce537ddab5adbb3542b35916d92de286aed4937e4a6d6", + "https://deno.land/x/oak@v12.4.0/http_server_native_request.ts": "98cfe71f2ee476e20e6d76c283983843eee303de2fa13151e965633b796d43df", + "https://deno.land/x/oak@v12.4.0/isMediaType.ts": "62d638abcf837ece3a8f07a4b7ca59794135cb0d4b73194c7d5837efd4161005", + "https://deno.land/x/oak@v12.4.0/mediaTyper.ts": "042b853fc8e9c3f6c628dd389e03ef481552bf07242efc3f8a1af042102a6105", + "https://deno.land/x/oak@v12.4.0/middleware.ts": "94620707a04d16c29e9aea0196ec905e08daae2fa6f84a43fb1b1ead1e1c4be6", + "https://deno.land/x/oak@v12.4.0/middleware/proxy.ts": "4391d33efe232e1d6338486df0b1c55ced767c7fcafd3d5fcf35f7457eef6651", + "https://deno.land/x/oak@v12.4.0/mod.ts": "3b166ef40c11eef776e37e3d442ff7f7f31518d851ff8469f5e9a3e161ced240", + "https://deno.land/x/oak@v12.4.0/multipart.ts": "98fe9f226de8c26a16d067027b69fb1e34ad8c4055767dd157907d06cea36f9a", + "https://deno.land/x/oak@v12.4.0/range.ts": "68a6df7ab3b868843e33f52deb94c3d4cab25cb9ef369691990c2ac15b04fafb", + "https://deno.land/x/oak@v12.4.0/request.ts": "5852ad36389b48e0428a6f3c90854d01f10d1b15949b56001e1e75c2a00ef0f9", + "https://deno.land/x/oak@v12.4.0/response.ts": "867d81f7eb0c65c7b8e0e0e9e145ededd5b6daa9ad922e6adc6a36a525f439a6", + "https://deno.land/x/oak@v12.4.0/router.ts": "36b67962681732713bc0fbce779cd3ede7417c018a10aab378901bc966ecfeb8", + "https://deno.land/x/oak@v12.4.0/send.ts": "5ec49f106294593f468317a0c885da4f3274bf6d0fe9e16a7304391730b4f4fb", + "https://deno.land/x/oak@v12.4.0/structured_clone.ts": "9c2d21c62f616400305a60cbd29eb06764ee97edc423223424b6cf55df0e8be2", + "https://deno.land/x/oak@v12.4.0/testing.ts": "a0be5c84981afde666de29630f34b09d944ca1a2fe6a5185644b60ad95e16d18", + "https://deno.land/x/oak@v12.4.0/util.ts": "3af8c4ed04c6cc2bedbe66e562a77fc59c72df31c55a902a63885861ca1639d6", + "https://deno.land/x/otpauth@v9.1.4/dist/otpauth.esm.js": "434b8b638e8147f55906bfa66f98bcc1ec10af5b9eca88bcbb92f439db07543e", + "https://deno.land/x/path_to_regexp@v6.2.1/index.ts": "894060567837bae8fc9c5cbd4d0a05e9024672083d5883b525c031eea940e556", + "https://deno.land/x/router@v2.0.0/mod.ts": "8792d3c390e0446d89eb94ee8030dd20de18f2aba649e263d2832f3f150ea2ce", + "https://deno.land/x/sha1@v1.0.3/deps.ts": "2e1af51a48c8507017fdb057b950366601b177fb7e73d5de54c1b3e0e115d72e", + "https://deno.land/x/sha1@v1.0.3/mod.ts": "146a101c9776cc9c807053c93f23e4b321ade5251f65745df418f4a75d5fd27b", + "https://deno.land/x/upstash_redis@v1.22.0/mod.ts": "f1a992becfa0885c41706cfed6ba7c97fc8b87662d2f5161559629694b5bcb56", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/append.ts": "7c1612a3a5543926afb8dd3ca8086e5d7ef5c3dcbda0ca30eb720259e707f651", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/bitcount.ts": "8efbd9bfa25a58daf0773adaf00f7ae2c6a7a6a621f11158c53bcfe88d12b255", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/bitop.ts": "dcaa11a96429b0fb5595a63967f7e8751683785a0baba87d7aa027df03fcd06e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/bitpos.ts": "2c74aa14054407f66a12764f9cd2a3ca16a5d4f4f59c70815274362c015aa428", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/command.ts": "082d3246db2ebf4b70dac81e15e41125c20c3a04fc3795e710c47118d908bd27", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/dbsize.ts": "7509e8630675755e82d7294a556466f1b36cb3caf3829f836b25cdb7cf95e404", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/decr.ts": "3ee6c714f01b12f9fa9bd755d99b098f7c7b42c50ff1589e6c47ccb720fef3c2", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/decrby.ts": "1abe00bb7a8f935413dd3a5030d94df1761cd44c0bcffa5caa641f8e32d0961f", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/del.ts": "898bf42c3f758bae1d3d2a9d9ac82e1fdfdf72179caa65fd8c42ebe191db6cea", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/echo.ts": "8bcb79701c8fe9439c2fd92f0a83d5db663c8e084da65c8cbb851a071b8c8bb6", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/eval.ts": "99d740003e7769e26f5511896f65a57ee4c987ec875b744cefe1f2522cfd2c05", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/evalsha.ts": "da213bf79e83b6895dc8805dc033e00fa357f95728fef87ab7e066d0aa0683d3", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/exists.ts": "96310238f26a8569a0100a36f2dc2bc60de371736fe723809ceb4c49c8a6cc74", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/expire.ts": "f9ea57ea9e3c801c1f628d74f55337cf04f9184c8f3e75f55528dee29c881fad", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/expireat.ts": "ec738e5cca59c56b0d43e564ef16951cdda963b4849850ced1df3ba62596994c", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/flushall.ts": "365876a9cfe254286da033f275ac4a0d11349c96cacd1461f0d3c23b07957ac6", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/flushdb.ts": "369e628d24ce41ba6c0518a955c48e2a9359dd4b831d7211fc8d0621ccfc0af7", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/get.ts": "ef4968bc57ffc5826d178f56bdade982b6d93ab875d2bb516363beefef52fc59", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/getbit.ts": "c29aec972672a1827796a2b4419ccc5b91d8d080fd237eb2b1cc4cdd88d2967b", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/getdel.ts": "b2caaffdf46957769c2c278e637cf8d8f1a594e4747a0bb7ef0155e1b121754d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/getrange.ts": "65deab3bd5ea316693fb966912ba4a1114c619c2a1d00b72599e40c532456481", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/getset.ts": "df7ded3779f9faf329c2023097db901302aaeece7bde0691ae61ea1daf967b39", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hdel.ts": "8bc463c5e78c8ce1e0d3a1fb254236de0d8d0da3f26dfdb452d14163a70a3639", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hexists.ts": "4f96fcdf8b15a982922b6bf9cfa9fc891582b5da9b0eb9d92a9eb13594c99048", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hget.ts": "5566c8e0a0f9ecdb9e65a66cfc740d224c90d9a172558361abc180c1dc2e9522", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hgetall.ts": "64b7edc984a385ef64e046e4761e83dbfb460c310893b02e9ef7390a1ca30bd5", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hincrby.ts": "d112a0bf6de6ee49ef43053687f263b300cd6ff8da999299b423906ce9e06b3c", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hincrbyfloat.ts": "e22c06c24fbaa51849938e65e89daca9e77a95229154c1a99a9514124ad057ef", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hkeys.ts": "516edcd187a3d5387201db43adacfe029fe87d687224e46d3fa5694fd01c07ba", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hlen.ts": "2b1e8c671706e32f83246cf94e828e5e6d8c3c39373ce4c27fee41bc3b239bc1", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hmget.ts": "2ee9bfe03982411fb0b1f58be7332b44afe38906c3e9d90ac35ba2e0e14ac8ec", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hmset.ts": "c9388d874f8825be5b3f2c991b46686b942df35b6abd39bcdb2a829c6348f905", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hrandfield.ts": "1128cea1d732b99e8993a2ad472f654d77829e31de0f2fbd0143dfbe793a01f2", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hscan.ts": "5297cf93d7231494456fcd0318fbea916aa7338dc19d442a787426834390e5c0", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hset.ts": "ebb77f26c642ea9791402c08aaf8149e66f035122b971bcb07de403187e95291", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hsetnx.ts": "4e51c84029d748cd56374d02b6fadb58b372b6274723c89505454c874a4a764c", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hstrlen.ts": "9fd3e3ff9dda9fd1592f24c08e30224f905a76de057099d848dd1c5e7c3fdc3d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/hvals.ts": "a8dc9595641af7aa9eabdeab2b4dc6d08ce6de28491c44d0154f547fbea0a212", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/incr.ts": "1cdbddd6d29bec792f0ba8f435cbdced660d7f23d87a444c850e5d4c400cc398", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/incrby.ts": "ccbaae06a96987ddeba48ac999e3274c63f37fc5d2ee8de4780c8845b3829a55", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/incrbyfloat.ts": "07e87c6ca61dfb5220df723f8f6d442a7b0878586bf765914f45998269432e5d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_arrappend.ts": "8f5caf88bb2613cd8bb3ec68dd886972acffc43117dffcbc862d42f145ae19d6", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_arrindex.ts": "16b97c86cc34ab538604030c1b9230659527cb779ec26c2184d5d841b876abdc", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_arrinsert.ts": "726ab53b7a02ae9333492b313dece1e97fc851e47b9cec55959de2e822e8f3bd", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_arrlen.ts": "e28500e9f11b7d4973ae00ca5b1074b04c01783b566742f174099a830639fa90", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_arrpop.ts": "46e3106812588f025cd69826773910dca405a38866fe7a47d732b6cb0f912122", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_arrtrim.ts": "522f1e87e13c925defb199cb9cb4ec3fa1fc31ff46ab91a7ec8f036f7bf21e06", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_clear.ts": "8c2983461dca5c96533ab2c4f5e6806870c623e7ba398d3e450bd8f60a38bcbe", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_del.ts": "4c33d54ab872a7eb9280b10bd8d159b2e608c75beba78d9b04446b887fcb3e1e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_forget.ts": "9169fdf0dc88ac7c6bbf47c111d4a8f6f23f5355928ed92fc8487932eaac116f", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_get.ts": "aa8cdd20b3817566fd1e35382832e0b9227d4295429a713726e82691e9d55de4", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_mget.ts": "1d04a88f54831f7da6b5b9dc29c85d96dc42006a7ee17df187e96a4efcd39566", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_numincrby.ts": "09a3382c075b91ddccfb8f127d126968db98a8d35a13f55e8b40e81f82724c27", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_nummultby.ts": "61073f851e7c0efd27a10fe248cd64599da138ca42343f4ada10e2c0266bb004", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_objkeys.ts": "dd02c4c8a5ce28a2b5d145b0b97e15e20ce0edafd081c8d39ef4ba54e098d952", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_objlen.ts": "ea8ed1ddcc62e6f6783b944dc0eb2824633d2c47640faf990ebb9883506fe728", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_resp.ts": "b1ffb9b8b72d478d5e7562a704e53fbfb9a6469ebfc7b4deed2a2ff6a148ecb2", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_set.ts": "92187349968f796273e671ce001a7b3e0905d65602d135f172a44dc071b4ea36", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_strappend.ts": "c97ba72a1fdf2d531e86c0ef5b1b0bdf5da83361df896c9be07163425e71005f", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_strlen.ts": "38710b0b0f16e895048154c908363c1aa99cfea1ab2249e2f1f4ce55fb2dfc20", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_toggle.ts": "95e58d17d3499fe624eff249610e30773e884e8fcc6949d67fdfe9d56e5d74f7", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/json_type.ts": "89cb90fd2c3b0685bb04e51dfd6ee00c967cbd4e6c292dba3c6568aeefa13460", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/keys.ts": "36dd4074c17d59b8913679d881f9ef0a9d64be5843b4ddcd9633f9c22f1ad5e3", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lindex.ts": "19fdf660c92984aff4c3e8c50f2b7a6b92430d6ba79822ecb8c21de534f4aafa", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/linsert.ts": "1792c369262f6145fbb99a91d047ce01a07dccad07962b4a4e34f4b818669ca9", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/llen.ts": "0c82404707e01288e1fd347a92b245b07cdb4f6d9f1ccdc653d61df78e493104", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lmove.ts": "1bda0e31af0c33341368ea8e2f463078ce6caeff7dcc044dac3531a96652d760", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lpop.ts": "36d61a02a1658ed86fc966d314afab3690b8e4275fdc6229694fc9c8def0313e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lpos.ts": "62bf0b311b74f5284f00fe31e8374f6f3b9b4ec8a868309bbb7787c952251744", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lpush.ts": "77da2034c6f2143604cea38ea6cc1248564cb9d65b727f0b140ae51dea18088f", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lpushx.ts": "cc12838b65ec8940c52a6a1677baa49716a4246d70284cb2e5fd50f6896caa34", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lrange.ts": "05c3315fd9c5f587a66176e64ad73b627f2ac16e06fc680fd357cd1684c538f6", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lrem.ts": "17979b4b14d5f76f2f4165ab1f5fd5ea9ad57f8c537f0994b5306553f4955a10", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/lset.ts": "b4bf2d63090082a37b5f07f7b1a84e13315c286a90b673ac9877f97b94dc3af4", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/ltrim.ts": "645ed938098b8bdea5511edb10961fdd174b85876fb912f6dc5f01dca83721e0", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/mget.ts": "1c3d158b324528bf297df2e3569038d5ab3f2a2c5725c37fffe8e9f52aee0e40", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/mod.ts": "cb89037006af15e6bb1dec977b0535bd3a336609cadfc89979013e6932a76af1", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/mset.ts": "1bd2071ff2c1300469c5052fe22482a528e9486770adce358842f9e63631bbba", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/msetnx.ts": "c444321245e5e8380834646d032d819036f0cdfc4a4cf21e1f7ef13375994e37", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/persist.ts": "8b2084e4f463e35c6a73a95f62109c3c7e04771cf2ee5a7fbd0591f79bd220f6", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/pexpire.ts": "9671f8fc89d3a435adf51fefd1b3dec2c646399da11ddbe8a071c8967236c682", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/pexpireat.ts": "102acd28e00ade7cdaecd71cbffb9f3898973e0341ac9ae4e75baa8aa413e656", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/ping.ts": "c2a3bdacbdd2bbd67490e434f4ef705dd230d0ee1b7362491ee8fcf331c88d5e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/psetex.ts": "3d5f50d81f18fedf2972b9faeefc955e770500102f6670616bcae72aeea7e6bc", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/pttl.ts": "1dc04eebde6a97fe3ab1fa5a21f70fbbf20d0587275b55c67d84176020f0c53a", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/publish.ts": "e736798115caf72cdf7bde9f4aad0a65bb1c63097956f9877b521df16aeac473", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/randomkey.ts": "ef02967dd2b2cfcfe9842850b840c4bd02af5ee1938d98d97ef8d751d0223f06", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/rename.ts": "57ea600f060cbf73220afcb413097e5b022315c991417602980a5907d696bec9", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/renamenx.ts": "63873b5add504aeb469df82bca2603d5077e12a9258ea43434047bd5daba763e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/rpop.ts": "05f54a6f69a5b646b467bf6ecce6832807a586ba448ccf5b438b5c286dff3bc7", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/rpush.ts": "ccf283281faba2107a467121445edec7d117132b0899b6d4a4dd5079cf83d80a", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/rpushx.ts": "08d3ac8e377dd7792cb7a5591dea5d3464608ecabaa3760d8950f77fc60dbdd4", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sadd.ts": "8242a9d4e34e2f2fe7e6032e7eee5ced4c724aeb2597c5e431d568a6426a9ada", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/scan.ts": "d8eed51a34134190e90c3b77bfbf807cbb1080273ac1028f81beea5dadc2d6d8", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/scard.ts": "c0cd0a9560e729dde42c9370bedbbcabe8beb559dcdab37c712e990ad1ab6f47", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/script_exists.ts": "ec34a802ad8ccccecd149acbd5fce8e83299eb867b27a832ae32590dc877dc18", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/script_flush.ts": "c88cd9df52cc3e7f5039d5c2739b6d7137087407e1ad992513cd5794f69bc528", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/script_load.ts": "2bb0eddfe4c0a0d49efce6ed62318e9ee1482d8f31905b43c91981e2c02cf557", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sdiff.ts": "9caca14e5d21c2fca58b724735b69ac4c0ebafadbda4402bff5e78bf7ebdd97d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sdiffstore.ts": "f02b0280dfc2671fa630cceacfddf8c4fd67d0577f9616e43f5ce538228e21db", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/set.ts": "e7a46c2276eed8e61be9d58c4d424876ecea2bcb93efd7abbd4b0fc5b17a799f", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/setbit.ts": "7e1dfa1f29e50412c742e862d560e953010212d3e0d6f1ff5f6829f111255ee6", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/setex.ts": "a4bb2007a6f6d43b1d207680e8cb40a9d1eedeff1188755a1a9937a510bad4e2", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/setnx.ts": "c4a0ae9ea88a3c9e3576863221cee1f5974c1e86f20701b0df7483b78d8dda1d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/setrange.ts": "d5598d0e8f0d901d09293dc3cdd934827b07173d1b3617fafa5e9fb79dad19a5", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sinter.ts": "8e650a63534e9ecdf0b94e11666fe37e6e8b66184a7a96bfb7f25375b794899d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sinterstore.ts": "60b04d306de90048c11f50851725d3398735ba918dfcb965e52546f174ba9b29", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sismember.ts": "dcaeb0422ef38d02793c3680950dafcbcf3a935130c9923b0bf62d80d7db604c", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/smembers.ts": "69ebcf8a4d384b0c15709e875e56ad3b8c61cf79034a8c30c88c0795a36ecf67", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/smismember.ts": "47457d5211e051f314eb16565b0ea15bb6341be497daaeaea2b5fb284cbb3b9d", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/smove.ts": "64d7c5b8d4d4f17cb10e0aa024b371dbe59c22f96248388bdc63411fbc093106", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/spop.ts": "96cdec492f2ad652c6eb50bf4f838aba1247c12dc641ca63aa1c7af9a1caa464", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/srandmember.ts": "e429f6f96e00f8cc19fbeed53cebe52740f0417d7b15ec2ed1f20a9ecb51c043", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/srem.ts": "0b3f22a1f68739aaec4e7eb24d4c4a0a21a20e76169abe5d12e8c414dc612203", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sscan.ts": "2d9980294af9e7533d071ac5cc681a4353be6f6d44a08f543eaba014fe6fb0d1", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/strlen.ts": "c4473211982ab1928be97a0508355c938d85c5e407eb50c031cf60222ed76748", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sunion.ts": "17288149935bb1d5d5ee2a573316f8548279b2f40fc489e21f0d7b67165b3de9", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/sunionstore.ts": "e1fd559d77ee55045f449a70c16b64d51a76c39dd91cca5acb08b3674804fd65", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/time.ts": "a9369529c7f90dad581399729756833e07aa021113c81e884728b1d88180c42b", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/touch.ts": "de30108091d443f1d839784068a24e23a31cfa2849bb2830ae880637cd6c6bee", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/ttl.ts": "59c6bb55279eeca818ded3b064a4468c207dc20a9bb1adf041a7641db25cf2bf", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/type.ts": "45f6a2cf5bef44067d85d399dbe996d519797dad91b125b592082adb0cd21346", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/unlink.ts": "8e4f798f269e1d90b09cd651e6bb7299d73ac0851b63d528bd1977415eae66a7", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zadd.ts": "81b17c7f0b640b8bcbb6151e5753ed1b8d56bafd13be171c608bafcfaa6e6041", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zcard.ts": "aabcb2807530ca78b4e5209d2d438ec5ed63b4a2024d6f62fe7cc5447816c2f2", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zcount.ts": "ad88591dcefc8bcaa24f32dbcfff35f82a61ccd36a562429b3ff8216ac754146", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zdiffstore.ts": "6007fb514e79593e3b37a7872a711849c3c4506419c908e9e12328568b243000", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zincrby.ts": "e58e72348f27cad636320a76a6461b6e7708c990027b8709b3a7ac84120617be", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zinterstore.ts": "6fb94390fb902e74dbc577a614d7e315e13d5c47309675b938fdb323f7cca06f", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zlexcount.ts": "ced0b60c255f81008ddb7a8ae75d55493035ac37050fba681e416e723c3ceadc", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zmscore.ts": "ac8162797d0d35f0a72651b3db953cfbb2f56cccc911d42934c8e7cd66d12d11", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zpopmax.ts": "3367e079bc3e07a0e6f7eda43ec52a1929e287a1e261cf5c63df32f275b9b567", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zpopmin.ts": "b8998941e29ebe7a5e9b2df43faabffe9126f7a3682debe34c92b2cb0190e6a3", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zrange.ts": "7a3d840525aa17bd7fc06062c6919a5affe3a36c240895dcd22f96b7884774c5", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zrank.ts": "a5010f33b3b18f6d28fda1b45275840f11b31d162e8ffca5cb60785fc15c9b38", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zrem.ts": "d5fa92243158fe1c0ddd161d7aef7c4fab3d6d2180dc6e478d8a423aac0078da", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zremrangebylex.ts": "0c023863bd770f842150ea3218b391e9317c1edcd3ebb22a610fbcb71797aa81", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zremrangebyrank.ts": "44a08191c50edd38d83e025a83cea4ac8e240981aa7a7e24f9a2931f5a380d6c", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zremrangebyscore.ts": "20d5c9f19b2bd67b84790ebb83092541318b16701623d9787c60f24db92b71ff", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zrevrank.ts": "55a50470a8c089e61325d16a8cd42ea376c1fb4857df5ea4b1a2d8fb5e328a32", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zscan.ts": "eab7069ba31cb8b24df3db139b4f8899af0342ea43327463608ef4e92cd06fdf", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zscore.ts": "1977f586cbc9374dda8d4ad790c7b3c0a34cbde6d91cf6a7e5b064ed030a77ad", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/commands/zunionstore.ts": "67393ede82edfe0708ad9f2eb8ef78a1e3099ee7365f9925ce22097e465452cb", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/error.ts": "17c357eab8dca7700286355581e395d64f454bd5c478444f12be273d8a3e5ffe", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/http.ts": "d91bf2dc7afa82acc854e098f200250eb7fa1e873eb573da62c9f973240e410e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/pipeline.ts": "91c405ac77162fa43dde7f64f06c4a0350b468f98f863783dc2b0c2ad38e2a59", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/redis.ts": "affa5c5185ff4095f6110ff8b5a427368a7ecbcf38fbeac2ad4522920306bfcd", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/script.ts": "4f7510a8511b9cc4fe63d8c14e381bd753cc2b296d88904c6c0e1bb950b31a4e", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/types.ts": "ec63152f10f9eb7ac103ec013b30b7967865b4facfbf59d776ede723f9b876e3", + "https://deno.land/x/upstash_redis@v1.22.0/pkg/util.ts": "bda4f5eb90ff82d2443ec8908a376079a44af328ee64390d2e5ee7687a171556", + "https://deno.land/x/upstash_redis@v1.22.0/version.ts": "aa9c376c51ee3e4c1f434334743e2463b1ce87a3f1f4daa3e5c31e0108e67407", + "https://deno.land/x/zod@v3.21.4/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea", + "https://deno.land/x/zod@v3.21.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", + "https://deno.land/x/zod@v3.21.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", + "https://deno.land/x/zod@v3.21.4/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", + "https://deno.land/x/zod@v3.21.4/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.21.4/helpers/parseUtil.ts": "51a76c126ee212be86013d53a9d07f87e9ae04bb1496f2558e61b62cb74a6aa8", + "https://deno.land/x/zod@v3.21.4/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7", + "https://deno.land/x/zod@v3.21.4/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", + "https://deno.land/x/zod@v3.21.4/helpers/util.ts": "8baf19b19b2fca8424380367b90364b32503b6b71780269a6e3e67700bb02774", + "https://deno.land/x/zod@v3.21.4/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268", + "https://deno.land/x/zod@v3.21.4/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", + "https://deno.land/x/zod@v3.21.4/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", + "https://deno.land/x/zod@v3.21.4/types.ts": "b5d061babea250de14fc63764df5b3afa24f2b088a1d797fc060ba49a0ddff28", + "https://denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.ts": "4a927e5cd1d9b080d72881eb285b3b94edb6dadc1828aeb194117645f4481ac0", + "https://esm.sh/@twind/core@1.1.3": "cbcf01b8bb02bd1712f46e8364e74612a42039500e8b103134aab6a79890bb72", + "https://esm.sh/@twind/preset-autoprefix@1.0.7": "cb5f955a7f2eb1b8ccf7531b71060b6a28f365aba6adbc1d0aae8a9e46f8aeed", + "https://esm.sh/@twind/preset-tailwind@1.1.4": "9916eeb4d591fdaccb97f3f27c01950bbb0af85541ddb94be506e48175046dbd", + "https://esm.sh/preact-render-to-string@6.1.0?deps=preact@10.17.1&target=es2022": "434419e84b515a86ab3a374aae18f4bbf89bb57a016feb201580a4eb6d9e6337", + "https://esm.sh/preact@10.17.1?target=es2022": "6614a6c216e1a73f098f03fd09db80e2e0e68b1f4c530c2711bb1ecceaf52498", + "https://esm.sh/stable/preact@10.17.1/es2022/preact.mjs": "caf6d921cd0ce7a35e15ca4dc8adeda7d14041ed6d4276a58445b5271013410f", + "https://esm.sh/v131/@twind/core@1.1.3/denonext/core.mjs": "c2618087a5d5cc406c7dc1079015f4d7cc874bee167f74e9945694896d907b6d", + "https://esm.sh/v131/@twind/preset-autoprefix@1.0.7/denonext/preset-autoprefix.mjs": "a1c662a3aaf944d64369e4e9c45e104e449db55a60ea594c068e80af364c32bf", + "https://esm.sh/v131/@twind/preset-tailwind@1.1.4/denonext/preset-tailwind.mjs": "56a6ee81921beef495d2486de7d70f62821a1aa438ba84dd023f61cf6d1cc8ed", + "https://esm.sh/v131/preact-render-to-string@6.1.0/X-ZC9wcmVhY3RAMTAuMTcuMQ/es2022/preact-render-to-string.mjs": "8d3b022e4ee4688f9abe965e0eb3ee4d19961075e532fb19e4d662860c65790e", + "https://esm.sh/v131/style-vendorizer@2.2.3/denonext/style-vendorizer.mjs": "121455e7b04b631ef6463ce63cdcd29febd74d88c37713c774ceca8a1561c83d" + }, + "workspace": { + "dependencies": [ + "jsr:@oak/acorn@^1.1.0", + "jsr:@oak/oak@^16.1.0" + ], + "packageJson": { + "dependencies": [ + "npm:@bit-js/byte@2", + "npm:@elysiajs/fn@~0.6.1", + "npm:@elysiajs/node@1.2.6", + "npm:@hapi/hapi@^21.4.0", + "npm:@hono/node-server@^1.14.1", + "npm:@nbit/bun@~0.13.4", + "npm:@nestjs/common@^11.1.0", + "npm:@nestjs/core@^11.1.0", + "npm:@nestjs/platform-express@^11.1.0", + "npm:@oakserver/oak@^14.1.0", + "npm:@types/bun@^1.2.12", + "npm:@types/express@^5.0.1", + "npm:@types/kill-port@^2.0.3", + "npm:@types/koa-bodyparser@^4.3.12", + "npm:@types/koa-router@^7.4.8", + "npm:@types/koa@^2.15.0", + "npm:bunrest@^1.3.8", + "npm:elysia@^1.3.0", + "npm:express@^5.1.0", + "npm:fastify@^5.3.2", + "npm:h3@^1.15.3", + "npm:hono@^4.7.8", + "npm:hyper-express@^6.17.3", + "npm:kill-port@^2.0.1", + "npm:koa-bodyparser@^4.4.1", + "npm:koa-router@^13.0.1", + "npm:koa@3", + "npm:nhttp-land@^1.3.26", + "npm:reflect-metadata@~0.2.2", + "npm:rxjs@^7.8.2", + "npm:ts-node@^10.9.2", + "npm:typescript@^5.8.3", + "npm:ultimate-express@^1.4.9", + "npm:vixeny@~0.1.53", + "npm:wobe@^1.1.10" + ] + } + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/.adonisrc.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/.adonisrc.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,29 @@ +{ + "typescript": true, + "commands": ["./commands", "@adonisjs/core/build/commands/index.js"], + "exceptionHandlerNamespace": "App/Exceptions/Handler", + "aliases": { + "App": "app", + "Config": "config", + "Database": "database", + "Contracts": "contracts" + }, + "preloads": ["./start/routes", "./start/kernel"], + "providers": ["./providers/AppProvider", "@adonisjs/core"], + "metaFiles": [ + { + "pattern": "public/**", + "reloadServer": false + } + ], + "tests": { + "suites": [ + { + "name": "functional", + "files": ["tests/functional/**/*.spec(.ts|.js)"], + "timeout": 60000 + } + ] + }, + "testProviders": ["@japa/preset-adonis/TestsProvider"] +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/.editorconfig --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/.editorconfig Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,15 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.json] +insert_final_newline = false + +[*.md] +trim_trailing_whitespace = false diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/.env.example --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/.env.example Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,5 @@ +PORT=3333 +HOST=0.0.0.0 +NODE_ENV=development +APP_KEY=9Ka-vORv6iVICoIPxgZie7N-2OsCvLnb +DRIVE_DISK=local diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/.env.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/.env.test Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +NODE_ENV=test diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/.prettierignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/.prettierignore Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +build diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/ace --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/ace Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,16 @@ +/* +|-------------------------------------------------------------------------- +| Ace Commands +|-------------------------------------------------------------------------- +| +| This file is the entry point for running ace commands. +| +*/ + +require('reflect-metadata') +require('source-map-support').install({ handleUncaughtExceptions: false }) + +const { Ignitor } = require('@adonisjs/core/build/standalone') +new Ignitor(__dirname) + .ace() + .handle(process.argv.slice(2)) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/ace-manifest.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/ace-manifest.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,88 @@ +{ + "commands": { + "dump:rcfile": { + "settings": {}, + "commandPath": "@adonisjs/core/build/commands/DumpRc", + "commandName": "dump:rcfile", + "description": "Dump contents of .adonisrc.json file along with defaults", + "args": [], + "aliases": [], + "flags": [] + }, + "list:routes": { + "settings": { + "loadApp": true, + "stayAlive": true + }, + "commandPath": "@adonisjs/core/build/commands/ListRoutes/index", + "commandName": "list:routes", + "description": "List application routes", + "args": [], + "aliases": [], + "flags": [ + { + "name": "verbose", + "propertyName": "verbose", + "type": "boolean", + "description": "Display more information" + }, + { + "name": "reverse", + "propertyName": "reverse", + "type": "boolean", + "alias": "r", + "description": "Reverse routes display" + }, + { + "name": "methods", + "propertyName": "methodsFilter", + "type": "array", + "alias": "m", + "description": "Filter routes by method" + }, + { + "name": "patterns", + "propertyName": "patternsFilter", + "type": "array", + "alias": "p", + "description": "Filter routes by the route pattern" + }, + { + "name": "names", + "propertyName": "namesFilter", + "type": "array", + "alias": "n", + "description": "Filter routes by route name" + }, + { + "name": "json", + "propertyName": "json", + "type": "boolean", + "description": "Output as JSON" + }, + { + "name": "table", + "propertyName": "table", + "type": "boolean", + "description": "Output as Table" + }, + { + "name": "max-width", + "propertyName": "maxWidth", + "type": "number", + "description": "Specify maximum rendering width. Ignored for JSON Output" + } + ] + }, + "generate:key": { + "settings": {}, + "commandPath": "@adonisjs/core/build/commands/GenerateKey", + "commandName": "generate:key", + "description": "Generate a new APP_KEY secret", + "args": [], + "aliases": [], + "flags": [] + } + }, + "aliases": {} +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/app/Exceptions/Handler.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/app/Exceptions/Handler.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,23 @@ +/* +|-------------------------------------------------------------------------- +| Http Exception Handler +|-------------------------------------------------------------------------- +| +| AdonisJs will forward all exceptions occurred during an HTTP request to +| the following class. You can learn more about exception handling by +| reading docs. +| +| The exception handler extends a base `HttpExceptionHandler` which is not +| mandatory, however it can do lot of heavy lifting to handle the errors +| properly. +| +*/ + +import Logger from '@ioc:Adonis/Core/Logger' +import HttpExceptionHandler from '@ioc:Adonis/Core/HttpExceptionHandler' + +export default class ExceptionHandler extends HttpExceptionHandler { + constructor() { + super(Logger) + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/commands/index.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/commands/index.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,19 @@ +import { listDirectoryFiles } from '@adonisjs/core/build/standalone' +import Application from '@ioc:Adonis/Core/Application' + +/* +|-------------------------------------------------------------------------- +| Exporting an array of commands +|-------------------------------------------------------------------------- +| +| Instead of manually exporting each file from this directory, we use the +| helper `listDirectoryFiles` to recursively collect and export an array +| of filenames. +| +| Couple of things to note: +| +| 1. The file path must be relative from the project root and not this directory. +| 2. We must ignore this file to avoid getting into an infinite loop +| +*/ +export default listDirectoryFiles(__dirname, Application.appRoot, ['./commands/index']) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/config/app.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/config/app.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,216 @@ +/** + * Config source: https://git.io/JfefZ + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import proxyAddr from 'proxy-addr' +import Env from '@ioc:Adonis/Core/Env' +import type { ServerConfig } from '@ioc:Adonis/Core/Server' +import type { LoggerConfig } from '@ioc:Adonis/Core/Logger' +import type { ProfilerConfig } from '@ioc:Adonis/Core/Profiler' +import type { ValidatorConfig } from '@ioc:Adonis/Core/Validator' + +/* +|-------------------------------------------------------------------------- +| Application secret key +|-------------------------------------------------------------------------- +| +| The secret to encrypt and sign different values in your application. +| Make sure to keep the `APP_KEY` as an environment variable and secure. +| +| Note: Changing the application key for an existing app will make all +| the cookies invalid and also the existing encrypted data will not +| be decrypted. +| +*/ +export const appKey: string = Env.get('APP_KEY') + +/* +|-------------------------------------------------------------------------- +| Http server configuration +|-------------------------------------------------------------------------- +| +| The configuration for the HTTP(s) server. Make sure to go through all +| the config properties to make keep server secure. +| +*/ +export const http: ServerConfig = { + /* + |-------------------------------------------------------------------------- + | Allow method spoofing + |-------------------------------------------------------------------------- + | + | Method spoofing enables defining custom HTTP methods using a query string + | `_method`. This is usually required when you are making traditional + | form requests and wants to use HTTP verbs like `PUT`, `DELETE` and + | so on. + | + */ + allowMethodSpoofing: false, + + /* + |-------------------------------------------------------------------------- + | Subdomain offset + |-------------------------------------------------------------------------- + */ + subdomainOffset: 2, + + /* + |-------------------------------------------------------------------------- + | Request Ids + |-------------------------------------------------------------------------- + | + | Setting this value to `true` will generate a unique request id for each + | HTTP request and set it as `x-request-id` header. + | + */ + generateRequestId: false, + + /* + |-------------------------------------------------------------------------- + | Trusting proxy servers + |-------------------------------------------------------------------------- + | + | Define the proxy servers that AdonisJs must trust for reading `X-Forwarded` + | headers. + | + */ + trustProxy: proxyAddr.compile('loopback'), + + /* + |-------------------------------------------------------------------------- + | Generating Etag + |-------------------------------------------------------------------------- + | + | Whether or not to generate an etag for every response. + | + */ + etag: false, + + /* + |-------------------------------------------------------------------------- + | JSONP Callback + |-------------------------------------------------------------------------- + */ + jsonpCallbackName: 'callback', + + /* + |-------------------------------------------------------------------------- + | Cookie settings + |-------------------------------------------------------------------------- + */ + cookie: { + domain: '', + path: '/', + maxAge: '2h', + httpOnly: true, + secure: false, + sameSite: false, + }, +} + +/* +|-------------------------------------------------------------------------- +| Logger +|-------------------------------------------------------------------------- +*/ +export const logger: LoggerConfig = { + /* + |-------------------------------------------------------------------------- + | Application name + |-------------------------------------------------------------------------- + | + | The name of the application you want to add to the log. It is recommended + | to always have app name in every log line. + | + | The `APP_NAME` environment variable is automatically set by AdonisJS by + | reading the `name` property from the `package.json` file. + | + */ + name: Env.get('APP_NAME'), + + /* + |-------------------------------------------------------------------------- + | Toggle logger + |-------------------------------------------------------------------------- + | + | Enable or disable logger application wide + | + */ + enabled: true, + + /* + |-------------------------------------------------------------------------- + | Logging level + |-------------------------------------------------------------------------- + | + | The level from which you want the logger to flush logs. It is recommended + | to make use of the environment variable, so that you can define log levels + | at deployment level and not code level. + | + */ + level: Env.get('LOG_LEVEL', 'info'), + + /* + |-------------------------------------------------------------------------- + | Pretty print + |-------------------------------------------------------------------------- + | + | It is highly advised NOT to use `prettyPrint` in production, since it + | can have huge impact on performance. + | + */ + prettyPrint: Env.get('NODE_ENV') === 'development', +} + +/* +|-------------------------------------------------------------------------- +| Profiler +|-------------------------------------------------------------------------- +*/ +export const profiler: ProfilerConfig = { + /* + |-------------------------------------------------------------------------- + | Toggle profiler + |-------------------------------------------------------------------------- + | + | Enable or disable profiler + | + */ + enabled: true, + + /* + |-------------------------------------------------------------------------- + | Blacklist actions/row labels + |-------------------------------------------------------------------------- + | + | Define an array of actions or row labels that you want to disable from + | getting profiled. + | + */ + blacklist: [], + + /* + |-------------------------------------------------------------------------- + | Whitelist actions/row labels + |-------------------------------------------------------------------------- + | + | Define an array of actions or row labels that you want to whitelist for + | the profiler. When whitelist is defined, then `blacklist` is ignored. + | + */ + whitelist: [], +} + +/* +|-------------------------------------------------------------------------- +| Validator +|-------------------------------------------------------------------------- +| +| Configure the global configuration for the validator. Here's the reference +| to the default config https://git.io/JT0WE +| +*/ +export const validator: ValidatorConfig = {} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/config/bodyparser.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/config/bodyparser.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,205 @@ +/** + * Config source: https://git.io/Jfefn + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import type { BodyParserConfig } from '@ioc:Adonis/Core/BodyParser' + +const bodyParserConfig: BodyParserConfig = { + /* + |-------------------------------------------------------------------------- + | White listed methods + |-------------------------------------------------------------------------- + | + | HTTP methods for which body parsing must be performed. It is a good practice + | to avoid body parsing for `GET` requests. + | + */ + whitelistedMethods: ['POST', 'PUT', 'PATCH', 'DELETE'], + + /* + |-------------------------------------------------------------------------- + | JSON parser settings + |-------------------------------------------------------------------------- + | + | The settings for the JSON parser. The types defines the request content + | types which gets processed by the JSON parser. + | + */ + json: { + encoding: 'utf-8', + limit: '1mb', + strict: true, + types: [ + 'application/json', + 'application/json-patch+json', + 'application/vnd.api+json', + 'application/csp-report', + ], + }, + + /* + |-------------------------------------------------------------------------- + | Form parser settings + |-------------------------------------------------------------------------- + | + | The settings for the `application/x-www-form-urlencoded` parser. The types + | defines the request content types which gets processed by the form parser. + | + */ + form: { + encoding: 'utf-8', + limit: '1mb', + queryString: {}, + + /* + |-------------------------------------------------------------------------- + | Convert empty strings to null + |-------------------------------------------------------------------------- + | + | Convert empty form fields to null. HTML forms results in field string + | value when the field is left blank. This option normalizes all the blank + | field values to "null" + | + */ + convertEmptyStringsToNull: true, + + types: ['application/x-www-form-urlencoded'], + }, + + /* + |-------------------------------------------------------------------------- + | Raw body parser settings + |-------------------------------------------------------------------------- + | + | Raw body just reads the request body stream as a plain text, which you + | can process by hand. This must be used when request body type is not + | supported by the body parser. + | + */ + raw: { + encoding: 'utf-8', + limit: '1mb', + queryString: {}, + types: ['text/*'], + }, + + /* + |-------------------------------------------------------------------------- + | Multipart parser settings + |-------------------------------------------------------------------------- + | + | The settings for the `multipart/form-data` parser. The types defines the + | request content types which gets processed by the form parser. + | + */ + multipart: { + /* + |-------------------------------------------------------------------------- + | Auto process + |-------------------------------------------------------------------------- + | + | The auto process option will process uploaded files and writes them to + | the `tmp` folder. You can turn it off and then manually use the stream + | to pipe stream to a different destination. + | + | It is recommended to keep `autoProcess=true`. Unless you are processing bigger + | file sizes. + | + */ + autoProcess: true, + + /* + |-------------------------------------------------------------------------- + | Files to be processed manually + |-------------------------------------------------------------------------- + | + | You can turn off `autoProcess` for certain routes by defining + | routes inside the following array. + | + | NOTE: Make sure the route pattern starts with a leading slash. + | + | Correct + | ```js + | /projects/:id/file + | ``` + | + | Incorrect + | ```js + | projects/:id/file + | ``` + */ + processManually: [], + + /* + |-------------------------------------------------------------------------- + | Temporary file name + |-------------------------------------------------------------------------- + | + | When auto processing is on. We will use this method to compute the temporary + | file name. AdonisJs will compute a unique `tmpPath` for you automatically, + | However, you can also define your own custom method. + | + */ + // tmpFileName () { + // }, + + /* + |-------------------------------------------------------------------------- + | Encoding + |-------------------------------------------------------------------------- + | + | Request body encoding + | + */ + encoding: 'utf-8', + + /* + |-------------------------------------------------------------------------- + | Convert empty strings to null + |-------------------------------------------------------------------------- + | + | Convert empty form fields to null. HTML forms results in field string + | value when the field is left blank. This option normalizes all the blank + | field values to "null" + | + */ + convertEmptyStringsToNull: true, + + /* + |-------------------------------------------------------------------------- + | Max Fields + |-------------------------------------------------------------------------- + | + | The maximum number of fields allowed in the request body. The field includes + | text inputs and files both. + | + */ + maxFields: 1000, + + /* + |-------------------------------------------------------------------------- + | Request body limit + |-------------------------------------------------------------------------- + | + | The total limit to the multipart body. This includes all request files + | and fields data. + | + */ + limit: '20mb', + + /* + |-------------------------------------------------------------------------- + | Types + |-------------------------------------------------------------------------- + | + | The types that will be considered and parsed as multipart body. + | + */ + types: ['multipart/form-data'], + }, +} + +export default bodyParserConfig diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/config/cors.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/config/cors.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,134 @@ +/** + * Config source: https://git.io/JfefC + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import type { CorsConfig } from '@ioc:Adonis/Core/Cors' + +const corsConfig: CorsConfig = { + /* + |-------------------------------------------------------------------------- + | Enabled + |-------------------------------------------------------------------------- + | + | A boolean to enable or disable CORS integration from your AdonisJs + | application. + | + | Setting the value to `true` will enable the CORS for all HTTP request. However, + | you can define a function to enable/disable it on per request basis as well. + | + */ + enabled: false, + + // You can also use a function that return true or false. + // enabled: (request) => request.url().startsWith('/api') + + /* + |-------------------------------------------------------------------------- + | Origin + |-------------------------------------------------------------------------- + | + | Set a list of origins to be allowed for `Access-Control-Allow-Origin`. + | The value can be one of the following: + | + | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin + | + | Boolean (true) - Allow current request origin. + | Boolean (false) - Disallow all. + | String - Comma separated list of allowed origins. + | Array - An array of allowed origins. + | String (*) - A wildcard (*) to allow all request origins. + | Function - Receives the current origin string and should return + | one of the above values. + | + */ + origin: true, + + /* + |-------------------------------------------------------------------------- + | Methods + |-------------------------------------------------------------------------- + | + | An array of allowed HTTP methods for CORS. The `Access-Control-Request-Method` + | is checked against the following list. + | + | Following is the list of default methods. Feel free to add more. + */ + methods: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE'], + + /* + |-------------------------------------------------------------------------- + | Headers + |-------------------------------------------------------------------------- + | + | List of headers to be allowed for `Access-Control-Allow-Headers` header. + | The value can be one of the following: + | + | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Request-Headers + | + | Boolean(true) - Allow all headers mentioned in `Access-Control-Request-Headers`. + | Boolean(false) - Disallow all headers. + | String - Comma separated list of allowed headers. + | Array - An array of allowed headers. + | Function - Receives the current header and should return one of the above values. + | + */ + headers: true, + + /* + |-------------------------------------------------------------------------- + | Expose Headers + |-------------------------------------------------------------------------- + | + | A list of headers to be exposed by setting `Access-Control-Expose-Headers`. + | header. By default following 6 simple response headers are exposed. + | + | Cache-Control + | Content-Language + | Content-Type + | Expires + | Last-Modified + | Pragma + | + | In order to add more headers, simply define them inside the following array. + | + | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers + | + */ + exposeHeaders: [ + 'cache-control', + 'content-language', + 'content-type', + 'expires', + 'last-modified', + 'pragma', + ], + + /* + |-------------------------------------------------------------------------- + | Credentials + |-------------------------------------------------------------------------- + | + | Toggle `Access-Control-Allow-Credentials` header. If value is set to `true`, + | then header will be set, otherwise not. + | + | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials + | + */ + credentials: true, + + /* + |-------------------------------------------------------------------------- + | MaxAge + |-------------------------------------------------------------------------- + | + | Define `Access-Control-Max-Age` header in seconds. + | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age + | + */ + maxAge: 90, +} + +export default corsConfig diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/config/drive.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/config/drive.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,149 @@ +/** + * Config source: https://git.io/JBt3o + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import { driveConfig } from '@adonisjs/core/build/config' +import Application from '@ioc:Adonis/Core/Application' + +/* +|-------------------------------------------------------------------------- +| Drive Config +|-------------------------------------------------------------------------- +| +| The `DriveConfig` relies on the `DisksList` interface which is +| defined inside the `contracts` directory. +| +*/ +export default driveConfig({ + /* + |-------------------------------------------------------------------------- + | Default disk + |-------------------------------------------------------------------------- + | + | The default disk to use for managing file uploads. The value is driven by + | the `DRIVE_DISK` environment variable. + | + */ + disk: Env.get('DRIVE_DISK'), + + disks: { + /* + |-------------------------------------------------------------------------- + | Local + |-------------------------------------------------------------------------- + | + | Uses the local file system to manage files. Make sure to turn off serving + | files when not using this disk. + | + */ + local: { + driver: 'local', + visibility: 'public', + + /* + |-------------------------------------------------------------------------- + | Storage root - Local driver only + |-------------------------------------------------------------------------- + | + | Define an absolute path to the storage directory from where to read the + | files. + | + */ + root: Application.tmpPath('uploads'), + + /* + |-------------------------------------------------------------------------- + | Serve files - Local driver only + |-------------------------------------------------------------------------- + | + | When this is set to true, AdonisJS will configure a files server to serve + | files from the disk root. This is done to mimic the behavior of cloud + | storage services that has inbuilt capabilities to serve files. + | + */ + serveFiles: true, + + /* + |-------------------------------------------------------------------------- + | Base path - Local driver only + |-------------------------------------------------------------------------- + | + | Base path is always required when "serveFiles = true". Also make sure + | the `basePath` is unique across all the disks using "local" driver and + | you are not registering routes with this prefix. + | + */ + basePath: '/uploads', + }, + + /* + |-------------------------------------------------------------------------- + | S3 Driver + |-------------------------------------------------------------------------- + | + | Uses the S3 cloud storage to manage files. Make sure to install the s3 + | drive separately when using it. + | + |************************************************************************** + | npm i @adonisjs/drive-s3 + |************************************************************************** + | + */ + // s3: { + // driver: 's3', + // visibility: 'public', + // key: Env.get('S3_KEY'), + // secret: Env.get('S3_SECRET'), + // region: Env.get('S3_REGION'), + // bucket: Env.get('S3_BUCKET'), + // endpoint: Env.get('S3_ENDPOINT'), + // + // // For minio to work + // // forcePathStyle: true, + // }, + + /* + |-------------------------------------------------------------------------- + | GCS Driver + |-------------------------------------------------------------------------- + | + | Uses the Google cloud storage to manage files. Make sure to install the GCS + | drive separately when using it. + | + |************************************************************************** + | npm i @adonisjs/drive-gcs + |************************************************************************** + | + */ + // gcs: { + // driver: 'gcs', + // visibility: 'public', + // keyFilename: Env.get('GCS_KEY_FILENAME'), + // bucket: Env.get('GCS_BUCKET'), + + /* + |-------------------------------------------------------------------------- + | Uniform ACL - Google cloud storage only + |-------------------------------------------------------------------------- + | + | When using the Uniform ACL on the bucket, the "visibility" option is + | ignored. Since, the files ACL is managed by the google bucket policies + | directly. + | + |************************************************************************** + | Learn more: https://cloud.google.com/storage/docs/uniform-bucket-level-access + |************************************************************************** + | + | The following option just informs drive whether your bucket is using uniform + | ACL or not. The actual setting needs to be toggled within the Google cloud + | console. + | + */ + // usingUniformAcl: false, + // }, + }, +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/config/hash.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/config/hash.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,96 @@ +/** + * Config source: https://git.io/JfefW + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import { hashConfig } from '@adonisjs/core/build/config' + +/* +|-------------------------------------------------------------------------- +| Hash Config +|-------------------------------------------------------------------------- +| +| The `HashConfig` relies on the `HashList` interface which is +| defined inside `contracts` directory. +| +*/ +export default hashConfig({ + /* + |-------------------------------------------------------------------------- + | Default hasher + |-------------------------------------------------------------------------- + | + | By default we make use of the argon hasher to hash values. However, feel + | free to change the default value + | + */ + default: Env.get('HASH_DRIVER', 'scrypt'), + + list: { + /* + |-------------------------------------------------------------------------- + | scrypt + |-------------------------------------------------------------------------- + | + | Scrypt mapping uses the Node.js inbuilt crypto module for creating + | hashes. + | + | We are using the default configuration recommended within the Node.js + | documentation. + | https://nodejs.org/api/crypto.html#cryptoscryptpassword-salt-keylen-options-callback + | + */ + scrypt: { + driver: 'scrypt', + cost: 16384, + blockSize: 8, + parallelization: 1, + saltSize: 16, + keyLength: 64, + maxMemory: 32 * 1024 * 1024, + }, + + /* + |-------------------------------------------------------------------------- + | Argon + |-------------------------------------------------------------------------- + | + | Argon mapping uses the `argon2` driver to hash values. + | + | Make sure you install the underlying dependency for this driver to work. + | https://www.npmjs.com/package/phc-argon2. + | + | npm install phc-argon2 + | + */ + argon: { + driver: 'argon2', + variant: 'id', + iterations: 3, + memory: 4096, + parallelism: 1, + saltSize: 16, + }, + + /* + |-------------------------------------------------------------------------- + | Bcrypt + |-------------------------------------------------------------------------- + | + | Bcrypt mapping uses the `bcrypt` driver to hash values. + | + | Make sure you install the underlying dependency for this driver to work. + | https://www.npmjs.com/package/phc-bcrypt. + | + | npm install phc-bcrypt + | + */ + bcrypt: { + driver: 'bcrypt', + rounds: 10, + }, + }, +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/config/static.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/config/static.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,89 @@ +/** + * Config source: https://git.io/Jfefl + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import { AssetsConfig } from '@ioc:Adonis/Core/Static' + +const staticConfig: AssetsConfig = { + /* + |-------------------------------------------------------------------------- + | Enabled + |-------------------------------------------------------------------------- + | + | A boolean to enable or disable serving static files. The static files + | are served from the `public` directory inside the application root. + | However, you can override the default path inside `.adonisrc.json` + | file. + | + | + */ + enabled: true, + + /* + |-------------------------------------------------------------------------- + | Handling Dot Files + |-------------------------------------------------------------------------- + | + | Decide how you want the static assets server to handle the `dotfiles`. + | By default, we ignore them as if they don't exists. However, you + | can choose between one of the following options. + | + | - ignore: Behave as if the file doesn't exists. Results in 404. + | - deny: Deny access to the file. Results in 403. + | - allow: Serve the file contents + | + */ + dotFiles: 'ignore', + + /* + |-------------------------------------------------------------------------- + | Generating Etag + |-------------------------------------------------------------------------- + | + | Handle whether or not to generate etags for the files. Etag allows browser + | to utilize the cache when file hasn't been changed. + | + */ + etag: true, + + /* + |-------------------------------------------------------------------------- + | Set Last Modified + |-------------------------------------------------------------------------- + | + | Whether or not to set the `Last-Modified` header in the response. Uses + | the file system's last modified value. + | + */ + lastModified: true, + + /* + |-------------------------------------------------------------------------- + | Max age + |-------------------------------------------------------------------------- + | + | Set the value for the max-age directive. Set a higher value in production + | if you fingerprint your assets. + | + | Learn more: https://docs.adonisjs.com/guides/deployment#serving-static-assets + | + */ + maxAge: 0, + + /* + |-------------------------------------------------------------------------- + | Immutable + |-------------------------------------------------------------------------- + | + | Set the immutable directive. Set it to `true` if the assets are generated + | with a fingerprint. In others words the file name changes when the file + | contents change. + | + */ + immutable: false, +} + +export default staticConfig diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/contracts/drive.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/contracts/drive.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,13 @@ +/** + * Contract source: https://git.io/JBt3I + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +import type { InferDisksFromConfig } from '@adonisjs/core/build/config' +import type driveConfig from '../config/drive' + +declare module '@ioc:Adonis/Core/Drive' { + interface DisksList extends InferDisksFromConfig {} +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/contracts/env.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/contracts/env.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,23 @@ +/** + * Contract source: https://git.io/JTm6U + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +declare module '@ioc:Adonis/Core/Env' { + /* + |-------------------------------------------------------------------------- + | Getting types for validated environment variables + |-------------------------------------------------------------------------- + | + | The `default` export from the "../env.ts" file exports types for the + | validated environment variables. Here we merge them with the `EnvTypes` + | interface so that you can enjoy intellisense when using the "Env" + | module. + | + */ + + type CustomTypes = typeof import('../env').default + interface EnvTypes extends CustomTypes {} +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/contracts/events.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/contracts/events.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,31 @@ +/** + * Contract source: https://git.io/JfefG + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +declare module '@ioc:Adonis/Core/Event' { + /* + |-------------------------------------------------------------------------- + | Define typed events + |-------------------------------------------------------------------------- + | + | You can define types for events inside the following interface and + | AdonisJS will make sure that all listeners and emit calls adheres + | to the defined types. + | + | For example: + | + | interface EventsList { + | 'new:user': UserModel + | } + | + | Now calling `Event.emit('new:user')` will statically ensure that passed value is + | an instance of the the UserModel only. + | + */ + interface EventsList { + // + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/contracts/hash.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/contracts/hash.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,13 @@ +/** + * Contract source: https://git.io/Jfefs + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +import type { InferListFromConfig } from '@adonisjs/core/build/config' +import type hashConfig from '../config/hash' + +declare module '@ioc:Adonis/Core/Hash' { + interface HashersList extends InferListFromConfig {} +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/contracts/tests.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/contracts/tests.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,18 @@ +/** + * Contract source: https://bit.ly/3DP1ypf + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +import '@japa/runner' + +declare module '@japa/runner' { + interface TestContext { + // Extend context + } + + interface Test { + // Extend test + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/env.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/env.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,24 @@ +/* +|-------------------------------------------------------------------------- +| Validating Environment Variables +|-------------------------------------------------------------------------- +| +| In this file we define the rules for validating environment variables. +| By performing validation we ensure that your application is running in +| a stable environment with correct configuration values. +| +| This file is read automatically by the framework during the boot lifecycle +| and hence do not rename or move this file to a different location. +| +*/ + +import Env from '@ioc:Adonis/Core/Env' + +export default Env.rules({ + HOST: Env.schema.string({ format: 'host' }), + PORT: Env.schema.number(), + APP_KEY: Env.schema.string(), + APP_NAME: Env.schema.string(), + DRIVE_DISK: Env.schema.enum(['local'] as const), + NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/package.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/package.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,63 @@ +{ + "name": "adonis", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "node ace serve --watch", + "build": "node ace build --production", + "start": "node server.js", + "test": "node ace test", + "lint": "eslint . --ext=.ts", + "format": "prettier --write ." + }, + "eslintConfig": { + "extends": [ + "plugin:adonis/typescriptApp", + "prettier" + ], + "plugins": [ + "prettier" + ], + "rules": { + "prettier/prettier": [ + "error" + ] + } + }, + "eslintIgnore": [ + "build" + ], + "prettier": { + "trailingComma": "es5", + "semi": false, + "singleQuote": true, + "useTabs": false, + "quoteProps": "consistent", + "bracketSpacing": true, + "arrowParens": "always", + "printWidth": 100 + }, + "devDependencies": { + "@adonisjs/assembler": "^5.9.5", + "@japa/preset-adonis": "^1.2.0", + "@japa/runner": "^2.5.1", + "@types/proxy-addr": "^2.0.0", + "@types/source-map-support": "^0.5.6", + "adonis-preset-ts": "^2.1.0", + "eslint": "^8.40.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-adonis": "^2.1.1", + "eslint-plugin-prettier": "^4.2.1", + "pino-pretty": "^10.0.0", + "prettier": "^2.8.8", + "typescript": "~4.6", + "youch": "^3.2.3", + "youch-terminal": "^2.2.0" + }, + "dependencies": { + "@adonisjs/core": "^5.8.0", + "proxy-addr": "^2.0.7", + "reflect-metadata": "^0.1.13", + "source-map-support": "^0.5.21" + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/pnpm-lock.yaml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/pnpm-lock.yaml Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6536 @@ +lockfileVersion: 5.4 + +specifiers: + '@adonisjs/assembler': ^5.9.5 + '@adonisjs/core': ^5.8.0 + '@japa/preset-adonis': ^1.2.0 + '@japa/runner': ^2.5.1 + '@types/proxy-addr': ^2.0.0 + '@types/source-map-support': ^0.5.6 + adonis-preset-ts: ^2.1.0 + eslint: ^8.40.0 + eslint-config-prettier: ^8.8.0 + eslint-plugin-adonis: ^2.1.1 + eslint-plugin-prettier: ^4.2.1 + pino-pretty: ^10.0.0 + prettier: ^2.8.8 + proxy-addr: ^2.0.7 + reflect-metadata: ^0.1.13 + source-map-support: ^0.5.21 + typescript: ~4.6 + youch: ^3.2.3 + youch-terminal: ^2.2.0 + +dependencies: + '@adonisjs/core': 5.9.0 + proxy-addr: 2.0.7 + reflect-metadata: 0.1.13 + source-map-support: 0.5.21 + +devDependencies: + '@adonisjs/assembler': 5.9.5_ufwe4ovksjfhy7vs4xmcqchpne + '@japa/preset-adonis': 1.2.0_2s67ontbdhpw7c4cgc2ng6xtia + '@japa/runner': 2.5.1 + '@types/proxy-addr': 2.0.0 + '@types/source-map-support': 0.5.6 + adonis-preset-ts: 2.1.0 + eslint: 8.40.0 + eslint-config-prettier: 8.8.0_eslint@8.40.0 + eslint-plugin-adonis: 2.1.1_3kupndsc2vwfhayt5vgixvikbu + eslint-plugin-prettier: 4.2.1_mnhdxnhvwtt24ndv5d2pwtkrna + pino-pretty: 10.0.0 + prettier: 2.8.8 + typescript: 4.6.4 + youch: 3.2.3 + youch-terminal: 2.2.0 + +packages: + /@adonisjs/ace/11.3.1_wgdfb774pn54a4dpwjtuyywjqy: + resolution: + { + integrity: sha512-Ho3+Lk/16OSjX3CfhxsoLUTlcVG4sDlXUwHx+Zry/RLft5M6plT5ln0WkZvL7tqtb1uCZgP5YiMrMtDjSRzZLA==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@poppinss/cliui': 3.0.5 + '@poppinss/prompts': 2.0.2 + '@poppinss/utils': 4.0.4 + fs-extra: 10.1.0 + getopts: 2.3.0 + leven: 3.1.0 + mustache: 4.2.0 + slash: 3.0.0 + term-size: 2.2.1 + + /@adonisjs/application/5.3.0: + resolution: + { + integrity: sha512-AruZZXMgOdmmRxJEHUbXoqhgRavPfhkeIR2nQtGyxbn0PCNjqlGraq8ypuLINY1J+wNuH2tt0xCS98EDeMdTOQ==, + } + dependencies: + '@adonisjs/config': 3.0.9 + '@adonisjs/env': 3.0.9 + '@adonisjs/fold': 8.2.0 + '@adonisjs/logger': 4.1.5 + '@adonisjs/profiler': 6.0.9_@adonisjs+logger@4.1.5 + '@poppinss/utils': 5.0.0 + semver: 7.5.1 + + /@adonisjs/assembler/5.9.5_ufwe4ovksjfhy7vs4xmcqchpne: + resolution: + { + integrity: sha512-wCtQRZ4KoIZkzi+ux5NrDUDNASRomytRZ7AZBdw8Hi3LlEOeac4T8+47y7gXwJFKH2nnGoiIwnXGIgJyolXEfQ==, + } + peerDependencies: + '@adonisjs/core': ^5.1.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@adonisjs/core': 5.9.0 + '@adonisjs/env': 3.0.9 + '@adonisjs/ioc-transformer': 2.3.4 + '@adonisjs/require-ts': 2.0.13 + '@adonisjs/sink': 5.4.3_yynn6eoznesnsnj7w2h4cu5q2e + '@poppinss/chokidar-ts': 3.3.5 + '@poppinss/cliui': 3.0.5 + '@poppinss/utils': 5.0.0 + cpy: 8.1.2 + emittery: 0.13.1 + execa: 5.1.1 + fs-extra: 10.1.0 + get-port: 5.1.1 + glob-parent: 6.0.2 + has-yarn: 2.1.0 + picomatch: 2.3.1 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@adonisjs/bodyparser/8.1.7_fvzpfc37y3dof2z3g7al5tbyhy: + resolution: + { + integrity: sha512-2ixzKGszAez1Qq6KNsNs0LcKSfqnZMiaqMleuTh/m4pBLw9CTsVqFS2YH181+6pBhFcTVcXkByh6T1P48Tq5Cw==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + '@adonisjs/drive': ^2.0.0 + '@adonisjs/http-server': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@adonisjs/drive': 2.3.0_z3nkjyu7otzhvmeyo5dhgkrehu + '@adonisjs/http-server': 5.12.0_omul7fmanystujhdpmehxi3j6e + '@poppinss/co-body': 1.2.0 + '@poppinss/multiparty': 2.0.1 + '@poppinss/utils': 5.0.0 + bytes: 3.1.2 + end-of-stream: 1.4.4 + file-type: 16.5.4 + fs-extra: 10.1.0 + media-typer: 1.1.0 + slash: 3.0.0 + + /@adonisjs/config/3.0.9: + resolution: + { + integrity: sha512-f+wzrc+0HLvhJyYGEMV2QTHtyJ8sI3PKvH9h/baW/iF8UO3KF+llHH0Cf3/M5dYnpdz9rnmj0VtdTaIDfxrgGg==, + } + dependencies: + '@poppinss/utils': 5.0.0 + + /@adonisjs/core/5.9.0: + resolution: + { + integrity: sha512-32zG9EW0t0Ck0cMzlwD0+z3GJG7k/gZz6P0+h+s8N1N7fHxGixrKs7W7lT3OcIvk0NsuIw1tUPAU7fAWytHEqA==, + } + dependencies: + '@adonisjs/ace': 11.3.1_wgdfb774pn54a4dpwjtuyywjqy + '@adonisjs/application': 5.3.0 + '@adonisjs/bodyparser': 8.1.7_fvzpfc37y3dof2z3g7al5tbyhy + '@adonisjs/drive': 2.3.0_z3nkjyu7otzhvmeyo5dhgkrehu + '@adonisjs/encryption': 4.0.8_wgdfb774pn54a4dpwjtuyywjqy + '@adonisjs/events': 7.2.1_wgdfb774pn54a4dpwjtuyywjqy + '@adonisjs/hash': 7.2.2_wgdfb774pn54a4dpwjtuyywjqy + '@adonisjs/http-server': 5.12.0_omul7fmanystujhdpmehxi3j6e + '@adonisjs/validator': 12.4.2_a5wjebduys2w4qiq5ok52pfvfu + '@poppinss/cliui': 3.0.5 + '@poppinss/manager': 5.0.2 + '@poppinss/utils': 5.0.0 + fs-extra: 10.1.0 + macroable: 7.0.2 + memfs: 3.5.1 + serve-static: 1.15.0 + stringify-attributes: 2.0.0 + transitivePeerDependencies: + - supports-color + + /@adonisjs/drive/2.3.0_z3nkjyu7otzhvmeyo5dhgkrehu: + resolution: + { + integrity: sha512-3V1kBe2qB/860KcS+dDonv8Xya2YDBdR7291pQgObJeTbV50Vy8RhwdOwtU7ybRfN2kh/svdC4238JGpbQOR9w==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + '@adonisjs/http-server': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@adonisjs/http-server': 5.12.0_omul7fmanystujhdpmehxi3j6e + '@poppinss/manager': 5.0.2 + '@poppinss/utils': 5.0.0 + '@types/fs-extra': 9.0.13 + etag: 1.8.1 + fs-extra: 10.1.0 + memfs: 3.5.1 + + /@adonisjs/encryption/4.0.8_wgdfb774pn54a4dpwjtuyywjqy: + resolution: + { + integrity: sha512-zMWbIESPHXafsbiLJyON/hlRYwrTIA3PuTil7xC8W4ngC36PgWe86Ra0x0t961u1We/LaSGkT8Vn93DymqB3aA==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@poppinss/utils': 4.0.4 + + /@adonisjs/env/3.0.9: + resolution: + { + integrity: sha512-9lxGmOQuF4FpUQ6NIwL/YQumaXG+2Wt8jQlQptplSUTasy6DHSEp7/SYvtC2RD9vxwn4gsptNCo+f8YRiqUvwQ==, + } + dependencies: + '@poppinss/utils': 4.0.4 + dotenv: 16.0.3 + validator: 13.9.0 + + /@adonisjs/events/7.2.1_wgdfb774pn54a4dpwjtuyywjqy: + resolution: + { + integrity: sha512-N+ewQ19pvdWVIRGBeio1GqlMRJpHpZ+ZHCjhObI+bqoCh5nBApumW0JYe4blyMnUbUAtA9Aq1m1QbGaE7pRMcw==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + emittery: 0.10.2 + + /@adonisjs/fold/8.2.0: + resolution: + { + integrity: sha512-Uoo2HPp4SShIkGOF3+p3gT09W3j0zpkK+fOpPyYPTqYm7CWAunklTlowqX45b6CAVb5DCcORDUB8ia4D1ijeKg==, + } + dependencies: + '@poppinss/utils': 4.0.4 + + /@adonisjs/hash/7.2.2_wgdfb774pn54a4dpwjtuyywjqy: + resolution: + { + integrity: sha512-qJxFX8jNH+5+jxckIIvz2y9pMt59ueT50a4B5kUe/68g5iC7UdwKmMos+tj5Pnm5hRFfwKXbtIQBGd+Bb87+2Q==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@phc/format': 1.0.0 + '@poppinss/manager': 5.0.2 + '@poppinss/utils': 5.0.0 + + /@adonisjs/http-server/5.12.0_omul7fmanystujhdpmehxi3j6e: + resolution: + { + integrity: sha512-+9cw/DRlLO2NSoHsccmMe3pFf6c0/8INds2yf73ZAZOmzUROb9DQaXHocJ/iwHX9EVxtDuKWDc5z0jI1SYdqEA==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + '@adonisjs/encryption': ^4.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@adonisjs/encryption': 4.0.8_wgdfb774pn54a4dpwjtuyywjqy + '@poppinss/matchit': 3.1.2 + '@poppinss/utils': 5.0.0 + accepts: 1.3.8 + co-compose: 7.0.3 + content-disposition: 0.5.4 + cookie: 0.5.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + etag: 1.8.1 + fresh: 0.5.2 + haye: 3.0.0 + macroable: 7.0.2 + mime-types: 2.1.35 + ms: 2.1.3 + on-finished: 2.4.1 + pluralize: 8.0.0 + proxy-addr: 2.0.7 + qs: 6.11.2 + tmp-cache: 1.1.0 + type-is: 1.6.18 + vary: 1.1.2 + + /@adonisjs/ioc-transformer/2.3.4: + resolution: + { + integrity: sha512-ik1C7f0Hbqenw6S1Ty06B4pznGfpUH5bL2fiCYgwq+jKPw8CKdsTQKvYudS6Tj68Nr6Mpqow4RNbvFV/OC0mZg==, + } + dev: true + + /@adonisjs/logger/4.1.5: + resolution: + { + integrity: sha512-JMINhXp/6VW0y4e86luyM8vbBzV4Y5F4IzVklMObCu/SwiaCbp5bgx9Z6QOHiGVW8SFVlRF1KlwLq8pAifjTpQ==, + } + dependencies: + '@poppinss/utils': 5.0.0 + '@types/pino': 6.3.12 + abstract-logging: 2.0.1 + pino: 6.14.0 + + /@adonisjs/profiler/6.0.9_@adonisjs+logger@4.1.5: + resolution: + { + integrity: sha512-V1bJPPDTn05NzAKUEICnYtWi9fC8NownUToaqxVkWOUovYBO6ubt06qtH1Uv9zvUjB2PKHUn+ieDAOgyHle09A==, + } + peerDependencies: + '@adonisjs/logger': ^4.0.0 + dependencies: + '@adonisjs/logger': 4.1.5 + '@poppinss/utils': 4.0.4 + jest-worker: 27.5.1 + + /@adonisjs/require-ts/2.0.13: + resolution: + { + integrity: sha512-PyDvrGzriU9dJC/ZkP+aT/+5jKCMTWIlc6KivU/uSGX9L9+PF213nzAATS1PKEWP1G0GcWsnyhQW8QgMwuFS3A==, + } + dependencies: + '@poppinss/utils': 5.0.0 + debug: 4.3.4 + find-cache-dir: 3.3.2 + fs-extra: 10.1.0 + normalize-path: 3.0.0 + pirates: 4.0.5 + rev-hash: 3.0.0 + source-map-support: 0.5.21 + transitivePeerDependencies: + - supports-color + dev: true + + /@adonisjs/sink/5.4.3_yynn6eoznesnsnj7w2h4cu5q2e: + resolution: + { + integrity: sha512-wmAft/tjHQLtjbDjntaVu3/cmeP+3tXKDaMeWjVf6Dz+tXaM9XNg2EVVSV41F3JDF4W1u9ich9mC+4wvWJDy5g==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@poppinss/cliui': 3.0.5 + '@poppinss/prompts': 2.0.2 + '@poppinss/utils': 5.0.0 + cp-file: 9.1.0 + fs-extra: 10.1.0 + marked: 4.3.0 + marked-terminal: 5.2.0_o5carvqiv27h4a4opantq2yvom + mrm-core: 7.1.13 + mustache: 4.2.0 + open: 8.4.2 + transitivePeerDependencies: + - typescript + dev: true + + /@adonisjs/validator/12.4.2_a5wjebduys2w4qiq5ok52pfvfu: + resolution: + { + integrity: sha512-rEbZ2WUWywjffb8Aes6eKpoTb27+Nz3+Fy4wKg3/xSnAsGBKwVrKPOJADwcEFCcGjsNtEzk4llp8oviaQoaWTQ==, + } + peerDependencies: + '@adonisjs/application': ^5.0.0 + '@adonisjs/bodyparser': ^8.0.0 + '@adonisjs/http-server': ^5.0.0 + dependencies: + '@adonisjs/application': 5.3.0 + '@adonisjs/bodyparser': 8.1.7_fvzpfc37y3dof2z3g7al5tbyhy + '@adonisjs/http-server': 5.12.0_omul7fmanystujhdpmehxi3j6e + '@poppinss/utils': 5.0.0 + '@types/luxon': 3.3.0 + '@types/validator': 13.7.17 + luxon: 3.3.0 + normalize-url: 6.1.0 + tmp-cache: 1.1.0 + validator: 13.9.0 + + /@apidevtools/json-schema-ref-parser/9.1.2: + resolution: + { + integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==, + } + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.11 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + dev: true + + /@apidevtools/openapi-schemas/2.1.0: + resolution: + { + integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==, + } + engines: { node: '>=10' } + dev: true + + /@apidevtools/swagger-methods/3.0.2: + resolution: + { + integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==, + } + dev: true + + /@apidevtools/swagger-parser/10.0.3: + resolution: + { + integrity: sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==, + } + peerDependencies: + openapi-types: '>=7' + dependencies: + '@apidevtools/json-schema-ref-parser': 9.1.2 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + call-me-maybe: 1.0.2 + z-schema: 5.0.5 + dev: true + + /@arr/every/1.0.1: + resolution: + { + integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==, + } + engines: { node: '>=4' } + + /@colors/colors/1.5.0: + resolution: + { + integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, + } + engines: { node: '>=0.1.90' } + requiresBuild: true + optional: true + + /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: + resolution: + { + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.40.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@eslint-community/regexpp/4.5.1: + resolution: + { + integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + dev: true + + /@eslint/eslintrc/2.0.3: + resolution: + { + integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js/8.40.0: + resolution: + { + integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@humanwhocodes/config-array/0.11.8: + resolution: + { + integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==, + } + engines: { node: '>=10.10.0' } + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: '>=12.22' } + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + } + dev: true + + /@japa/api-client/1.4.4_@japa+runner@2.5.1: + resolution: + { + integrity: sha512-7YVDWMWDvUGRlAxOS2QmYTyfxsY+EC0fiVz/w7J4qIT2oYhl1TVfJ/R1WWRoLe/KuZr2yIUNlp7OdStVjESB5A==, + } + peerDependencies: + '@japa/runner': ^2.2.3 + dependencies: + '@japa/runner': 2.5.1 + '@poppinss/hooks': 6.0.2-0 + '@types/superagent': 4.1.17 + cookie: 0.5.0 + macroable: 7.0.2 + set-cookie-parser: 2.6.0 + superagent: 8.0.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@japa/assert/1.4.1_@japa+runner@2.5.1: + resolution: + { + integrity: sha512-IyacnyaGzHqKTUbnOproPluHGWybt0ix0UsISAnjK62aTlDS4pOYPXkCDexk21/iReXNLtFgKM/RrDPDAUfrqA==, + } + peerDependencies: + '@japa/runner': ^2.1.1 + dependencies: + '@japa/runner': 2.5.1 + '@types/chai': 4.3.5 + api-contract-validator: 2.2.8 + chai: 4.3.7 + macroable: 7.0.2 + transitivePeerDependencies: + - openapi-types + dev: true + + /@japa/base-reporter/1.1.2: + resolution: + { + integrity: sha512-6MYs/EsXjouFPNUQL3VGllryZ5enI5rqhvQbY2Dzh3Zmhu22DWw6v9d2pxucrFptDTtQ38MBPVL/BIeZAafmOw==, + } + dependencies: + '@japa/errors-printer': 2.1.0 + '@poppinss/cliui': 3.0.5 + ms: 2.1.3 + dev: true + + /@japa/core/7.3.3: + resolution: + { + integrity: sha512-3mkWlzWVALZANFfMK6Q6xtYGM3mpzZeeGGUVQGDt2OOxvL8FDADVxHrRn9BFc1V4fVJO4jR/QH5utrb+RfCF5g==, + } + dependencies: + '@poppinss/hooks': 6.0.2-0 + async-retry: 1.3.3 + emittery: 0.13.1 + macroable: 7.0.2 + time-span: 4.0.0 + dev: true + + /@japa/errors-printer/2.1.0: + resolution: + { + integrity: sha512-iZUrB58e29jbRxb7lxocz5uHt9mQ1q7iojs8Gh1kIKmvaPx0KMqce77JDtqYzu2+95WjmppAvM6au1l1WYJmpw==, + } + dependencies: + '@poppinss/cliui': 3.0.5 + jest-diff: 29.5.0 + youch: 3.2.3 + youch-terminal: 2.2.0 + dev: true + + /@japa/preset-adonis/1.2.0_2s67ontbdhpw7c4cgc2ng6xtia: + resolution: + { + integrity: sha512-jcvQCN9U5WA4kdKDtYuV6DZMzrZomxho3MASS6yhnJsSqSW6jgFDNwhOgSzY7AyPgxmVAf3jZ6JKd7r2USctlA==, + } + peerDependencies: + '@adonisjs/core': ^5.0.0 + '@japa/runner': ^2.0.0 + dependencies: + '@adonisjs/core': 5.9.0 + '@japa/api-client': 1.4.4_@japa+runner@2.5.1 + '@japa/assert': 1.4.1_@japa+runner@2.5.1 + '@japa/run-failed-tests': 1.1.1_@japa+runner@2.5.1 + '@japa/runner': 2.5.1 + '@japa/spec-reporter': 1.3.3 + transitivePeerDependencies: + - openapi-types + - supports-color + dev: true + + /@japa/run-failed-tests/1.1.1_@japa+runner@2.5.1: + resolution: + { + integrity: sha512-lMv1nAtKBpX7CH8K+HHRr2aaCTAJ9Q3i7DG12MmU2A/EDJFuP7e9ZASE8O0UTlk5Goc+DR6mzuFXG3R351J89w==, + } + peerDependencies: + '@japa/runner': ^2.2.3 + dependencies: + '@japa/runner': 2.5.1 + '@poppinss/cliui': 3.0.5 + find-cache-dir: 3.3.2 + fs-extra: 11.1.1 + dev: true + + /@japa/runner/2.5.1: + resolution: + { + integrity: sha512-p1zjniMCiGxRnZkUs5WtZjTQhbXcnK0aM2Wu4Qc+w+MBpmOrw5J2zJuge0FweepTUR9CT3r2x65uw4qIshy8XQ==, + } + dependencies: + '@japa/core': 7.3.3 + '@japa/errors-printer': 2.1.0 + '@poppinss/cliui': 3.0.5 + '@poppinss/hooks': 6.0.2-0 + fast-glob: 3.2.12 + getopts: 2.3.0 + inclusion: 1.0.1 + dev: true + + /@japa/spec-reporter/1.3.3: + resolution: + { + integrity: sha512-EOOjvQVmmWZDKxmO+f0v/BSNeKzKkeJSrNwEldkF40zZWdHX2J3Jb2MJowE5DgSOQCiG/OG2UFen0I+XLnPoxQ==, + } + dependencies: + '@japa/base-reporter': 1.1.2 + '@japa/errors-printer': 2.1.0 + '@poppinss/cliui': 3.0.5 + ms: 2.1.3 + dev: true + + /@jest/schemas/29.4.3: + resolution: + { + integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@sinclair/typebox': 0.25.24 + dev: true + + /@jest/types/25.5.0: + resolution: + { + integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==, + } + engines: { node: '>= 8.3' } + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 1.1.2 + '@types/yargs': 15.0.15 + chalk: 3.0.0 + dev: true + + /@jsdevtools/ono/7.1.3: + resolution: + { + integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==, + } + dev: true + + /@mrmlnc/readdir-enhanced/2.2.1: + resolution: + { + integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==, + } + engines: { node: '>=4' } + dependencies: + call-me-maybe: 1.0.2 + glob-to-regexp: 0.3.0 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: '>= 8' } + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/1.1.3: + resolution: + { + integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==, + } + engines: { node: '>= 6' } + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: '>= 8' } + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: '>= 8' } + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@phc/format/1.0.0: + resolution: + { + integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==, + } + engines: { node: '>=10' } + + /@poppinss/chokidar-ts/3.3.5: + resolution: + { + integrity: sha512-Ht//xB2ZPa16EDH/bmaWEBWunsBTnBYdnv3nKwXHrqNHDfcYX1DHcJmcNORRH9YLOOuVsTmqDcpiAdTn06LaHQ==, + } + dependencies: + builtin-modules: 3.3.0 + chokidar: 3.5.3 + debug: 4.3.4 + emittery: 0.10.2 + fs-extra: 10.1.0 + mem: 8.1.1 + picomatch: 2.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@poppinss/cliui/3.0.5: + resolution: + { + integrity: sha512-9TCwhJ6hQDAv7LWredEQL7eSA97kQ/i5Td80T7InV9z9rOXT8keywAM0pSvTUS01bwCeiZQVoT4r/G67DRiPJA==, + } + dependencies: + '@poppinss/colors': 3.0.3 + cli-boxes: 3.0.0 + cli-table3: 0.6.3 + color-support: 1.1.3 + log-update: 4.0.0 + pretty-hrtime: 1.0.3 + string-width: 4.2.3 + + /@poppinss/co-body/1.2.0: + resolution: + { + integrity: sha512-1aJ06XrtQ8gueo91+Vc7TTSeXECsW1pWDCKumtuGL+9xsjJvP6n567YuimwHuH99wFMIhyNW5U1g2C/4wjvXCQ==, + } + dependencies: + '@poppinss/utils': 5.0.0 + inflation: 2.0.0 + qs: 6.11.2 + raw-body: 2.5.2 + type-is: 1.6.18 + + /@poppinss/colors/3.0.3: + resolution: + { + integrity: sha512-jiZcp91PvIs5s4Wz4gEVY9J2tqH6H1++mZmsrC3TmFam9gbVPUJPEubPM5j4BQYJre7bjs9nkIbYFcWMOFHIVQ==, + } + dependencies: + color-support: 1.1.3 + kleur: 4.1.5 + + /@poppinss/file-generator/1.0.2: + resolution: + { + integrity: sha512-rRob//4jLbUVbDSsNRihloKGgpyVsWdFQWUmONxX/gyv4koT1OlVoc3ccWgk7Y/sEa2cFxj3zrFs+wdT09iXWw==, + } + dependencies: + bytes: 3.1.2 + + /@poppinss/hooks/6.0.2-0: + resolution: + { + integrity: sha512-mG0hnQlxgflvxyM6t/XO8z/FwotsYRXPhtLZ3cz3iyk4t8xaNtOihSANBcvqdkxZCtGBvotNIf/GnES9hvlfSQ==, + } + dev: true + + /@poppinss/manager/5.0.2: + resolution: + { + integrity: sha512-c5F3EKztq/iw0J+BfNu5rSI5/ji+kjts4rJaC/VvIzpTWzbRorb7UR9J32T8cLtTwjNHbmxk3BAU402lvL2JFA==, + } + + /@poppinss/matchit/3.1.2: + resolution: + { + integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==, + } + dependencies: + '@arr/every': 1.0.1 + + /@poppinss/multiparty/2.0.1: + resolution: + { + integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==, + } + dependencies: + http-errors: 2.0.0 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + + /@poppinss/prompts/2.0.2: + resolution: + { + integrity: sha512-jTrE8U5rnHTZNpBvPauFVDMQZZuEnfABbJUEXfq0uu8oGJnPaaA+y0bQbyqVf4yWqgRGldgrzAwNz739hIEnPQ==, + } + dependencies: + '@poppinss/colors': 3.0.3 + enquirer: 2.3.6 + + /@poppinss/utils/4.0.4: + resolution: + { + integrity: sha512-6LS3mofSVB9IQZqofA4rX6KVVcCpdwUQuNe4efHqOTzgD/Q5HTVvDP0vKg1m994QlzJs4aLW1JwXVcNCThEh4g==, + } + dependencies: + '@poppinss/file-generator': 1.0.2 + '@types/bytes': 3.1.1 + '@types/he': 1.2.0 + bytes: 3.1.2 + change-case: 4.1.2 + cuid: 2.1.8 + flattie: 1.1.0 + fs-readdir-recursive: 1.1.0 + he: 1.2.0 + kind-of: 6.0.3 + lodash: 4.17.21 + ms: 2.1.3 + pluralize: 8.0.0 + require-all: 3.0.0 + resolve-from: 5.0.0 + slugify: 1.6.6 + truncatise: 0.0.8 + + /@poppinss/utils/5.0.0: + resolution: + { + integrity: sha512-SpJL5p4Nx3bRCpCf62KagZLUHLvJD+VDylGpXAeP2G5qb3s6SSOBlpaFmer4GxdyTqLIUt0PRCzF1TbpNU+qZw==, + } + dependencies: + '@poppinss/file-generator': 1.0.2 + '@types/bytes': 3.1.1 + '@types/he': 1.2.0 + bytes: 3.1.2 + change-case: 4.1.2 + cuid: 2.1.8 + flattie: 1.1.0 + fs-readdir-recursive: 1.1.0 + he: 1.2.0 + kind-of: 6.0.3 + lodash: 4.17.21 + ms: 2.1.3 + pluralize: 8.0.0 + require-all: 3.0.0 + resolve-from: 5.0.0 + slugify: 1.6.6 + truncatise: 0.0.8 + + /@sinclair/typebox/0.25.24: + resolution: + { + integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==, + } + dev: true + + /@tokenizer/token/0.3.0: + resolution: + { + integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==, + } + + /@types/bytes/3.1.1: + resolution: + { + integrity: sha512-lOGyCnw+2JVPKU3wIV0srU0NyALwTBJlVSx5DfMQOFuuohA8y9S8orImpuIQikZ0uIQ8gehrRjxgQC1rLRi11w==, + } + + /@types/chai/4.3.5: + resolution: + { + integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==, + } + dev: true + + /@types/cookiejar/2.1.2: + resolution: + { + integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==, + } + dev: true + + /@types/fs-extra/9.0.13: + resolution: + { + integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==, + } + dependencies: + '@types/node': 20.1.5 + + /@types/glob/7.2.0: + resolution: + { + integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, + } + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.1.5 + dev: true + + /@types/he/1.2.0: + resolution: + { + integrity: sha512-uH2smqTN4uGReAiKedIVzoLUAXIYLBTbSofhx3hbNqj74Ua6KqFsLYszduTrLCMEAEAozF73DbGi/SC1bzQq4g==, + } + + /@types/istanbul-lib-coverage/2.0.4: + resolution: + { + integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, + } + dev: true + + /@types/istanbul-lib-report/3.0.0: + resolution: + { + integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, + } + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports/1.1.2: + resolution: + { + integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==, + } + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/json-schema/7.0.11: + resolution: + { + integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, + } + dev: true + + /@types/luxon/3.3.0: + resolution: + { + integrity: sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==, + } + + /@types/minimatch/5.1.2: + resolution: + { + integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==, + } + dev: true + + /@types/node/20.1.5: + resolution: + { + integrity: sha512-IvGD1CD/nego63ySR7vrAKEX3AJTcmrAN2kn+/sDNLi1Ff5kBzDeEdqWDplK+0HAEoLYej137Sk0cUU8OLOlMg==, + } + + /@types/pino-pretty/5.0.0: + resolution: + { + integrity: sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==, + } + deprecated: This is a stub types definition. pino-pretty provides its own type definitions, so you do not need this installed. + dependencies: + pino-pretty: 10.0.0 + + /@types/pino-std-serializers/4.0.0: + resolution: + { + integrity: sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==, + } + deprecated: This is a stub types definition. pino-std-serializers provides its own type definitions, so you do not need this installed. + dependencies: + pino-std-serializers: 6.2.1 + + /@types/pino/6.3.12: + resolution: + { + integrity: sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==, + } + dependencies: + '@types/node': 20.1.5 + '@types/pino-pretty': 5.0.0 + '@types/pino-std-serializers': 4.0.0 + sonic-boom: 2.8.0 + + /@types/proxy-addr/2.0.0: + resolution: + { + integrity: sha512-JEm0kSrO3CjbFSLpYeYhCscS0vpW1mIWedhWuurJnYbMzY1vcm9fzJ6TL6SWq3m/m3g4KUV5JBT69mQSwUHZHg==, + } + dependencies: + '@types/node': 20.1.5 + dev: true + + /@types/semver/7.5.0: + resolution: + { + integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==, + } + dev: true + + /@types/source-map-support/0.5.6: + resolution: + { + integrity: sha512-b2nJ9YyXmkhGaa2b8VLM0kJ04xxwNyijcq12/kDoomCt43qbHBeK2SLNJ9iJmETaAj+bKUT05PQUu3Q66GvLhQ==, + } + dependencies: + source-map: 0.6.1 + dev: true + + /@types/superagent/4.1.17: + resolution: + { + integrity: sha512-FFK/rRjNy24U6J1BvQkaNWu2ohOIF/kxRQXRsbT141YQODcOcZjzlcc4DGdI2SkTa0rhmF+X14zu6ICjCGIg+w==, + } + dependencies: + '@types/cookiejar': 2.1.2 + '@types/node': 20.1.5 + dev: true + + /@types/validator/13.7.17: + resolution: + { + integrity: sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==, + } + + /@types/yargs-parser/21.0.0: + resolution: + { + integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, + } + dev: true + + /@types/yargs/15.0.15: + resolution: + { + integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==, + } + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin/5.59.6_2iyznatrp4qg6fy2yxest3ek2y: + resolution: + { + integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.59.6_3kupndsc2vwfhayt5vgixvikbu + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/type-utils': 5.59.6_3kupndsc2vwfhayt5vgixvikbu + '@typescript-eslint/utils': 5.59.6_3kupndsc2vwfhayt5vgixvikbu + debug: 4.3.4 + eslint: 8.40.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.1 + tsutils: 3.21.0_typescript@4.6.4 + typescript: 4.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.59.6_3kupndsc2vwfhayt5vgixvikbu: + resolution: + { + integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.6.4 + debug: 4.3.4 + eslint: 8.40.0 + typescript: 4.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.59.6: + resolution: + { + integrity: sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 + dev: true + + /@typescript-eslint/type-utils/5.59.6_3kupndsc2vwfhayt5vgixvikbu: + resolution: + { + integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.6.4 + '@typescript-eslint/utils': 5.59.6_3kupndsc2vwfhayt5vgixvikbu + debug: 4.3.4 + eslint: 8.40.0 + tsutils: 3.21.0_typescript@4.6.4 + typescript: 4.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.59.6: + resolution: + { + integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@typescript-eslint/typescript-estree/5.59.6_typescript@4.6.4: + resolution: + { + integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0_typescript@4.6.4 + typescript: 4.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.59.6_3kupndsc2vwfhayt5vgixvikbu: + resolution: + { + integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0_eslint@8.40.0 + '@types/json-schema': 7.0.11 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.6.4 + eslint: 8.40.0 + eslint-scope: 5.1.1 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.59.6: + resolution: + { + integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + '@typescript-eslint/types': 5.59.6 + eslint-visitor-keys: 3.4.1 + dev: true + + /abort-controller/3.0.0: + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: '>=6.5' } + dependencies: + event-target-shim: 5.0.1 + + /abstract-logging/2.0.1: + resolution: + { + integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==, + } + + /accepts/1.3.8: + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, + } + engines: { node: '>= 0.6' } + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + /acorn-jsx/5.3.2_acorn@8.8.2: + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: true + + /acorn/8.8.2: + resolution: + { + integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, + } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /adonis-preset-ts/2.1.0: + resolution: + { + integrity: sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w==, + } + dev: true + + /aggregate-error/3.1.0: + resolution: + { + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, + } + engines: { node: '>=8' } + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv/6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-colors/4.1.3: + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + } + engines: { node: '>=6' } + + /ansi-escapes/4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: '>=8' } + dependencies: + type-fest: 0.21.3 + + /ansi-escapes/6.2.0_typescript@4.6.4: + resolution: + { + integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==, + } + engines: { node: '>=14.16' } + dependencies: + type-fest: 3.10.0_typescript@4.6.4 + transitivePeerDependencies: + - typescript + dev: true + + /ansi-regex/2.1.1: + resolution: + { + integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /ansi-regex/5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: '>=8' } + + /ansi-styles/2.2.1: + resolution: + { + integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /ansi-styles/4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: '>=8' } + dependencies: + color-convert: 2.0.1 + + /ansi-styles/5.2.0: + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: '>=10' } + dev: true + + /ansicolors/0.3.2: + resolution: + { + integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==, + } + dev: true + + /anymatch/3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: '>= 8' } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /api-contract-validator/2.2.8: + resolution: + { + integrity: sha512-YM3rMcrIp8Thf/WWbVBXBGX793Mm3Phw2pn3VbJpiZkpeTCTtF10huKPrzQ2gSIaK5GjAhTRJMAOyf+rsS7MAw==, + } + engines: { node: '>=8' } + dependencies: + api-schema-builder: 2.0.11 + chalk: 3.0.0 + columnify: 1.6.0 + jest-diff: 25.5.0 + jest-matcher-utils: 25.5.0 + lodash.flatten: 4.4.0 + lodash.get: 4.4.2 + lodash.set: 4.3.2 + uri-js: 4.4.1 + transitivePeerDependencies: + - openapi-types + dev: true + + /api-schema-builder/2.0.11: + resolution: + { + integrity: sha512-85zbwf8MtPWodhfnmQRW5YD/fuGR12FP+8TbcYai5wbRnoUmPYLftLSbp7NB6zQMPb61Gjz+ApPUSyTdcCos7g==, + } + engines: { node: '>=8' } + dependencies: + ajv: 6.12.6 + clone-deep: 4.0.1 + decimal.js: 10.4.3 + js-yaml: 3.14.1 + json-schema-deref-sync: 0.14.0 + lodash.get: 4.4.2 + openapi-schema-validator: 3.0.3 + swagger-parser: 10.0.3 + transitivePeerDependencies: + - openapi-types + dev: true + + /argparse/1.0.10: + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + } + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse/2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + dev: true + + /arr-diff/4.0.0: + resolution: + { + integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /arr-flatten/1.1.0: + resolution: + { + integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /arr-union/3.1.0: + resolution: + { + integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==, + } + engines: { node: '>=0.10.0' } + dev: true + + /array-union/1.0.2: + resolution: + { + integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==, + } + engines: { node: '>=0.10.0' } + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-union/2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: '>=8' } + dev: true + + /array-uniq/1.0.3: + resolution: + { + integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==, + } + engines: { node: '>=0.10.0' } + dev: true + + /array-unique/0.3.2: + resolution: + { + integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /arrify/2.0.1: + resolution: + { + integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, + } + engines: { node: '>=8' } + dev: true + + /as-table/1.0.55: + resolution: + { + integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==, + } + dependencies: + printable-characters: 1.0.42 + dev: true + + /asap/2.0.6: + resolution: + { + integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, + } + dev: true + + /assertion-error/1.1.0: + resolution: + { + integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, + } + dev: true + + /assign-symbols/1.0.0: + resolution: + { + integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==, + } + engines: { node: '>=0.10.0' } + dev: true + + /astral-regex/2.0.0: + resolution: + { + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, + } + engines: { node: '>=8' } + + /async-retry/1.3.3: + resolution: + { + integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==, + } + dependencies: + retry: 0.13.1 + dev: true + + /asynckit/0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + dev: true + + /atob/2.1.2: + resolution: + { + integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==, + } + engines: { node: '>= 4.5.0' } + hasBin: true + dev: true + + /atomic-sleep/1.0.0: + resolution: + { + integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==, + } + engines: { node: '>=8.0.0' } + + /babel-code-frame/6.26.0: + resolution: + { + integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==, + } + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + dev: true + + /balanced-match/1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + /base/0.11.2: + resolution: + { + integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==, + } + engines: { node: '>=0.10.0' } + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /base64-js/1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } + + /binary-extensions/2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: '>=8' } + dev: true + + /brace-expansion/1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } + dependencies: + balanced-match: 1.0.2 + + /braces/2.3.2: + resolution: + { + integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==, + } + engines: { node: '>=0.10.0' } + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: '>=8' } + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-from/1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + + /buffer/6.0.3: + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, + } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /builtin-modules/3.3.0: + resolution: + { + integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, + } + engines: { node: '>=6' } + dev: true + + /builtins/1.0.3: + resolution: + { + integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==, + } + dev: true + + /bytes/3.1.2: + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: '>= 0.8' } + + /cache-base/1.0.1: + resolution: + { + integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /call-bind/1.0.2: + resolution: + { + integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, + } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + + /call-me-maybe/1.0.2: + resolution: + { + integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==, + } + dev: true + + /callsites/3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: '>=6' } + dev: true + + /camel-case/4.1.2: + resolution: + { + integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, + } + dependencies: + pascal-case: 3.1.2 + tslib: 2.5.0 + + /capital-case/1.0.4: + resolution: + { + integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + upper-case-first: 2.0.2 + + /cardinal/2.1.1: + resolution: + { + integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==, + } + hasBin: true + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 + dev: true + + /chai/4.3.7: + resolution: + { + integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==, + } + engines: { node: '>=4' } + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk/1.1.3: + resolution: + { + integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==, + } + engines: { node: '>=0.10.0' } + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/3.0.0: + resolution: + { + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + } + engines: { node: '>=8' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/5.2.0: + resolution: + { + integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==, + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + dev: true + + /change-case/4.1.2: + resolution: + { + integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==, + } + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.5.0 + + /charenc/0.0.2: + resolution: + { + integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==, + } + dev: true + + /check-error/1.0.2: + resolution: + { + integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==, + } + dev: true + + /chokidar/3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: '>= 8.10.0' } + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /class-utils/0.3.6: + resolution: + { + integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==, + } + engines: { node: '>=0.10.0' } + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /clean-stack/2.2.0: + resolution: + { + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, + } + engines: { node: '>=6' } + dev: true + + /cli-boxes/3.0.0: + resolution: + { + integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==, + } + engines: { node: '>=10' } + + /cli-cursor/3.1.0: + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + } + engines: { node: '>=8' } + dependencies: + restore-cursor: 3.1.0 + + /cli-table3/0.6.3: + resolution: + { + integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==, + } + engines: { node: 10.* || >= 12.* } + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + /clone-deep/4.0.1: + resolution: + { + integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, + } + engines: { node: '>=6' } + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone/1.0.4: + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + } + engines: { node: '>=0.8' } + dev: true + + /clone/2.1.2: + resolution: + { + integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, + } + engines: { node: '>=0.8' } + dev: true + + /co-compose/7.0.3: + resolution: + { + integrity: sha512-ZHLSLzeBXe5yaEyIHo9T92uVrbsBRLMXlG0G4/pSm9f6148l4mJTr1cii8Jl9ce+mbLmW5XqHURPC7gZFJNeZA==, + } + + /collection-visit/1.0.0: + resolution: + { + integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==, + } + engines: { node: '>=0.10.0' } + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert/2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: '>=7.0.0' } + dependencies: + color-name: 1.1.4 + + /color-name/1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + /color-support/1.1.3: + resolution: + { + integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, + } + hasBin: true + + /colorette/2.0.20: + resolution: + { + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, + } + + /columnify/1.6.0: + resolution: + { + integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, + } + engines: { node: '>=8.0.0' } + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /combined-stream/1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: '>= 0.8' } + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.20.3: + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } + dev: true + + /commander/9.5.0: + resolution: + { + integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==, + } + engines: { node: ^12.20.0 || >=14 } + requiresBuild: true + dev: true + optional: true + + /comment-json/2.4.2: + resolution: + { + integrity: sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==, + } + engines: { node: '>= 6' } + dependencies: + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + dev: true + + /commondir/1.0.1: + resolution: + { + integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, + } + dev: true + + /component-emitter/1.3.0: + resolution: + { + integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==, + } + dev: true + + /concat-map/0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + dev: true + + /constant-case/3.0.4: + resolution: + { + integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + upper-case: 2.0.2 + + /content-disposition/0.5.4: + resolution: + { + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, + } + engines: { node: '>= 0.6' } + dependencies: + safe-buffer: 5.2.1 + + /convert-hrtime/3.0.0: + resolution: + { + integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==, + } + engines: { node: '>=8' } + dev: true + + /cookie/0.5.0: + resolution: + { + integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==, + } + engines: { node: '>= 0.6' } + + /cookiejar/2.1.4: + resolution: + { + integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==, + } + dev: true + + /copy-descriptor/0.1.1: + resolution: + { + integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==, + } + engines: { node: '>=0.10.0' } + dev: true + + /core-util-is/1.0.3: + resolution: + { + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, + } + dev: true + + /cp-file/7.0.0: + resolution: + { + integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==, + } + engines: { node: '>=8' } + dependencies: + graceful-fs: 4.2.11 + make-dir: 3.1.0 + nested-error-stacks: 2.1.1 + p-event: 4.2.0 + dev: true + + /cp-file/9.1.0: + resolution: + { + integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==, + } + engines: { node: '>=10' } + dependencies: + graceful-fs: 4.2.11 + make-dir: 3.1.0 + nested-error-stacks: 2.1.1 + p-event: 4.2.0 + dev: true + + /cpy/8.1.2: + resolution: + { + integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==, + } + engines: { node: '>=8' } + dependencies: + arrify: 2.0.1 + cp-file: 7.0.0 + globby: 9.2.0 + has-glob: 1.0.0 + junk: 3.1.0 + nested-error-stacks: 2.1.1 + p-all: 2.1.0 + p-filter: 2.1.0 + p-map: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /cross-spawn/7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: '>= 8' } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypt/0.0.2: + resolution: + { + integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==, + } + dev: true + + /cuid/2.1.8: + resolution: + { + integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==, + } + deprecated: Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead. + + /dag-map/1.0.2: + resolution: + { + integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==, + } + dev: true + + /data-uri-to-buffer/2.0.2: + resolution: + { + integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==, + } + dev: true + + /dateformat/4.6.3: + resolution: + { + integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==, + } + + /debug/2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug/4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js/10.4.3: + resolution: + { + integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==, + } + dev: true + + /decode-uri-component/0.2.2: + resolution: + { + integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==, + } + engines: { node: '>=0.10' } + dev: true + + /deep-eql/4.1.3: + resolution: + { + integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==, + } + engines: { node: '>=6' } + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-extend/0.6.0: + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, + } + engines: { node: '>=4.0.0' } + dev: true + + /deep-is/0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + dev: true + + /defaults/1.0.4: + resolution: + { + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + } + dependencies: + clone: 1.0.4 + dev: true + + /define-lazy-prop/2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + } + engines: { node: '>=8' } + dev: true + + /define-property/0.2.5: + resolution: + { + integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property/1.0.0: + resolution: + { + integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property/2.0.2: + resolution: + { + integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /delayed-stream/1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: '>=0.4.0' } + dev: true + + /depd/2.0.0: + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: '>= 0.8' } + + /destroy/1.2.0: + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + + /detect-indent/6.1.0: + resolution: + { + integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, + } + engines: { node: '>=8' } + dev: true + + /dezalgo/1.0.4: + resolution: + { + integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==, + } + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + dev: true + + /diff-sequences/25.2.6: + resolution: + { + integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==, + } + engines: { node: '>= 8.3' } + dev: true + + /diff-sequences/29.4.3: + resolution: + { + integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dev: true + + /dir-glob/2.2.2: + resolution: + { + integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==, + } + engines: { node: '>=4' } + dependencies: + path-type: 3.0.0 + dev: true + + /dir-glob/3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: '>=8' } + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine/3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: '>=6.0.0' } + dependencies: + esutils: 2.0.3 + dev: true + + /dot-case/3.0.4: + resolution: + { + integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + + /dotenv/16.0.3: + resolution: + { + integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==, + } + engines: { node: '>=12' } + + /editorconfig/0.15.3: + resolution: + { + integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==, + } + hasBin: true + dependencies: + commander: 2.20.3 + lru-cache: 4.1.5 + semver: 5.7.1 + sigmund: 1.0.1 + dev: true + + /ee-first/1.1.1: + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + } + + /emittery/0.10.2: + resolution: + { + integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==, + } + engines: { node: '>=12' } + + /emittery/0.13.1: + resolution: + { + integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, + } + engines: { node: '>=12' } + dev: true + + /emoji-regex/8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } + + /encodeurl/1.0.2: + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + } + engines: { node: '>= 0.8' } + + /end-of-stream/1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + } + dependencies: + once: 1.4.0 + + /enquirer/2.3.6: + resolution: + { + integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, + } + engines: { node: '>=8.6' } + dependencies: + ansi-colors: 4.1.3 + + /escape-goat/2.1.1: + resolution: + { + integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==, + } + engines: { node: '>=8' } + + /escape-html/1.0.3: + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + } + + /escape-string-regexp/1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: '>=0.8.0' } + dev: true + + /escape-string-regexp/4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: '>=10' } + dev: true + + /eslint-config-prettier/8.8.0_eslint@8.40.0: + resolution: + { + integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==, + } + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.40.0 + dev: true + + /eslint-plugin-adonis/2.1.1_3kupndsc2vwfhayt5vgixvikbu: + resolution: + { + integrity: sha512-iC3eZXofK4q+KOGypiquT74amCpeqW+5K5WZ7pezUvrXgmFkZMn7MSQjAg44KVzq6pQdXFuRNlnS+ijcwx0AMw==, + } + engines: { node: '>=10.0.0' } + peerDependencies: + eslint: ^8.0.0 + dependencies: + '@typescript-eslint/eslint-plugin': 5.59.6_2iyznatrp4qg6fy2yxest3ek2y + '@typescript-eslint/parser': 5.59.6_3kupndsc2vwfhayt5vgixvikbu + eslint: 8.40.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-prettier/4.2.1_mnhdxnhvwtt24ndv5d2pwtkrna: + resolution: + { + integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==, + } + engines: { node: '>=12.0.0' } + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.40.0 + eslint-config-prettier: 8.8.0_eslint@8.40.0 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-scope/5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + } + engines: { node: '>=8.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.2.0: + resolution: + { + integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys/3.4.1: + resolution: + { + integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /eslint/8.40.0: + resolution: + { + integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0_eslint@8.40.0 + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.40.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.5.2: + resolution: + { + integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.4.1 + dev: true + + /esprima/4.0.1: + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: '>=4' } + hasBin: true + dev: true + + /esquery/1.5.0: + resolution: + { + integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, + } + engines: { node: '>=0.10' } + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: '>=4.0' } + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + } + engines: { node: '>=4.0' } + dev: true + + /estraverse/5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: '>=4.0' } + dev: true + + /esutils/2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: '>=0.10.0' } + dev: true + + /etag/1.8.1: + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: '>= 0.6' } + + /event-target-shim/5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: '>=6' } + + /events/3.3.0: + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + } + engines: { node: '>=0.8.x' } + + /execa/5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: '>=10' } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /expand-brackets/2.1.4: + resolution: + { + integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==, + } + engines: { node: '>=0.10.0' } + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend-shallow/2.0.1: + resolution: + { + integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow/3.0.2: + resolution: + { + integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==, + } + engines: { node: '>=0.10.0' } + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extend/3.0.2: + resolution: + { + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, + } + dev: true + + /extglob/2.0.4: + resolution: + { + integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==, + } + engines: { node: '>=0.10.0' } + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-copy/3.0.1: + resolution: + { + integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==, + } + + /fast-deep-equal/3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + dev: true + + /fast-diff/1.2.0: + resolution: + { + integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==, + } + dev: true + + /fast-glob/2.2.7: + resolution: + { + integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==, + } + engines: { node: '>=4.0.0' } + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.3 + merge2: 1.4.1 + micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-glob/3.2.12: + resolution: + { + integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==, + } + engines: { node: '>=8.6.0' } + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + dev: true + + /fast-levenshtein/2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + dev: true + + /fast-redact/3.2.0: + resolution: + { + integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==, + } + engines: { node: '>=6' } + + /fast-safe-stringify/2.1.1: + resolution: + { + integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==, + } + + /fastq/1.15.0: + resolution: + { + integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, + } + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache/6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.0.4 + dev: true + + /file-type/16.5.4: + resolution: + { + integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==, + } + engines: { node: '>=10' } + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 6.3.0 + token-types: 4.2.1 + + /fill-range/4.0.0: + resolution: + { + integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range/7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: '>=8' } + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-cache-dir/3.3.2: + resolution: + { + integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==, + } + engines: { node: '>=8' } + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-up/4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: '>=8' } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: '>=10' } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: + { + integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatstr/1.0.12: + resolution: + { + integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==, + } + + /flatted/3.2.7: + resolution: + { + integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, + } + dev: true + + /flattie/1.1.0: + resolution: + { + integrity: sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==, + } + engines: { node: '>=8' } + + /for-in/1.0.2: + resolution: + { + integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /form-data/4.0.0: + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + } + engines: { node: '>= 6' } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formidable/2.1.2: + resolution: + { + integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==, + } + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.11.2 + dev: true + + /forwarded/0.2.0: + resolution: + { + integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, + } + engines: { node: '>= 0.6' } + + /fragment-cache/0.2.1: + resolution: + { + integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==, + } + engines: { node: '>=0.10.0' } + dependencies: + map-cache: 0.2.2 + dev: true + + /fresh/0.5.2: + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + } + engines: { node: '>= 0.6' } + + /fs-extra/10.1.0: + resolution: + { + integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, + } + engines: { node: '>=12' } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + /fs-extra/11.1.1: + resolution: + { + integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, + } + engines: { node: '>=14.14' } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/8.1.0: + resolution: + { + integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, + } + engines: { node: '>=6 <7 || >=8' } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-monkey/1.0.3: + resolution: + { + integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==, + } + + /fs-readdir-recursive/1.1.0: + resolution: + { + integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==, + } + + /fs.realpath/1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + + /fsevents/2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } + + /get-func-name/2.0.0: + resolution: + { + integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==, + } + dev: true + + /get-intrinsic/1.2.1: + resolution: + { + integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==, + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + + /get-port/5.1.1: + resolution: + { + integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==, + } + engines: { node: '>=8' } + dev: true + + /get-source/2.0.12: + resolution: + { + integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==, + } + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + dev: true + + /get-stream/6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: '>=10' } + dev: true + + /get-value/2.0.6: + resolution: + { + integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /getopts/2.3.0: + resolution: + { + integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==, + } + + /glob-parent/3.1.0: + resolution: + { + integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==, + } + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + + /glob-parent/5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: '>= 6' } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent/6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: '>=10.13.0' } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp/0.3.0: + resolution: + { + integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==, + } + dev: true + + /glob/7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/8.1.0: + resolution: + { + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + } + engines: { node: '>=12' } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + /globals/13.20.0: + resolution: + { + integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, + } + engines: { node: '>=8' } + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: '>=10' } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby/9.2.0: + resolution: + { + integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==, + } + engines: { node: '>=6' } + dependencies: + '@types/glob': 7.2.0 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.2.3 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /graceful-fs/4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + + /grapheme-splitter/1.0.4: + resolution: + { + integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, + } + dev: true + + /has-ansi/2.0.0: + resolution: + { + integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, + } + engines: { node: '>=0.10.0' } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-flag/4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: '>=8' } + + /has-glob/1.0.0: + resolution: + { + integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-glob: 3.1.0 + dev: true + + /has-own-prop/2.0.0: + resolution: + { + integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==, + } + engines: { node: '>=8' } + dev: true + + /has-proto/1.0.1: + resolution: + { + integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, + } + engines: { node: '>= 0.4' } + + /has-symbols/1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + } + engines: { node: '>= 0.4' } + + /has-value/0.3.1: + resolution: + { + integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==, + } + engines: { node: '>=0.10.0' } + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value/1.0.0: + resolution: + { + integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==, + } + engines: { node: '>=0.10.0' } + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values/0.1.4: + resolution: + { + integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /has-values/1.0.0: + resolution: + { + integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /has-yarn/2.1.0: + resolution: + { + integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==, + } + engines: { node: '>=8' } + dev: true + + /has/1.0.3: + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: '>= 0.4.0' } + dependencies: + function-bind: 1.1.1 + + /haye/3.0.0: + resolution: + { + integrity: sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ==, + } + + /he/1.2.0: + resolution: + { + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + } + hasBin: true + + /header-case/2.0.4: + resolution: + { + integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==, + } + dependencies: + capital-case: 1.0.4 + tslib: 2.5.0 + + /help-me/4.2.0: + resolution: + { + integrity: sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==, + } + dependencies: + glob: 8.1.0 + readable-stream: 3.6.2 + + /hexoid/1.0.0: + resolution: + { + integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==, + } + engines: { node: '>=8' } + dev: true + + /http-errors/2.0.0: + resolution: + { + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, + } + engines: { node: '>= 0.8' } + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + /human-signals/2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: '>=10.17.0' } + dev: true + + /iconv-lite/0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: '>=0.10.0' } + dependencies: + safer-buffer: 2.1.2 + + /ieee754/1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } + + /ignore/4.0.6: + resolution: + { + integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==, + } + engines: { node: '>= 4' } + dev: true + + /ignore/5.2.4: + resolution: + { + integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, + } + engines: { node: '>= 4' } + dev: true + + /import-fresh/3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + } + engines: { node: '>=6' } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: '>=0.8.19' } + dev: true + + /inclusion/1.0.1: + resolution: + { + integrity: sha512-TRicJXpIfJN+a47xxjs5nfy2V5l413e4aAtsLYRG+OsDM3A3uloBd/+fDmj23RVuIL9VQfwtb37iIc0rtMw9KA==, + } + dependencies: + parent-module: 2.0.0 + dev: true + + /indent-string/4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: '>=8' } + dev: true + + /inflation/2.0.0: + resolution: + { + integrity: sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==, + } + engines: { node: '>= 0.8.0' } + + /inflight/1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + /ini/1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + } + dev: true + + /ipaddr.js/1.9.1: + resolution: + { + integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, + } + engines: { node: '>= 0.10' } + + /is-accessor-descriptor/0.1.6: + resolution: + { + integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor/1.0.0: + resolution: + { + integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 6.0.3 + dev: true + + /is-binary-path/2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: '>=8' } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-buffer/1.1.6: + resolution: + { + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, + } + dev: true + + /is-data-descriptor/0.1.4: + resolution: + { + integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor/1.0.0: + resolution: + { + integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 6.0.3 + dev: true + + /is-descriptor/0.1.6: + resolution: + { + integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor/1.0.2: + resolution: + { + integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-docker/2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: '>=8' } + hasBin: true + dev: true + + /is-extendable/0.1.1: + resolution: + { + integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, + } + engines: { node: '>=0.10.0' } + dev: true + + /is-extendable/1.0.1: + resolution: + { + integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob/1.0.0: + resolution: + { + integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==, + } + engines: { node: '>=0.10.0' } + dev: true + + /is-extglob/2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: '>=8' } + + /is-glob/2.0.1: + resolution: + { + integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 1.0.0 + dev: true + + /is-glob/3.1.0: + resolution: + { + integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-glob/4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-invalid-path/0.1.0: + resolution: + { + integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-glob: 2.0.1 + dev: true + + /is-number/3.0.0: + resolution: + { + integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number/7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: '>=0.12.0' } + dev: true + + /is-path-inside/3.0.3: + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + } + engines: { node: '>=8' } + dev: true + + /is-plain-object/2.0.4: + resolution: + { + integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, + } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream/2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: '>=8' } + dev: true + + /is-valid-path/0.1.1: + resolution: + { + integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-invalid-path: 0.1.0 + dev: true + + /is-windows/1.0.2: + resolution: + { + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /is-wsl/2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: '>=8' } + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray/1.0.0: + resolution: + { + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + } + dev: true + + /isexe/2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + dev: true + + /isobject/2.1.0: + resolution: + { + integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==, + } + engines: { node: '>=0.10.0' } + dependencies: + isarray: 1.0.0 + dev: true + + /isobject/3.0.1: + resolution: + { + integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /jest-diff/25.5.0: + resolution: + { + integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==, + } + engines: { node: '>= 8.3' } + dependencies: + chalk: 3.0.0 + diff-sequences: 25.2.6 + jest-get-type: 25.2.6 + pretty-format: 25.5.0 + dev: true + + /jest-diff/29.5.0: + resolution: + { + integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-get-type/25.2.6: + resolution: + { + integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==, + } + engines: { node: '>= 8.3' } + dev: true + + /jest-get-type/29.4.3: + resolution: + { + integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dev: true + + /jest-matcher-utils/25.5.0: + resolution: + { + integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==, + } + engines: { node: '>= 8.3' } + dependencies: + chalk: 3.0.0 + jest-diff: 25.5.0 + jest-get-type: 25.2.6 + pretty-format: 25.5.0 + dev: true + + /jest-worker/27.5.1: + resolution: + { + integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, + } + engines: { node: '>= 10.13.0' } + dependencies: + '@types/node': 20.1.5 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /joycon/3.1.1: + resolution: + { + integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + } + engines: { node: '>=10' } + + /js-sdsl/4.4.0: + resolution: + { + integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==, + } + dev: true + + /js-tokens/3.0.2: + resolution: + { + integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==, + } + dev: true + + /js-yaml/3.14.1: + resolution: + { + integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, + } + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml/4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-schema-deref-sync/0.14.0: + resolution: + { + integrity: sha512-yGR1xmhdiD6R0MSrwWcFxQzAj5b3i5Gb/mt5tvQKgFMMeNe0KZYNEN/jWr7G+xn39Azqgcvk4ZKMs8dQl8e4wA==, + } + engines: { node: '>=6.0.0' } + dependencies: + clone: 2.1.2 + dag-map: 1.0.2 + is-valid-path: 0.1.1 + lodash: 4.17.21 + md5: 2.2.1 + memory-cache: 0.2.0 + traverse: 0.6.7 + valid-url: 1.0.9 + dev: true + + /json-schema-traverse/0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + dev: true + + /jsonfile/4.0.0: + resolution: + { + integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, + } + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile/6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + } + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + /junk/3.1.0: + resolution: + { + integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==, + } + engines: { node: '>=8' } + dev: true + + /kind-of/3.2.2: + resolution: + { + integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/4.0.0: + resolution: + { + integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/5.1.0: + resolution: + { + integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==, + } + engines: { node: '>=0.10.0' } + dev: true + + /kind-of/6.0.3: + resolution: + { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + } + engines: { node: '>=0.10.0' } + + /kleur/3.0.3: + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + } + engines: { node: '>=6' } + dev: true + + /kleur/4.1.5: + resolution: + { + integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, + } + engines: { node: '>=6' } + + /leven/3.1.0: + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + } + engines: { node: '>=6' } + + /levn/0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /listify/1.0.3: + resolution: + { + integrity: sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg==, + } + engines: { node: '>= 0.4' } + dev: true + + /locate-path/5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: '>=8' } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: '>=10' } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.flatten/4.4.0: + resolution: + { + integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==, + } + dev: true + + /lodash.get/4.4.2: + resolution: + { + integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==, + } + dev: true + + /lodash.isequal/4.5.0: + resolution: + { + integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==, + } + dev: true + + /lodash.merge/4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + dev: true + + /lodash.set/4.3.2: + resolution: + { + integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==, + } + dev: true + + /lodash/4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + + /log-update/4.0.0: + resolution: + { + integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==, + } + engines: { node: '>=10' } + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + + /loupe/2.3.6: + resolution: + { + integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==, + } + dependencies: + get-func-name: 2.0.0 + dev: true + + /lower-case/2.0.2: + resolution: + { + integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, + } + dependencies: + tslib: 2.5.0 + + /lru-cache/4.1.5: + resolution: + { + integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==, + } + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache/6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: '>=10' } + dependencies: + yallist: 4.0.0 + + /luxon/3.3.0: + resolution: + { + integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==, + } + engines: { node: '>=12' } + + /macroable/7.0.2: + resolution: + { + integrity: sha512-QS9p+Q20YBxpE0dJBnF6CPURP7p1GUsxnhTxTWH5nG3A1F5w8Rg3T4Xyh5UlrFSbHp88oOciVP/0agsNLhkHdQ==, + } + + /make-dir/3.1.0: + resolution: + { + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, + } + engines: { node: '>=8' } + dependencies: + semver: 6.3.0 + dev: true + + /map-age-cleaner/0.1.3: + resolution: + { + integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==, + } + engines: { node: '>=6' } + dependencies: + p-defer: 1.0.0 + dev: true + + /map-cache/0.2.2: + resolution: + { + integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /map-visit/1.0.0: + resolution: + { + integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==, + } + engines: { node: '>=0.10.0' } + dependencies: + object-visit: 1.0.1 + dev: true + + /marked-terminal/5.2.0_o5carvqiv27h4a4opantq2yvom: + resolution: + { + integrity: sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==, + } + engines: { node: '>=14.13.1 || >=16.0.0' } + peerDependencies: + marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + ansi-escapes: 6.2.0_typescript@4.6.4 + cardinal: 2.1.1 + chalk: 5.2.0 + cli-table3: 0.6.3 + marked: 4.3.0 + node-emoji: 1.11.0 + supports-hyperlinks: 2.3.0 + transitivePeerDependencies: + - typescript + dev: true + + /marked/4.3.0: + resolution: + { + integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, + } + engines: { node: '>= 12' } + hasBin: true + dev: true + + /md5/2.2.1: + resolution: + { + integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==, + } + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + dev: true + + /media-typer/0.3.0: + resolution: + { + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + } + engines: { node: '>= 0.6' } + + /media-typer/1.1.0: + resolution: + { + integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==, + } + engines: { node: '>= 0.8' } + + /mem/8.1.1: + resolution: + { + integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==, + } + engines: { node: '>=10' } + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + dev: true + + /memfs/3.5.1: + resolution: + { + integrity: sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==, + } + engines: { node: '>= 4.0.0' } + dependencies: + fs-monkey: 1.0.3 + + /memory-cache/0.2.0: + resolution: + { + integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==, + } + dev: true + + /merge-stream/2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + + /merge2/1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: '>= 8' } + dev: true + + /methods/1.1.2: + resolution: + { + integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, + } + engines: { node: '>= 0.6' } + dev: true + + /micromatch/3.1.10: + resolution: + { + integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==, + } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: '>=8.6' } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: '>= 0.6' } + + /mime-types/2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.52.0 + + /mime/1.6.0: + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + } + engines: { node: '>=4' } + hasBin: true + + /mime/2.6.0: + resolution: + { + integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, + } + engines: { node: '>=4.0.0' } + hasBin: true + dev: true + + /mimic-fn/2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: '>=6' } + + /mimic-fn/3.1.0: + resolution: + { + integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==, + } + engines: { node: '>=8' } + dev: true + + /minimatch/3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.6: + resolution: + { + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + } + engines: { node: '>=10' } + dependencies: + brace-expansion: 2.0.1 + + /minimist/1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + + /mixin-deep/1.3.2: + resolution: + { + integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==, + } + engines: { node: '>=0.10.0' } + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mrm-core/7.1.13: + resolution: + { + integrity: sha512-+AlsNuryLYw9HWqf+HBcNXULiwBEfcmb2VDccvYyg71x25bC8nJOn0YJA13x1PUUEF0aEbc5RTfqa6weMtRHaw==, + } + engines: { node: '>=10.13' } + dependencies: + babel-code-frame: 6.26.0 + comment-json: 2.4.2 + detect-indent: 6.1.0 + editorconfig: 0.15.3 + find-up: 4.1.0 + fs-extra: 8.1.0 + kleur: 3.0.3 + listify: 1.0.3 + lodash: 4.17.21 + minimist: 1.2.8 + prop-ini: 0.0.2 + rc: 1.2.8 + readme-badger: 0.3.0 + semver: 6.3.0 + smpltmpl: 1.0.2 + split-lines: 2.1.0 + strip-bom: 4.0.0 + validate-npm-package-name: 3.0.0 + webpack-merge: 4.2.2 + yaml: 2.2.2 + dev: true + + /ms/2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } + + /ms/2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + dev: true + + /ms/2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + /mustache/4.2.0: + resolution: + { + integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==, + } + hasBin: true + + /nanomatch/1.2.13: + resolution: + { + integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==, + } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /natural-compare-lite/1.4.0: + resolution: + { + integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, + } + dev: true + + /natural-compare/1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + dev: true + + /negotiator/0.6.3: + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: '>= 0.6' } + + /nested-error-stacks/2.1.1: + resolution: + { + integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==, + } + dev: true + + /no-case/3.0.4: + resolution: + { + integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, + } + dependencies: + lower-case: 2.0.2 + tslib: 2.5.0 + + /node-emoji/1.11.0: + resolution: + { + integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==, + } + dependencies: + lodash: 4.17.21 + dev: true + + /normalize-path/3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-url/6.1.0: + resolution: + { + integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==, + } + engines: { node: '>=10' } + + /npm-run-path/4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: '>=8' } + dependencies: + path-key: 3.1.1 + dev: true + + /object-copy/0.1.0: + resolution: + { + integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-inspect/1.12.3: + resolution: + { + integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, + } + + /object-visit/1.0.1: + resolution: + { + integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==, + } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /object.pick/1.3.0: + resolution: + { + integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /on-exit-leak-free/2.1.0: + resolution: + { + integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==, + } + + /on-finished/2.4.1: + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + } + engines: { node: '>= 0.8' } + dependencies: + ee-first: 1.1.1 + + /once/1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + dependencies: + wrappy: 1.0.2 + + /onetime/5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: '>=6' } + dependencies: + mimic-fn: 2.1.0 + + /open/8.4.2: + resolution: + { + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, + } + engines: { node: '>=12' } + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /openapi-schema-validator/3.0.3: + resolution: + { + integrity: sha512-KKpeNEvAmpy6B2JCfyrM4yWjL6vggDCVbBoR8Yfkj0Jltc6PCW+dBbcg+1yrTCuDv80qBQJ6w0ejA71DlOFegA==, + } + dependencies: + ajv: 6.12.6 + lodash.merge: 4.6.2 + openapi-types: 1.3.4 + swagger-schema-official: 2.0.0-bab6bed + dev: true + + /openapi-types/1.3.4: + resolution: + { + integrity: sha512-h8rADpW3k/wepLdERKF0VKMAPdoFYNQCLGPmc/f8sgQ2dxUy+7sY4WAX2XDUDjhKTjbJVbxxofLkzy7f1/tE4g==, + } + dev: true + + /optionator/0.9.1: + resolution: + { + integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, + } + engines: { node: '>= 0.8.0' } + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-all/2.1.0: + resolution: + { + integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==, + } + engines: { node: '>=6' } + dependencies: + p-map: 2.1.0 + dev: true + + /p-defer/1.0.0: + resolution: + { + integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==, + } + engines: { node: '>=4' } + dev: true + + /p-event/4.2.0: + resolution: + { + integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==, + } + engines: { node: '>=8' } + dependencies: + p-timeout: 3.2.0 + dev: true + + /p-filter/2.1.0: + resolution: + { + integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, + } + engines: { node: '>=8' } + dependencies: + p-map: 2.1.0 + dev: true + + /p-finally/1.0.0: + resolution: + { + integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, + } + engines: { node: '>=4' } + dev: true + + /p-limit/2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: '>=6' } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: '>=10' } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: '>=8' } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: '>=10' } + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map/2.1.0: + resolution: + { + integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, + } + engines: { node: '>=6' } + dev: true + + /p-map/3.0.0: + resolution: + { + integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==, + } + engines: { node: '>=8' } + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-timeout/3.2.0: + resolution: + { + integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, + } + engines: { node: '>=8' } + dependencies: + p-finally: 1.0.0 + dev: true + + /p-try/2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: '>=6' } + dev: true + + /param-case/3.0.4: + resolution: + { + integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, + } + dependencies: + dot-case: 3.0.4 + tslib: 2.5.0 + + /parent-module/1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: '>=6' } + dependencies: + callsites: 3.1.0 + dev: true + + /parent-module/2.0.0: + resolution: + { + integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==, + } + engines: { node: '>=8' } + dependencies: + callsites: 3.1.0 + dev: true + + /parseurl/1.3.3: + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + } + engines: { node: '>= 0.8' } + + /pascal-case/3.1.2: + resolution: + { + integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + + /pascalcase/0.1.1: + resolution: + { + integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==, + } + engines: { node: '>=0.10.0' } + dev: true + + /path-case/3.0.4: + resolution: + { + integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==, + } + dependencies: + dot-case: 3.0.4 + tslib: 2.5.0 + + /path-dirname/1.0.2: + resolution: + { + integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==, + } + dev: true + + /path-exists/4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: '>=8' } + dev: true + + /path-is-absolute/1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /path-key/3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: '>=8' } + dev: true + + /path-type/3.0.0: + resolution: + { + integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, + } + engines: { node: '>=4' } + dependencies: + pify: 3.0.0 + dev: true + + /path-type/4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: '>=8' } + dev: true + + /pathval/1.1.1: + resolution: + { + integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, + } + dev: true + + /peek-readable/4.1.0: + resolution: + { + integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==, + } + engines: { node: '>=8' } + + /picomatch/2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: '>=8.6' } + dev: true + + /pify/3.0.0: + resolution: + { + integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, + } + engines: { node: '>=4' } + dev: true + + /pify/4.0.1: + resolution: + { + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, + } + engines: { node: '>=6' } + dev: true + + /pino-abstract-transport/1.0.0: + resolution: + { + integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==, + } + dependencies: + readable-stream: 4.4.0 + split2: 4.2.0 + + /pino-pretty/10.0.0: + resolution: + { + integrity: sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q==, + } + hasBin: true + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.1 + fast-safe-stringify: 2.1.1 + help-me: 4.2.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.0 + pino-abstract-transport: 1.0.0 + pump: 3.0.0 + readable-stream: 4.4.0 + secure-json-parse: 2.7.0 + sonic-boom: 3.3.0 + strip-json-comments: 3.1.1 + + /pino-std-serializers/3.2.0: + resolution: + { + integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==, + } + + /pino-std-serializers/6.2.1: + resolution: + { + integrity: sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==, + } + + /pino/6.14.0: + resolution: + { + integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==, + } + hasBin: true + dependencies: + fast-redact: 3.2.0 + fast-safe-stringify: 2.1.1 + flatstr: 1.0.12 + pino-std-serializers: 3.2.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + sonic-boom: 1.4.1 + + /pirates/4.0.5: + resolution: + { + integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, + } + engines: { node: '>= 6' } + dev: true + + /pkg-dir/4.2.0: + resolution: + { + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, + } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + dev: true + + /pluralize/8.0.0: + resolution: + { + integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, + } + engines: { node: '>=4' } + + /posix-character-classes/0.1.1: + resolution: + { + integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==, + } + engines: { node: '>=0.10.0' } + dev: true + + /prelude-ls/1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: '>= 0.8.0' } + dev: true + + /prettier-linter-helpers/1.0.0: + resolution: + { + integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, + } + engines: { node: '>=6.0.0' } + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier/2.8.8: + resolution: + { + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, + } + engines: { node: '>=10.13.0' } + hasBin: true + dev: true + + /pretty-format/25.5.0: + resolution: + { + integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==, + } + engines: { node: '>= 8.3' } + dependencies: + '@jest/types': 25.5.0 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 16.13.1 + dev: true + + /pretty-format/29.5.0: + resolution: + { + integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-hrtime/1.0.3: + resolution: + { + integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==, + } + engines: { node: '>= 0.8' } + + /printable-characters/1.0.42: + resolution: + { + integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==, + } + dev: true + + /process-warning/1.0.0: + resolution: + { + integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==, + } + + /process/0.11.10: + resolution: + { + integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, + } + engines: { node: '>= 0.6.0' } + + /prop-ini/0.0.2: + resolution: + { + integrity: sha512-qyU57WvAvZDbzmRy9xDbJGVwrGJhmA+rYnVjy4xtX4Ny9c7gzvpmf/j7A3oq9ChbPh15MZQKjPep2mNdnAhtig==, + } + dependencies: + extend: 3.0.2 + dev: true + + /proxy-addr/2.0.7: + resolution: + { + integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, + } + engines: { node: '>= 0.10' } + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /pseudomap/1.0.2: + resolution: + { + integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==, + } + dev: true + + /pump/3.0.0: + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, + } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /punycode/2.3.0: + resolution: + { + integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, + } + engines: { node: '>=6' } + dev: true + + /qs/6.11.2: + resolution: + { + integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==, + } + engines: { node: '>=0.6' } + dependencies: + side-channel: 1.0.4 + + /queue-microtask/1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + dev: true + + /quick-format-unescaped/4.0.4: + resolution: + { + integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==, + } + + /random-bytes/1.0.0: + resolution: + { + integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==, + } + engines: { node: '>= 0.8' } + + /range-parser/1.2.1: + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + } + engines: { node: '>= 0.6' } + + /raw-body/2.5.2: + resolution: + { + integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==, + } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /rc/1.2.8: + resolution: + { + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, + } + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /react-is/16.13.1: + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } + dev: true + + /react-is/18.2.0: + resolution: + { + integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, + } + dev: true + + /readable-stream/3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + } + engines: { node: '>= 6' } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readable-stream/4.4.0: + resolution: + { + integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + + /readable-web-to-node-stream/3.0.2: + resolution: + { + integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==, + } + engines: { node: '>=8' } + dependencies: + readable-stream: 3.6.2 + + /readdirp/3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: '>=8.10.0' } + dependencies: + picomatch: 2.3.1 + dev: true + + /readme-badger/0.3.0: + resolution: + { + integrity: sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==, + } + dependencies: + balanced-match: 1.0.2 + dev: true + + /redeyed/2.1.1: + resolution: + { + integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==, + } + dependencies: + esprima: 4.0.1 + dev: true + + /reflect-metadata/0.1.13: + resolution: + { + integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==, + } + dev: false + + /regex-not/1.0.2: + resolution: + { + integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==, + } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /repeat-element/1.1.4: + resolution: + { + integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /repeat-string/1.6.1: + resolution: + { + integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==, + } + engines: { node: '>=0.10' } + dev: true + + /require-all/3.0.0: + resolution: + { + integrity: sha512-jPGN876lc5exWYrMcgZSd7U42P0PmVQzxnQB13fCSzmyGnqQWW4WUz5DosZ/qe24hz+5o9lSvW2epBNZ1xa6Fw==, + } + engines: { node: '>= 0.8' } + + /resolve-from/4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: '>=4' } + dev: true + + /resolve-from/5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: '>=8' } + + /resolve-url/0.2.1: + resolution: + { + integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==, + } + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /restore-cursor/3.1.0: + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + } + engines: { node: '>=8' } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + /ret/0.1.15: + resolution: + { + integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==, + } + engines: { node: '>=0.12' } + dev: true + + /retry/0.13.1: + resolution: + { + integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==, + } + engines: { node: '>= 4' } + dev: true + + /reusify/1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + dev: true + + /rev-hash/3.0.0: + resolution: + { + integrity: sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==, + } + engines: { node: '>=8' } + dev: true + + /rimraf/3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + } + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel/1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer/5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + + /safe-regex/1.1.0: + resolution: + { + integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==, + } + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer/2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + + /secure-json-parse/2.7.0: + resolution: + { + integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==, + } + + /semver/5.7.1: + resolution: + { + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, + } + hasBin: true + dev: true + + /semver/6.3.0: + resolution: + { + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, + } + hasBin: true + dev: true + + /semver/7.5.1: + resolution: + { + integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==, + } + engines: { node: '>=10' } + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send/0.18.0: + resolution: + { + integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==, + } + engines: { node: '>= 0.8.0' } + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /sentence-case/3.0.4: + resolution: + { + integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + upper-case-first: 2.0.2 + + /serve-static/1.15.0: + resolution: + { + integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==, + } + engines: { node: '>= 0.8.0' } + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + /set-cookie-parser/2.6.0: + resolution: + { + integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==, + } + dev: true + + /set-value/2.0.1: + resolution: + { + integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==, + } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setprototypeof/1.2.0: + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } + + /shallow-clone/3.0.1: + resolution: + { + integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, + } + engines: { node: '>=8' } + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command/2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: '>=8' } + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: '>=8' } + dev: true + + /side-channel/1.0.4: + resolution: + { + integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + + /sigmund/1.0.1: + resolution: + { + integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==, + } + dev: true + + /signal-exit/3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + + /slash/2.0.0: + resolution: + { + integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==, + } + engines: { node: '>=6' } + dev: true + + /slash/3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: '>=8' } + + /slice-ansi/4.0.0: + resolution: + { + integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, + } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + /slugify/1.6.6: + resolution: + { + integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==, + } + engines: { node: '>=8.0.0' } + + /smpltmpl/1.0.2: + resolution: + { + integrity: sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ==, + } + engines: { node: '>=4' } + dependencies: + babel-code-frame: 6.26.0 + dev: true + + /snake-case/3.0.4: + resolution: + { + integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==, + } + dependencies: + dot-case: 3.0.4 + tslib: 2.5.0 + + /snapdragon-node/2.1.1: + resolution: + { + integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==, + } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util/3.0.1: + resolution: + { + integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon/0.8.2: + resolution: + { + integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==, + } + engines: { node: '>=0.10.0' } + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sonic-boom/1.4.1: + resolution: + { + integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==, + } + dependencies: + atomic-sleep: 1.0.0 + flatstr: 1.0.12 + + /sonic-boom/2.8.0: + resolution: + { + integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==, + } + dependencies: + atomic-sleep: 1.0.0 + + /sonic-boom/3.3.0: + resolution: + { + integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==, + } + dependencies: + atomic-sleep: 1.0.0 + + /source-map-resolve/0.5.3: + resolution: + { + integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==, + } + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-support/0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map-url/0.4.1: + resolution: + { + integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==, + } + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map/0.5.7: + resolution: + { + integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /source-map/0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: '>=0.10.0' } + + /split-lines/2.1.0: + resolution: + { + integrity: sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw==, + } + engines: { node: '>=6' } + dev: true + + /split-string/3.1.0: + resolution: + { + integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==, + } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 3.0.2 + dev: true + + /split2/4.2.0: + resolution: + { + integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, + } + engines: { node: '>= 10.x' } + + /sprintf-js/1.0.3: + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + } + dev: true + + /stacktracey/2.1.8: + resolution: + { + integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==, + } + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + dev: true + + /static-extend/0.1.2: + resolution: + { + integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==, + } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /statuses/2.0.1: + resolution: + { + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, + } + engines: { node: '>= 0.8' } + + /string-width/4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: '>=8' } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string_decoder/1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } + dependencies: + safe-buffer: 5.2.1 + + /stringify-attributes/2.0.0: + resolution: + { + integrity: sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw==, + } + engines: { node: '>=8' } + dependencies: + escape-goat: 2.1.1 + + /strip-ansi/3.0.1: + resolution: + { + integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==, + } + engines: { node: '>=0.10.0' } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi/6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: '>=8' } + dependencies: + ansi-regex: 5.0.1 + + /strip-bom/4.0.0: + resolution: + { + integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, + } + engines: { node: '>=8' } + dev: true + + /strip-final-newline/2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: '>=6' } + dev: true + + /strip-json-comments/2.0.1: + resolution: + { + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /strip-json-comments/3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: '>=8' } + + /strtok3/6.3.0: + resolution: + { + integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==, + } + engines: { node: '>=10' } + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + + /superagent/8.0.9: + resolution: + { + integrity: sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==, + } + engines: { node: '>=6.4.0 <13 || >=14' } + dependencies: + component-emitter: 1.3.0 + cookiejar: 2.1.4 + debug: 4.3.4 + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 2.1.2 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.11.2 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color/2.0.0: + resolution: + { + integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, + } + engines: { node: '>=0.8.0' } + dev: true + + /supports-color/7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: '>=8' } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color/8.1.1: + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: '>=10' } + dependencies: + has-flag: 4.0.0 + + /supports-hyperlinks/2.3.0: + resolution: + { + integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, + } + engines: { node: '>=8' } + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /swagger-parser/10.0.3: + resolution: + { + integrity: sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==, + } + engines: { node: '>=10' } + dependencies: + '@apidevtools/swagger-parser': 10.0.3 + transitivePeerDependencies: + - openapi-types + dev: true + + /swagger-schema-official/2.0.0-bab6bed: + resolution: + { + integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==, + } + dev: true + + /term-size/2.2.1: + resolution: + { + integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, + } + engines: { node: '>=8' } + + /text-table/0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + } + dev: true + + /time-span/4.0.0: + resolution: + { + integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==, + } + engines: { node: '>=10' } + dependencies: + convert-hrtime: 3.0.0 + dev: true + + /tmp-cache/1.1.0: + resolution: + { + integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==, + } + engines: { node: '>=6' } + + /to-object-path/0.3.0: + resolution: + { + integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==, + } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range/2.1.1: + resolution: + { + integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==, + } + engines: { node: '>=0.10.0' } + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range/5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: '>=8.0' } + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex/3.0.2: + resolution: + { + integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==, + } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /toidentifier/1.0.1: + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: '>=0.6' } + + /token-types/4.2.1: + resolution: + { + integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==, + } + engines: { node: '>=10' } + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + + /traverse/0.6.7: + resolution: + { + integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==, + } + dev: true + + /truncatise/0.0.8: + resolution: + { + integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==, + } + + /tslib/1.14.1: + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + } + dev: true + + /tslib/2.5.0: + resolution: + { + integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, + } + + /tsutils/3.21.0_typescript@4.6.4: + resolution: + { + integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, + } + engines: { node: '>= 6' } + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.6.4 + dev: true + + /type-check/0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect/4.0.8: + resolution: + { + integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, + } + engines: { node: '>=4' } + dev: true + + /type-fest/0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, + } + engines: { node: '>=10' } + dev: true + + /type-fest/0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: '>=10' } + + /type-fest/3.10.0_typescript@4.6.4: + resolution: + { + integrity: sha512-hmAPf1datm+gt3c2mvu0sJyhFy6lTkIGf0GzyaZWxRLnabQfPUqg6tF95RPg6sLxKI7nFLGdFxBcf2/7+GXI+A==, + } + engines: { node: '>=14.16' } + peerDependencies: + typescript: '>=4.7.0' + dependencies: + typescript: 4.6.4 + dev: true + + /type-is/1.6.18: + resolution: + { + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, + } + engines: { node: '>= 0.6' } + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + /typescript/4.6.4: + resolution: + { + integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==, + } + engines: { node: '>=4.2.0' } + hasBin: true + dev: true + + /uid-safe/2.1.5: + resolution: + { + integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==, + } + engines: { node: '>= 0.8' } + dependencies: + random-bytes: 1.0.0 + + /union-value/1.0.1: + resolution: + { + integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==, + } + engines: { node: '>=0.10.0' } + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /universalify/0.1.2: + resolution: + { + integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, + } + engines: { node: '>= 4.0.0' } + dev: true + + /universalify/2.0.0: + resolution: + { + integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, + } + engines: { node: '>= 10.0.0' } + + /unpipe/1.0.0: + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: '>= 0.8' } + + /unset-value/1.0.0: + resolution: + { + integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==, + } + engines: { node: '>=0.10.0' } + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /upper-case-first/2.0.2: + resolution: + { + integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==, + } + dependencies: + tslib: 2.5.0 + + /upper-case/2.0.2: + resolution: + { + integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==, + } + dependencies: + tslib: 2.5.0 + + /uri-js/4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + dependencies: + punycode: 2.3.0 + dev: true + + /urix/0.1.0: + resolution: + { + integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==, + } + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /use/3.1.1: + resolution: + { + integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /util-deprecate/1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + + /valid-url/1.0.9: + resolution: + { + integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==, + } + dev: true + + /validate-npm-package-name/3.0.0: + resolution: + { + integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==, + } + dependencies: + builtins: 1.0.3 + dev: true + + /validator/13.9.0: + resolution: + { + integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==, + } + engines: { node: '>= 0.10' } + + /vary/1.1.2: + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + } + engines: { node: '>= 0.8' } + + /wcwidth/1.0.1: + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } + dependencies: + defaults: 1.0.4 + dev: true + + /webpack-merge/4.2.2: + resolution: + { + integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==, + } + dependencies: + lodash: 4.17.21 + dev: true + + /which/2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: '>= 8' } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: + { + integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, + } + engines: { node: '>=0.10.0' } + dev: true + + /wordwrap/1.0.0: + resolution: + { + integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, + } + dev: true + + /wrap-ansi/6.2.0: + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + } + engines: { node: '>=8' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrappy/1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + + /yallist/2.1.2: + resolution: + { + integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==, + } + dev: true + + /yallist/4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + + /yaml/2.2.2: + resolution: + { + integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==, + } + engines: { node: '>= 14' } + dev: true + + /yocto-queue/0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: '>=10' } + dev: true + + /youch-terminal/2.2.0: + resolution: + { + integrity: sha512-LLYtvG/4XoRO/vhf2eBkzT6dI1hWliLSp7NuXRKsvBAITuIxODS61X7AQOHl5Aaf8oquS9JlHSpjTFjX140XKA==, + } + dependencies: + kleur: 4.1.5 + string-width: 4.2.3 + wordwrap: 1.0.0 + dev: true + + /youch/3.2.3: + resolution: + { + integrity: sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==, + } + dependencies: + cookie: 0.5.0 + mustache: 4.2.0 + stacktracey: 2.1.8 + dev: true + + /z-schema/5.0.5: + resolution: + { + integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==, + } + engines: { node: '>=8.0.0' } + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.9.0 + optionalDependencies: + commander: 9.5.0 + dev: true diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/providers/AppProvider.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/providers/AppProvider.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +import type { ApplicationContract } from '@ioc:Adonis/Core/Application' + +export default class AppProvider { + constructor(protected app: ApplicationContract) {} + + public register() { + // Register your own bindings + } + + public async boot() { + // IoC container is ready + } + + public async ready() { + // App is ready + } + + public async shutdown() { + // Cleanup, since app is going down + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/server.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/server.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,19 @@ +/* +|-------------------------------------------------------------------------- +| AdonisJs Server +|-------------------------------------------------------------------------- +| +| The contents in this file is meant to bootstrap the AdonisJs application +| and start the HTTP server to accept incoming connections. You must avoid +| making this file dirty and instead make use of `lifecycle hooks` provided +| by AdonisJs service providers for custom code. +| +*/ + +import 'reflect-metadata' +import sourceMapSupport from 'source-map-support' +import { Ignitor } from '@adonisjs/core/build/standalone' + +sourceMapSupport.install({ handleUncaughtExceptions: false }) + +new Ignitor(__dirname).httpServer().start() diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/start/kernel.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/start/kernel.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,41 @@ +/* +|-------------------------------------------------------------------------- +| Application middleware +|-------------------------------------------------------------------------- +| +| This file is used to define middleware for HTTP requests. You can register +| middleware as a `closure` or an IoC container binding. The bindings are +| preferred, since they keep this file clean. +| +*/ + +import Server from '@ioc:Adonis/Core/Server' + +/* +|-------------------------------------------------------------------------- +| Global middleware +|-------------------------------------------------------------------------- +| +| An array of global middleware, that will be executed in the order they +| are defined for every HTTP requests. +| +*/ +Server.middleware.register([() => import('@ioc:Adonis/Core/BodyParser')]) + +/* +|-------------------------------------------------------------------------- +| Named middleware +|-------------------------------------------------------------------------- +| +| Named middleware are defined as key-value pair. The value is the namespace +| or middleware function and key is the alias. Later you can use these +| alias on individual routes. For example: +| +| { auth: () => import('App/Middleware/Auth') } +| +| and then use it as follows +| +| Route.get('dashboard', 'UserController.dashboard').middleware('auth') +| +*/ +Server.middleware.registerNamed({}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/start/routes.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/start/routes.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,29 @@ +/* +|-------------------------------------------------------------------------- +| Routes +|-------------------------------------------------------------------------- +| +| This file is dedicated for defining HTTP routes. A single file is enough +| for majority of projects, however you can define routes in different +| files and just make sure to import them inside this file. For example +| +| Define routes in following two files +| ├── start/routes/cart.ts +| ├── start/routes/customer.ts +| +| and then import them inside `start/routes.ts` as follows +| +| import './routes/cart' +| import './routes/customer' +| +*/ + +import Route from '@ioc:Adonis/Core/Route' + +Route.get('/', () => 'hi') +Route.get('/id/:id', ({ params, request, response }) => { + response.header('x-powered-by', 'benchmark') + + return `${params.id} ${request.qs().name}` +}) +Route.post('/json', ({ request }) => request.body()) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/test.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/test.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,45 @@ +/* +|-------------------------------------------------------------------------- +| Tests +|-------------------------------------------------------------------------- +| +| The contents in this file boots the AdonisJS application and configures +| the Japa tests runner. +| +| For the most part you will never edit this file. The configuration +| for the tests can be controlled via ".adonisrc.json" and +| "tests/bootstrap.ts" files. +| +*/ + +process.env.NODE_ENV = 'test' + +import 'reflect-metadata' +import sourceMapSupport from 'source-map-support' +import { Ignitor } from '@adonisjs/core/build/standalone' +import { configure, processCliArgs, run, RunnerHooksHandler } from '@japa/runner' + +sourceMapSupport.install({ handleUncaughtExceptions: false }) + +const kernel = new Ignitor(__dirname).kernel('test') + +kernel + .boot() + .then(() => import('./tests/bootstrap')) + .then(({ runnerHooks, ...config }) => { + const app: RunnerHooksHandler[] = [() => kernel.start()] + + configure({ + ...kernel.application.rcFile.tests, + ...processCliArgs(process.argv.slice(2)), + ...config, + ...{ + importer: (filePath) => import(filePath), + setup: app.concat(runnerHooks.setup), + teardown: runnerHooks.teardown, + }, + cwd: kernel.application.appRoot, + }) + + run() + }) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/tests/bootstrap.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/tests/bootstrap.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,69 @@ +/** + * File source: https://bit.ly/3ukaHTz + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +import type { Config } from '@japa/runner' +import TestUtils from '@ioc:Adonis/Core/TestUtils' +import { assert, runFailedTests, specReporter, apiClient } from '@japa/preset-adonis' + +/* +|-------------------------------------------------------------------------- +| Japa Plugins +|-------------------------------------------------------------------------- +| +| Japa plugins allows you to add additional features to Japa. By default +| we register the assertion plugin. +| +| Feel free to remove existing plugins or add more. +| +*/ +export const plugins: Required['plugins'] = [assert(), runFailedTests(), apiClient()] + +/* +|-------------------------------------------------------------------------- +| Japa Reporters +|-------------------------------------------------------------------------- +| +| Japa reporters displays/saves the progress of tests as they are executed. +| By default, we register the spec reporter to show a detailed report +| of tests on the terminal. +| +*/ +export const reporters: Required['reporters'] = [specReporter()] + +/* +|-------------------------------------------------------------------------- +| Runner hooks +|-------------------------------------------------------------------------- +| +| Runner hooks are executed after booting the AdonisJS app and +| before the test files are imported. +| +| You can perform actions like starting the HTTP server or running migrations +| within the runner hooks +| +*/ +export const runnerHooks: Pick, 'setup' | 'teardown'> = { + setup: [() => TestUtils.ace().loadCommands()], + teardown: [], +} + +/* +|-------------------------------------------------------------------------- +| Configure individual suites +|-------------------------------------------------------------------------- +| +| The configureSuite method gets called for every test suite registered +| within ".adonisrc.json" file. +| +| You can use this method to configure suites. For example: Only start +| the HTTP server when it is a functional suite. +*/ +export const configureSuite: Required['configureSuite'] = (suite) => { + if (suite.name === 'functional') { + suite.setup(() => TestUtils.httpServer().start()) + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/tests/functional/hello_world.spec.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/tests/functional/hello_world.spec.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,8 @@ +import { test } from '@japa/runner' + +test('display welcome page', async ({ client }) => { + const response = await client.get('/') + + response.assertStatus(200) + response.assertTextIncludes('Hello world') +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/adonis/tsconfig.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/adonis/tsconfig.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,17 @@ +{ + "extends": "adonis-preset-ts/tsconfig.json", + "include": ["**/*"], + "exclude": ["node_modules", "build"], + "compilerOptions": { + "outDir": "build", + "rootDir": "./", + "sourceMap": true, + "paths": { + "App/*": ["./app/*"], + "Config/*": ["./config/*"], + "Contracts/*": ["./contracts/*"], + "Database/*": ["./database/*"] + }, + "types": ["@adonisjs/core", "@japa/preset-adonis/build/adonis-typings"] + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/.eslintrc.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/.eslintrc.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,25 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + plugins: ['@typescript-eslint/eslint-plugin'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js'], + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + }, +}; diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/.prettierrc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/.prettierrc Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/README.md Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,73 @@ +

+ Nest Logo +

+ +[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 +[circleci-url]: https://circleci.com/gh/nestjs/nest + +

A progressive Node.js framework for building efficient and scalable server-side applications.

+

+NPM Version +Package License +NPM Downloads +CircleCI +Coverage +Discord +Backers on Open Collective +Sponsors on Open Collective + Donate us + Support us + Follow us on Twitter +

+ + +## Description + +[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. + +## Installation + +```bash +$ npm install +``` + +## Running the app + +```bash +# development +$ npm run start + +# watch mode +$ npm run start:dev + +# production mode +$ npm run start:prod +``` + +## Test + +```bash +# unit tests +$ npm run test + +# e2e tests +$ npm run test:e2e + +# test coverage +$ npm run test:cov +``` + +## Support + +Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). + +## Stay in touch + +- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec) +- Website - [https://nestjs.com](https://nestjs.com/) +- Twitter - [@nestframework](https://twitter.com/nestframework) + +## License + + Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE). diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/bun.lockb Binary file benchmark/bun-http-framework-benchmark/dev/nest-node/bun.lockb has changed diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/index.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/index.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,8 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './src/app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + await app.listen(3000); +} +bootstrap(); diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/main.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/main.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,8 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './src/app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + await app.listen(3000); +} +bootstrap(); diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/nest-cli.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/nest-cli.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/package.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/package.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,68 @@ +{ + "name": "nest-typescript-starter", + "private": true, + "version": "1.0.0", + "description": "Nest TypeScript starter repository", + "license": "MIT", + "scripts": { + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "dependencies": { + "@nestjs/common": "^10.2.8", + "@nestjs/core": "^10.2.8", + "@nestjs/platform-express": "^10.2.8", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.8.1" + }, + "devDependencies": { + "@nestjs/cli": "^10.2.1", + "@nestjs/schematics": "^10.0.3", + "@nestjs/testing": "^10.2.8", + "@types/express": "^4.17.21", + "@types/jest": "^29.5.8", + "@types/node": "^20.9.0", + "@types/supertest": "^2.0.16", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "@typescript-eslint/parser": "^6.11.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "jest": "^29.7.0", + "prettier": "^3.1.0", + "source-map-support": "^0.5.21", + "supertest": "^6.3.3", + "ts-jest": "^29.1.1", + "ts-loader": "^9.5.1", + "ts-node": "^10.9.1", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.2.2" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/pnpm-lock.yaml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/pnpm-lock.yaml Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,5320 @@ +lockfileVersion: '6.1' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@nestjs/common': + specifier: ^10.2.8 + version: 10.2.8(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': + specifier: ^10.2.8 + version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/platform-express@10.2.8)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/platform-express': + specifier: ^10.2.8 + version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8) + reflect-metadata: + specifier: ^0.1.13 + version: 0.1.13 + rxjs: + specifier: ^7.8.1 + version: 7.8.1 + +devDependencies: + '@nestjs/cli': + specifier: ^10.2.1 + version: 10.2.1 + '@nestjs/schematics': + specifier: ^10.0.3 + version: 10.0.3(chokidar@3.5.3)(typescript@5.2.2) + '@nestjs/testing': + specifier: ^10.2.8 + version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(@nestjs/platform-express@10.2.8) + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + '@types/jest': + specifier: ^29.5.8 + version: 29.5.8 + '@types/node': + specifier: ^20.9.0 + version: 20.9.0 + '@types/supertest': + specifier: ^2.0.16 + version: 2.0.16 + '@typescript-eslint/eslint-plugin': + specifier: ^6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) + eslint: + specifier: ^8.53.0 + version: 8.53.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.53.0) + eslint-plugin-prettier: + specifier: ^5.0.1 + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + prettier: + specifier: ^3.1.0 + version: 3.1.0 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + supertest: + specifier: ^6.3.3 + version: 6.3.3 + ts-jest: + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.20.5)(jest@29.7.0)(typescript@5.2.2) + ts-loader: + specifier: ^9.5.1 + version: 9.5.1(typescript@5.2.2)(webpack@5.89.0) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@20.9.0)(typescript@5.2.2) + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@angular-devkit/core@16.2.8(chokidar@3.5.3): + resolution: {integrity: sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + chokidar: 3.5.3 + jsonc-parser: 3.2.0 + picomatch: 2.3.1 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + + /@angular-devkit/schematics-cli@16.2.8(chokidar@3.5.3): + resolution: {integrity: sha512-EXURJCzWTVYCipiTT4vxQQOrF63asOUDbeOy3OtiSh7EwIUvxm3BPG6hquJqngEnI/N6bA75NJ1fBhU6Hrh7eA==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics': 16.2.8(chokidar@3.5.3) + ansi-colors: 4.1.3 + inquirer: 8.2.4 + symbol-observable: 4.0.0 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/schematics@16.2.8(chokidar@3.5.3): + resolution: {integrity: sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + jsonc-parser: 3.2.0 + magic-string: 0.30.1 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@babel/code-frame@7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/compat-data@7.20.5: + resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.20.5: + resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5) + '@babel/helper-module-transforms': 7.20.2 + '@babel/helpers': 7.20.6 + '@babel/parser': 7.20.5 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.20.5: + resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5): + resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.5 + '@babel/core': 7.20.5 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + semver: 6.3.0 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-module-imports@7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-module-transforms@7.20.2: + resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-string-parser@7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.20.6: + resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.20.5: + resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.5): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.5): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.5): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.5): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.20.5): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.5): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.5): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.5): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.5): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.5): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.5): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.5): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.20.5): + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/template@7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + dev: true + + /@babel/traverse@7.20.5: + resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.5 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.20.5: + resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.53.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.19.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.7.0 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.9.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.9.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + callsites: 3.1.0 + graceful-fs: 4.2.10 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.5 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.9.0 + '@types/yargs': 17.0.17 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jridgewell/gen-mapping@0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + + /@nestjs/cli@10.2.1: + resolution: {integrity: sha512-CAJAQwmxFZfB3RTvqz/eaXXWpyU+mZ4QSqfBYzjneTsPgF+uyOAW3yQpaLNn9Dfcv39R9UxSuAhayv6yuFd+Jg==} + engines: {node: '>= 16.14'} + hasBin: true + peerDependencies: + '@swc/cli': ^0.1.62 + '@swc/core': ^1.3.62 + peerDependenciesMeta: + '@swc/cli': + optional: true + '@swc/core': + optional: true + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics-cli': 16.2.8(chokidar@3.5.3) + '@nestjs/schematics': 10.0.3(chokidar@3.5.3)(typescript@5.2.2) + chalk: 4.1.2 + chokidar: 3.5.3 + cli-table3: 0.6.3 + commander: 4.1.1 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.2.2)(webpack@5.89.0) + glob: 10.3.10 + inquirer: 8.2.6 + node-emoji: 1.11.0 + ora: 5.4.1 + os-name: 4.0.1 + rimraf: 4.4.1 + shelljs: 0.8.5 + source-map-support: 0.5.21 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.1.0 + typescript: 5.2.2 + webpack: 5.89.0 + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - esbuild + - uglify-js + - webpack-cli + dev: true + + /@nestjs/common@10.2.8(reflect-metadata@0.1.13)(rxjs@7.8.1): + resolution: {integrity: sha512-rmpwcdvq2IWMmsUVP8rsdKub6uDWk7dwCYo0aif50JTwcvcxzaP3iKVFKoSgvp0RKYu8h15+/AEOfaInmPpl0Q==} + peerDependencies: + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + iterare: 1.2.1 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + + /@nestjs/core@10.2.8(@nestjs/common@10.2.8)(@nestjs/platform-express@10.2.8)(reflect-metadata@0.1.13)(rxjs@7.8.1): + resolution: {integrity: sha512-9+MZ2s8ixfY9Bl/M9ofChiyYymcwdK9ZWNH4GDMF7Am7XRAQ1oqde6MYGG05rhQwiVXuTwaYLlXciJKfsrg5qg==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + '@nestjs/websockets': ^10.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + dependencies: + '@nestjs/common': 10.2.8(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/platform-express': 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8) + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + transitivePeerDependencies: + - encoding + + /@nestjs/platform-express@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8): + resolution: {integrity: sha512-WoSSVtwIRc5AdGMHWVzWZK4JZLT0f4o2xW8P9gQvcX+omL8W1kXCfY8GQYXNBG84XmBNYH8r0FtC8oMe/lH5NQ==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + dependencies: + '@nestjs/common': 10.2.8(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.8(@nestjs/common@10.2.8)(@nestjs/platform-express@10.2.8)(reflect-metadata@0.1.13)(rxjs@7.8.1) + body-parser: 1.20.2 + cors: 2.8.5 + express: 4.18.2 + multer: 1.4.4-lts.1 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + + /@nestjs/schematics@10.0.3(chokidar@3.5.3)(typescript@5.2.2): + resolution: {integrity: sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A==} + peerDependencies: + typescript: '>=4.8.2' + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics': 16.2.8(chokidar@3.5.3) + comment-json: 4.2.3 + jsonc-parser: 3.2.0 + pluralize: 8.0.0 + typescript: 5.2.2 + transitivePeerDependencies: + - chokidar + dev: true + + /@nestjs/testing@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(@nestjs/platform-express@10.2.8): + resolution: {integrity: sha512-9Kj5IQhM67/nj/MT6Wi2OmWr5YQnCMptwKVFrX1TDaikpY12196v7frk0jVjdT7wms7rV07GZle9I2z0aSjqtQ==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + dependencies: + '@nestjs/common': 10.2.8(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.8(@nestjs/common@10.2.8)(@nestjs/platform-express@10.2.8)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/platform-express': 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8) + tslib: 2.6.2 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.14.0 + dev: true + + /@nuxtjs/opencollective@0.3.2: + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + + /@types/babel__core@7.1.20: + resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + dependencies: + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.3 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + dev: true + + /@types/babel__traverse@7.18.3: + resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@types/body-parser@1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 20.9.0 + dev: true + + /@types/connect@3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/cookiejar@2.1.2: + resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} + dev: true + + /@types/eslint-scope@3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + dependencies: + '@types/eslint': 8.4.10 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.4.10: + resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.17.41: + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + dependencies: + '@types/node': 20.9.0 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.41 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.0 + dev: true + + /@types/graceful-fs@4.1.5: + resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@29.5.8: + resolution: {integrity: sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/mime@3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/qs@6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + dev: true + + /@types/range-parser@1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: true + + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.9.0 + dev: true + + /@types/serve-static@1.15.0: + resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} + dependencies: + '@types/mime': 3.0.1 + '@types/node': 20.9.0 + dev: true + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/superagent@4.1.16: + resolution: {integrity: sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ==} + dependencies: + '@types/cookiejar': 2.1.2 + '@types/node': 20.9.0 + dev: true + + /@types/supertest@2.0.16: + resolution: {integrity: sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==} + dependencies: + '@types/superagent': 4.1.16 + dev: true + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs@17.0.17: + resolution: {integrity: sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 + debug: 4.3.4 + eslint: 8.53.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 + debug: 4.3.4 + eslint: 8.53.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 + dev: true + + /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.53.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + eslint: 8.53.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.11.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + /acorn-import-assertions@1.9.0(acorn@8.8.1): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.8.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn@8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + /array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /babel-jest@29.7.0(@babel/core@7.20.5): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.20.5 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.1.20 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.20.5) + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.20.5 + '@types/babel__core': 7.1.20 + '@types/babel__traverse': 7.18.3 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.20.5): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.5) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.20.5): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001439 + electron-to-chromium: 1.4.284 + node-releases: 2.0.8 + update-browserslist-db: 1.0.10(browserslist@4.21.4) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.3 + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001439: + resolution: {integrity: sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /ci-info@3.7.0: + resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} + dev: true + + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /comment-json@4.2.3: + resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} + engines: {node: '>= 6'} + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + dev: true + + /component-emitter@1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + + /consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + + /content-type@1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + /cookiejar@2.1.3: + resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.2.2 + dev: true + + /create-jest@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + /electron-to-chromium@1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@9.0.0(eslint@8.53.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.53.0 + dev: true + + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + prettier: 3.1.0 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.19.0 + graphemer: 1.4.0 + ignore: 5.2.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.4 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + /fastq@1.14.0: + resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + dependencies: + reusify: 1.0.4 + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + dependencies: + '@babel/code-frame': 7.18.6 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 8.3.6(typescript@5.2.2) + deepmerge: 4.2.2 + fs-extra: 10.1.0 + memfs: 3.4.12 + minimatch: 3.1.2 + node-abort-controller: 3.0.1 + schema-utils: 3.1.1 + semver: 7.5.4 + tapable: 2.2.1 + typescript: 5.2.2 + webpack: 5.89.0 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formidable@2.1.1: + resolution: {integrity: sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==} + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.11.0 + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-monkey@1.0.3: + resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.19.0: + resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + /human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore@5.2.1: + resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} + engines: {node: '>= 4'} + dev: true + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inquirer@8.2.4: + resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module@2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.20.5 + '@babel/parser': 7.20.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.20.5 + '@babel/parser': 7.20.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /iterare@1.2.1: + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.5 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + babel-jest: 29.7.0(@babel/core@7.20.5) + chalk: 4.1.2 + ci-info: 3.7.0 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.9.0)(typescript@5.2.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.5 + '@types/node': 20.9.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.1 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.10 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.5 + '@babel/generator': 7.20.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.20.5) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.20.5) + '@babel/types': 7.20.5 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.10 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + ci-info: 3.7.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.9.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.9.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@2.2.2: + resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /lru-cache@10.0.2: + resolution: {integrity: sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==} + engines: {node: 14 || >=16.14} + dependencies: + semver: 7.5.4 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /macos-release@2.5.0: + resolution: {integrity: sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==} + engines: {node: '>=6'} + dev: true + + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + /memfs@3.4.12: + resolution: {integrity: sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.7 + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multer@1.4.4-lts.1: + resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} + engines: {node: '>= 6.0.0'} + dependencies: + append-field: 1.0.0 + busboy: 1.6.0 + concat-stream: 1.6.2 + mkdirp: 0.5.6 + object-assign: 4.1.1 + type-is: 1.6.18 + xtend: 4.0.2 + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /node-abort-controller@3.0.1: + resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} + dev: true + + /node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + dependencies: + lodash: 4.17.21 + dev: true + + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.8: + resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.7.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-name@4.0.1: + resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} + engines: {node: '>=10'} + dependencies: + macos-release: 2.5.0 + windows-release: 4.0.0 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.2 + minipass: 7.0.4 + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + /path-to-regexp@3.2.0: + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readable-stream@2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream@3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.1 + dev: true + + /reflect-metadata@0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 9.3.5 + dev: true + + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /schema-utils@3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /superagent@8.0.6: + resolution: {integrity: sha512-HqSe6DSIh3hEn6cJvCkaM1BLi466f1LHi4yubR0tpewlMpk4RUFFy35bKz8SsPBwYfIIJy5eclp+3tCYAuX0bw==} + engines: {node: '>=6.4.0 <13 || >=14'} + dependencies: + component-emitter: 1.3.0 + cookiejar: 2.1.3 + debug: 4.3.4 + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 2.1.1 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.11.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /supertest@6.3.3: + resolution: {integrity: sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==} + engines: {node: '>=6.4.0'} + dependencies: + methods: 1.1.2 + superagent: 8.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: true + + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terser-webpack-plugin@5.3.9(webpack@5.89.0): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.24.0 + webpack: 5.89.0 + dev: true + + /terser@5.24.0: + resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-jest@29.1.1(@babel/core@7.20.5)(jest@29.7.0)(typescript@5.2.2): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.20.5 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 5.2.2 + yargs-parser: 21.1.1 + dev: true + + /ts-loader@9.5.1(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.12.0 + micromatch: 4.0.5 + semver: 7.5.4 + source-map: 0.7.4 + typescript: 5.2.2 + webpack: 5.89.0 + dev: true + + /ts-node@10.9.1(@types/node@20.9.0)(typescript@5.2.2): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.9.0 + acorn: 8.8.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tsconfig-paths-webpack-plugin@4.1.0: + resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} + engines: {node: '>=10.13.0'} + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.12.0 + tsconfig-paths: 4.2.0 + dev: true + + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.2 + minimist: 1.2.7 + strip-bom: 3.0.0 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db@1.0.10(browserslist@4.21.4): + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-to-istanbul@9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /webpack-node-externals@3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.8.1 + acorn-import-assertions: 1.9.0(acorn@8.8.1) + browserslist: 4.21.4 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /windows-release@4.0.0: + resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} + engines: {node: '>=10'} + dependencies: + execa: 4.1.0 + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.controller.spec.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.controller.spec.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +describe('AppController', () => { + let app: TestingModule; + + beforeAll(async () => { + app = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }).compile(); + }); + + describe('getHello', () => { + it('should return "Hello World!"', () => { + const appController = app.get(AppController); + expect(appController.getHello()).toBe('Hello World!'); + }); + }); +}); diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.controller.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.controller.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,33 @@ +import { + Body, + Controller, + Get, + Header, + Param, + Post, + Query, + Res, +} from '@nestjs/common'; +import { AppService } from './app.service'; + +@Controller() +export class AppController { + constructor(private readonly appService: AppService) {} + + @Get('/') + @Header('content-type', 'text/html') + getHello() { + return this.appService.getHello(); + } + + @Get('/id/:id') + @Header('content-type', 'text/html') + getCompose(@Param('id') id: string, @Query('name') name: string) { + return `${id} ${name}`; + } + + @Post('/json') + postMirror(@Body() body) { + return body; + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.module.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.module.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +@Module({ + imports: [], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.service.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/src/app.service.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,12 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AppService { + getHello(): string { + return 'Hi'; + } + + getCompose(id: string, name: string): string { + return `${id} ${name}`; + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/test/app.e2e-spec.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/test/app.e2e-spec.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,24 @@ +import * as request from 'supertest'; +import { Test } from '@nestjs/testing'; +import { AppModule } from '../src/app.module'; +import { INestApplication } from '@nestjs/common'; + +describe('AppController (e2e)', () => { + let app: INestApplication; + + beforeAll(async () => { + const moduleFixture = await Test.createTestingModule({ + imports: [AppModule], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + }); + + it('/ (GET)', () => { + return request(app.getHttpServer()) + .get('/') + .expect(200) + .expect('Hello World!'); + }); +}); diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/test/jest-e2e.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/test/jest-e2e.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,9 @@ +{ + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/tsconfig.build.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/tsconfig.build.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/dev/nest-node/tsconfig.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/dev/nest-node/tsconfig.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "es2017", + "sourceMap": true, + "outDir": "../../src/node/nest", + "baseUrl": "./", + "incremental": false, + "skipLibCheck": true + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/package-lock.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/package-lock.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,3016 @@ +{ + "name": "bun-http-framework-benchmark", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "bun-http-framework-benchmark", + "dependencies": { + "@bit-js/byte": "^2.0.0", + "@elysiajs/fn": "^0.6.1", + "@elysiajs/node": "1.2.6", + "@hapi/hapi": "^21.4.0", + "@nbit/bun": "^0.13.4", + "@nestjs/common": "^11.1.0", + "@nestjs/core": "^11.1.0", + "@nestjs/platform-express": "^11.1.0", + "@oakserver/oak": "^14.1.0", + "bunrest": "^1.3.8", + "elysia": "^1.3.0", + "express": "^5.1.0", + "fastify": "^5.3.2", + "h3": "^1.15.3", + "hono": "^4.7.8", + "hyper-express": "^6.17.3", + "kill-port": "^2.0.1", + "koa": "^3.0.0", + "koa-bodyparser": "^4.4.1", + "koa-router": "^13.0.1", + "nhttp-land": "^1.3.26", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.2", + "ts-node": "^10.9.2", + "typescript": "^5.8.3", + "ultimate-express": "^1.4.9", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.51.0", + "vixeny": "^0.1.53", + "wobe": "^1.1.10" + }, + "devDependencies": { + "@hono/node-server": "^1.14.1", + "@types/bun": "^1.2.12", + "@types/express": "^5.0.1", + "@types/kill-port": "^2.0.3", + "@types/koa": "^2.15.0", + "@types/koa-bodyparser": "^4.3.12", + "@types/koa-router": "^7.4.8" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@bit-js/blitz": { + "version": "1.4.0" + }, + "node_modules/@bit-js/byte": { + "version": "2.0.0", + "dependencies": { + "@bit-js/blitz": "^1.4.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@deno/shim-crypto": { + "version": "0.3.1", + "license": "MIT" + }, + "node_modules/@deno/shim-deno": { + "version": "0.18.2", + "license": "MIT", + "dependencies": { + "@deno/shim-deno-test": "^0.5.0", + "which": "^4.0.0" + } + }, + "node_modules/@deno/shim-deno-test": { + "version": "0.5.0", + "license": "MIT" + }, + "node_modules/@elysiajs/fn": { + "version": "0.6.1", + "license": "MIT", + "dependencies": { + "superjson": "^1.12.3" + }, + "peerDependencies": { + "elysia": ">= 0.5.0", + "superjson": ">= 1.12.0" + }, + "peerDependenciesMeta": { + "superjson": { + "optional": true + } + } + }, + "node_modules/@elysiajs/node": { + "version": "1.2.6", + "license": "MIT", + "dependencies": { + "formidable": "^3.5.2", + "ws": "^8.18.0" + }, + "peerDependencies": { + "bufferutil": ">= 4.0.1", + "elysia": ">= 1.2.7", + "formidable": ">= 3.5.2", + "ws": ">= 8.18.0" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + } + } + }, + "node_modules/@fastify/ajv-compiler": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@fastify/error": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@fastify/forwarded": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.1.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/@fastify/proxy-addr": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@hapi/accept": { + "version": "6.0.3", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/ammo": { + "version": "6.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/b64": { + "version": "6.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/boom": { + "version": "10.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bounce": { + "version": "3.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/call": { + "version": "9.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox": { + "version": "12.1.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/catbox-memory": { + "version": "6.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/content": { + "version": "6.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.0" + } + }, + "node_modules/@hapi/cryptiles": { + "version": "6.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/file": { + "version": "3.0.0", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/hapi": { + "version": "21.4.0", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/accept": "^6.0.3", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.2", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.2", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.6", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.2.0", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.2", + "@hapi/validate": "^2.0.1" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@hapi/heavy": { + "version": "8.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/hoek": { + "version": "11.0.7", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/iron": { + "version": "7.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/mimos": { + "version": "7.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" + } + }, + "node_modules/@hapi/nigel": { + "version": "5.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/pez": { + "version": "6.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" + } + }, + "node_modules/@hapi/podium": { + "version": "5.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/shot": { + "version": "6.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/somever": { + "version": "4.1.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood": { + "version": "8.2.0", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/subtext": { + "version": "8.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + } + }, + "node_modules/@hapi/teamwork": { + "version": "6.0.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/topo": { + "version": "6.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/validate": { + "version": "2.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/vise": { + "version": "5.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/wreck": { + "version": "18.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hono/node-server": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@nbit/bun": { + "version": "0.13.4", + "license": "ISC" + }, + "node_modules/@nestjs/common": { + "version": "11.1.0", + "license": "MIT", + "dependencies": { + "file-type": "20.4.1", + "iterare": "1.2.1", + "load-esm": "1.0.2", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.2.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-express": { + "version": "11.1.0", + "license": "MIT", + "dependencies": { + "cors": "2.8.5", + "express": "5.1.0", + "multer": "1.4.5-lts.2", + "path-to-regexp": "8.2.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@oakserver/oak": { + "version": "14.1.0", + "license": "MIT", + "dependencies": { + "@deno/shim-crypto": "~0.3.1", + "@deno/shim-deno": "~0.18.0", + "tslib": "~2.6.2", + "undici": "^6.0.0" + }, + "engines": { + "node": ">=16.5.0 <22" + } + }, + "node_modules/@oakserver/oak/node_modules/tslib": { + "version": "2.6.3", + "license": "0BSD" + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.33", + "license": "MIT", + "optional": true + }, + "node_modules/@tokenizer/inflate": { + "version": "0.2.7", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fflate": "^0.8.2", + "token-types": "^6.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "license": "MIT" + }, + "node_modules/@types/accepts": { + "version": "1.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bun": { + "version": "1.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "bun-types": "1.2.12" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cookies": { + "version": "0.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookies/node_modules/@types/express": { + "version": "4.17.21", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "license": "MIT" + }, + "node_modules/@types/keygrip": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/kill-port": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "shell-exec": "^1" + } + }, + "node_modules/@types/koa": { + "version": "2.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa-bodyparser": { + "version": "4.3.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-router": { + "version": "7.4.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.2", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/qs": { + "version": "6.9.17", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/avvio": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/bun-types": { + "version": "1.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/bunrest": { + "version": "1.3.8", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/cache-content-type/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/co-body": { + "version": "6.2.0", + "license": "MIT", + "dependencies": { + "@hapi/bourne": "^3.0.0", + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/co-body/node_modules/qs": { + "version": "6.13.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/co-body/node_modules/raw-body": { + "version": "2.5.2", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/co-body/node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co-body/node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/co-body/node_modules/type-is/node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/co-body/node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/consola": { + "version": "3.3.1", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "license": "MIT" + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cookies": { + "version": "0.9.1", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/crossws": { + "version": "0.3.4", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/defu": { + "version": "6.1.4", + "license": "MIT" + }, + "node_modules/delegates": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/destroy": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/elysia": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.2", + "exact-mirror": "0.1.1", + "fast-decode-uri-component": "^1.0.1" + }, + "optionalDependencies": { + "@sinclair/typebox": "^0.34.33", + "openapi-types": "^12.1.3" + }, + "peerDependencies": { + "@sinclair/typebox": ">= 0.34.0", + "exact-mirror": ">= 0.0.9", + "file-type": ">= 20.0.0", + "openapi-types": ">= 12.0.0", + "typescript": ">= 5.0.0" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/exact-mirror": { + "version": "0.1.1", + "license": "MIT", + "peerDependencies": { + "@sinclair/typebox": "^0.34.15" + }, + "peerDependenciesMeta": { + "@sinclair/typebox": { + "optional": true + } + } + }, + "node_modules/express": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-json-stringify": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.1.1", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.3.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-json-stringify/node_modules/fast-uri": { + "version": "2.4.0", + "license": "MIT" + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/fast-zlib": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "patreon", + "url": "https://patreon.com/timotejroiko" + } + }, + "node_modules/fastify": { + "version": "5.3.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^4.0.0", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^9.0.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/fastq": { + "version": "1.18.0", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "license": "MIT" + }, + "node_modules/file-type": { + "version": "20.4.1", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.2.6", + "strtok3": "^10.2.0", + "token-types": "^6.0.0", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-my-way": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/formidable": { + "version": "3.5.2", + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^2.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-them-args": { + "version": "1.3.2", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/h3": { + "version": "1.15.3", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.4", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.0", + "radix3": "^1.1.2", + "ufo": "^1.6.1", + "uncrypto": "^0.1.3" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexoid": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hono": { + "version": "4.7.8", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors/node_modules/statuses": { + "version": "1.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/hyper-express": { + "version": "6.17.3", + "license": "MIT", + "dependencies": { + "busboy": "^1.6.0", + "cookie": "^1.0.1", + "cookie-signature": "^1.2.1", + "mime-types": "^2.1.35", + "negotiator": "^1.0.0", + "range-parser": "^1.2.1", + "type-is": "^1.6.18", + "typed-emitter": "^2.1.0", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.51.0" + } + }, + "node_modules/hyper-express/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/hyper-express/node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/hyper-express/node_modules/type-is/node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflation": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/is-what": { + "version": "4.1.16", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "3.1.1", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/keygrip": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kill-port": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "get-them-args": "1.3.2", + "shell-exec": "1.0.2" + }, + "bin": { + "kill-port": "cli.js" + } + }, + "node_modules/koa": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.1", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "destroy": "^1.0.4", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "on-finished": "^2.3.0", + "parseurl": "^1.3.2", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/koa-bodyparser": { + "version": "4.4.1", + "license": "MIT", + "dependencies": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/koa-bodyparser/node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-bodyparser/node_modules/type-is/node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-bodyparser/node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "license": "MIT" + }, + "node_modules/koa-router": { + "version": "13.0.1", + "license": "MIT", + "dependencies": { + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "path-to-regexp": "^8.1.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/koa/node_modules/accepts": { + "version": "1.3.8", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/content-disposition": { + "version": "0.5.4", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/light-my-request": { + "version": "6.4.0", + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "license": "ISC" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.54.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is/node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nhttp-land": { + "version": "1.3.26", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/node-mock-http": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "license": "MIT", + "optional": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/peek-readable": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/pino": { + "version": "9.6.0", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^4.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "license": "MIT" + }, + "node_modules/pino/node_modules/process-warning": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/process-warning": { + "version": "5.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/real-require": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "license": "Apache-2.0" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ret": { + "version": "0.5.0", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "license": "MIT" + }, + "node_modules/router": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex2": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/secure-json-parse": { + "version": "4.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "7.6.3", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/shell-exec": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/strtok3": { + "version": "10.2.2", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/superjson": { + "version": "1.13.3", + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/thread-stream": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/toad-cache": { + "version": "3.7.0", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tseep": { + "version": "1.3.1", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-emitter": { + "version": "2.1.0", + "license": "MIT", + "optionalDependencies": { + "rxjs": "*" + } + }, + "node_modules/typed-emitter/node_modules/rxjs": { + "version": "7.8.1", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.8.3", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "license": "MIT" + }, + "node_modules/uid": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.4.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ultimate-express": { + "version": "1.4.9", + "license": "Apache-2.0", + "dependencies": { + "@types/express": "^4.17.21", + "accepts": "^1.3.8", + "acorn": "^8.14.1", + "bytes": "^3.1.2", + "cookie": "^1.0.2", + "cookie-signature": "^1.2.2", + "encodeurl": "^2.0.0", + "etag": "^1.8.1", + "fast-querystring": "^1.1.2", + "fast-zlib": "^2.0.1", + "fresh": "^0.5.2", + "mime-types": "^2.1.35", + "ms": "^2.1.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "statuses": "^2.0.1", + "tseep": "^1.3.1", + "type-is": "^1.6.18", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.51.0", + "vary": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/ultimate-express/node_modules/@types/express": { + "version": "4.17.21", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/ultimate-express/node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/ultimate-express/node_modules/accepts": { + "version": "1.3.8", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ultimate-express/node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ultimate-express/node_modules/acorn": { + "version": "8.14.1", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ultimate-express/node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ultimate-express/node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ultimate-express/node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ultimate-express/node_modules/type-is/node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "license": "MIT" + }, + "node_modules/undici": { + "version": "6.21.0", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/uWebSockets.js": { + "version": "20.51.0", + "resolved": "git+ssh://git@github.com/uNetworking/uWebSockets.js.git#6609a88ffa9a16ac5158046761356ce03250a0df", + "license": "Apache-2.0" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vixeny": { + "version": "0.1.53", + "license": "SEE LICENSE IN ReadMe.md", + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/which": { + "version": "4.0.0", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/wobe": { + "version": "1.1.10", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ylru": { + "version": "1.4.0", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + } + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/package.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/package.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,52 @@ +{ + "name": "bun-http-framework-benchmark", + "scripts": { + "benchmark": "bun bench.ts", + "kill-port": "kill-port 3000", + "ts-node": "ts-node" + }, + "devDependencies": { + "@hono/node-server": "^1.14.1", + "@types/bun": "^1.2.12", + "@types/express": "^5.0.1", + "@types/kill-port": "^2.0.3", + "@types/koa": "^2.15.0", + "@types/koa-bodyparser": "^4.3.12", + "@types/koa-router": "^7.4.8" + }, + "dependencies": { + "@bit-js/byte": "^2.0.0", + "@elysiajs/fn": "^0.6.1", + "@elysiajs/node": "1.2.6", + "@hapi/hapi": "^21.4.0", + "@nbit/bun": "^0.13.4", + "@nestjs/common": "^11.1.0", + "@nestjs/core": "^11.1.0", + "@nestjs/platform-express": "^11.1.0", + "@oakserver/oak": "^14.1.0", + "bunrest": "^1.3.8", + "elysia": "^1.3.0", + "express": "^5.1.0", + "fastify": "^5.3.2", + "h3": "^1.15.3", + "hono": "^4.7.8", + "hyper-express": "^6.17.3", + "kill-port": "^2.0.1", + "koa": "^3.0.0", + "koa-bodyparser": "^4.4.1", + "koa-router": "^13.0.1", + "nhttp-land": "^1.3.26", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.2", + "ts-node": "^10.9.2", + "typescript": "^5.8.3", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.51.0", + "ultimate-express": "^1.4.9", + "vixeny": "^0.1.53", + "wobe": "^1.1.10" + }, + "module": "index.ts", + "peerDependencies": { + "typescript": "^5.0.0" + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/bun-web-standard.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/bun-web-standard.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 228408.02,228408.02 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 153303.58,153303.58 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 151110.26,151110.26 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/bun.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/bun.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 254858.08,254858.08 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 205117.00,205117.00 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 156658.25,156658.25 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/elysia.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/elysia.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 400960.78,400960.78 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 200374.15,200374.15 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 164129.36,164129.36 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/express.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/express.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 94358.98,94358.98 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 83982.98,83982.98 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 84024.83,84024.83 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/h3.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/h3.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 98530.52,98530.52 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 81602.75,81602.75 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 9829.93,9829.93 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/hono.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/hono.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 202727.16,202727.16 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 147760.89,147760.89 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 130184.98,130184.98 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/nbit.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/nbit.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 166352.26,166352.26 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 130437.58,130437.58 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 109477.61,109477.61 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/nhttp.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/nhttp.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 260256.20,260256.20 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 155733.48,155733.48 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 164285.02,164285.02 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/oak.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/oak.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 66974.27,66974.27 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 55255.71,55255.71 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 49373.25,49373.25 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/bun/wobe.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/bun/wobe.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 177452.13,177452.13 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 159185.52,159185.52 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 133618.73,133618.73 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/c/seobeo.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/c/seobeo.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 35694.89,35694.89 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 35792.17,35792.17 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 35844.77,35844.77 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/express.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/express.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 16803.98,16803.98 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 15956.22,15956.22 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 17518.46,17518.46 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/fastify.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/fastify.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 114069.22,114069.22 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 106418.14,106418.14 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 32150.27,32150.27 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/h3.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/h3.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 102794.32,102794.32 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 86779.18,86779.18 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 79135.52,79135.52 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/hono.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/hono.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 102406.51,102406.51 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 91815.44,91815.44 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 23631.62,23631.62 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/hyper-express.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/hyper-express.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 270288.86,270288.86 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 207667.76,207667.76 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 145951.54,145951.54 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/koa.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/koa.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 57452.05,57452.05 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 48624.37,48624.37 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 35546.79,35546.79 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/ultimate-express.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/ultimate-express.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 398161.89,398161.89 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 377012.33,377012.33 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 134859.38,134859.38 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/node/uws.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/node/uws.txt Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,6 @@ +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/ +Reqs/sec 405159.40,405159.40 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s http://127.0.0.1:3000/id/1?name=bun +Reqs/sec 376621.69,376621.69 +/home/june/zenbu/benchmark/bun-http-framework-benchmark/bombardier-linux-386 --fasthttp -c 500 -d 10s -m POST -H 'Content-Type:application/json' -f ./scripts/body.json http://127.0.0.1:3000/json +Reqs/sec 216381.92,216381.92 diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/results/results.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/results/results.md Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,22 @@ + +| Framework | Runtime | Average | Ping | Query | Body | +| ---------------- | ------- | ------- | ---------- | ---------- | ---------- | +| uws | node | 332,721.003 | 405,159.4 | 376,621.69 | 216,381.92 | +| ultimate-express | node | 303,344.533 | 398,161.89 | 377,012.33 | 134,859.38 | +| elysia | bun | 255,154.763 | 400,960.78 | 200,374.15 | 164,129.36 | +| hyper-express | node | 207,969.387 | 270,288.86 | 207,667.76 | 145,951.54 | +| bun | bun | 205,544.443 | 254,858.08 | 205,117 | 156,658.25 | +| nhttp | bun | 193,424.9 | 260,256.2 | 155,733.48 | 164,285.02 | +| bun-web-standard | bun | 177,607.287 | 228,408.02 | 153,303.58 | 151,110.26 | +| hono | bun | 160,224.343 | 202,727.16 | 147,760.89 | 130,184.98 | +| wobe | bun | 156,752.127 | 177,452.13 | 159,185.52 | 133,618.73 | +| nbit | bun | 135,422.483 | 166,352.26 | 130,437.58 | 109,477.61 | +| h3 | node | 89,569.673 | 102,794.32 | 86,779.18 | 79,135.52 | +| express | bun | 87,455.597 | 94,358.98 | 83,982.98 | 84,024.83 | +| fastify | node | 84,212.543 | 114,069.22 | 106,418.14 | 32,150.27 | +| hono | node | 72,617.857 | 102,406.51 | 91,815.44 | 23,631.62 | +| h3 | bun | 63,321.067 | 98,530.52 | 81,602.75 | 9,829.93 | +| oak | bun | 57,201.077 | 66,974.27 | 55,255.71 | 49,373.25 | +| koa | node | 47,207.737 | 57,452.05 | 48,624.37 | 35,546.79 | +| seobeo | c | 35,777.277 | 35,694.89 | 35,792.17 | 35,844.77 | +| express | node | 16,759.553 | 16,803.98 | 15,956.22 | 17,518.46 | \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/scripts/body.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/scripts/body.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,3 @@ +{ + "hello": "world" +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/scripts/body.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/scripts/body.lua Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,3 @@ +wrk.method = "POST" +wrk.body = '{ "hello": "world" }' +wrk.headers["Content-Type"] = "application/json" \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/scripts/body.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/scripts/body.sh Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +bombardier --fasthttp -c 500 -d 10s -m POST -H 'Content-Type: application/json' -f ./body.json http://localhost:3000/json diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/scripts/get.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/scripts/get.sh Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +bombardier --fasthttp -c 500 -d 10s http://localhost:3000/ \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/scripts/query.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/scripts/query.sh Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +bombardier --fasthttp -c 500 -d 10s http://localhost:3000/id/1?name=bun \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/BUILD --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/BUILD Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +# Source package diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/bun-web-standard.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/bun-web-standard.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,51 @@ +// Using Web Standard API to handle +// This is likely an real-world implementation +// if you're using pure Bun HTTP server +Bun.serve({ + port: 3000, + fetch: async (request) => { + const url = new URL(request.url) + + switch (request.method) { + case 'GET': + switch (url.pathname) { + case '/': + return new Response('Hi') + } + + if (url.pathname.startsWith('/id/')) { + const [id, rest] = url.pathname.slice(4).split('/') + + if (!rest) + return new Response( + `${id} ${url.searchParams.get('name')}`, + { + headers: { + 'x-powered-by': 'benchmark' + } + } + ) + } + + return new Response('Not Found', { + status: 404 + }) + + case 'POST': + switch (url.pathname) { + case '/json': + return Response.json(await request.json()) + + default: + return new Response('Not Found', { + status: 404 + }) + } + + default: + return new Response('Not Found', { + status: 404 + }) + } + } +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/bun.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/bun.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,95 @@ +const jsonHeaders = { headers: [['Content-Type', 'application/json']] }, + queryHeaders = { headers: [['X-Powered-By', 'benchmark']] }, + notFound = new Response(null, { status: 404 }), + hiRes = new Response('Hi') + +function toResponse(json: unknown) { + return new Response(JSON.stringify(json), jsonHeaders) +} + +// json -> [106, 115, 111, 110] +// id/ -> [105, 100, 47] +// Simulate the maximum performance you can get with Bun.serve +// We should appreciate how frameworks make all these stuff easier :) - Reve +Bun.serve({ + static: { + '/': new Response('Hi', { + headers: { 'content-type': 'text/plain;charset=utf8' } + }) + }, + routes: { + '/id/:id': { + GET(request: Request) { + const url = request.url, + s = url.indexOf('/', 11), + qi = url.indexOf('?', s + 1) + + const nameIdx = url.indexOf('name=', qi + 1) + const nameEndIdx = url.indexOf('&', nameIdx + 1) + return new Response( + `${request.params.id} ${ + nameEndIdx === -1 + ? url.substring(nameIdx + 5) + : url.substring(nameIdx + 5, nameEndIdx) + }`, + queryHeaders + ) + } + } + }, + fetch(req): Response | Promise { + const url = req.url + + const pathIndex = url.indexOf('/', 12) + 1 + const queryIndex = url.indexOf('?', pathIndex) + const path = + queryIndex === -1 + ? url.substring(pathIndex) + : url.substring(pathIndex, queryIndex) + + if (path.length === 0) + return req.method === 'GET' ? hiRes.clone() : notFound + + switch (path.charCodeAt(0)) { + case 105: + if ( + path.charCodeAt(1) === 100 && + path.charCodeAt(2) === 47 && + req.method === 'GET' + ) { + // Shouldn't include a slash and should have query + if (queryIndex === -1 || path.indexOf('/', 3) !== -1) + return notFound + + const nameQueryIdx = url.indexOf('name=', queryIndex + 1) + if (nameQueryIdx === -1) return notFound + + const nameQueryEndIdx = url.indexOf('&', nameQueryIdx + 1) + return new Response( + `${path.substring(3, queryIndex)} ${ + nameQueryEndIdx === -1 + ? url.substring(nameQueryIdx + 5) + : url.substring( + nameQueryIdx + 5, + nameQueryEndIdx + ) + }`, + queryHeaders + ) + } + + return notFound + + case 106: + return path.charCodeAt(1) === 115 && + path.charCodeAt(2) === 111 && + path.charCodeAt(3) === 110 && + req.method === 'POST' + ? req.json().then(toResponse) + : notFound + + default: + return notFound + } + } +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/bunrest.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/bunrest.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,24 @@ +import Server from 'bunrest' + +const app = Server() +const xPoweredBy = 'benchmark' + +app.get('/', (req, res) => { + res.send('Hi') +}) + +// ? Can't read body +app.post('/json', async (req, res) => { + res.send(await req.json()) +}) + +// ? Named parameter not implemented? +app.get('/id/:id', ({ params: { id }, query: { name } }, res) => { + const headers = new Headers() + headers.set('x-powered-by', xPoweredBy) + + res.headers(headers) + res.send(`${id} ${name}`) +}) + +app.listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/byte.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/byte.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,17 @@ +import { Byte, query, send } from '@bit-js/byte' + +const xPoweredBy = ['X-Powered-By', 'benchmark'] as [string, string] + +// Extract the 'name' parameter value from query +const getName = query.get('name') + +// Serve directly +export default new Byte() + .get('/', send.body('Hi')) + // Send ID with query + .get('/id/:id', (ctx) => { + ctx.headers.push(xPoweredBy) + return ctx.body(`${ctx.params.id} ${getName(ctx)}`) + }) + // Yield body + .post('/json', async (ctx) => ctx.json(await ctx.req.json())) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/elysia.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/elysia.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,13 @@ +import { Elysia, t } from 'elysia' + +const app = new Elysia() + .get('/', 'Hi') + .get('/id/:id', (c) => { + c.set.headers['x-powered-by'] = 'benchmark' + + return `${c.params.id} ${c.query.name}` + }) + .post('/json', (c) => c.body, { + parse: 'json' + }) + .listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/express.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/express.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,16 @@ +import express from 'express' + +express() + .use(express.json()) + .get('/', (req, res) => { + res.setHeader('content-type', 'text/plain').send('Hi') + }) + .post('/json', ({ body }, res) => { + res.json(body) + }) + .get('/id/:id', ({ params: { id }, query: { name } }, res) => { + res.setHeader('x-powered-by', 'benchmark') + .setHeader('content-type', 'text/plain') + .send(`${id} ${name}`) + }) + .listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/fastify.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/fastify.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,16 @@ +import fastify from "fastify" + +const server = fastify() + .get("/", () => "Hi") + .get("/id/:id", (req, res) => { + res.header("x-powered-by", "benchmark") + return `${req.params.id} ${req.query.name}` + }) + .post("/json", (req, _res) => req.body) + +server.listen({ port: 3000 }, function (err) { + if (err) { + server.log.error(err) + process.exit(1) + } +}); diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/h3.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/h3.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,46 @@ +import { + toWebHandler, + createApp, + createRouter, + eventHandler, + toNodeListener, + getQuery, + setResponseHeader, + readBody +} from 'h3' + +const app = createApp() +const router = createRouter() + +router.get( + '/', + eventHandler((event) => { + setResponseHeader(event, 'content-type', 'text/plain') + + return 'Hi' + }) +) + +router.get( + '/id/:id', + eventHandler((event) => { + const query = getQuery(event) + + setResponseHeader(event, 'content-type', 'text/plain') + setResponseHeader(event, 'x-powered-by', 'benchmark') + + return `${event.context.params?.id} ${query.name}` + }) +) + +router.post( + '/json', + eventHandler((event) => readBody(event)) +) + +app.use(router) + +Bun.serve({ + port: 3000, + fetch: toWebHandler(app) as any +}) \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/hono.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/hono.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,17 @@ +import { Hono } from 'hono' +import { RegExpRouter } from 'hono/router/reg-exp-router' + +const app = new Hono({ router: new RegExpRouter() }) + +app.get('/', (c) => c.text('Hi')) + .post('/json', (c) => c.req.json().then(c.json)) + .get('/id/:id', (c) => { + const id = c.req.param('id') + const name = c.req.query('name') + + c.header('x-powered-by', 'benchmark') + + return c.text(`${id} ${name}`) + }) + +export default app diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/nbit.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/nbit.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,25 @@ +import { createApplication } from "@nbit/bun" + +const { defineRoutes, attachRoutes } = createApplication() + +const xPoweredBy = "benchmark" + +const routes = defineRoutes((app) => [ + app.get("/", () => new Response("Hi")), + app.post("/json", async (request) => request.json()), + app.get("/id/:id", async (request) => { + const id = request.params.id + const name = request.query.get("name") + + return new Response(`${id} ${name}`, { + headers: { + "x-powered-by": xPoweredBy + } + }) + }) +]) + +Bun.serve({ + port: 3000, + fetch: attachRoutes(routes) +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/nhttp.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/nhttp.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,15 @@ +import { nhttp } from 'nhttp-land' + +const app = nhttp() + +app.get("/", () => "Hi") + +app.post("/json", (rev) => rev.body) + +app.get("/id/:id", (rev) => { + rev.response.setHeader("x-powered-by", "benchmark"); + + return `${rev.params.id} ${rev.query.name}` +}) + +app.listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/oak.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/oak.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +import { Application, Router } from "@oakserver/oak" + +const router = new Router() + .get("/", (context) => { + context.response.body = "Hi" + }) + .get("/id/:id", (context) => { + context.response.headers.append("x-powered-by", "benchmark") + context.response.body = `${ + context.params.id + } ${context.request.url.searchParams.get("name")}` + }) + .post("/json", async (context) => { + context.response.body = await context.request.body.json() + }) + +const app = new Application() +app.use(router.routes()) +app.use(router.allowedMethods()) + +await app.listen({ port: 3000 }) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/vixeny.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/vixeny.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,37 @@ +import { wrap } from 'vixeny' + +Bun.serve({ + fetch: wrap()() + .petitionWithoutCTX({ + path: '/', + r: () => new Response('Hi') + }) + .stdPetition({ + path: '/id/:id', + headings: { + // This doesn't work for some reason + headers: { + 'x-powered-by': 'benchmark' + } + }, + param:{ + unique: true + }, + query: { + unique: true, + name: "name" + }, + f: (f) => f.param + ' ' + f.query + }) + .stdPetition({ + path: '/json', + method: 'POST', + headings: { + headers: { + 'content-type': 'application/json' + } + }, + f: async (f) => JSON.stringify(await f.req.json()) + }) + .compose() +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/bun/wobe.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/bun/wobe.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,13 @@ +import { Wobe } from 'wobe' + +new Wobe() + .get('/', (ctx) => ctx.res.sendText('Hi')) + .post('/json', async (ctx) => { + return ctx.res.sendJson(await ctx.request.json()) + }) + .get('/id/:id', (ctx) => { + ctx.res.headers.set('x-powered-by', 'benchmark') + + return ctx.res.sendText(ctx.params.id + ' ' + ctx.query.name) + }) + .listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/c/BUILD --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/c/BUILD Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,10 @@ +load("@rules_cc//cc:cc_binary.bzl", "cc_binary") + +cc_binary( + name = "seobeo", + srcs = ["seobeo.c"], + deps = [ + "//seobeo:seobeo_tcp_server", + ], + visibility = ["//visibility:public"], +) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/c/seobeo.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/c/seobeo.c Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,83 @@ +/** + * Seobeo HTTP Framework Benchmark + * + * Implements the 3 required endpoints: + * - GET / -> "Hi" + * - GET /id/:id -> "{id} {name}" with x-powered-by header + * - POST /json -> mirrors JSON body + */ + +#include "seobeo/seobeo.h" +#include +#include +#include + +// GET / - Return "Hi" +Seobeo_Request_Entry* GetIndex(Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena) +{ + (void)p_req; + + Seobeo_Request_Entry *p_resp = NULL; + Dowa_HashMap_Push_Arena(p_resp, "status", "200", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "content-type", "text/plain", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "body", "Hi", p_arena); + + return p_resp; +} + +// GET /id/:id - Return "{id} {name}" with x-powered-by header +Seobeo_Request_Entry* GetId(Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena) +{ + // Get the :id param (stored as ":id" key) + void *p_id_kv = Dowa_HashMap_Get_Ptr(p_req, ":id"); + const char *id = p_id_kv ? ((Seobeo_Request_Entry*)p_id_kv)->value : ""; + + // Get the query param "name" (stored as "query_name") + void *p_name_kv = Dowa_HashMap_Get_Ptr(p_req, "query_name"); + const char *name = p_name_kv ? ((Seobeo_Request_Entry*)p_name_kv)->value : ""; + + // Build response body: "{id} {name}" + size_t body_len = strlen(id) + 1 + strlen(name) + 1; + char *body = Dowa_Arena_Allocate(p_arena, body_len); + snprintf(body, body_len, "%s %s", id, name); + + Seobeo_Request_Entry *p_resp = NULL; + Dowa_HashMap_Push_Arena(p_resp, "status", "200", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "content-type", "text/plain", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "x-powered-by", "benchmark", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "body", body, p_arena); + + return p_resp; +} + +// POST /json - Mirror the JSON body +Seobeo_Request_Entry* PostJson(Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena) +{ + // Get the request body + void *p_body_kv = Dowa_HashMap_Get_Ptr(p_req, "Body"); + const char *body = p_body_kv ? ((Seobeo_Request_Entry*)p_body_kv)->value : "{}"; + + Seobeo_Request_Entry *p_resp = NULL; + Dowa_HashMap_Push_Arena(p_resp, "status", "200", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "content-type", "application/json", p_arena); + Dowa_HashMap_Push_Arena(p_resp, "body", (char*)body, p_arena); + + return p_resp; +} + +int main() +{ + // Initialize router + Seobeo_Router_Init(); + + // Register routes + Seobeo_Router_Register("GET", "/", GetIndex); + Seobeo_Router_Register("GET", "/id/:id", GetId); + Seobeo_Router_Register("POST", "/json", PostJson); + + // Start server on port 3000 using edge-triggered I/O + // Using EDGE mode for maximum performance (epoll/kqueue) + Seobeo_Web_Server_Start(NULL, "3000", SEOBEO_MODE_EDGE, 4); + + return 0; +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/deno/acorn.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/deno/acorn.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,15 @@ +import { Router } from '@oak/acorn' + +const app = new Router() + +app.get('/', () => new Response('Hi')) +app.get('/id/:id', async (ctx) => { + return new Response(`${ctx.params.id} ${(await ctx.queryParams()).name}`, { + headers: { + 'x-powered-by': 'benchmark' + } + }) +}) +app.post('/json', (ctx) => ctx.body()) + +app.listen({ port: 3000 }) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/deno/deno-web-standard.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/deno/deno-web-standard.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,46 @@ +// @ts-nocheck +Deno.serve({ port: 3000 }, async (request) => { + const url = new URL(request.url) + + switch (request.method) { + case 'GET': + switch (url.pathname) { + case '/': + return new Response('Hi') + } + + if (url.pathname.startsWith('/id/')) { + const [id, rest] = url.pathname.slice(4).split('/') + + if (!rest) + return new Response( + `${id} ${url.searchParams.get('name')}`, + { + headers: { + 'x-powered-by': 'benchmark' + } + } + ) + } + + return new Response('Not Found', { + status: 404 + }) + + case 'POST': + switch (url.pathname) { + case '/json': + return Response.json(await request.json()) + + default: + return new Response('Not Found', { + status: 404 + }) + } + + default: + return new Response('Not Found', { + status: 404 + }) + } +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/deno/deno.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/deno/deno.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,66 @@ +// @ts-nocheck +const jsonHeaders = { headers: [['Content-Type', 'application/json']] }, + queryHeaders = { headers: [['X-Powered-By', 'benchmark']] }, + notFound = new Response(null, { status: 404 }), + hiRes = new Response('Hi') + +function toResponse(json: unknown) { + return new Response(JSON.stringify(json), jsonHeaders) +} + +// json -> [106, 115, 111, 110] +// id/ -> [105, 100, 47] +// Simulate the maximum performance you can get with Bun.serve +// We should appreciate how frameworks make all these stuff easier :) - Reve +Deno.serve({ port: 3000 }, (req) => { + const url = req.url + + const pathIndex = url.indexOf('/', 12) + 1 + const queryIndex = url.indexOf('?', pathIndex) + const path = + queryIndex === -1 + ? url.substring(pathIndex) + : url.substring(pathIndex, queryIndex) + + if (path.length === 0) + return req.method === 'GET' ? hiRes.clone() : notFound + + switch (path.charCodeAt(0)) { + case 105: + if ( + path.charCodeAt(1) === 100 && + path.charCodeAt(2) === 47 && + req.method === 'GET' + ) { + // Shouldn't include a slash and should have query + if (queryIndex === -1 || path.indexOf('/', 3) !== -1) + return notFound + + const nameQueryIdx = url.indexOf('name=', queryIndex + 1) + if (nameQueryIdx === -1) return notFound + + const nameQueryEndIdx = url.indexOf('&', nameQueryIdx + 1) + return new Response( + `${path.substring(3, queryIndex)} ${ + nameQueryEndIdx === -1 + ? url.substring(nameQueryIdx + 5) + : url.substring(nameQueryIdx + 5, nameQueryEndIdx) + }`, + queryHeaders + ) + } + + return notFound + + case 106: + return path.charCodeAt(1) === 115 && + path.charCodeAt(2) === 111 && + path.charCodeAt(3) === 110 && + req.method === 'POST' + ? req.json().then(toResponse) + : notFound + + default: + return notFound + } +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/deno/hono.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/deno/hono.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +import { Hono, RegExpRouter } from 'https://deno.land/x/hono@v4.3.11/mod.ts' + +const app = new Hono({ router: new RegExpRouter() }) + +app.get('/', (c) => c.text('Hi')) + .post('/json', (c) => c.req.json().then(c.json)) + .get('/id/:id', (c) => { + const id = c.req.param('id') + const name = c.req.query('name') + + c.header('x-powered-by', 'benchmark') + + return c.text(`${id} ${name}`) + }) + +Deno.serve( + { + port: 3000 + }, + app.fetch +) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/deno/oak.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/deno/oak.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +import { Application, Router } from "@oak/oak" + +const router = new Router() + .get("/", (context) => { + context.response.body = "Hi" + }) + .get("/id/:id", (context) => { + context.response.headers.append("x-powered-by", "benchmark") + context.response.body = `${ + context.params.id + } ${context.request.url.searchParams.get("name")}` + }) + .post("/json", async (context) => { + context.response.body = await context.request.body.json() + }) + +const app = new Application() +app.use(router.routes()) +app.use(router.allowedMethods()) + +await app.listen({ port: 3000 }) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/.adonisrc.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/.adonisrc.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,43 @@ +{ + "typescript": false, + "commands": [ + "./commands", + "@adonisjs/core/build/commands/index.js" + ], + "exceptionHandlerNamespace": "App/Exceptions/Handler", + "aliases": { + "App": "app", + "Config": "config", + "Database": "database", + "Contracts": "contracts" + }, + "preloads": [ + "./start/routes", + "./start/kernel" + ], + "providers": [ + "./providers/AppProvider", + "@adonisjs/core" + ], + "metaFiles": [ + { + "pattern": "public/**", + "reloadServer": false + } + ], + "tests": { + "suites": [ + { + "name": "functional", + "files": [ + "tests/functional/**/*.spec(.ts|.js)" + ], + "timeout": 60000 + } + ] + }, + "testProviders": [ + "@japa/preset-adonis/TestsProvider" + ], + "lastCompiledAt": "2023-05-16T17:00:21.006Z" +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/ace --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/ace Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,16 @@ +/* +|-------------------------------------------------------------------------- +| Ace Commands +|-------------------------------------------------------------------------- +| +| This file is the entry point for running ace commands. +| +*/ + +require('reflect-metadata') +require('source-map-support').install({ handleUncaughtExceptions: false }) + +const { Ignitor } = require('@adonisjs/core/build/standalone') +new Ignitor(__dirname) + .ace() + .handle(process.argv.slice(2)) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/ace-manifest.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/ace-manifest.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,88 @@ +{ + "commands": { + "dump:rcfile": { + "settings": {}, + "commandPath": "@adonisjs/core/build/commands/DumpRc", + "commandName": "dump:rcfile", + "description": "Dump contents of .adonisrc.json file along with defaults", + "args": [], + "aliases": [], + "flags": [] + }, + "list:routes": { + "settings": { + "loadApp": true, + "stayAlive": true + }, + "commandPath": "@adonisjs/core/build/commands/ListRoutes/index", + "commandName": "list:routes", + "description": "List application routes", + "args": [], + "aliases": [], + "flags": [ + { + "name": "verbose", + "propertyName": "verbose", + "type": "boolean", + "description": "Display more information" + }, + { + "name": "reverse", + "propertyName": "reverse", + "type": "boolean", + "alias": "r", + "description": "Reverse routes display" + }, + { + "name": "methods", + "propertyName": "methodsFilter", + "type": "array", + "alias": "m", + "description": "Filter routes by method" + }, + { + "name": "patterns", + "propertyName": "patternsFilter", + "type": "array", + "alias": "p", + "description": "Filter routes by the route pattern" + }, + { + "name": "names", + "propertyName": "namesFilter", + "type": "array", + "alias": "n", + "description": "Filter routes by route name" + }, + { + "name": "json", + "propertyName": "json", + "type": "boolean", + "description": "Output as JSON" + }, + { + "name": "table", + "propertyName": "table", + "type": "boolean", + "description": "Output as Table" + }, + { + "name": "max-width", + "propertyName": "maxWidth", + "type": "number", + "description": "Specify maximum rendering width. Ignored for JSON Output" + } + ] + }, + "generate:key": { + "settings": {}, + "commandPath": "@adonisjs/core/build/commands/GenerateKey", + "commandName": "generate:key", + "description": "Generate a new APP_KEY secret", + "args": [], + "aliases": [], + "flags": [] + } + }, + "aliases": {} +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/app/Exceptions/Handler.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/app/Exceptions/Handler.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,14 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Logger_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Logger")); +const HttpExceptionHandler_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/HttpExceptionHandler")); +class ExceptionHandler extends HttpExceptionHandler_1.default { + constructor() { + super(Logger_1.default); + } +} +exports.default = ExceptionHandler; +//# sourceMappingURL=Handler.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/app/Exceptions/Handler.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/app/Exceptions/Handler.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"Handler.js","sourceRoot":"","sources":["../../../app/Exceptions/Handler.ts"],"names":[],"mappings":";;;;;AAeA,sFAA4C;AAC5C,kHAAwE;AAExE,MAAqB,gBAAiB,SAAQ,8BAAoB;IAChE;QACE,KAAK,CAAC,gBAAM,CAAC,CAAA;IACf,CAAC;CACF;AAJD,mCAIC"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/bun.lockb Binary file benchmark/bun-http-framework-benchmark/src/node/adonis/bun.lockb has changed diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/commands/index.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/commands/index.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,9 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const standalone_1 = require("@adonisjs/core/build/standalone"); +const Application_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Application")); +exports.default = (0, standalone_1.listDirectoryFiles)(__dirname, Application_1.default.appRoot, ['./commands/index']); +//# sourceMappingURL=index.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/commands/index.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/commands/index.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../commands/index.ts"],"names":[],"mappings":";;;;;AAAA,gEAAoE;AACpE,gGAAsD;AAiBtD,kBAAe,IAAA,+BAAkB,EAAC,SAAS,EAAE,qBAAW,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/app.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/app.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,38 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validator = exports.profiler = exports.logger = exports.http = exports.appKey = void 0; +const proxy_addr_1 = __importDefault(require("proxy-addr")); +const Env_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Env")); +exports.appKey = Env_1.default.get('APP_KEY'); +exports.http = { + allowMethodSpoofing: false, + subdomainOffset: 2, + generateRequestId: false, + trustProxy: proxy_addr_1.default.compile('loopback'), + etag: false, + jsonpCallbackName: 'callback', + cookie: { + domain: '', + path: '/', + maxAge: '2h', + httpOnly: true, + secure: false, + sameSite: false, + }, +}; +exports.logger = { + name: Env_1.default.get('APP_NAME'), + enabled: true, + level: Env_1.default.get('LOG_LEVEL', 'info'), + prettyPrint: Env_1.default.get('NODE_ENV') === 'development', +}; +exports.profiler = { + enabled: true, + blacklist: [], + whitelist: [], +}; +exports.validator = {}; +//# sourceMappingURL=app.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/app.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/app.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"app.js","sourceRoot":"","sources":["../../config/app.ts"],"names":[],"mappings":";;;;;;AAOA,4DAAkC;AAClC,gFAAsC;AAmBzB,QAAA,MAAM,GAAW,aAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAWnC,QAAA,IAAI,GAAiB;IAYhC,mBAAmB,EAAE,KAAK;IAO1B,eAAe,EAAE,CAAC;IAWlB,iBAAiB,EAAE,KAAK;IAWxB,UAAU,EAAE,oBAAS,CAAC,OAAO,CAAC,UAAU,CAAC;IAUzC,IAAI,EAAE,KAAK;IAOX,iBAAiB,EAAE,UAAU;IAO7B,MAAM,EAAE;QACN,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;KAChB;CACF,CAAA;AAOY,QAAA,MAAM,GAAiB;IAalC,IAAI,EAAE,aAAG,CAAC,GAAG,CAAC,UAAU,CAAC;IAUzB,OAAO,EAAE,IAAI;IAYb,KAAK,EAAE,aAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;IAWnC,WAAW,EAAE,aAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,aAAa;CACnD,CAAA;AAOY,QAAA,QAAQ,GAAmB;IAStC,OAAO,EAAE,IAAI;IAWb,SAAS,EAAE,EAAE;IAWb,SAAS,EAAE,EAAE;CACd,CAAA;AAWY,QAAA,SAAS,GAAoB,EAAE,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/bodyparser.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/bodyparser.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const bodyParserConfig = { + whitelistedMethods: ['POST', 'PUT', 'PATCH', 'DELETE'], + json: { + encoding: 'utf-8', + limit: '1mb', + strict: true, + types: [ + 'application/json', + 'application/json-patch+json', + 'application/vnd.api+json', + 'application/csp-report', + ], + }, + form: { + encoding: 'utf-8', + limit: '1mb', + queryString: {}, + convertEmptyStringsToNull: true, + types: ['application/x-www-form-urlencoded'], + }, + raw: { + encoding: 'utf-8', + limit: '1mb', + queryString: {}, + types: ['text/*'], + }, + multipart: { + autoProcess: true, + processManually: [], + encoding: 'utf-8', + convertEmptyStringsToNull: true, + maxFields: 1000, + limit: '20mb', + types: ['multipart/form-data'], + }, +}; +exports.default = bodyParserConfig; +//# sourceMappingURL=bodyparser.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/bodyparser.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/bodyparser.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"bodyparser.js","sourceRoot":"","sources":["../../config/bodyparser.ts"],"names":[],"mappings":";;AASA,MAAM,gBAAgB,GAAqB;IAUzC,kBAAkB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;IAWtD,IAAI,EAAE;QACJ,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE;YACL,kBAAkB;YAClB,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;SACzB;KACF;IAWD,IAAI,EAAE;QACJ,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,EAAE;QAYf,yBAAyB,EAAE,IAAI;QAE/B,KAAK,EAAE,CAAC,mCAAmC,CAAC;KAC7C;IAYD,GAAG,EAAE;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,CAAC,QAAQ,CAAC;KAClB;IAWD,SAAS,EAAE;QAcT,WAAW,EAAE,IAAI;QAsBjB,eAAe,EAAE,EAAE;QAuBnB,QAAQ,EAAE,OAAO;QAYjB,yBAAyB,EAAE,IAAI;QAW/B,SAAS,EAAE,IAAI;QAWf,KAAK,EAAE,MAAM;QAUb,KAAK,EAAE,CAAC,qBAAqB,CAAC;KAC/B;CACF,CAAA;AAED,kBAAe,gBAAgB,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/cors.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/cors.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const corsConfig = { + enabled: false, + origin: true, + methods: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE'], + headers: true, + exposeHeaders: [ + 'cache-control', + 'content-language', + 'content-type', + 'expires', + 'last-modified', + 'pragma', + ], + credentials: true, + maxAge: 90, +}; +exports.default = corsConfig; +//# sourceMappingURL=cors.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/cors.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/cors.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"cors.js","sourceRoot":"","sources":["../../config/cors.ts"],"names":[],"mappings":";;AASA,MAAM,UAAU,GAAe;IAa7B,OAAO,EAAE,KAAK;IAwBd,MAAM,EAAE,IAAI;IAYZ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;IAmBjD,OAAO,EAAE,IAAI;IAsBb,aAAa,EAAE;QACb,eAAe;QACf,kBAAkB;QAClB,cAAc;QACd,SAAS;QACT,eAAe;QACf,QAAQ;KACT;IAaD,WAAW,EAAE,IAAI;IAWjB,MAAM,EAAE,EAAE;CACX,CAAA;AAED,kBAAe,UAAU,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/drive.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/drive.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Env_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Env")); +const config_1 = require("@adonisjs/core/build/config"); +const Application_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Application")); +exports.default = (0, config_1.driveConfig)({ + disk: Env_1.default.get('DRIVE_DISK'), + disks: { + local: { + driver: 'local', + visibility: 'public', + root: Application_1.default.tmpPath('uploads'), + serveFiles: true, + basePath: '/uploads', + }, + }, +}); +//# sourceMappingURL=drive.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/drive.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/drive.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../config/drive.ts"],"names":[],"mappings":";;;;;AAOA,gFAAsC;AACtC,wDAAyD;AACzD,gGAAsD;AAWtD,kBAAe,IAAA,oBAAW,EAAC;IAUzB,IAAI,EAAE,aAAG,CAAC,GAAG,CAAC,YAAY,CAAC;IAE3B,KAAK,EAAE;QAUL,KAAK,EAAE;YACL,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,QAAQ;YAWpB,IAAI,EAAE,qBAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YAYpC,UAAU,EAAE,IAAI;YAYhB,QAAQ,EAAE,UAAU;SACrB;KAmEF;CACF,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/hash.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/hash.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,34 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Env_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Env")); +const config_1 = require("@adonisjs/core/build/config"); +exports.default = (0, config_1.hashConfig)({ + default: Env_1.default.get('HASH_DRIVER', 'scrypt'), + list: { + scrypt: { + driver: 'scrypt', + cost: 16384, + blockSize: 8, + parallelization: 1, + saltSize: 16, + keyLength: 64, + maxMemory: 32 * 1024 * 1024, + }, + argon: { + driver: 'argon2', + variant: 'id', + iterations: 3, + memory: 4096, + parallelism: 1, + saltSize: 16, + }, + bcrypt: { + driver: 'bcrypt', + rounds: 10, + }, + }, +}); +//# sourceMappingURL=hash.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/hash.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/hash.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../config/hash.ts"],"names":[],"mappings":";;;;;AAOA,gFAAsC;AACtC,wDAAwD;AAWxD,kBAAe,IAAA,mBAAU,EAAC;IAUxB,OAAO,EAAE,aAAG,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC;IAEzC,IAAI,EAAE;QAcJ,MAAM,EAAE;YACN,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,CAAC;YACZ,eAAe,EAAE,CAAC;YAClB,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B;QAeD,KAAK,EAAE;YACL,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,EAAE;SACb;QAeD,MAAM,EAAE;YACN,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,EAAE;SACX;KACF;CACF,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/static.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/static.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const staticConfig = { + enabled: true, + dotFiles: 'ignore', + etag: true, + lastModified: true, + maxAge: 0, + immutable: false, +}; +exports.default = staticConfig; +//# sourceMappingURL=static.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/config/static.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/config/static.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"static.js","sourceRoot":"","sources":["../../config/static.ts"],"names":[],"mappings":";;AASA,MAAM,YAAY,GAAiB;IAajC,OAAO,EAAE,IAAI;IAgBb,QAAQ,EAAE,QAAQ;IAWlB,IAAI,EAAE,IAAI;IAWV,YAAY,EAAE,IAAI;IAalB,MAAM,EAAE,CAAC;IAYT,SAAS,EAAE,KAAK;CACjB,CAAA;AAED,kBAAe,YAAY,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/drive.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/drive.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=drive.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/drive.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/drive.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../contracts/drive.ts"],"names":[],"mappings":""} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/env.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/env.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +//# sourceMappingURL=env.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/env.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/env.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"env.js","sourceRoot":"","sources":["../../contracts/env.ts"],"names":[],"mappings":""} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/events.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/events.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +//# sourceMappingURL=events.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/events.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/events.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"events.js","sourceRoot":"","sources":["../../contracts/events.ts"],"names":[],"mappings":""} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/hash.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/hash.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=hash.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/hash.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/hash.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../contracts/hash.ts"],"names":[],"mappings":""} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/tests.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/tests.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +require("@japa/runner"); +//# sourceMappingURL=tests.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/tests.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/contracts/tests.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../contracts/tests.ts"],"names":[],"mappings":";;AAOA,wBAAqB"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/env.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/env.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,15 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Env_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Env")); +exports.default = Env_1.default.rules({ + HOST: Env_1.default.schema.string({ format: 'host' }), + PORT: Env_1.default.schema.number(), + APP_KEY: Env_1.default.schema.string(), + APP_NAME: Env_1.default.schema.string(), + DRIVE_DISK: Env_1.default.schema.enum(['local']), + NODE_ENV: Env_1.default.schema.enum(['development', 'production', 'test']), +}); +//# sourceMappingURL=env.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/env.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/env.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"env.js","sourceRoot":"","sources":["../env.ts"],"names":[],"mappings":";;;;;AAcA,gFAAsC;AAEtC,kBAAe,aAAG,CAAC,KAAK,CAAC;IACvB,IAAI,EAAE,aAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC3C,IAAI,EAAE,aAAG,CAAC,MAAM,CAAC,MAAM,EAAE;IACzB,OAAO,EAAE,aAAG,CAAC,MAAM,CAAC,MAAM,EAAE;IAC5B,QAAQ,EAAE,aAAG,CAAC,MAAM,CAAC,MAAM,EAAE;IAC7B,UAAU,EAAE,aAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAU,CAAC;IAC/C,QAAQ,EAAE,aAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAU,CAAC;CAC1E,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/index.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/index.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,11 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +require("reflect-metadata"); +const source_map_support_1 = __importDefault(require("source-map-support")); +const standalone_1 = require("@adonisjs/core/build/standalone"); +source_map_support_1.default.install({ handleUncaughtExceptions: false }); +new standalone_1.Ignitor(__dirname).httpServer().start(); +//# sourceMappingURL=server.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/index.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/index.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":";;;;;AAYA,4BAAyB;AACzB,4EAAiD;AACjD,gEAAyD;AAEzD,4BAAgB,CAAC,OAAO,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAA;AAE7D,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/package.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/package.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,63 @@ +{ + "name": "adonis", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "node ace serve --watch", + "build": "node ace build --production", + "start": "node server.js", + "test": "node ace test", + "lint": "eslint . --ext=.ts", + "format": "prettier --write ." + }, + "eslintConfig": { + "extends": [ + "plugin:adonis/typescriptApp", + "prettier" + ], + "plugins": [ + "prettier" + ], + "rules": { + "prettier/prettier": [ + "error" + ] + } + }, + "eslintIgnore": [ + "build" + ], + "prettier": { + "trailingComma": "es5", + "semi": false, + "singleQuote": true, + "useTabs": false, + "quoteProps": "consistent", + "bracketSpacing": true, + "arrowParens": "always", + "printWidth": 100 + }, + "devDependencies": { + "@adonisjs/assembler": "^5.9.5", + "@japa/preset-adonis": "^1.2.0", + "@japa/runner": "^2.5.1", + "@types/proxy-addr": "^2.0.0", + "@types/source-map-support": "^0.5.6", + "adonis-preset-ts": "^2.1.0", + "eslint": "^8.40.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-adonis": "^2.1.1", + "eslint-plugin-prettier": "^4.2.1", + "pino-pretty": "^10.0.0", + "prettier": "^2.8.8", + "typescript": "~4.6", + "youch": "^3.2.3", + "youch-terminal": "^2.2.0" + }, + "dependencies": { + "@adonisjs/core": "^5.8.0", + "proxy-addr": "^2.0.7", + "reflect-metadata": "^0.1.13", + "source-map-support": "^0.5.21" + } +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/providers/AppProvider.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/providers/AppProvider.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class AppProvider { + constructor(app) { + this.app = app; + } + register() { + } + async boot() { + } + async ready() { + } + async shutdown() { + } +} +exports.default = AppProvider; +//# sourceMappingURL=AppProvider.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/providers/AppProvider.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/providers/AppProvider.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"AppProvider.js","sourceRoot":"","sources":["../../providers/AppProvider.ts"],"names":[],"mappings":";;AAEA,MAAqB,WAAW;IAC9B,YAAsB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;IAAG,CAAC;IAE3C,QAAQ;IAEf,CAAC;IAEM,KAAK,CAAC,IAAI;IAEjB,CAAC;IAEM,KAAK,CAAC,KAAK;IAElB,CAAC;IAEM,KAAK,CAAC,QAAQ;IAErB,CAAC;CACF;AAlBD,8BAkBC"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/start/kernel.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/start/kernel.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,32 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Server_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Server")); +Server_1.default.middleware.register([() => Promise.resolve().then(() => __importStar(global[Symbol.for('ioc.use')]("Adonis/Core/BodyParser")))]); +Server_1.default.middleware.registerNamed({}); +//# sourceMappingURL=kernel.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/start/kernel.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/start/kernel.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../start/kernel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sFAA4C;AAW5C,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,oGAAsC,CAAC,CAAC,CAAA;AAkBzE,gBAAM,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/start/routes.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/start/routes.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,13 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Route_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Route")); +Route_1.default.get('/', () => 'hi'); +Route_1.default.get('/id/:id', ({ params, request, response }) => { + response.header('x-powered-by', 'benchmark'); + return `${params.id} ${request.qs().name}`; +}); +Route_1.default.post('/json', ({ request }) => request.body()); +//# sourceMappingURL=routes.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/start/routes.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/start/routes.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../start/routes.ts"],"names":[],"mappings":";;;;;AAoBA,oFAA0C;AAE1C,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AAC1B,eAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrD,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IAE5C,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;AAC5C,CAAC,CAAC,CAAA;AACF,eAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/test.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/test.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,54 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +process.env.NODE_ENV = 'test'; +require("reflect-metadata"); +const source_map_support_1 = __importDefault(require("source-map-support")); +const standalone_1 = require("@adonisjs/core/build/standalone"); +const runner_1 = require("@japa/runner"); +source_map_support_1.default.install({ handleUncaughtExceptions: false }); +const kernel = new standalone_1.Ignitor(__dirname).kernel('test'); +kernel + .boot() + .then(() => Promise.resolve().then(() => __importStar(require('./tests/bootstrap')))) + .then(({ runnerHooks, ...config }) => { + const app = [() => kernel.start()]; + (0, runner_1.configure)({ + ...kernel.application.rcFile.tests, + ...(0, runner_1.processCliArgs)(process.argv.slice(2)), + ...config, + ...{ + importer: (filePath) => Promise.resolve().then(() => __importStar(require(filePath))), + setup: app.concat(runnerHooks.setup), + teardown: runnerHooks.teardown, + }, + cwd: kernel.application.appRoot, + }); + (0, runner_1.run)(); +}); +//# sourceMappingURL=test.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/test.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/test.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"test.js","sourceRoot":"","sources":["../test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAA;AAE7B,4BAAyB;AACzB,4EAAiD;AACjD,gEAAyD;AACzD,yCAAiF;AAEjF,4BAAgB,CAAC,OAAO,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAA;AAE7D,MAAM,MAAM,GAAG,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAEpD,MAAM;KACH,IAAI,EAAE;KACN,IAAI,CAAC,GAAG,EAAE,mDAAQ,mBAAmB,GAAC,CAAC;KACvC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;IACnC,MAAM,GAAG,GAAyB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IAExD,IAAA,kBAAS,EAAC;QACR,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK;QAClC,GAAG,IAAA,uBAAc,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,GAAG,MAAM;QACT,GAAG;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,mDAAQ,QAAQ,GAAC;YACxC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;YACpC,QAAQ,EAAE,WAAW,CAAC,QAAQ;SAC/B;QACD,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;KAChC,CAAC,CAAA;IAEF,IAAA,YAAG,GAAE,CAAA;AACP,CAAC,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/tests/bootstrap.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/tests/bootstrap.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.configureSuite = exports.runnerHooks = exports.reporters = exports.plugins = void 0; +const TestUtils_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/TestUtils")); +const preset_adonis_1 = require("@japa/preset-adonis"); +exports.plugins = [(0, preset_adonis_1.assert)(), (0, preset_adonis_1.runFailedTests)(), (0, preset_adonis_1.apiClient)()]; +exports.reporters = [(0, preset_adonis_1.specReporter)()]; +exports.runnerHooks = { + setup: [() => TestUtils_1.default.ace().loadCommands()], + teardown: [], +}; +const configureSuite = (suite) => { + if (suite.name === 'functional') { + suite.setup(() => TestUtils_1.default.httpServer().start()); + } +}; +exports.configureSuite = configureSuite; +//# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/tests/bootstrap.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/tests/bootstrap.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../tests/bootstrap.ts"],"names":[],"mappings":";;;;;;AAQA,4FAAkD;AAClD,uDAAqF;AAaxE,QAAA,OAAO,GAAgC,CAAC,IAAA,sBAAM,GAAE,EAAE,IAAA,8BAAc,GAAE,EAAE,IAAA,yBAAS,GAAE,CAAC,CAAA;AAYhF,QAAA,SAAS,GAAkC,CAAC,IAAA,4BAAY,GAAE,CAAC,CAAA;AAc3D,QAAA,WAAW,GAAiD;IACvE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,mBAAS,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;IAC7C,QAAQ,EAAE,EAAE;CACb,CAAA;AAaM,MAAM,cAAc,GAAuC,CAAC,KAAK,EAAE,EAAE;IAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;QAC/B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,mBAAS,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;KAClD;AACH,CAAC,CAAA;AAJY,QAAA,cAAc,kBAI1B"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/tests/functional/hello_world.spec.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/tests/functional/hello_world.spec.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const runner_1 = require("@japa/runner"); +(0, runner_1.test)('display welcome page', async ({ client }) => { + const response = await client.get('/'); + response.assertStatus(200); + response.assertTextIncludes('Hello world'); +}); +//# sourceMappingURL=hello_world.spec.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/tests/functional/hello_world.spec.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/tests/functional/hello_world.spec.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"hello_world.spec.js","sourceRoot":"","sources":["../../../tests/functional/hello_world.spec.ts"],"names":[],"mappings":";;AAAA,yCAAmC;AAEnC,IAAA,aAAI,EAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEtC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAC1B,QAAQ,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;AAC5C,CAAC,CAAC,CAAA"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/adonis/tsconfig.tsbuildinfo --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/adonis/tsconfig.tsbuildinfo Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":"4.6.4"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/elysia.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/elysia.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,14 @@ +const { Elysia } = require('elysia') +const { node } = require('@elysiajs/node') + +const app = new Elysia({ adapter: node() }) + .get('/', () => 'Hi') + .get('/id/:id', (c) => { + c.set.headers['x-powered-by'] = 'benchmark' + + return `${c.params.id} ${c.query.name}` + }) + .post('/json', (c) => c.body, { + type: 'json' + }) + .listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/express.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/express.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,16 @@ +const express = require('express') + +express() + .use(express.json()) + .get('/', (req, res) => { + res.setHeader('content-type', 'text/plain').send('Hi') + }) + .post('/json', ({ body }, res) => { + res.json(body) + }) + .get('/id/:id', ({ params: { id }, query: { name } }, res) => { + res.setHeader('x-powered-by', 'benchmark') + .setHeader('content-type', 'text/plain') + .send(`${id} ${name}`) + }) + .listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/fastify.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/fastify.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,40 @@ +const fastify = require("fastify"); + +const server = fastify() + .get("/", (req, res) => "Hi") + .get( + "/id/:id", + ( + req, + res + ) => { + res.header("x-powered-by", "benchmark"); + return `${req.params.id} ${req.query.name}`; + } + ) + .post( + "/json", + { + schema: { + response: { + 200: { + type: "object", + properties: { + hello: { + type: "string", + }, + }, + }, + }, + }, + }, + (req, res) => req.body + ) + + +server.listen({ port: 3000 }, function (err) { + if (err) { + server.log.error(err); + process.exit(1); + } +}); diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/h3.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/h3.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,44 @@ +const { createServer } = require('http') +const { + createApp, + createRouter, + eventHandler, + toNodeListener, + getQuery, + setResponseHeader, + readBody +} = require('h3') + +const app = createApp() + +const router = createRouter() + +router.get( + '/', + eventHandler((event) => { + setResponseHeader(event, 'content-type', 'text/plain') + + return 'Hi' + }) +) + +router.get( + '/id/:id', + eventHandler((event) => { + const query = getQuery(event) + + setResponseHeader(event, 'content-type', 'text/plain') + setResponseHeader(event, 'x-powered-by', 'benchmark') + + return `${event.context.params.id} ${query.name}` + }) +) + +router.post( + '/json', + eventHandler((event) => readBody(event)) +) + +app.use(router) + +createServer(toNodeListener(app)).listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/hapi.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/hapi.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,37 @@ +const Hapi = require("@hapi/hapi") + +const init = async () => { + const server = Hapi.server({ + port: 3000, + host: "localhost" + }) + + server.route([ + { + method: "GET", + path: "/", + handler: (request, h) => "Hi" + }, + { + method: "POST", + path: "/json", + handler: (request, h) => h.response(request.payload) + }, + { + method: "GET", + path: "/id/{id}", + handler: (request, h) => { + response.header("x-powered-by", "benchmark") + return h.response(`${request.params.id} ${request.query.name}`) + } + } + ]) + + await server.start() + console.log("Server running on %s", server.info.uri) +} + +init().catch((error) => { + console.error(error) + process.exit(1) +}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/hono.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/hono.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,18 @@ +const { Hono } = require("hono") +const { serve } = require("@hono/node-server") +const { RegExpRouter } = require("hono/router/reg-exp-router") + +const app = new Hono({ router: new RegExpRouter() }) + +app.get("/", (c) => c.text("Hi")) + .post("/json", (c) => c.req.json().then(c.json)) + .get("/id/:id", (c) => { + const id = c.req.param("id") + const name = c.req.query("name") + + c.header("x-powered-by", "benchmark") + + return c.text(`${id} ${name}`) + }) + +serve(app) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/hyper-express.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/hyper-express.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,21 @@ +const { Server } = require('hyper-express') + +const app = new Server() + +app.get('/', (req, res) => { + res.header('content-type', 'text/plain').send('Hi') +}) + +app.get('/id/:id', (req, res) => { + res.header('x-powered-by', 'benchmark') + res.header('content-type', 'text/plain') + + res.send(`${req.path_parameters.id} ${req.query_parameters.name}`) +}) + +app.post('/json', async (req, res) => { + res.type('json') + res.send(JSON.stringify(await req.json())) +}) + +app.listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/koa.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/koa.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,24 @@ +const Koa = require('koa') +const Router = require('koa-router') +const bodyParser = require('koa-bodyparser') + +const app = new Koa() +const router = new Router() + +app.use(bodyParser()) + +router + .get('/', (ctx) => { + ctx.body = 'Hi' + }) + .get('/id/:id', (ctx) => { + ctx.body = `${ctx.params.id} ${ctx.query.name}` + ctx.set('x-powered-by', 'benchmark') + }) + .post('/json', (ctx) => { + ctx.body = ctx.request.body + }) + +app.use(router.routes()) +app.use(router.allowedMethods()) +app.listen(3000) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/index.d.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/index.d.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +export {}; diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/index.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/index.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const core_1 = require("@nestjs/core"); +const app_module_1 = require("./src/app.module"); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + await app.listen(3000); +} +bootstrap(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/index.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/index.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../dev/nest-node/index.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,iDAA6C;AAE7C,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/main.d.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/main.d.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +export {}; diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/main.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/main.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const core_1 = require("@nestjs/core"); +const app_module_1 = require("./src/app.module"); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + await app.listen(3000); +} +bootstrap(); +//# sourceMappingURL=main.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/main.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/main.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"main.js","sourceRoot":"","sources":["../../dev/nest-node/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,iDAA6C;AAE7C,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.controller.d.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.controller.d.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,8 @@ +import { AppService } from './app.service'; +export declare class AppController { + private readonly appService; + constructor(appService: AppService); + getHello(): string; + getCompose(id: string, name: string): string; + postMirror(body: any): any; +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.controller.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.controller.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,60 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AppController = void 0; +const common_1 = require("@nestjs/common"); +const app_service_1 = require("./app.service"); +let AppController = class AppController { + constructor(appService) { + this.appService = appService; + } + getHello() { + return this.appService.getHello(); + } + getCompose(id, name) { + return `${id} ${name}`; + } + postMirror(body) { + return body; + } +}; +exports.AppController = AppController; +__decorate([ + (0, common_1.Get)('/'), + (0, common_1.Header)('content-type', 'text/html'), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], AppController.prototype, "getHello", null); +__decorate([ + (0, common_1.Get)('/id/:id'), + (0, common_1.Header)('content-type', 'text/html'), + __param(0, (0, common_1.Param)('id')), + __param(1, (0, common_1.Query)('name')), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, String]), + __metadata("design:returntype", void 0) +], AppController.prototype, "getCompose", null); +__decorate([ + (0, common_1.Post)('/json'), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], AppController.prototype, "postMirror", null); +exports.AppController = AppController = __decorate([ + (0, common_1.Controller)(), + __metadata("design:paramtypes", [app_service_1.AppService]) +], AppController); +//# sourceMappingURL=app.controller.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.controller.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.controller.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../../../dev/nest-node/src/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,+CAA2C;AAGpC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAIvD,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAID,UAAU,CAAc,EAAU,EAAiB,IAAY;QAC7D,OAAO,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;IACzB,CAAC;IAGD,UAAU,CAAS,IAAI;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAnBY,sCAAa;AAKxB;IAFC,IAAA,YAAG,EAAC,GAAG,CAAC;IACR,IAAA,eAAM,EAAC,cAAc,EAAE,WAAW,CAAC;;;;6CAGnC;AAID;IAFC,IAAA,YAAG,EAAC,SAAS,CAAC;IACd,IAAA,eAAM,EAAC,cAAc,EAAE,WAAW,CAAC;IACxB,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,cAAK,EAAC,MAAM,CAAC,CAAA;;;;+CAEjD;AAGD;IADC,IAAA,aAAI,EAAC,OAAO,CAAC;IACF,WAAA,IAAA,aAAI,GAAE,CAAA;;;;+CAEjB;wBAlBU,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAE8B,wBAAU;GADxC,aAAa,CAmBzB"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.module.d.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.module.d.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,2 @@ +export declare class AppModule { +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.module.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.module.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,23 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AppModule = void 0; +const common_1 = require("@nestjs/common"); +const app_controller_1 = require("./app.controller"); +const app_service_1 = require("./app.service"); +let AppModule = class AppModule { +}; +exports.AppModule = AppModule; +exports.AppModule = AppModule = __decorate([ + (0, common_1.Module)({ + imports: [], + controllers: [app_controller_1.AppController], + providers: [app_service_1.AppService], + }) +], AppModule); +//# sourceMappingURL=app.module.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.module.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.module.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../../dev/nest-node/src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAOpC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IALrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,wBAAU,CAAC;KACxB,CAAC;GACW,SAAS,CAAG"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.service.d.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.service.d.ts Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,4 @@ +export declare class AppService { + getHello(): string; + getCompose(id: string, name: string): string; +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.service.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.service.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,23 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AppService = void 0; +const common_1 = require("@nestjs/common"); +let AppService = class AppService { + getHello() { + return 'Hi'; + } + getCompose(id, name) { + return `${id} ${name}`; + } +}; +exports.AppService = AppService; +exports.AppService = AppService = __decorate([ + (0, common_1.Injectable)() +], AppService); +//# sourceMappingURL=app.service.js.map \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/nest/src/app.service.js.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/nest/src/app.service.js.map Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,1 @@ +{"version":3,"file":"app.service.js","sourceRoot":"","sources":["../../../dev/nest-node/src/app.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAGrC,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,EAAU,EAAE,IAAY;QACjC,OAAO,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;IACzB,CAAC;CACF,CAAA;AARY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;GACA,UAAU,CAQtB"} \ No newline at end of file diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/ultimate-express.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/ultimate-express.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,20 @@ +const uExpress = require('ultimate-express') + +const app = uExpress() +app.set("etag", false) + +app.get('/', (req, res) => { + res.setHeader('content-type', 'text/plain').send('Hi') +}) + +app.post('/json', uExpress.json(), ({ body }, res) => { + res.json(body) +}) + +app.get('/id/:id', ({ params: { id }, query: { name } }, res) => { + res.setHeader('x-powered-by', 'benchmark') + .setHeader('content-type', 'text/plain') + .send(`${id} ${name}`) +}) + +app.listen(3000, () => {}) diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/src/node/uws.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/src/node/uws.js Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,61 @@ +/* Non-SSL is simply App() */ +const uWS = require('uWebSockets.js') + +uWS.App() + .get( + '/', + new uWS.DeclarativeResponse() + .writeHeader('content-type', 'text/plain') + .end('Hi') + ) + .get( + '/id/:id', + new uWS.DeclarativeResponse() + .writeHeader('content-type', 'text/plain') + .writeHeader('x-powered-by', 'benchmark') + .writeParameterValue('id') + .write(' ') + .writeQueryValue('name') + .end() + ) + .post('/json', (res, req) => { + readJson( + res, + (obj) => { + res.writeHeader('content-type', 'application/json').end( + JSON.stringify(obj) + ) + }, + () => { + res.end('Ok') + } + ) + }) + .listen(3000, (listenSocket) => { + if (listenSocket) { + console.log('Listening to port 3000') + } + }) + +function readJson(res, cb, err) { + let buffer + + res.onData((ab, isLast) => { + let chunk = Buffer.from(ab) + if (isLast) { + if (buffer) { + cb(JSON.parse(Buffer.concat([buffer, chunk]))) + } else { + cb(JSON.parse(chunk)) + } + } else { + if (buffer) { + buffer = Buffer.concat([buffer, chunk]) + } else { + buffer = Buffer.concat([chunk]) + } + } + }) + + res.onAborted(err) +} diff -r d6ab5921fedc -r dfdd66825396 benchmark/bun-http-framework-benchmark/tsconfig.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmark/bun-http-framework-benchmark/tsconfig.json Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "strict": true, + "lib": ["ES2022"], + "module": "CommonJS", + "target": "esnext", + "moduleResolution": "Bundler", + "allowSyntheticDefaultImports": true, + + // so that if your project isn't using TypeScript, it still has autocomplete + "allowJs": true, + "experimentalDecorators": true, + } +} diff -r d6ab5921fedc -r dfdd66825396 gui_ze/gui_ze.bzl --- a/gui_ze/gui_ze.bzl Fri Jan 23 21:09:49 2026 -0800 +++ b/gui_ze/gui_ze.bzl Fri Jan 23 22:22:30 2026 -0800 @@ -1,68 +1,3 @@ -def _wasm_binary_impl(ctx): - """ - Compile C source to WASM using clang --target=wasm32. - No libc - suitable for standalone WASM modules. - - Requires LLVM with wasm32 support (e.g., Homebrew LLVM on macOS). - """ - src = ctx.file.src - out = ctx.actions.declare_file(ctx.label.name + ".wasm") - - # Shell script to find clang with wasm support and set PATH for wasm-ld - setup_cmd = """ - export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" - if [ -x /opt/homebrew/opt/llvm/bin/clang ]; then - CLANG=/opt/homebrew/opt/llvm/bin/clang - elif [ -x /usr/local/opt/llvm/bin/clang ]; then - CLANG=/usr/local/opt/llvm/bin/clang - else - CLANG=clang - fi - """ - - # Build clang command - cmd_parts = [ - setup_cmd, - "$CLANG", - "--target=wasm32-unknown-unknown", - "-O2", - "-Wl,--no-entry", - "-Wl,--export-dynamic", - ] - - # Add exported functions - for fn in ctx.attr.exports: - cmd_parts.append("-Wl,--export=" + fn) - - cmd_parts.append("-o") - cmd_parts.append(out.path) - cmd_parts.append(src.path) - - ctx.actions.run_shell( - inputs = [src], - outputs = [out], - command = " ".join(cmd_parts), - progress_message = "Compiling {} to WASM".format(src.basename), - execution_requirements = {"no-sandbox": "1"}, - ) - - return [DefaultInfo(files = depset([out]))] - -wasm_binary = rule( - implementation = _wasm_binary_impl, - attrs = { - "src": attr.label( - allow_single_file = [".c"], - mandatory = True, - doc = "The C source file to compile", - ), - "exports": attr.string_list( - default = [], - doc = "List of function names to export (without leading underscore)", - ), - }, -) - def _foo_impl(ctx): out = ctx.actions.declare_file(ctx.label.name) ctx.actions.write( diff -r d6ab5921fedc -r dfdd66825396 markdown_converter/BUILD --- a/markdown_converter/BUILD Fri Jan 23 21:09:49 2026 -0800 +++ b/markdown_converter/BUILD Fri Jan 23 22:22:30 2026 -0800 @@ -1,7 +1,9 @@ load("@rules_cc//cc:cc_library.bzl", "cc_library") -load("//gui_ze:gui_ze.bzl", "wasm_binary", "bun_run", "move_files_into_dir") +load("@rules_cc//cc:cc_binary.bzl", "cc_binary") +load("//gui_ze:gui_ze.bzl", "bun_run", "move_files_into_dir") +load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") -# JS only +# JS only filegroup( name = "markdown_to_html", srcs = glob([ @@ -18,10 +20,30 @@ visibility = ["//visibility:public"], ) -# C implementation for native use +# C implementation for native use (as library) cc_library( name = "markdown_to_html_c", srcs = ["markdown_to_html.c"], hdrs = [":markdown_to_html_hdrs"], visibility = ["//visibility:public"], ) + +# WASM binary target (cc_binary required for wasm_cc_binary) +# Note: linkopts are emscripten-specific, only apply during WASM build +cc_binary( + name = "markdown_to_html_bin", + srcs = ["markdown_to_html.c", "markdown_to_html.h"], + linkopts = [ + "--no-entry", # No main() function + "-sALLOW_MEMORY_GROWTH", # Allow memory to grow dynamically + "-sEXPORTED_FUNCTIONS=['_markdown_to_html','_markdown_free','_markdown_get_length','_wasm_alloc','_wasm_free']", + "-sEXPORTED_RUNTIME_METHODS=['cwrap','ccall','UTF8ToString','stringToUTF8','lengthBytesUTF8']", + ], + tags=["manual"], +) + +wasm_cc_binary( + name = "markdown_to_html_wasm", + cc_target = ":markdown_to_html_bin", + visibility = ["//visibility:public"], +) diff -r d6ab5921fedc -r dfdd66825396 markdown_converter/markdown_to_html.c --- a/markdown_converter/markdown_to_html.c Fri Jan 23 21:09:49 2026 -0800 +++ b/markdown_converter/markdown_to_html.c Fri Jan 23 22:22:30 2026 -0800 @@ -4,6 +4,15 @@ #include #include "markdown_converter/markdown_to_html.h" +// JavaScript needs this to free the memory later +MDAPI void *wasm_alloc(size_t size) { + return malloc(size); +} + +MDAPI void wasm_free(void* ptr) { + free(ptr); +} + #define INITIAL_BUFFER_SIZE 1024 * 1024 // 1MB // String buffer for building HTML output @@ -132,6 +141,44 @@ return (*line == '-' || *line == '*' || *line == '+') && line[1] == ' '; } +// Check if line starts with an HTML tag +static int is_html_block_start(const char *line) +{ + line = skip_whitespace(line); + if (*line != '<') return 0; + line++; + + // Check for closing tag or comment + if (*line == '/' || *line == '!') return 1; + + // Check for valid tag name (letter followed by alphanumeric) + if (!isalpha((unsigned char)*line)) return 0; + + return 1; +} + +// Check if line starts with a specific HTML tag (e.g., "script", "style") +static int is_html_tag(const char *line, const char *tag) +{ + line = skip_whitespace(line); + if (*line != '<') return 0; + line++; + + // Skip optional / + int is_closing = 0; + if (*line == '/') { + is_closing = 1; + line++; + } + + size_t tag_len = strlen(tag); + if (strncasecmp(line, tag, tag_len) != 0) return 0; + + char next = line[tag_len]; + // Tag must be followed by space, >, or end for closing tags + return next == '>' || next == ' ' || next == '\t' || next == '\n' || next == '\0'; +} + // Check if line is ordered list item static int is_ordered_list(const char *line) { @@ -485,6 +532,53 @@ continue; } + // HTML block - pass through unchanged + if (is_html_block_start(line)) { + // Check if it's a script or style tag that needs special handling + int is_script = is_html_tag(line, "script"); + int is_style = is_html_tag(line, "style"); + + if (is_script || is_style) { + const char *end_tag = is_script ? "" : ""; + + // Output the opening line + buffer_append(buf, line); + buffer_append_char(buf, '\n'); + + free(line); + if (*ptr == '\n') ptr++; + + // Collect content until closing tag + while (*ptr) { + line_start = ptr; + while (*ptr && *ptr != '\n') ptr++; + line_len = ptr - line_start; + + line = (char *)malloc(line_len + 1); + if (!line) break; + memcpy(line, line_start, line_len); + line[line_len] = '\0'; + + buffer_append(buf, line); + buffer_append_char(buf, '\n'); + + int found_end = (strstr(line, end_tag) != NULL); + free(line); + if (*ptr == '\n') ptr++; + + if (found_end) break; + } + continue; + } + + // Regular HTML tag - just pass through the line + buffer_append(buf, line); + buffer_append_char(buf, '\n'); + free(line); + if (*ptr == '\n') ptr++; + continue; + } + // Regular paragraph buffer_append(buf, "

"); @@ -512,7 +606,8 @@ starts_with(line, ">") || is_horizontal_rule(line) || is_unordered_list(line) || - is_ordered_list(line)) { + is_ordered_list(line) || + is_html_block_start(line)) { ptr = line_start; free(line); break; diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/BUILD --- a/mrjunejune/BUILD Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/BUILD Fri Jan 23 22:22:30 2026 -0800 @@ -15,6 +15,7 @@ name = "shared_js_non_public", srcs = [ "//markdown_converter:markdown_to_html", + "//markdown_converter:markdown_to_html_wasm", ], dest = "src", ) diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/multithread-in-js/index.html Binary file mrjunejune/src/blog/multithread-in-js/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/my-seobeo-journey/index.html Binary file mrjunejune/src/blog/my-seobeo-journey/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/optimizing-grass-rendering/index.html Binary file mrjunejune/src/blog/optimizing-grass-rendering/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/thoughts-on-ide/index.html Binary file mrjunejune/src/blog/thoughts-on-ide/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/thoughts-on-tdd/index.html Binary file mrjunejune/src/blog/thoughts-on-tdd/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/wasm-bunny/index.html Binary file mrjunejune/src/blog/wasm-bunny/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/wasm-bunny/index.md --- a/mrjunejune/src/blog/wasm-bunny/index.md Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/src/blog/wasm-bunny/index.md Fri Jan 23 22:22:30 2026 -0800 @@ -84,3 +84,20 @@ Overall, this was an interesting project to spend a few hours on, and maybe in the future, I’ll explore compiling the C3 standard library to WASM. Below are the results! + + + + diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/blog/websocket-demystified/index.html Binary file mrjunejune/src/blog/websocket-demystified/index.html has changed diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/tools/markdown_to_html/index.css --- a/mrjunejune/src/tools/markdown_to_html/index.css Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/src/tools/markdown_to_html/index.css Fri Jan 23 22:22:30 2026 -0800 @@ -7,222 +7,219 @@ body { line-height: 1.6; padding: 20px; - max-width: 1200px; + max-width: 1400px; margin: 0 auto; } -button { - background: var(--accent); - color: var(--white); - border: none; - padding: 10px 20px; - border-radius: 4px; - cursor: pointer; - font-size: 16px; - margin-top: 10px; -} - -.title button { - margin-top: 0px; - margin-bottom: 10px; -} - -button:hover { - background: var(--accent-dark); -} - -h1 { - color: var(--darkgray); - margin-bottom: 20px; -} - -textarea { - width: 100%; - height: 700px; - padding: 15px; - background: rgb(var(--gray-light)); - color: var(--darkgray); - border-radius: 4px; - font-family: 'Courier New', monospace; - font-size: 14px; - resize: vertical; -} - -.container { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 20px; - margin-top: 20px; -} - -.title { - display: grid; - grid-template-columns: 1fr 1fr; - margin-bottom: 10px; -} - -.panel { - background: var(--white); - border-radius: 8px; - border: 1px dotted #ccc; - padding: 20px; -} - -#output { - min-height: 500px; - padding: 15px; - border: 1px solid rgb(var(--gray-light)); - border-radius: 4px; - background: rgb(var(--gray-light)); -} - -h1, h2, h3, h4, h5, h6 { - margin: 20px 0 10px 0; - color: var(--darkgray); -} - -h1 { font-size: 2em; } -h2 { font-size: 1.5em; } -h3 { font-size: 1.3em; } - -p { - margin: 10px 0; -} - -ul, ol { - margin: 10px 0; - padding-left: 30px; -} - -li { - margin: 5px 0; -} - -code { - background: rgb(var(--gray-light)); - padding: 2px 6px; - border-radius: 3px; - font-family: 'Courier New', monospace; - font-size: 0.9em; -} - -pre { - background: #282c34; - color: #abb2bf; - padding: 15px; - border-radius: 4px; - overflow-x: auto; - margin: 10px 0; - text-wrap: auto; -} - -pre code { - background: none; - color: inherit; - padding: 0; -} - -blockquote { - border-left: 4px solid rgb(var(--gray-light)); - padding-left: 15px; - margin: 10px 0; - color: var(--gray); - font-style: italic; -} - -a { - color: var(--accent); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -hr { - border: none; - border-top: 2px solid var(--black); - margin: 20px 0; -} - -img { - max-width: 100%; - height: auto; -} - -strong { - font-weight: bold; -} - -em { - font-style: italic; -} - -del { - text-decoration: line-through; -} - .header { text-align: center; margin-bottom: 30px; } +.header h1 { + color: rgb(var(--gray-dark)); + margin-bottom: 10px; +} + +.container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; + height: calc(100vh - 200px); + min-height: 500px; +} + +.panel { + display: flex; + flex-direction: column; + background: var(--white); + border-radius: 8px; + border: 1px solid rgba(var(--gray), 0.3); + padding: 15px; + overflow: hidden; +} + +.title { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; + flex-shrink: 0; +} + .label { - font-weight: bold; - margin-bottom: 10px; - color: var(--gray); + font-weight: 600; + color: rgb(var(--gray-dark)); + font-size: 14px; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +button { + background: var(--accent); + color: var(--white); + border: none; + padding: 8px 16px; + border-radius: 4px; + cursor: pointer; + font-size: 14px; + transition: background 0.2s; +} + +button:hover { + background: var(--accent-dark); +} + +/* Input textarea */ +textarea { + flex: 1; + width: 100%; + padding: 15px; + background: rgb(var(--gray-light)); + color: rgb(var(--gray-dark)); + border: 1px solid rgba(var(--gray), 0.3); + border-radius: 4px; + font-family: 'SF Mono', 'Monaco', 'Consolas', monospace; + font-size: 14px; + line-height: 1.5; + resize: none; +} + +textarea:focus { + outline: none; + border-color: var(--accent); +} + +/* Output panel */ +#output { + flex: 1; + padding: 15px; + border: 1px solid rgba(var(--gray), 0.3); + border-radius: 4px; + background: var(--white); + color: rgb(var(--gray-dark)); + overflow-y: auto; + font-size: 15px; +} + +/* Markdown output styles */ +#output h1, #output h2, #output h3, #output h4, #output h5, #output h6 { + margin: 1em 0 0.5em 0; + color: rgb(var(--gray-dark)); + line-height: 1.3; } -.title .label { - margin-bottom: 0px; +#output h1:first-child, #output h2:first-child, #output h3:first-child { + margin-top: 0; +} + +#output h1 { font-size: 1.8em; } +#output h2 { font-size: 1.5em; } +#output h3 { font-size: 1.25em; } +#output h4 { font-size: 1.1em; } + +#output p { + margin: 0.8em 0; +} + +#output ul, #output ol { + margin: 0.8em 0; + padding-left: 25px; +} + +#output li { + margin: 0.3em 0; +} + +#output code { + background: rgb(var(--gray-light)); + padding: 2px 6px; + border-radius: 3px; + font-family: 'SF Mono', 'Monaco', 'Consolas', monospace; + font-size: 0.9em; + color: var(--accent); +} + +#output pre { + background: var(--black); + color: var(--white); + padding: 15px; + border-radius: 6px; + overflow-x: auto; + margin: 1em 0; + line-height: 1.4; +} + +#output pre code { + background: none; + color: inherit; + padding: 0; } -@media (max-width: 768px) { +#output blockquote { + border-left: 4px solid var(--accent); + padding: 10px 15px; + margin: 1em 0; + background: rgb(var(--gray-light)); + color: rgb(var(--gray)); + font-style: italic; +} + +#output a { + color: var(--accent); + text-decoration: none; +} + +#output a:hover { + text-decoration: underline; +} + +#output hr { + border: none; + border-top: 1px solid rgb(var(--gray-light)); + margin: 1.5em 0; +} + +#output img { + max-width: 100%; + height: auto; + border-radius: 4px; +} + +#output strong { + font-weight: 600; +} + +#output em { + font-style: italic; +} + +#output del { + text-decoration: line-through; + color: rgb(var(--gray)); +} + +/* Mobile */ +@media (max-width: 900px) { body { - padding: 10px; - font-size: 16px; + padding: 15px; } .container { grid-template-columns: 1fr; + height: auto; gap: 15px; } - h1 { - font-size: 1.75rem; - } - .panel { - padding: 15px; + min-height: 350px; } textarea { - height: 400px; - font-size: 16px; + min-height: 300px; } #output { min-height: 300px; - font-size: 1rem; } - - button { - font-size: 1rem; - padding: 12px 20px; - min-height: 44px; - width: 100%; - } - - .title { - grid-template-columns: 1fr; - gap: 10px; - } - - .label { - font-size: 1rem; - } - - h1 { font-size: 1.75em; } - h2 { font-size: 1.5em; } - h3 { font-size: 1.25em; } } diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/src/tools/markdown_to_html/index.html --- a/mrjunejune/src/tools/markdown_to_html/index.html Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/src/tools/markdown_to_html/index.html Fri Jan 23 22:22:30 2026 -0800 @@ -68,34 +68,47 @@ {{/parts/footer.html}} - + diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/test/snapshots/talk_index.html.snapshot --- a/mrjunejune/test/snapshots/talk_index.html.snapshot Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/test/snapshots/talk_index.html.snapshot Fri Jan 23 22:22:30 2026 -0800 @@ -1,293 +0,0 @@ --- --> - - - - - - - - - - - - -

- -
- -
-

MrJuneJune

-
- - - -
-

Blogs

- -
-
- © 2026 June Park -
- - - - -
- -
- -
-

MrJuneJune

-
- - - - -
-

File Format Converter

-

Convert your images and videos to different formats using FFmpeg

- -
-

Image to WebP Converter

-

Upload an image file (PNG, JPG, GIF, etc.) to convert it to WebP format

- -
- - -
- - - -
Converting... Please wait.
- - -
- -
-

Video to MP4 Converter

-

Upload a video file (AVI, MOV, MKV, etc.) to convert it to MP4 format

- -
- - -
- - - -
Converting... Please wait.
- - -
-
- © 2026 June Park -
- -
- - - diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/test/snapshots/tools_file_converter_index.html.snapshot --- a/mrjunejune/test/snapshots/tools_file_converter_index.html.snapshot Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/test/snapshots/tools_file_converter_index.html.snapshot Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,332 @@ + as="font" type="font/woff" crossorigin> --> + + + + + + + + + + + + + + + + +
+ +
+ +
+

MrJuneJune

+
+ + + + +
+

File Format Converter

+

Convert your images and videos to different formats using FFmpeg

+ +
+

Image to WebP Converter

+

Upload an image file (PNG, JPG, GIF, etc.) to convert it to WebP format

+ +
+ + +
+ + + +
Converting... Please wait.
+ + +
+ +
+

Video to MP4 Converter

+

Upload a video file (AVI, MOV, MKV, etc.) to convert it to MP4 format

+ +
+ + +
+ + + +
Converting... Please wait.
+ + +
+
+ © 2026 June Park +
+ +
+ + +© 2026 June Park - + diff -r d6ab5921fedc -r dfdd66825396 mrjunejune/test/snapshots/tools_markdown_to_html_index.html.snapshot --- a/mrjunejune/test/snapshots/tools_markdown_to_html_index.html.snapshot Fri Jan 23 21:09:49 2026 -0800 +++ b/mrjunejune/test/snapshots/tools_markdown_to_html_index.html.snapshot Fri Jan 23 22:22:30 2026 -0800 @@ -0,0 +1,388 @@ +blic/fonts/more-sugar.extras.otf" as="font" type="font/otf" crossorigin> --> + + + + + + + + + + + + + + +
+ +
+ +
+

MrJuneJune

+
+ + + +
+
+ Download PDF +
+

JUNTAE PARK

+

SOFTWARE ENGINEER

+
+ Bay Area, CA, USA +
+ +
+ +
+

Summary

+
+
+

Software Engineer with 9 years of hands-on experience across diverse tech stacks, from early-stage startups to FANG-scale systems. Adept in designing and delivering robust software solutions using modern languages, frameworks, and cloud platforms.

Open to impactful work.

+
+ +

Skills

+
+
+
+

+ Programming Languages: + TypeScript, Python, C/C++, Ruby, Java, MATLAB +

+

+ Tools & Platforms: + Bazel, PostgresSQL, Mercurial, Git, Pands, Raylib, XCode +

+

+ Web Frameworks: + Django, Rails, React, Flask +

+

+ DevOp: + Plummi, Heroku, DigitalOcean, AWS, Google Cloud +

+

+ Language: + English, Korean, Japanese +

+
+ + +
+

Experience

+
+
+
+

+ Meta +

+

San Francisco, CA, USA

+
+
+

SOFTWARE ENGINEER

+ +
+
    +
  • + Took initiative on Channel Value Rule, targeting the 16% of ad traffic with both app and web destinations to improve value attribution and ROI. +
  • +
  • + Built full-stack features using React and Hack/GraphQL, contributing to scalable, production-ready systems. +
  • +
  • + Partnered with data science to design A/B tests and analyze revenue impact of ads destination. +
  • +
  • + Proposed and implemented alpha improvements to internal testing infrastructure, reducing test time by 50% and enhancing developer velocity. +
  • +
+
+

+ Warner Music Group +

+

Toronto, ON, Canada

+
+
+

TECHNICAL LEAD ENGINEER

+ +
+
    +
  • + Implements bazel structure for the company for TypeScript and JavaScript code base for hermiticity and stablishing standards for JavaScript and +
  • +
  • + TypeScript testing and code structures. +
  • +
  • + Led a team of five engineers in building GraphQL endpoints for client-facing applications using Apollo and AppSync, supporting over 2000 RPS and auto scaling depending on request values. +
  • +
  • + Improved application response times by up to 85% for graphQL response by updating database schema and SQL queries, eliminating N+1 queries and lack of indexes. +
  • +
  • + Developed CI/CD pipelines for backend structures. +
  • +
  • + Designed infrastructure for pub/sub, caching, and media processing logic. +
  • +
+ +
+

+ Google +

+

Toronto, ON, Canada

+
+
+

SOFTWARE ENGINEER

+ +
+
    +
  • + Implements and maintained new features relating to App Script across google workspace platform including Gmail, sheets, and Docs.
  • +
  • + Improved a response time and render time of App Script hover card components.
  • +
  • + Collaborated with a team of developers to ensure timely and accurate delivery of features.
  • +
  • + Conducted user testing and gathered feedback to iterate on features for optimal user experience.
  • +
+ +
+

+ Everlywell +

+

Toronto, ON, Canada

+
+
+

SOFTWARE ENGINEER

+ +
+
    +
  • + Maintained Amazon amplify apps to create and deploy React web applications for companies such as NBA, Tinder, and other companies for COVID-19 at-home test kits.
  • +
  • + Implemented a script that helps accurately access and refund unused covid test kits; helping company save up to 200,000 USD.
  • +
  • + Created several Rails controllers for internal purposes; mocking end to end user experience for QA, mass refund features for CX department, and more, ultimately reducing support tickets amount by 50 percent.
  • +
  • + Implemented an audit table to help debug problems and logged which process was responsible for the change of the record using PaperTrail gems
  • +
+ +
+

+ Spiria +

+

Oakville, ON, Canada

+
+
+

SOFTWARE ENGINEER

+ +
+
    +
  • + Constructed RESTful API endpoints in multiple different frameworks such as Django, Ruby on Rails, and Flask and automated API documentation process using swagger. +
  • +
  • + Designed custom rake tasks for importing production data into newly updated data structure to meet client's needs. +
  • +
  • + Maintained or updated staging/productions servers. Debugged problems in production postgres database using ssh and postgres console on Heroku or AWS servers +
  • +
  • + Collaborated in creating automation python scripts for websites and application using selenium covering for QA eliminating 80% of QA's manual work +
  • +
+ +
+

+ Apex Score +

+

Oakville, ON, Canada

+
+
+

SOFTWARE ENGINEER

+ +
+
    +
  • + Developed custom Shapley value regression model to calculate importance of independent variables of data sets using sklearn, pandas, and numpy. +
  • +
  • + Created custom image uploader to Amazon s3 bucket using boto3 library. +
  • +
  • + Built RESTful API application using Flask framework and automated extensive API documentation pages using flask-restplus, pytest, and swagger, covering 95% of the code base. +
  • +
  • + Created an interactive graph using D3.js in Vue.js with data from Flask backend API. +
  • +
+ +
+

Education

+
+
+
+

+ University of British Columbia +

+

Kelowna, British Columbia

+
+
+

BACHELOR OF SCIENCE IN PHYSICS

+ +
+ +
+
+ © 2026 June Park +
+ + + + +#include #include "seobeo/seobeo.h" +// TCP keep-alive settings +#define KEEP_ALIVE_IDLE_SEC 30 // Start probes after 30s idle +#define KEEP_ALIVE_INTERVAL 5 // Probe every 5 seconds +#define KEEP_ALIVE_COUNT 3 // Close after 3 failed probes + +// Configure TCP keep-alive on socket (kernel handles timeout) +static void configure_keep_alive(int socket) +{ + int enable = 1; + setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, &enable, sizeof(enable)); + + int idle = KEEP_ALIVE_IDLE_SEC; + setsockopt(socket, IPPROTO_TCP, TCP_KEEPIDLE, &idle, sizeof(idle)); + + int interval = KEEP_ALIVE_INTERVAL; + setsockopt(socket, IPPROTO_TCP, TCP_KEEPINTVL, &interval, sizeof(interval)); + + int count = KEEP_ALIVE_COUNT; + setsockopt(socket, IPPROTO_TCP, TCP_KEEPCNT, &count, sizeof(count)); +} void *Seobeo_Web_Edge_Worker(void *vargs) { @@ -8,57 +29,93 @@ const int max_events = 64; struct epoll_event events[max_events]; - // Each thread creates its own epoll to avoid race conditions int epfd = epoll_create1(0); - if (epfd < 0) { + if (epfd < 0) + { perror("epoll_create1"); return NULL; } - // Add server socket to this thread's epoll struct epoll_event ev = { .events = EPOLLIN | EPOLLET, .data.ptr = args->srv }; - if (epoll_ctl(epfd, EPOLL_CTL_ADD, args->srv->socket, &ev) < 0) { + if (epoll_ctl(epfd, EPOLL_CTL_ADD, args->srv->socket, &ev) < 0) + { perror("epoll_ctl ADD server"); close(epfd); return NULL; } - while (1) { - int n = epoll_wait(epfd, events, max_events, -1); - if (n < 0) { - if (errno == EINTR) continue; + while (1) + { + int n = epoll_wait(epfd, events, max_events, -1); // Block indefinitely, kernel handles timeouts + if (n < 0) + { + if (errno == EINTR) + continue; perror("epoll_wait"); continue; } - for (int i = 0; i < n; i++) { - Seobeo_Handle *phandle = events[i].data.ptr; + for (int i = 0; i < n; i++) + { + Seobeo_Handle *p_handle = events[i].data.ptr; - if (phandle == args->srv) { - // Accept all pending connections (edge-triggered mode) - while (1) { + // Server socket - accept new connections + if (p_handle == args->srv) + { + while (1) + { Seobeo_Handle *p_cli_handle = Seobeo_Stream_Handle_Server_Accept(args->srv); if (!p_cli_handle) break; + // Let kernel handle keep-alive timeout + configure_keep_alive(p_cli_handle->socket); + struct epoll_event client_ev = { .events = EPOLLIN | EPOLLET, .data.ptr = p_cli_handle }; + if (epoll_ctl(epfd, EPOLL_CTL_ADD, p_cli_handle->socket, &client_ev) < 0) { perror("epoll_ctl ADD client"); Seobeo_Handle_Destroy(p_cli_handle); } } - } else { - // Remove from epoll first - epoll_ctl(epfd, EPOLL_CTL_DEL, phandle->socket, NULL); + } + // Client socket - handle request + else + { + Seobeo_Handle *p_client_handle = p_handle; + + // Connection error or hangup - clean up + if (events[i].events & (EPOLLERR | EPOLLHUP)) + { + epoll_ctl(epfd, EPOLL_CTL_DEL, p_client_handle->socket, NULL); + Seobeo_Handle_Destroy(p_client_handle); + continue; + } - // Handle request (this function destroys the handle internally) - Seobeo_Web_HandleClientRequest(phandle, args->cache); + // Handle requests (loop for pipelined requests) + boolean keep_alive = TRUE; + while (keep_alive) + { + keep_alive = Seobeo_Web_ClientHandle_Request(p_client_handle, args->cache, TRUE); + + // No more data in buffer, wait for next epoll event + if (keep_alive && p_client_handle->read_buffer_len == 0) + break; + } + + // Client wants to close + if (!keep_alive) + { + epoll_ctl(epfd, EPOLL_CTL_DEL, p_client_handle->socket, NULL); + Seobeo_Handle_Destroy(p_client_handle); + } + // Connection stays open, kernel will timeout if idle } } } diff -r d6ab5921fedc -r dfdd66825396 seobeo/os/s_macos_edge.c --- a/seobeo/os/s_macos_edge.c Fri Jan 23 21:09:49 2026 -0800 +++ b/seobeo/os/s_macos_edge.c Fri Jan 23 22:22:30 2026 -0800 @@ -60,7 +60,8 @@ kevent(kq, &del_kev, 1, NULL, 0, NULL); // Handle request (this function destroys the handle internally) - Seobeo_Web_HandleClientRequest(h, args->cache); + // TODO: Add keep-alive support for macOS like Linux version + Seobeo_Web_ClientHandle_Request(h, args->cache, FALSE); } } } diff -r d6ab5921fedc -r dfdd66825396 seobeo/s_web.c --- a/seobeo/s_web.c Fri Jan 23 21:09:49 2026 -0800 +++ b/seobeo/s_web.c Fri Jan 23 22:22:30 2026 -0800 @@ -1,4 +1,6 @@ #include "seobeo/seobeo.h" +#include +#include static char g_folder_path[512] = "."; @@ -36,6 +38,14 @@ void *buffer, int status, const char *content_type, const int content_length) { + Seobeo_Web_Header_Generate_KeepAlive(buffer, status, content_type, content_length, FALSE); +} + +void Seobeo_Web_Header_Generate_KeepAlive( + void *buffer, int status, + const char *content_type, const int content_length, + boolean keep_alive) +{ const char *status_text; switch(status) { @@ -50,37 +60,76 @@ case HTTP_INTERNAL_ERROR: status_text = "Internal Server Error"; break; default: status_text = "Unknown"; break; } - + sprintf( - buffer, + buffer, "HTTP/1.1 %d %s\r\n" "Content-Type: %s\r\n" "Content-Length: %d\r\n" - "Connection: close\r\n" - "\r\n", - status, status_text, content_type, content_length + "Connection: %s\r\n" + "\r\n", + status, status_text, content_type, content_length, + keep_alive ? "keep-alive" : "close" ); } -void Seobeo_Web_HandleClientRequest(Seobeo_Handle *p_cli_handle, - Seobeo_Cache_Entry *p_html_cache) +// Default arena size (5MB) - will allocate more if Content-Length requires it +#define DEFAULT_ARENA_SIZE (5 * 1024 * 1024) + +// Helper to check if Connection header contains a specific value (case-insensitive) +static boolean connection_header_contains(const char *header_value, const char *target) { - // TODO: This should be splitted up instead of handling up to 50 MB as it will fail more often... - Dowa_Arena *p_request_arena = Dowa_Arena_Create(50*1024*1024); // 50 MB because of files... - if (!p_request_arena) { perror("Dowa_Arena_Create request"); goto clean_up; } + if (!header_value || !target) return FALSE; + + // Make a copy to tokenize + char *copy = strdup(header_value); + if (!copy) return FALSE; - Dowa_Arena *p_response_arena = Dowa_Arena_Create(50*1024*1024); // 50 MB for response - if (!p_response_arena) { perror("Dowa_Arena_Create response"); goto clean_up; } + boolean found = FALSE; + char *token = strtok(copy, ", \t"); + while (token) { + if (strcasecmp(token, target) == 0) { + found = TRUE; + break; + } + token = strtok(NULL, ", \t"); + } + free(copy); + return found; +} + +// Returns TRUE if connection should be kept alive, FALSE if it should be closed +boolean Seobeo_Web_ClientHandle_Request(Seobeo_Handle *p_cli_handle, + Seobeo_Cache_Entry *p_html_cache, + boolean use_keep_alive) +{ + boolean should_keep_alive = FALSE; + + // Start with default arena size (5MB) + size_t arena_size = DEFAULT_ARENA_SIZE; + + // We'll peek at Content-Length to potentially allocate larger arena + // For now, start with default and handle body reading separately + Dowa_Arena *p_request_arena = Dowa_Arena_Create(arena_size); + if (!p_request_arena) { perror("Dowa_Arena_Create request"); return FALSE; } + + Dowa_Arena *p_response_arena = Dowa_Arena_Create(arena_size); + if (!p_response_arena) { perror("Dowa_Arena_Create response"); Dowa_Arena_Free(p_request_arena); return FALSE; } void *p_response_header = Dowa_Arena_Allocate(p_response_arena, 1024*5); // 5Kb - if (!p_response_header) { perror("Dowa_Arena_Allocate"); goto clean_up; } + if (!p_response_header) { perror("Dowa_Arena_Allocate"); goto clean_up_arenas; } Seobeo_Request_Entry *p_req_map = NULL; int parse_result = Seobeo_Web_Header_Parse(p_cli_handle, &p_req_map, p_request_arena); - if (parse_result != 0 && parse_result != 1) - { - Seobeo_Log(SEOBEO_ERROR, "Seobeo_Web_Header_Parse failed with code %d\n", parse_result); + // Handle parse errors + if (parse_result < 0) { + // Fatal error or connection closed + Seobeo_Log(SEOBEO_DEBUG, "Seobeo_Web_Header_Parse failed with code %d\n", parse_result); + if (parse_result == -2) { + // Connection closed by client - don't send error response + goto clean_up_arenas; + } Seobeo_Web_Header_Generate(p_response_header, HTTP_BAD_REQUEST, "text/plain", 0); @@ -88,40 +137,41 @@ (const uint8*)p_response_header, (uint32)strlen(p_response_header)); Seobeo_Handle_Flush(p_cli_handle); - goto clean_up; + goto clean_up_arenas; } - Seobeo_Log(SEOBEO_DEBUG, "Parse completed with code %d\n", parse_result); + // Determine keep-alive based on HTTP version and Connection header + // HTTP/1.1: keep-alive by default unless "Connection: close" + // HTTP/1.0: close by default unless "Connection: keep-alive" + + void *p_ver_kv = Dowa_HashMap_Get_Ptr(p_req_map, "Version"); + const char *http_version = p_ver_kv ? ((Seobeo_Request_Entry*)p_ver_kv)->value : "HTTP/1.0"; + boolean is_http11 = (strstr(http_version, "1.1") != NULL); + + void *p_conn_kv = Dowa_HashMap_Get_Ptr(p_req_map, "Connection"); + const char *conn_header = p_conn_kv ? ((Seobeo_Request_Entry*)p_conn_kv)->value : NULL; - // Recording IP to see who is ddosing or any web scrappers... - void *p_real_ip_kv = Dowa_HashMap_Get_Ptr(p_req_map, "X-Real-IP"); - const char *real_ip = p_real_ip_kv ? ((Seobeo_Request_Entry*)p_real_ip_kv)->value : NULL; - // Fallback - if (!real_ip) + if (conn_header) { - void *p_forwarded_kv = Dowa_HashMap_Get_Ptr(p_req_map, "X-Forwarded-For"); - real_ip = p_forwarded_kv ? ((Seobeo_Request_Entry*)p_forwarded_kv)->value : NULL; + if (connection_header_contains(conn_header, "close")) + should_keep_alive = FALSE; + else if (connection_header_contains(conn_header, "keep-alive")) + should_keep_alive = use_keep_alive; + else + should_keep_alive = is_http11 && use_keep_alive; // Unknown value, use version default } - // Fallback - if (!real_ip) - real_ip = p_cli_handle->host; + else + should_keep_alive = is_http11 && use_keep_alive; void *p_method_kv = Dowa_HashMap_Get_Ptr(p_req_map, "HTTP_Method"); const char *method = p_method_kv ? ((Seobeo_Request_Entry*)p_method_kv)->value : NULL; - void *p_path_kv_log = Dowa_HashMap_Get_Ptr(p_req_map, "Path"); - const char *path_log = p_path_kv_log ? ((Seobeo_Request_Entry*)p_path_kv_log)->value : "/"; - - Seobeo_Log(SEOBEO_INFO, "%s - %s %s\n", - real_ip ? real_ip : "unknown", - method ? method : "UNKNOWN", - path_log); - - Seobeo_Log(SEOBEO_DEBUG, "Parsed request, method=%s\n", method ? method : "NULL"); + void *p_path_kv = Dowa_HashMap_Get_Ptr(p_req_map, "Path"); + const char *path = p_path_kv ? ((Seobeo_Request_Entry*)p_path_kv)->value : "/"; if (!method) { - Seobeo_Log(SEOBEO_ERROR, "No HTTP method found in request\n"); + Seobeo_Log(SEOBEO_DEBUG, "No HTTP method found in request\n"); Seobeo_Web_Header_Generate(p_response_header, HTTP_BAD_REQUEST, "text/plain", 0); @@ -129,23 +179,18 @@ (const uint8*)p_response_header, (uint32)strlen(p_response_header)); Seobeo_Handle_Flush(p_cli_handle); - goto clean_up; + should_keep_alive = FALSE; + goto clean_up_arenas; } - void *p_path_kv = Dowa_HashMap_Get_Ptr(p_req_map, "Path"); - const char *path = p_path_kv ? ((Seobeo_Request_Entry*)p_path_kv)->value : "/"; - // --- Check for WebSocket upgrade request --- #ifdef SEOBEO_WEBSOCKET_SERVER - Seobeo_Log(SEOBEO_DEBUG, "Web soceket path \n"); if (Seobeo_WebSocket_Server_Handle_Upgrade(p_cli_handle, p_req_map, path)) { Seobeo_Log(SEOBEO_INFO, "WebSocket connection established\n"); - if (p_request_arena) - Dowa_Arena_Free(p_request_arena); - if (p_response_arena) - Dowa_Arena_Free(p_response_arena); - return; + Dowa_Arena_Free(p_request_arena); + Dowa_Arena_Free(p_response_arena); + return FALSE; // WebSocket takes over, don't keep-alive in HTTP sense } #endif @@ -154,16 +199,14 @@ if (handler != NULL) { Seobeo_Request_Entry *p_response_map = handler(p_req_map, p_response_arena); - Seobeo_Router_Send_Response(p_cli_handle, p_response_map, p_response_arena); - goto clean_up; + Seobeo_Router_Send_Response_KeepAlive(p_cli_handle, p_response_map, p_response_arena, should_keep_alive); + goto clean_up_arenas; } - // --- Static files fallback for GET --- + // --- Static files fallback for GET (use original large arena logic) --- if (strcmp(method, "GET") == 0) { - void *p_kv = Dowa_HashMap_Get_Ptr(p_req_map, "Path"); - const char *path = p_kv ? ((Seobeo_Request_Entry*)p_kv)->value : NULL; - char *file_path = Dowa_Arena_Allocate(p_response_arena, (size_t)5 * 1024); // 5Kb only for path + char *file_path = Dowa_Arena_Allocate(p_response_arena, (size_t)5 * 1024); if (!path || strcmp(path, "/") == 0) { @@ -183,14 +226,12 @@ strcpy(file_path, path); } - // Check if file is in cache, load if not void *p_file_kv = Dowa_HashMap_Get_Ptr(p_html_cache, file_path); const char *file_content = NULL; size_t body_size = 0; if (p_file_kv) { - // File is cached - use stored size for binary file support Seobeo_Cached_File *cached = ((Seobeo_Cache_Entry*)p_file_kv)->value; file_content = cached->content; body_size = cached->size; @@ -209,41 +250,46 @@ if (!file_content) { - Seobeo_Web_Header_Generate(p_response_header, + Seobeo_Web_Header_Generate_KeepAlive(p_response_header, HTTP_NOT_FOUND, - "text/html", 0); + "text/html", 0, should_keep_alive); Seobeo_Handle_Queue(p_cli_handle, (const uint8*)p_response_header, (uint32)strlen(p_response_header)); Seobeo_Handle_Flush(p_cli_handle); - goto clean_up; + goto clean_up_arenas; } - Seobeo_Log(SEOBEO_DEBUG, "Serving Static Files\n"); - // Serve static file const char *mime = "application/octet-stream"; if (strstr(file_path, ".html")) mime = "text/html; charset=utf-8"; else if (strstr(file_path, ".css")) mime = "text/css"; else if (strstr(file_path, ".js")) mime = "application/javascript"; else if (strstr(file_path, ".png")) mime = "image/png"; else if (strstr(file_path, ".jpg") || strstr(file_path, ".jpeg")) mime = "image/jpeg"; - else if (strstr(file_path, ".webp")) mime = "image/webp"; else if (strstr(file_path, ".gif")) mime = "image/gif"; else if (strstr(file_path, ".svg")) mime = "image/svg+xml"; else if (strstr(file_path, ".ico")) mime = "image/x-icon"; + else if (strstr(file_path, ".webp")) mime = "image/webp"; else if (strstr(file_path, ".json")) mime = "application/json"; else if (strstr(file_path, ".wasm")) mime = "application/wasm"; + else if (strstr(file_path, ".xml")) mime = "application/xml"; + else if (strstr(file_path, ".pdf")) mime = "application/pdf"; + else if (strstr(file_path, ".txt")) mime = "text/plain"; else if (strstr(file_path, ".mp4")) mime = "video/mp4"; else if (strstr(file_path, ".webm")) mime = "video/webm"; + else if (strstr(file_path, ".mp3")) mime = "audio/mpeg"; + else if (strstr(file_path, ".woff2")) mime = "font/woff2"; + else if (strstr(file_path, ".woff")) mime = "font/woff"; + else if (strstr(file_path, ".ttf")) mime = "font/ttf"; + else if (strstr(file_path, ".webp")) mime = "image/webp"; else if (strstr(file_path, ".glb")) mime = "model/gltf-binary"; else if (strstr(file_path, ".gltf")) mime = "model/gltf+json"; - Seobeo_Log(SEOBEO_DEBUG, "File path: %s\nBody Size: %zu\n", file_path, body_size); - Seobeo_Web_Header_Generate(p_response_header, + Seobeo_Web_Header_Generate_KeepAlive(p_response_header, HTTP_OK, mime, - body_size); + body_size, should_keep_alive); Seobeo_Handle_Queue(p_cli_handle, (const uint8*)p_response_header, @@ -252,32 +298,26 @@ (const uint8*)file_content, (uint32)body_size); Seobeo_Handle_Flush(p_cli_handle); - Seobeo_Log(SEOBEO_DEBUG, "Request handled successfully\n"); } else { - Seobeo_Web_Header_Generate(p_response_header, - HTTP_FORBIDDEN, - "text/plain", 0); + Seobeo_Web_Header_Generate_KeepAlive(p_response_header, + HTTP_NOT_FOUND, + "text/plain", 0, should_keep_alive); Seobeo_Handle_Queue(p_cli_handle, (const uint8*)p_response_header, (uint32)strlen(p_response_header)); Seobeo_Handle_Flush(p_cli_handle); } - goto clean_up; -clean_up: - Seobeo_Log(SEOBEO_INFO, "Clean up all Arenas\n"); - if (p_cli_handle) - Seobeo_Handle_Destroy(p_cli_handle); +clean_up_arenas: if (p_request_arena) Dowa_Arena_Free(p_request_arena); if (p_response_arena) Dowa_Arena_Free(p_response_arena); - return; + return should_keep_alive; } - int Seobeo_Web_Header_Parse(Seobeo_Handle *p_handle, Seobeo_Request_Entry **pp_map, Dowa_Arena *p_arena) { while (1) @@ -546,8 +586,7 @@ if (fork() == 0) { - Seobeo_Web_HandleClientRequest(p_cli_handle, - p_html_cache); + Seobeo_Web_ClientHandle_Request(p_cli_handle, p_html_cache, FALSE); _exit(0); } } @@ -675,10 +714,19 @@ Seobeo_Request_Entry *p_response_map, Dowa_Arena *p_arena) { + Seobeo_Router_Send_Response_KeepAlive(p_handle, p_response_map, p_arena, FALSE); +} + +void Seobeo_Router_Send_Response_KeepAlive( + Seobeo_Handle *p_handle, + Seobeo_Request_Entry *p_response_map, + Dowa_Arena *p_arena, + boolean keep_alive) +{ if (p_response_map == NULL) { char *header = Dowa_Arena_Allocate(p_arena, 1024); - Seobeo_Web_Header_Generate(header, HTTP_INTERNAL_ERROR, "text/plain", 21); + Seobeo_Web_Header_Generate_KeepAlive(header, HTTP_INTERNAL_ERROR, "text/plain", 21, keep_alive); Seobeo_Handle_Queue(p_handle, (uint8_t*)header, strlen(header)); Seobeo_Handle_Queue(p_handle, (uint8_t*)"Internal Server Error", 21); Seobeo_Handle_Flush(p_handle); @@ -716,14 +764,14 @@ } char *header = Dowa_Arena_Allocate(p_arena, 4096); - Seobeo_Web_Header_Generate(header, status, content_type, body_length); + Seobeo_Web_Header_Generate_KeepAlive(header, status, content_type, body_length, keep_alive); for (int i = 0; i < Dowa_Array_Length(p_response_map); i++) { if ( strstr(p_response_map[i].key, "status") || strstr(p_response_map[i].key, "body") || strstr(p_response_map[i].key, "content-type") || - strstr(p_response_map[i].key, "content-length") + strstr(p_response_map[i].key, "content-length") ) continue; @@ -735,7 +783,7 @@ } Seobeo_Handle_Queue(p_handle, (uint8_t*)header, strlen(header)); - Seobeo_Handle_Queue(p_handle, (uint8_t*)body, body_length); + Seobeo_Handle_Queue(p_handle, (uint8_t*)body, body_length); Seobeo_Handle_Flush(p_handle); } @@ -756,6 +804,3 @@ Dowa_Array_Free(g_routes); g_routes = NULL; } - -// Logging functions moved to s_logging.c - diff -r d6ab5921fedc -r dfdd66825396 seobeo/seobeo.h --- a/seobeo/seobeo.h Fri Jan 23 21:09:49 2026 -0800 +++ b/seobeo/seobeo.h Fri Jan 23 22:22:30 2026 -0800 @@ -62,6 +62,8 @@ // --- Web --- // /* Generate HTTP 1.1 Header value with given content_types and length. */ extern void Seobeo_Web_Header_Generate(void *buffer, int status, const char *content_type, const int content_length); +/* Generate HTTP 1.1 Header with keep-alive option. */ +extern void Seobeo_Web_Header_Generate_KeepAlive(void *buffer, int status, const char *content_type, const int content_length, boolean keep_alive); /* Start a Generic HTTP static file server with given folder. It will store folder into memory. */ extern int Seobeo_Web_Server_Start(const char *folder_path, const char *port, Seobeo_ServerMode mode, int thread_count); /* Generic HTTP GET Rquest to given host and port with path. It will mimic chrome. */ @@ -331,6 +333,8 @@ extern Seobeo_Route_Handler Seobeo_Router_Find_Handler(const char *method, const char *path, Seobeo_Request_Entry **pp_request_map, Dowa_Arena *p_arena); /* Send HTTP response from response map (internal use) */ extern void Seobeo_Router_Send_Response(Seobeo_Handle *p_handle, Seobeo_Request_Entry *p_response_map, Dowa_Arena *p_arena); +/* Send HTTP response with keep-alive option */ +extern void Seobeo_Router_Send_Response_KeepAlive(Seobeo_Handle *p_handle, Seobeo_Request_Entry *p_response_map, Dowa_Arena *p_arena, boolean keep_alive); extern char *Seobeo_Web_LoadFile(const char *file_path, size_t *p_file_size); // --- Helper functions --- // diff -r d6ab5921fedc -r dfdd66825396 seobeo/seobeo_internal.h --- a/seobeo/seobeo_internal.h Fri Jan 23 21:09:49 2026 -0800 +++ b/seobeo/seobeo_internal.h Fri Jan 23 22:22:30 2026 -0800 @@ -24,9 +24,9 @@ } Seobeo_SocketType; typedef struct { - int32 socket; + int32 socket; Seobeo_SocketType type; - boolean connected; + boolean connected; char *host; char *port; @@ -37,7 +37,7 @@ uint8 *read_buffer; uint32 read_buffer_capacity; uint32 read_buffer_len; // current size - uint32 read_buffer_used; // TODO: Implement this for client + uint32 read_buffer_used; // TODO: Implement this for client uint8 *write_buffer; uint32 write_buffer_capacity; @@ -48,6 +48,10 @@ char *file_name; atomic_bool destroyed; + + // Keep-alive support + time_t last_activity; // Timestamp of last request/response + boolean keep_alive; // Whether this connection should be kept alive } Seobeo_Handle; // Cached file entry with content and size (for binary file support) @@ -87,7 +91,8 @@ extern int Seobeo_Web_Header_Parse(Seobeo_Handle *p_handle, Seobeo_Request_Entry **pp_map, Dowa_Arena *p_arena); // --- Handle Request --- // -extern void Seobeo_Web_HandleClientRequest(Seobeo_Handle *cli, Seobeo_Cache_Entry *p_html_cache); +/* Handle a client request. Returns TRUE if connection should be kept alive. */ +extern boolean Seobeo_Web_ClientHandle_Request(Seobeo_Handle *p_cli_handle, Seobeo_Cache_Entry *p_html_cache, boolean use_keep_alive); // --- SSL --- // extern void Seobeo_Web_SSL_Init();