.env.example
packages/.env.example
.env.example
packages/.env.example
-1
CONTRIBUTING.md
-1
CONTRIBUTING.md
+55
-36
README.md
+55
-36
README.md
···
3
3
This repository contains the Disco Stu Discord bot, supporting services, and shared packages used by the project. The workspace is a monorepo managed with pnpm and TypeScript; each app and package has its own package.json and build/dev scripts.
4
4
5
5
**Repository Structure**
6
+
6
7
- `apps/` : Application code (runtime programs and services)
7
-
- `bot/` : Discord bot (commands, deploy script)
8
-
- `tapper/` : Backfill client for Tap service
9
-
- `web/` : Web server to handle OAuth
8
+
- `bot/` : Discord bot (commands, deploy script)
9
+
- `tapper/` : Backfill client for Tap service
10
+
- `web/` : Web server to handle OAuth
10
11
- `packages/` : Shared libraries used across apps
11
-
- `common/` : Logging and shared utilities
12
-
- `database/` : Database access, Kysely migrations and seed scripts
13
-
- `tsconfig/` : Shared TypeScript config packages
12
+
- `common/` : Logging and shared utilities
13
+
- `database/` : Database access, Kysely migrations and seed scripts
14
+
- `tsconfig/` : Shared TypeScript config packages
14
15
15
16
**Apps**
17
+
16
18
- `apps/bot` — Discord bot
17
-
- Entry: `apps/bot/main.ts`.
18
-
- Key files: `apps/bot/commands/*.ts` (command handlers), `apps/bot/deploy-commands.ts` (registers commands with Discord), `apps/bot/discord.d.ts` (types).
19
-
- Useful scripts (see [apps/bot/package.json](apps/bot/package.json)):
20
-
- `dev` — run bot in watch mode with `tsx --watch main.ts`
21
-
- `deploy-commands` — run `deploy-commands.ts` to push slash-command definitions to Discord
22
-
- `build` — compile TypeScript to `dist/`
23
-
- `start` — run compiled bot from `dist/main.js`
19
+
- Entry: `apps/bot/main.ts`.
20
+
- Key files: `apps/bot/commands/*.ts` (command handlers), `apps/bot/deploy-commands.ts` (registers commands with Discord), `apps/bot/discord.d.ts` (types).
21
+
- Useful scripts (see [apps/bot/package.json](apps/bot/package.json)):
22
+
- `dev` — run bot in watch mode with `tsx --watch main.ts`
23
+
- `deploy-commands` — run `deploy-commands.ts` to push slash-command definitions to Discord
24
+
- `build` — compile TypeScript to `dist/`
25
+
- `start` — run compiled bot from `dist/main.js`
24
26
25
27
- `apps/tapper` — Tap client
26
-
- Entry: `apps/tapper/index.ts`.
27
-
- Purpose: Interact with tap service running at https://tap.xero.systems
28
-
- Useful scripts (see [apps/tapper/package.json](apps/tapper/package.json)):
29
-
- `dev` — runs `NODE_ENV=development tsx index.ts`
30
-
- `start` — run compiled `dist/index.js` in production
28
+
- Entry: `apps/tapper/index.ts`.
29
+
- Purpose: Interact with tap service running at https://tap.xero.systems
30
+
- Useful scripts (see [apps/tapper/package.json](apps/tapper/package.json)):
31
+
- `dev` — runs `NODE_ENV=development tsx index.ts`
32
+
- `start` — run compiled `dist/index.js` in production
31
33
32
34
- `apps/web` — Web server
33
-
- Entry: `apps/web/index.ts`.
34
-
- Integrates with AT Protocol APIs and provides OAuth/web endpoints.
35
-
- Useful scripts (see [apps/web/package.json](apps/web/package.json)):
36
-
- `dev` — `tsx --watch index.ts` to run in dev
37
-
- `build` — compile TypeScript
38
-
- `start` — run compiled server from `dist/index.js`
35
+
- Entry: `apps/web/index.ts`.
36
+
- Integrates with AT Protocol APIs and provides OAuth/web endpoints.
37
+
- Useful scripts (see [apps/web/package.json](apps/web/package.json)):
38
+
- `dev` — `tsx --watch index.ts` to run in dev
39
+
- `build` — compile TypeScript
40
+
- `start` — run compiled server from `dist/index.js`
39
41
40
42
**Packages**
43
+
41
44
- `packages/common` — shared utilities and logging
42
-
- Exports logging helpers and other common utilities used by apps. Build with `pnpm --filter @tealfmbot/common build` or use workspace protocol.
43
-
- Scripts: `build`, `build:watch`, `typecheck` (see [packages/common/package.json](packages/common/package.json)).
45
+
- Exports logging helpers and other common utilities used by apps. Build with `pnpm --filter @tealfmbot/common build` or use workspace protocol.
46
+
- Scripts: `build`, `build:watch`, `typecheck` (see [packages/common/package.json](packages/common/package.json)).
44
47
45
48
- `packages/database` — Kysely-based database layer
46
-
- Contains DB helpers, `migrate.ts`, `seed.ts`, and Kysely codegen support.
47
-
- Scripts (see [packages/database/package.json](packages/database/package.json)):
48
-
- `migrate` — run `kysely migrate latest` to apply migrations
49
-
- `codegen` — run `kysely-codegen` to regenerate `database.d.ts`
50
-
- `seed` — run `tsx seed.ts` to seed data
51
-
- `build`, `build:watch`, `typecheck`
49
+
- Contains DB helpers, `migrate.ts`, `seed.ts`, and Kysely codegen support.
50
+
- Scripts (see [packages/database/package.json](packages/database/package.json)):
51
+
- `migrate` — run `kysely migrate latest` to apply migrations
52
+
- `codegen` — run `kysely-codegen` to regenerate `database.d.ts`
53
+
- `seed` — run `tsx seed.ts` to seed data
54
+
- `build`, `build:watch`, `typecheck`
52
55
53
56
- `packages/tsconfig` — shared TypeScript configs
54
-
- Provides base tsconfig settings shared by other packages.
57
+
- Provides base tsconfig settings shared by other packages.
55
58
56
59
**Top-level scripts** (see [package.json](package.json))
60
+
57
61
- `pnpm bot` — start the bot dev script (`pnpm --filter bot dev`)
58
62
- `pnpm tap` — start the tapper dev script (`pnpm --filter tapper dev`)
59
63
- `pnpm web` — start the web app dev script (`pnpm --filter web dev`)
···
65
69
- `pnpm format` — run `oxfmt` to format code
66
70
67
71
Developer workflow
72
+
68
73
- Install dependencies: `pnpm install` (pnpm v10+ recommended)
69
74
- Develop a single app:
70
-
- Bot: `pnpm --filter bot dev` or `pnpm bot`
71
-
- Tapper: `pnpm --filter tapper dev` or `pnpm tap`
72
-
- Web: `pnpm --filter web dev` or `pnpm web`
75
+
- Bot: `pnpm --filter bot dev` or `pnpm bot`
76
+
- Tapper: `pnpm --filter tapper dev` or `pnpm tap`
77
+
- Web: `pnpm --filter web dev` or `pnpm web`
73
78
- Develop all apps concurrently: `pnpm dev:all`
74
79
- Build all packages and apps: `pnpm build`
75
80
76
81
Database tasks
82
+
77
83
- Migrations are managed via Kysely. Run migrations from the `packages/database` package:
78
84
79
85
```bash
···
87
93
```
88
94
89
95
Docker / deployment
96
+
90
97
- `Dockerfile` and `docker-compose.prod.yml` are included for building and deploying container images.
91
98
- The repository contains `build-and-publish-images.sh` to build and publish images (will be a CI thing eventually).
92
99
93
100
Project tooling
101
+
94
102
- `lefthook.yml` configures git hooks.
95
103
- `oxlint` and `oxfmt` are used for linting and formatting.
96
104
97
105
Notes & tips
106
+
98
107
- To deploy Discord commands after changes, run the bot package `deploy-commands` script:
99
108
100
109
```bash
···
111
120
git clone https://tangled.org/dane.is.extraordinarily.cool/tealfmbot
112
121
cd tealfmbot
113
122
pnpm install
123
+
```
124
+
125
+
- Start and run database migrations
126
+
127
+
```bash
128
+
docker compose -f docker-compose.dev.yml up -d
129
+
130
+
cd packages/database
131
+
132
+
pnpm migrate
114
133
```
115
134
116
135
- Start individual apps in development:
+8
-18
apps/bot/commands/auth.ts
+8
-18
apps/bot/commands/auth.ts
···
1
+
import { env } from "@tealfmbot/common/constants";
1
2
import { logger } from "@tealfmbot/common/logger";
2
-
import {
3
-
ChatInputCommandInteraction,
4
-
InteractionContextType,
5
-
SlashCommandBuilder,
6
-
} from "discord.js";
3
+
import { ChatInputCommandInteraction, SlashCommandBuilder } from "discord.js";
7
4
8
5
export default {
9
6
data: new SlashCommandBuilder()
10
-
.setName("auth")
11
-
.setDescription("Authenticate your account with the teal.fm bot to start tracking your listens")
12
-
.addStringOption((option) =>
13
-
option
14
-
.setName("identifier")
15
-
.setDescription("e.g. 'handle.bsky.social or did:plc...'")
16
-
.setRequired(true)
17
-
.setMinLength(1),
18
-
)
19
-
.setContexts(InteractionContextType.Guild),
7
+
.setName("login")
8
+
.setDescription(
9
+
"Authenticate with your Atmosphere account and request your listens to be tracked",
10
+
),
20
11
async execute(interaction: ChatInputCommandInteraction) {
21
-
const identifier = interaction.options.getString("identifier");
22
-
await interaction.reply(`hello ${identifier}`);
23
-
logger.info(`starting authentication process for ${identifier} at ${new Date().toJSON()}`);
12
+
await interaction.reply(`Log in here and request to be tracked: ${env.WEB_SERVICE_URL}:${env.WEB_SERVICE_PORT}/login`);
13
+
logger.info(`starting authentication process for ${interaction.user.globalName} at ${new Date().toJSON()}`);
24
14
},
25
15
};
+4
-6
apps/bot/deploy-commands.ts
+4
-6
apps/bot/deploy-commands.ts
···
1
1
import {
2
-
DISCORD_APPLICATION_ID,
3
-
DISCORD_BOT_TOKEN,
4
-
DISCORD_GUILD_ID,
2
+
env
5
3
} from "@tealfmbot/common/constants";
6
4
import { REST, Routes } from "discord.js";
7
5
import fs from "node:fs";
8
6
import path from "node:path";
9
7
10
8
const commands = [];
11
-
const commandPaths = fs.globSync("commands/**/*.js");
9
+
const commandPaths = fs.globSync("dist/commands/*.js");
12
10
13
11
for await (const cmdPath of commandPaths) {
14
12
const absoluteCommandPath = path.join(import.meta.dirname, cmdPath);
···
22
20
}
23
21
}
24
22
25
-
const rest = new REST().setToken(DISCORD_BOT_TOKEN);
23
+
const rest = new REST().setToken(env.DISCORD_BOT_TOKEN);
26
24
27
25
(async () => {
28
26
try {
29
27
console.log(`Started refreshing ${commands.length} application (/) commands.`);
30
28
31
29
const data = (await rest.put(
32
-
Routes.applicationGuildCommands(DISCORD_APPLICATION_ID, DISCORD_GUILD_ID),
30
+
Routes.applicationGuildCommands(env.DISCORD_APPLICATION_ID, env.DISCORD_GUILD_ID),
33
31
{ body: commands },
34
32
)) as unknown[];
35
33
+3
-3
apps/bot/main.ts
+3
-3
apps/bot/main.ts
···
1
-
import { DISCORD_BOT_TOKEN } from "@tealfmbot/common/constants";
1
+
import { env } from "@tealfmbot/common/constants";
2
2
import { logger } from "@tealfmbot/common/logger";
3
3
import { Client, Collection, Events, GatewayIntentBits, MessageFlags } from "discord.js";
4
4
import fs from "node:fs";
···
10
10
console.log(`teal.fm bot ready and logged in as ${readyClient.user.tag}`);
11
11
});
12
12
13
-
client.login(DISCORD_BOT_TOKEN);
13
+
client.login(env.DISCORD_BOT_TOKEN);
14
14
15
15
client.on(Events.InteractionCreate, async (interaction) => {
16
16
if (!interaction.isChatInputCommand()) return;
···
39
39
40
40
client.commands = new Collection();
41
41
42
-
const commandPaths = fs.globSync("commands/*.js");
42
+
const commandPaths = fs.globSync("dist/commands/*.js");
43
43
for await (const file of commandPaths) {
44
44
const absoluteCommandPath = path.join(import.meta.dirname, file);
45
45
const command = await import(absoluteCommandPath);
+2
-1
apps/bot/package.json
+2
-1
apps/bot/package.json
···
7
7
"dev": "tsx --watch main.ts",
8
8
"deploy-commands": "tsx deploy-commands.ts",
9
9
"build": "tsc",
10
+
"watch": "tsc --watch",
10
11
"start": "node dist/main.js",
11
12
"typecheck": "tsc --noEmit"
12
13
},
13
14
"dependencies": {
14
15
"@tealfmbot/common": "workspace:*",
15
-
"@tealfmbot/tsconfig": "workspace:*",
16
16
"discord.js": "^14.25.1"
17
17
},
18
18
"devDependencies": {
19
+
"@tealfmbot/tsconfig": "workspace:*",
19
20
"@types/node": "^25.0.3",
20
21
"tsx": "^4.21.0",
21
22
"typescript": "^5.9.3"
+2
-2
apps/tapper/index.ts
+2
-2
apps/tapper/index.ts
···
1
1
import { SimpleIndexer, Tap } from "@atproto/tap";
2
-
import { TAP_ADMIN_PASSWORD } from "@tealfmbot/common/constants";
2
+
import { env } from "@tealfmbot/common/constants";
3
3
// import { db } from "./kysely/db.ts"
4
4
5
5
const tap = new Tap("https://tap.xero.systems", {
6
-
adminPassword: TAP_ADMIN_PASSWORD,
6
+
adminPassword: env.TAP_ADMIN_PASSWORD,
7
7
});
8
8
9
9
const indexer = new SimpleIndexer();
+2
-2
apps/tapper/package.json
+2
-2
apps/tapper/package.json
···
10
10
},
11
11
"dependencies": {
12
12
"@atproto/tap": "^0.0.2",
13
-
"@tealfmbot/common": "workspace:*",
14
-
"@tealfmbot/tsconfig": "workspace:*"
13
+
"@tealfmbot/common": "workspace:*"
15
14
},
16
15
"devDependencies": {
16
+
"@tealfmbot/tsconfig": "workspace:*",
17
17
"@types/node": "^25.0.3",
18
18
"tsx": "^4.21.0",
19
19
"typescript": "^5.9.3"
+22
-10
apps/web/client.ts
+22
-10
apps/web/client.ts
···
5
5
NodeOAuthClient,
6
6
type OAuthClientMetadataInput,
7
7
} from "@atproto/oauth-client-node";
8
-
import { PUBLIC_URL, PRIVATE_KEYS } from "@tealfmbot/common/constants";
8
+
import { env } from "@tealfmbot/common/constants";
9
9
import { db } from "@tealfmbot/database/db";
10
10
import assert from "node:assert";
11
-
12
11
import { SessionStore, StateStore } from "./storage.js";
13
12
13
+
const loadJwk = async () => {
14
+
const raw = env.PRIVATE_KEYS;
15
+
if (!raw) return undefined;
16
+
const json = JSON.parse(raw);
17
+
if (!json) return undefined;
18
+
const keys = await Promise.all(
19
+
json.map((jwk: string | Record<string, unknown>) => JoseKey.fromJWK(jwk)),
20
+
);
21
+
return new Keyset(keys);
22
+
};
23
+
14
24
const keyset =
15
-
PUBLIC_URL && PRIVATE_KEYS
16
-
? new Keyset(await Promise.all(PRIVATE_KEYS.map((jwk) => JoseKey.fromJWK(jwk))))
25
+
env.PUBLIC_URL && env.PRIVATE_KEYS
26
+
? await loadJwk()
17
27
: undefined;
18
28
19
-
assert(!PUBLIC_URL || keyset?.size, "PRIVATE_KEYS environment variable must be set");
29
+
30
+
31
+
assert(!env.PUBLIC_URL || keyset?.size, "PRIVATE_KEYS environment variable must be set");
20
32
21
33
const pk = keyset?.findPrivateKey({ usage: "sign" });
22
34
23
-
const metadata: OAuthClientMetadataInput = PUBLIC_URL
35
+
const metadata: OAuthClientMetadataInput = env.PUBLIC_URL
24
36
? {
25
37
client_name: "Disco Stu - Teal.fm Discord Bot",
26
-
client_id: `${PUBLIC_URL}/oauth-client-metadata.json`,
27
-
jwks_uri: `${PUBLIC_URL}/.well-known/jwks.json`,
28
-
redirect_uris: [`${PUBLIC_URL}/oauth/callback`],
38
+
client_id: `${env.PUBLIC_URL}/oauth-client-metadata.json`,
39
+
jwks_uri: `${env.PUBLIC_URL}/.well-known/jwks.json`,
40
+
redirect_uris: [`${env.PUBLIC_URL}/oauth/callback`],
29
41
scope: "atproto",
30
42
grant_types: ["authorization_code", "refresh_token"],
31
43
response_types: ["code"],
···
36
48
}
37
49
: atprotoLoopbackClientMetadata(
38
50
`http://localhost?${new URLSearchParams([
39
-
["redirect_uri", "http://127.0.0.1:8002/oauth/callback"],
51
+
["redirect_uri", `http://127.0.0.1:${env.WEB_SERVICE_PORT}/oauth/callback`],
40
52
["scope", "atproto"],
41
53
])}`,
42
54
);
+4
-4
apps/web/index.ts
+4
-4
apps/web/index.ts
···
1
1
import { serve, type HttpBindings } from "@hono/node-server";
2
-
import { COOKIE_SECRET } from "@tealfmbot/common/constants";
2
+
import { env } from "@tealfmbot/common/constants";
3
3
import { logger } from "@tealfmbot/common/logger";
4
4
import { Hono } from "hono";
5
5
import { deleteCookie, getSignedCookie } from "hono/cookie";
···
61
61
const params = new URLSearchParams(c.req.url.split("?")[1]);
62
62
63
63
try {
64
-
const session = await getSignedCookie(c, COOKIE_SECRET, "__teal_fm_bot_session");
64
+
const session = await getSignedCookie(c, env.COOKIE_SECRET, "__teal_fm_bot_session");
65
65
if (session) {
66
66
try {
67
67
const oauthSession = await client.restore(session);
···
114
114
});
115
115
return c.redirect(url.href.toString());
116
116
} catch (error) {
117
-
logger.error({ error }, "oauth authorize failed");
117
+
logger.error({error}, "oauth authorize failed");
118
118
return c.json({ message: "oauth authorize failed" }, 500);
119
119
}
120
120
},
···
122
122
123
123
app.post("/logout", async (c) => {
124
124
c.header("Cache-Control", "no-store");
125
-
const session = await getSignedCookie(c, COOKIE_SECRET, "__teal_fm_bot_session");
125
+
const session = await getSignedCookie(c, env.COOKIE_SECRET, "__teal_fm_bot_session");
126
126
if (session) {
127
127
try {
128
128
const oauthSession = await client.restore(session);
+2
-1
apps/web/package.json
+2
-1
apps/web/package.json
···
7
7
"dev": "tsx --watch index.ts",
8
8
"build": "tsc",
9
9
"start": "node dist/index.js",
10
+
"watch": "tsc --watch",
10
11
"typecheck": "tsc --noEmit"
11
12
},
12
13
"dependencies": {
···
17
18
"@hono/node-server": "^1.19.7",
18
19
"@tealfmbot/common": "workspace:*",
19
20
"@tealfmbot/database": "workspace:*",
20
-
"@tealfmbot/tsconfig": "workspace:*",
21
21
"hono": "^4.11.3",
22
22
"pino-http": "^11.0.0"
23
23
},
24
24
"devDependencies": {
25
+
"@tealfmbot/tsconfig": "workspace:*",
25
26
"@types/node": "^25.0.3",
26
27
"tsx": "^4.21.0",
27
28
"typescript": "^5.9.3"
+3
-3
apps/web/utils.ts
+3
-3
apps/web/utils.ts
···
3
3
import { Agent } from "@atproto/api";
4
4
import { isAtprotoDid, isAtprotoDidWeb } from "@atproto/did";
5
5
import { isValidHandle } from "@atproto/syntax";
6
-
import { COOKIE_SECRET } from "@tealfmbot/common/constants";
6
+
import { env } from "@tealfmbot/common/constants";
7
7
import { logger } from "@tealfmbot/common/logger";
8
8
import { deleteCookie, generateSignedCookie, getSignedCookie } from "hono/cookie";
9
9
···
12
12
export const MAX_AGE = process.env.NODE_ENV === "production" ? 60 : 0;
13
13
14
14
export async function createSession(value: string) {
15
-
const cookie = await generateSignedCookie("__teal_fm_bot_session", value, COOKIE_SECRET, {
15
+
const cookie = await generateSignedCookie("__teal_fm_bot_session", value, env.COOKIE_SECRET, {
16
16
path: "/",
17
17
secure: process.env.NODE_ENV === "production",
18
18
httpOnly: true,
···
25
25
26
26
export async function getSessionAgent(c: Context) {
27
27
c.header("Vary", "Cookie");
28
-
const session = await getSignedCookie(c, COOKIE_SECRET, "__teal_fm_bot_session");
28
+
const session = await getSignedCookie(c, env.COOKIE_SECRET, "__teal_fm_bot_session");
29
29
if (!session) return null;
30
30
c.header("Cache-Control", `max-age=${MAX_AGE}, private`);
31
31
+3
-5
build-and-publish-images.sh
+3
-5
build-and-publish-images.sh
···
1
1
SHA=$(git rev-parse HEAD)
2
2
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
3
3
VERSION=$(git describe --tags --abbrev=0)
4
-
REGISTRY=atcr.io/dane.is.extraordinarily.cool
4
+
REGISTRY=atcr.io/besaid.zone
5
5
6
6
services=(
7
7
web
···
12
12
echo "building container versions: ${VERSION#v}"
13
13
14
14
for svc in ${services[@]}; do
15
-
podman build \
15
+
docker buildx build \
16
16
-t $REGISTRY/discostu$svc:${VERSION#v} \
17
17
--target $svc \
18
18
--build-arg VERSION=${VERSION#v} \
···
20
20
--build-arg BUILD_DATE=$BUILD_DATE \
21
21
--pull \
22
22
--no-cache \
23
-
-f Dockerfile .
24
-
25
-
podman push $REGISTRY/discostu$svc:${VERSION#v}
23
+
--push .
26
24
done
+16
docker-compose.dev.yml
+16
docker-compose.dev.yml
···
1
+
services:
2
+
db:
3
+
image: postgres:18.1
4
+
healthcheck:
5
+
test: ["CMD-SHELL", "pg_isready -U postgres -d tealfmbotdb"]
6
+
interval: 10s
7
+
retries: 5
8
+
start_period: 30s
9
+
timeout: 10s
10
+
restart: always
11
+
environment:
12
+
POSTGRES_USER: postgres
13
+
POSTGRES_PASSWORD: password
14
+
POSTGRES_DB: tealfmbotdb
15
+
ports:
16
+
- 5432:5432
+1
docker-compose.prod.yml
+1
docker-compose.prod.yml
···
52
52
condition: service_healthy
53
53
54
54
environment:
55
+
NODE_ENV: production
55
56
DISCORD_BOT_TOKEN: "${DISCORD_BOT_TOKEN:?DISCORD_BOT_TOKEN is required}"
56
57
DISCORD_APPLICATION_ID: "${DISCORD_APPLICATION_ID:?DISCORD_APPLICATION_ID is required}"
57
58
DISCORD_GUILD_ID: "${DISCORD_GUILD_ID:?DISCORD_GUILD_ID is required}"
+7
-2
package.json
+7
-2
package.json
···
16
16
"tap": "pnpm --filter tapper dev",
17
17
"web": "pnpm --filter web dev",
18
18
"build": "pnpm -r build",
19
-
"build:watch": "pnpm -r build:watch",
19
+
"web:watch": "pnpm --filter web watch",
20
+
"bot:watch": "pnpm --filter bot watch",
21
+
"common:watch": "pnpm --filter common watch",
22
+
"database:watch": "pnpm --filter database watch",
23
+
"watch": "run-p *:watch",
20
24
"dev:all": "pnpm --filter './apps/**' dev",
21
-
"typecheck": "pnpm --filter './apps/**' typecheck",
25
+
"typecheck": "pnpm --filter './{packages,apps}/**' typecheck",
22
26
"lint": "oxlint",
23
27
"format": "oxfmt --no-error-on-unmatched-pattern"
24
28
},
25
29
"devDependencies": {
26
30
"lefthook": "^2.0.13",
31
+
"npm-run-all": "^4.1.5",
27
32
"oxfmt": "^0.20.0",
28
33
"oxlint": "^1.35.0",
29
34
"typescript": "^5.9.3"
+13
-8
packages/common/constants.ts
+13
-8
packages/common/constants.ts
···
1
+
import { cleanEnv, str, num } from "envalid";
1
2
import path from "node:path";
2
3
import { loadEnvFile } from "node:process";
3
4
···
5
6
loadEnvFile(path.join(import.meta.dirname, "../../.env"));
6
7
}
7
8
8
-
export const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN as string;
9
-
export const DISCORD_APPLICATION_ID = process.env.DISCORD_APPLICATION_ID as string;
10
-
export const DISCORD_GUILD_ID = process.env.DISCORD_GUILD_ID as string;
11
-
export const TAP_ADMIN_PASSWORD = process.env.TAP_ADMIN_PASSWORD as string;
12
-
export const DATABASE_URL = process.env.DATABASE_URL as string;
13
-
export const PUBLIC_URL = process.env.PUBLIC_URL as string;
14
-
export const COOKIE_SECRET = process.env.COOKIE_SECRET as string;
15
-
export const PRIVATE_KEYS = process.env.PRIVATE_KEYS as unknown as string[];
9
+
export const env = cleanEnv(process.env, {
10
+
DISCORD_BOT_TOKEN: str(),
11
+
DISCORD_APPLICATION_ID: str(),
12
+
DISCORD_GUILD_ID: str(),
13
+
TAP_ADMIN_PASSWORD: str(),
14
+
DATABASE_URL: str({ devDefault: "postgres://postgres:password@localhost:5432/tealfmbotdb" }),
15
+
PUBLIC_URL: str(),
16
+
COOKIE_SECRET: str({ devDefault: '00000000000000000000000000000000' }),
17
+
PRIVATE_KEYS: str(),
18
+
WEB_SERVICE_URL: str({ devDefault: "http://localhost" }),
19
+
WEB_SERVICE_PORT: num({devDefault: 8002})
20
+
});
+2
-1
packages/common/package.json
+2
-1
packages/common/package.json
+3
-1
packages/common/tsconfig.json
+3
-1
packages/common/tsconfig.json
+2
-2
packages/database/db.ts
+2
-2
packages/database/db.ts
···
1
-
import { DATABASE_URL } from "@tealfmbot/common/constants";
1
+
import { env } from "@tealfmbot/common/constants";
2
2
import { Kysely, PostgresDialect } from "kysely";
3
3
import { Pool } from "pg";
4
4
···
6
6
7
7
const dialect = new PostgresDialect({
8
8
pool: new Pool({
9
-
connectionString: DATABASE_URL,
9
+
connectionString: env.DATABASE_URL,
10
10
}),
11
11
});
12
12
+2
-2
packages/database/migrate.ts
+2
-2
packages/database/migrate.ts
···
1
-
import { DATABASE_URL } from "@tealfmbot/common/constants.js";
1
+
import { env } from "@tealfmbot/common/constants";
2
2
import { Kysely, Migrator, PostgresDialect, FileMigrationProvider } from "kysely";
3
3
import { run } from "kysely-migration-cli";
4
4
import fs from "node:fs/promises";
···
13
13
const db = new Kysely<DB>({
14
14
dialect: new PostgresDialect({
15
15
pool: new Pool({
16
-
connectionString: DATABASE_URL,
16
+
connectionString: env.DATABASE_URL,
17
17
}),
18
18
}),
19
19
});
+1
-1
packages/database/package.json
+1
-1
packages/database/package.json
+1119
-7
pnpm-lock.yaml
+1119
-7
pnpm-lock.yaml
···
12
12
lefthook:
13
13
specifier: ^2.0.13
14
14
version: 2.0.13
15
+
npm-run-all:
16
+
specifier: ^4.1.5
17
+
version: 4.1.5
15
18
oxfmt:
16
19
specifier: ^0.20.0
17
20
version: 0.20.0
···
27
30
'@tealfmbot/common':
28
31
specifier: workspace:*
29
32
version: link:../../packages/common
30
-
'@tealfmbot/tsconfig':
31
-
specifier: workspace:*
32
-
version: link:../../packages/tsconfig
33
33
discord.js:
34
34
specifier: ^14.25.1
35
35
version: 14.25.1
36
36
devDependencies:
37
+
'@tealfmbot/tsconfig':
38
+
specifier: workspace:*
39
+
version: link:../../packages/tsconfig
37
40
'@types/node':
38
41
specifier: ^25.0.3
39
42
version: 25.0.3
···
52
55
'@tealfmbot/common':
53
56
specifier: workspace:*
54
57
version: link:../../packages/common
58
+
devDependencies:
55
59
'@tealfmbot/tsconfig':
56
60
specifier: workspace:*
57
61
version: link:../../packages/tsconfig
58
-
devDependencies:
59
62
'@types/node':
60
63
specifier: ^25.0.3
61
64
version: 25.0.3
···
89
92
'@tealfmbot/database':
90
93
specifier: workspace:*
91
94
version: link:../../packages/database
92
-
'@tealfmbot/tsconfig':
93
-
specifier: workspace:*
94
-
version: link:../../packages/tsconfig
95
95
hono:
96
96
specifier: ^4.11.3
97
97
version: 4.11.3
···
99
99
specifier: ^11.0.0
100
100
version: 11.0.0
101
101
devDependencies:
102
+
'@tealfmbot/tsconfig':
103
+
specifier: workspace:*
104
+
version: link:../../packages/tsconfig
102
105
'@types/node':
103
106
specifier: ^25.0.3
104
107
version: 25.0.3
···
111
114
112
115
packages/common:
113
116
dependencies:
117
+
envalid:
118
+
specifier: ^8.1.1
119
+
version: 8.1.1
114
120
pino:
115
121
specifier: ^10.1.0
116
122
version: 10.1.0
···
585
591
argparse@2.0.1:
586
592
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
587
593
594
+
array-buffer-byte-length@1.0.2:
595
+
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
596
+
engines: {node: '>= 0.4'}
597
+
598
+
arraybuffer.prototype.slice@1.0.4:
599
+
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
600
+
engines: {node: '>= 0.4'}
601
+
602
+
async-function@1.0.0:
603
+
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
604
+
engines: {node: '>= 0.4'}
605
+
588
606
atomic-sleep@1.0.0:
589
607
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
590
608
engines: {node: '>=8.0.0'}
591
609
610
+
available-typed-arrays@1.0.7:
611
+
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
612
+
engines: {node: '>= 0.4'}
613
+
592
614
await-lock@2.2.2:
593
615
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
594
616
···
615
637
peerDependenciesMeta:
616
638
magicast:
617
639
optional: true
640
+
641
+
call-bind-apply-helpers@1.0.2:
642
+
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
643
+
engines: {node: '>= 0.4'}
644
+
645
+
call-bind@1.0.8:
646
+
resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
647
+
engines: {node: '>= 0.4'}
648
+
649
+
call-bound@1.0.4:
650
+
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
651
+
engines: {node: '>= 0.4'}
618
652
619
653
callsites@3.1.0:
620
654
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
···
677
711
typescript:
678
712
optional: true
679
713
714
+
cross-spawn@6.0.6:
715
+
resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
716
+
engines: {node: '>=4.8'}
717
+
718
+
data-view-buffer@1.0.2:
719
+
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
720
+
engines: {node: '>= 0.4'}
721
+
722
+
data-view-byte-length@1.0.2:
723
+
resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
724
+
engines: {node: '>= 0.4'}
725
+
726
+
data-view-byte-offset@1.0.1:
727
+
resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
728
+
engines: {node: '>= 0.4'}
729
+
680
730
dateformat@4.6.3:
681
731
resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
682
732
733
+
define-data-property@1.1.4:
734
+
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
735
+
engines: {node: '>= 0.4'}
736
+
737
+
define-properties@1.2.1:
738
+
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
739
+
engines: {node: '>= 0.4'}
740
+
683
741
defu@6.1.4:
684
742
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
685
743
···
709
767
resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
710
768
engines: {node: '>=12'}
711
769
770
+
dunder-proto@1.0.1:
771
+
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
772
+
engines: {node: '>= 0.4'}
773
+
712
774
end-of-stream@1.4.5:
713
775
resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
714
776
···
716
778
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
717
779
engines: {node: '>=6'}
718
780
781
+
envalid@8.1.1:
782
+
resolution: {integrity: sha512-vOUfHxAFFvkBjbVQbBfgnCO9d3GcNfMMTtVfgqSU2rQGMFEVqWy9GBuoSfHnwGu7EqR0/GeukQcL3KjFBaga9w==}
783
+
engines: {node: '>=18'}
784
+
719
785
error-ex@1.3.4:
720
786
resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
721
787
788
+
es-abstract@1.24.1:
789
+
resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==}
790
+
engines: {node: '>= 0.4'}
791
+
792
+
es-define-property@1.0.1:
793
+
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
794
+
engines: {node: '>= 0.4'}
795
+
796
+
es-errors@1.3.0:
797
+
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
798
+
engines: {node: '>= 0.4'}
799
+
800
+
es-object-atoms@1.1.1:
801
+
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
802
+
engines: {node: '>= 0.4'}
803
+
804
+
es-set-tostringtag@2.1.0:
805
+
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
806
+
engines: {node: '>= 0.4'}
807
+
808
+
es-to-primitive@1.3.0:
809
+
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
810
+
engines: {node: '>= 0.4'}
811
+
722
812
esbuild@0.27.2:
723
813
resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
724
814
engines: {node: '>=18'}
···
756
846
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
757
847
engines: {node: '>=8'}
758
848
849
+
for-each@0.3.5:
850
+
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
851
+
engines: {node: '>= 0.4'}
852
+
759
853
fs.realpath@1.0.0:
760
854
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
761
855
···
767
861
function-bind@1.1.2:
768
862
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
769
863
864
+
function.prototype.name@1.1.8:
865
+
resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
866
+
engines: {node: '>= 0.4'}
867
+
868
+
functions-have-names@1.2.3:
869
+
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
870
+
871
+
generator-function@2.0.1:
872
+
resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
873
+
engines: {node: '>= 0.4'}
874
+
770
875
get-caller-file@2.0.5:
771
876
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
772
877
engines: {node: 6.* || 8.* || >= 10.*}
773
878
879
+
get-intrinsic@1.3.0:
880
+
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
881
+
engines: {node: '>= 0.4'}
882
+
883
+
get-proto@1.0.1:
884
+
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
885
+
engines: {node: '>= 0.4'}
886
+
887
+
get-symbol-description@1.1.0:
888
+
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
889
+
engines: {node: '>= 0.4'}
890
+
774
891
get-tsconfig@4.13.0:
775
892
resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
776
893
···
786
903
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
787
904
deprecated: Glob versions prior to v9 are no longer supported
788
905
906
+
globalthis@1.0.4:
907
+
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
908
+
engines: {node: '>= 0.4'}
909
+
910
+
gopd@1.2.0:
911
+
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
912
+
engines: {node: '>= 0.4'}
913
+
914
+
graceful-fs@4.2.11:
915
+
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
916
+
917
+
has-bigints@1.1.0:
918
+
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
919
+
engines: {node: '>= 0.4'}
920
+
789
921
has-flag@3.0.0:
790
922
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
791
923
engines: {node: '>=4'}
···
794
926
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
795
927
engines: {node: '>=8'}
796
928
929
+
has-property-descriptors@1.0.2:
930
+
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
931
+
932
+
has-proto@1.2.0:
933
+
resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
934
+
engines: {node: '>= 0.4'}
935
+
936
+
has-symbols@1.1.0:
937
+
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
938
+
engines: {node: '>= 0.4'}
939
+
940
+
has-tostringtag@1.0.2:
941
+
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
942
+
engines: {node: '>= 0.4'}
943
+
797
944
hasown@2.0.2:
798
945
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
799
946
engines: {node: '>= 0.4'}
···
804
951
hono@4.11.3:
805
952
resolution: {integrity: sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==}
806
953
engines: {node: '>=16.9.0'}
954
+
955
+
hosted-git-info@2.8.9:
956
+
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
807
957
808
958
ieee754@1.2.1:
809
959
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
···
818
968
819
969
inherits@2.0.4:
820
970
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
971
+
972
+
internal-slot@1.1.0:
973
+
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
974
+
engines: {node: '>= 0.4'}
821
975
822
976
interpret@1.4.0:
823
977
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
···
827
981
resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==}
828
982
engines: {node: '>= 10'}
829
983
984
+
is-array-buffer@3.0.5:
985
+
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
986
+
engines: {node: '>= 0.4'}
987
+
830
988
is-arrayish@0.2.1:
831
989
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
832
990
991
+
is-async-function@2.1.1:
992
+
resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
993
+
engines: {node: '>= 0.4'}
994
+
995
+
is-bigint@1.1.0:
996
+
resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
997
+
engines: {node: '>= 0.4'}
998
+
999
+
is-boolean-object@1.2.2:
1000
+
resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
1001
+
engines: {node: '>= 0.4'}
1002
+
1003
+
is-callable@1.2.7:
1004
+
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1005
+
engines: {node: '>= 0.4'}
1006
+
833
1007
is-core-module@2.16.1:
834
1008
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
835
1009
engines: {node: '>= 0.4'}
836
1010
1011
+
is-data-view@1.0.2:
1012
+
resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
1013
+
engines: {node: '>= 0.4'}
1014
+
1015
+
is-date-object@1.1.0:
1016
+
resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
1017
+
engines: {node: '>= 0.4'}
1018
+
1019
+
is-finalizationregistry@1.1.1:
1020
+
resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
1021
+
engines: {node: '>= 0.4'}
1022
+
1023
+
is-generator-function@1.1.2:
1024
+
resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
1025
+
engines: {node: '>= 0.4'}
1026
+
1027
+
is-map@2.0.3:
1028
+
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
1029
+
engines: {node: '>= 0.4'}
1030
+
1031
+
is-negative-zero@2.0.3:
1032
+
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
1033
+
engines: {node: '>= 0.4'}
1034
+
1035
+
is-number-object@1.1.1:
1036
+
resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
1037
+
engines: {node: '>= 0.4'}
1038
+
837
1039
is-number@7.0.0:
838
1040
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
839
1041
engines: {node: '>=0.12.0'}
840
1042
1043
+
is-regex@1.2.1:
1044
+
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
1045
+
engines: {node: '>= 0.4'}
1046
+
1047
+
is-set@2.0.3:
1048
+
resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
1049
+
engines: {node: '>= 0.4'}
1050
+
1051
+
is-shared-array-buffer@1.0.4:
1052
+
resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
1053
+
engines: {node: '>= 0.4'}
1054
+
1055
+
is-string@1.1.1:
1056
+
resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
1057
+
engines: {node: '>= 0.4'}
1058
+
1059
+
is-symbol@1.1.1:
1060
+
resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
1061
+
engines: {node: '>= 0.4'}
1062
+
1063
+
is-typed-array@1.1.15:
1064
+
resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
1065
+
engines: {node: '>= 0.4'}
1066
+
1067
+
is-weakmap@2.0.2:
1068
+
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
1069
+
engines: {node: '>= 0.4'}
1070
+
1071
+
is-weakref@1.1.1:
1072
+
resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
1073
+
engines: {node: '>= 0.4'}
1074
+
1075
+
is-weakset@2.0.4:
1076
+
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
1077
+
engines: {node: '>= 0.4'}
1078
+
1079
+
isarray@2.0.5:
1080
+
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1081
+
1082
+
isexe@2.0.0:
1083
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1084
+
841
1085
iso-datestring-validator@2.2.2:
842
1086
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
843
1087
···
858
1102
js-yaml@4.1.1:
859
1103
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
860
1104
hasBin: true
1105
+
1106
+
json-parse-better-errors@1.0.2:
1107
+
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
861
1108
862
1109
json-parse-even-better-errors@2.3.1:
863
1110
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
···
979
1226
lines-and-columns@1.2.4:
980
1227
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
981
1228
1229
+
load-json-file@4.0.0:
1230
+
resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
1231
+
engines: {node: '>=4'}
1232
+
982
1233
lodash.snakecase@4.1.1:
983
1234
resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
984
1235
···
995
1246
magic-bytes.js@1.12.1:
996
1247
resolution: {integrity: sha512-ThQLOhN86ZkJ7qemtVRGYM+gRgR8GEXNli9H/PMvpnZsE44Xfh3wx9kGJaldg314v85m+bFW6WBMaVHJc/c3zA==}
997
1248
1249
+
math-intrinsics@1.1.0:
1250
+
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1251
+
engines: {node: '>= 0.4'}
1252
+
1253
+
memorystream@0.3.1:
1254
+
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
1255
+
engines: {node: '>= 0.10.0'}
1256
+
998
1257
micromatch@4.0.8:
999
1258
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1000
1259
engines: {node: '>=8.6'}
···
1008
1267
multiformats@9.9.0:
1009
1268
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
1010
1269
1270
+
nice-try@1.0.5:
1271
+
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
1272
+
1011
1273
node-fetch-native@1.6.7:
1012
1274
resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
1013
1275
1276
+
normalize-package-data@2.5.0:
1277
+
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1278
+
1279
+
npm-run-all@4.1.5:
1280
+
resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
1281
+
engines: {node: '>= 4'}
1282
+
hasBin: true
1283
+
1014
1284
nypm@0.6.2:
1015
1285
resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==}
1016
1286
engines: {node: ^14.16.0 || >=16.10.0}
1017
1287
hasBin: true
1018
1288
1289
+
object-inspect@1.13.4:
1290
+
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
1291
+
engines: {node: '>= 0.4'}
1292
+
1293
+
object-keys@1.1.1:
1294
+
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1295
+
engines: {node: '>= 0.4'}
1296
+
1297
+
object.assign@4.1.7:
1298
+
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1299
+
engines: {node: '>= 0.4'}
1300
+
1019
1301
ofetch@1.5.1:
1020
1302
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
1021
1303
···
1028
1310
1029
1311
once@1.4.0:
1030
1312
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1313
+
1314
+
own-keys@1.0.1:
1315
+
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
1316
+
engines: {node: '>= 0.4'}
1031
1317
1032
1318
oxfmt@0.20.0:
1033
1319
resolution: {integrity: sha512-+7f8eV8iaK3tENN/FUVxZM1g78HjPehybN8/+/dvEA1O893Dcvk6O7/Q1wTQOHMD7wvdwWdujKl+Uo8QMiKDrQ==}
···
1048
1334
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1049
1335
engines: {node: '>=6'}
1050
1336
1337
+
parse-json@4.0.0:
1338
+
resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
1339
+
engines: {node: '>=4'}
1340
+
1051
1341
parse-json@5.2.0:
1052
1342
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1053
1343
engines: {node: '>=8'}
···
1056
1346
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1057
1347
engines: {node: '>=0.10.0'}
1058
1348
1349
+
path-key@2.0.1:
1350
+
resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
1351
+
engines: {node: '>=4'}
1352
+
1059
1353
path-parse@1.0.7:
1060
1354
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1355
+
1356
+
path-type@3.0.0:
1357
+
resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
1358
+
engines: {node: '>=4'}
1061
1359
1062
1360
pathe@2.0.3:
1063
1361
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
···
1106
1404
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1107
1405
engines: {node: '>=8.6'}
1108
1406
1407
+
pidtree@0.3.1:
1408
+
resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
1409
+
engines: {node: '>=0.10'}
1410
+
hasBin: true
1411
+
1412
+
pify@3.0.0:
1413
+
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
1414
+
engines: {node: '>=4'}
1415
+
1109
1416
pino-abstract-transport@1.2.0:
1110
1417
resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
1111
1418
···
1143
1450
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
1144
1451
engines: {node: '>=4'}
1145
1452
1453
+
possible-typed-array-names@1.1.0:
1454
+
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
1455
+
engines: {node: '>= 0.4'}
1456
+
1146
1457
postgres-array@2.0.0:
1147
1458
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
1148
1459
engines: {node: '>=4'}
···
1178
1489
rc9@2.1.2:
1179
1490
resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
1180
1491
1492
+
read-pkg@3.0.0:
1493
+
resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
1494
+
engines: {node: '>=4'}
1495
+
1181
1496
readable-stream@4.7.0:
1182
1497
resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
1183
1498
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
···
1194
1509
resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
1195
1510
engines: {node: '>= 0.10'}
1196
1511
1512
+
reflect.getprototypeof@1.0.10:
1513
+
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
1514
+
engines: {node: '>= 0.4'}
1515
+
1516
+
regexp.prototype.flags@1.5.4:
1517
+
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1518
+
engines: {node: '>= 0.4'}
1519
+
1197
1520
resolve-from@4.0.0:
1198
1521
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1199
1522
engines: {node: '>=4'}
···
1206
1529
engines: {node: '>= 0.4'}
1207
1530
hasBin: true
1208
1531
1532
+
safe-array-concat@1.1.3:
1533
+
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
1534
+
engines: {node: '>=0.4'}
1535
+
1209
1536
safe-buffer@5.2.1:
1210
1537
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1211
1538
1539
+
safe-push-apply@1.0.0:
1540
+
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
1541
+
engines: {node: '>= 0.4'}
1542
+
1543
+
safe-regex-test@1.1.0:
1544
+
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
1545
+
engines: {node: '>= 0.4'}
1546
+
1212
1547
safe-stable-stringify@2.5.0:
1213
1548
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
1214
1549
engines: {node: '>=10'}
···
1216
1551
secure-json-parse@4.1.0:
1217
1552
resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
1218
1553
1554
+
semver@5.7.2:
1555
+
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
1556
+
hasBin: true
1557
+
1558
+
set-function-length@1.2.2:
1559
+
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1560
+
engines: {node: '>= 0.4'}
1561
+
1562
+
set-function-name@2.0.2:
1563
+
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1564
+
engines: {node: '>= 0.4'}
1565
+
1566
+
set-proto@1.0.0:
1567
+
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
1568
+
engines: {node: '>= 0.4'}
1569
+
1570
+
shebang-command@1.2.0:
1571
+
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
1572
+
engines: {node: '>=0.10.0'}
1573
+
1574
+
shebang-regex@1.0.0:
1575
+
resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
1576
+
engines: {node: '>=0.10.0'}
1577
+
1578
+
shell-quote@1.8.3:
1579
+
resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
1580
+
engines: {node: '>= 0.4'}
1581
+
1219
1582
shelljs.exec@1.1.8:
1220
1583
resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==}
1221
1584
engines: {node: '>= 4.0.0'}
···
1225
1588
engines: {node: '>=4'}
1226
1589
hasBin: true
1227
1590
1591
+
side-channel-list@1.0.0:
1592
+
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
1593
+
engines: {node: '>= 0.4'}
1594
+
1595
+
side-channel-map@1.0.1:
1596
+
resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
1597
+
engines: {node: '>= 0.4'}
1598
+
1599
+
side-channel-weakmap@1.0.2:
1600
+
resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
1601
+
engines: {node: '>= 0.4'}
1602
+
1603
+
side-channel@1.1.0:
1604
+
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1605
+
engines: {node: '>= 0.4'}
1606
+
1228
1607
sonic-boom@3.8.1:
1229
1608
resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
1230
1609
1231
1610
sonic-boom@4.2.0:
1232
1611
resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
1233
1612
1613
+
spdx-correct@3.2.0:
1614
+
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
1615
+
1616
+
spdx-exceptions@2.5.0:
1617
+
resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
1618
+
1619
+
spdx-expression-parse@3.0.1:
1620
+
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
1621
+
1622
+
spdx-license-ids@3.0.22:
1623
+
resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
1624
+
1234
1625
split2@4.2.0:
1235
1626
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
1236
1627
engines: {node: '>= 10.x'}
···
1238
1629
std-env@3.10.0:
1239
1630
resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
1240
1631
1632
+
stop-iteration-iterator@1.1.0:
1633
+
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
1634
+
engines: {node: '>= 0.4'}
1635
+
1636
+
string.prototype.padend@3.1.6:
1637
+
resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
1638
+
engines: {node: '>= 0.4'}
1639
+
1640
+
string.prototype.trim@1.2.10:
1641
+
resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
1642
+
engines: {node: '>= 0.4'}
1643
+
1644
+
string.prototype.trimend@1.0.9:
1645
+
resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
1646
+
engines: {node: '>= 0.4'}
1647
+
1648
+
string.prototype.trimstart@1.0.8:
1649
+
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1650
+
engines: {node: '>= 0.4'}
1651
+
1241
1652
string_decoder@1.3.0:
1242
1653
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1654
+
1655
+
strip-bom@3.0.0:
1656
+
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1657
+
engines: {node: '>=4'}
1243
1658
1244
1659
strip-json-comments@5.0.3:
1245
1660
resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
···
1300
1715
engines: {node: '>=18.0.0'}
1301
1716
hasBin: true
1302
1717
1718
+
typed-array-buffer@1.0.3:
1719
+
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
1720
+
engines: {node: '>= 0.4'}
1721
+
1722
+
typed-array-byte-length@1.0.3:
1723
+
resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
1724
+
engines: {node: '>= 0.4'}
1725
+
1726
+
typed-array-byte-offset@1.0.4:
1727
+
resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
1728
+
engines: {node: '>= 0.4'}
1729
+
1730
+
typed-array-length@1.0.7:
1731
+
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1732
+
engines: {node: '>= 0.4'}
1733
+
1303
1734
typescript@5.9.2:
1304
1735
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
1305
1736
engines: {node: '>=14.17'}
···
1316
1747
uint8arrays@3.0.0:
1317
1748
resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
1318
1749
1750
+
unbox-primitive@1.1.0:
1751
+
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1752
+
engines: {node: '>= 0.4'}
1753
+
1319
1754
undici-types@6.21.0:
1320
1755
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
1321
1756
···
1328
1763
1329
1764
unicode-segmenter@0.14.4:
1330
1765
resolution: {integrity: sha512-pR5VCiCrLrKOL6FRW61jnk9+wyMtKKowq+jyFY9oc6uHbWKhDL4yVRiI4YZPksGMK72Pahh8m0cn/0JvbDDyJg==}
1766
+
1767
+
validate-npm-package-license@3.0.4:
1768
+
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
1769
+
1770
+
which-boxed-primitive@1.1.1:
1771
+
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
1772
+
engines: {node: '>= 0.4'}
1773
+
1774
+
which-builtin-type@1.2.1:
1775
+
resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
1776
+
engines: {node: '>= 0.4'}
1777
+
1778
+
which-collection@1.0.2:
1779
+
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
1780
+
engines: {node: '>= 0.4'}
1781
+
1782
+
which-typed-array@1.1.19:
1783
+
resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
1784
+
engines: {node: '>= 0.4'}
1785
+
1786
+
which@1.3.1:
1787
+
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1788
+
hasBin: true
1331
1789
1332
1790
wrappy@1.0.2:
1333
1791
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
···
1772
2230
1773
2231
argparse@2.0.1: {}
1774
2232
2233
+
array-buffer-byte-length@1.0.2:
2234
+
dependencies:
2235
+
call-bound: 1.0.4
2236
+
is-array-buffer: 3.0.5
2237
+
2238
+
arraybuffer.prototype.slice@1.0.4:
2239
+
dependencies:
2240
+
array-buffer-byte-length: 1.0.2
2241
+
call-bind: 1.0.8
2242
+
define-properties: 1.2.1
2243
+
es-abstract: 1.24.1
2244
+
es-errors: 1.3.0
2245
+
get-intrinsic: 1.3.0
2246
+
is-array-buffer: 3.0.5
2247
+
2248
+
async-function@1.0.0: {}
2249
+
1775
2250
atomic-sleep@1.0.0: {}
2251
+
2252
+
available-typed-arrays@1.0.7:
2253
+
dependencies:
2254
+
possible-typed-array-names: 1.1.0
1776
2255
1777
2256
await-lock@2.2.2: {}
1778
2257
···
1809
2288
pkg-types: 2.3.0
1810
2289
rc9: 2.1.2
1811
2290
2291
+
call-bind-apply-helpers@1.0.2:
2292
+
dependencies:
2293
+
es-errors: 1.3.0
2294
+
function-bind: 1.1.2
2295
+
2296
+
call-bind@1.0.8:
2297
+
dependencies:
2298
+
call-bind-apply-helpers: 1.0.2
2299
+
es-define-property: 1.0.1
2300
+
get-intrinsic: 1.3.0
2301
+
set-function-length: 1.2.2
2302
+
2303
+
call-bound@1.0.4:
2304
+
dependencies:
2305
+
call-bind-apply-helpers: 1.0.2
2306
+
get-intrinsic: 1.3.0
2307
+
1812
2308
callsites@3.1.0: {}
1813
2309
1814
2310
chalk@2.4.2:
···
1863
2359
optionalDependencies:
1864
2360
typescript: 5.9.2
1865
2361
2362
+
cross-spawn@6.0.6:
2363
+
dependencies:
2364
+
nice-try: 1.0.5
2365
+
path-key: 2.0.1
2366
+
semver: 5.7.2
2367
+
shebang-command: 1.2.0
2368
+
which: 1.3.1
2369
+
2370
+
data-view-buffer@1.0.2:
2371
+
dependencies:
2372
+
call-bound: 1.0.4
2373
+
es-errors: 1.3.0
2374
+
is-data-view: 1.0.2
2375
+
2376
+
data-view-byte-length@1.0.2:
2377
+
dependencies:
2378
+
call-bound: 1.0.4
2379
+
es-errors: 1.3.0
2380
+
is-data-view: 1.0.2
2381
+
2382
+
data-view-byte-offset@1.0.1:
2383
+
dependencies:
2384
+
call-bound: 1.0.4
2385
+
es-errors: 1.3.0
2386
+
is-data-view: 1.0.2
2387
+
1866
2388
dateformat@4.6.3: {}
1867
2389
2390
+
define-data-property@1.1.4:
2391
+
dependencies:
2392
+
es-define-property: 1.0.1
2393
+
es-errors: 1.3.0
2394
+
gopd: 1.2.0
2395
+
2396
+
define-properties@1.2.1:
2397
+
dependencies:
2398
+
define-data-property: 1.1.4
2399
+
has-property-descriptors: 1.0.2
2400
+
object-keys: 1.1.1
2401
+
1868
2402
defu@6.1.4: {}
1869
2403
1870
2404
destr@2.0.5: {}
···
1900
2434
1901
2435
dotenv@17.2.3: {}
1902
2436
2437
+
dunder-proto@1.0.1:
2438
+
dependencies:
2439
+
call-bind-apply-helpers: 1.0.2
2440
+
es-errors: 1.3.0
2441
+
gopd: 1.2.0
2442
+
1903
2443
end-of-stream@1.4.5:
1904
2444
dependencies:
1905
2445
once: 1.4.0
1906
2446
1907
2447
env-paths@2.2.1: {}
1908
2448
2449
+
envalid@8.1.1:
2450
+
dependencies:
2451
+
tslib: 2.8.1
2452
+
1909
2453
error-ex@1.3.4:
1910
2454
dependencies:
1911
2455
is-arrayish: 0.2.1
1912
2456
2457
+
es-abstract@1.24.1:
2458
+
dependencies:
2459
+
array-buffer-byte-length: 1.0.2
2460
+
arraybuffer.prototype.slice: 1.0.4
2461
+
available-typed-arrays: 1.0.7
2462
+
call-bind: 1.0.8
2463
+
call-bound: 1.0.4
2464
+
data-view-buffer: 1.0.2
2465
+
data-view-byte-length: 1.0.2
2466
+
data-view-byte-offset: 1.0.1
2467
+
es-define-property: 1.0.1
2468
+
es-errors: 1.3.0
2469
+
es-object-atoms: 1.1.1
2470
+
es-set-tostringtag: 2.1.0
2471
+
es-to-primitive: 1.3.0
2472
+
function.prototype.name: 1.1.8
2473
+
get-intrinsic: 1.3.0
2474
+
get-proto: 1.0.1
2475
+
get-symbol-description: 1.1.0
2476
+
globalthis: 1.0.4
2477
+
gopd: 1.2.0
2478
+
has-property-descriptors: 1.0.2
2479
+
has-proto: 1.2.0
2480
+
has-symbols: 1.1.0
2481
+
hasown: 2.0.2
2482
+
internal-slot: 1.1.0
2483
+
is-array-buffer: 3.0.5
2484
+
is-callable: 1.2.7
2485
+
is-data-view: 1.0.2
2486
+
is-negative-zero: 2.0.3
2487
+
is-regex: 1.2.1
2488
+
is-set: 2.0.3
2489
+
is-shared-array-buffer: 1.0.4
2490
+
is-string: 1.1.1
2491
+
is-typed-array: 1.1.15
2492
+
is-weakref: 1.1.1
2493
+
math-intrinsics: 1.1.0
2494
+
object-inspect: 1.13.4
2495
+
object-keys: 1.1.1
2496
+
object.assign: 4.1.7
2497
+
own-keys: 1.0.1
2498
+
regexp.prototype.flags: 1.5.4
2499
+
safe-array-concat: 1.1.3
2500
+
safe-push-apply: 1.0.0
2501
+
safe-regex-test: 1.1.0
2502
+
set-proto: 1.0.0
2503
+
stop-iteration-iterator: 1.1.0
2504
+
string.prototype.trim: 1.2.10
2505
+
string.prototype.trimend: 1.0.9
2506
+
string.prototype.trimstart: 1.0.8
2507
+
typed-array-buffer: 1.0.3
2508
+
typed-array-byte-length: 1.0.3
2509
+
typed-array-byte-offset: 1.0.4
2510
+
typed-array-length: 1.0.7
2511
+
unbox-primitive: 1.1.0
2512
+
which-typed-array: 1.1.19
2513
+
2514
+
es-define-property@1.0.1: {}
2515
+
2516
+
es-errors@1.3.0: {}
2517
+
2518
+
es-object-atoms@1.1.1:
2519
+
dependencies:
2520
+
es-errors: 1.3.0
2521
+
2522
+
es-set-tostringtag@2.1.0:
2523
+
dependencies:
2524
+
es-errors: 1.3.0
2525
+
get-intrinsic: 1.3.0
2526
+
has-tostringtag: 1.0.2
2527
+
hasown: 2.0.2
2528
+
2529
+
es-to-primitive@1.3.0:
2530
+
dependencies:
2531
+
is-callable: 1.2.7
2532
+
is-date-object: 1.1.0
2533
+
is-symbol: 1.1.1
2534
+
1913
2535
esbuild@0.27.2:
1914
2536
optionalDependencies:
1915
2537
'@esbuild/aix-ppc64': 0.27.2
···
1959
2581
dependencies:
1960
2582
to-regex-range: 5.0.1
1961
2583
2584
+
for-each@0.3.5:
2585
+
dependencies:
2586
+
is-callable: 1.2.7
2587
+
1962
2588
fs.realpath@1.0.0: {}
1963
2589
1964
2590
fsevents@2.3.3:
1965
2591
optional: true
1966
2592
1967
2593
function-bind@1.1.2: {}
2594
+
2595
+
function.prototype.name@1.1.8:
2596
+
dependencies:
2597
+
call-bind: 1.0.8
2598
+
call-bound: 1.0.4
2599
+
define-properties: 1.2.1
2600
+
functions-have-names: 1.2.3
2601
+
hasown: 2.0.2
2602
+
is-callable: 1.2.7
2603
+
2604
+
functions-have-names@1.2.3: {}
2605
+
2606
+
generator-function@2.0.1: {}
1968
2607
1969
2608
get-caller-file@2.0.5: {}
1970
2609
2610
+
get-intrinsic@1.3.0:
2611
+
dependencies:
2612
+
call-bind-apply-helpers: 1.0.2
2613
+
es-define-property: 1.0.1
2614
+
es-errors: 1.3.0
2615
+
es-object-atoms: 1.1.1
2616
+
function-bind: 1.1.2
2617
+
get-proto: 1.0.1
2618
+
gopd: 1.2.0
2619
+
has-symbols: 1.1.0
2620
+
hasown: 2.0.2
2621
+
math-intrinsics: 1.1.0
2622
+
2623
+
get-proto@1.0.1:
2624
+
dependencies:
2625
+
dunder-proto: 1.0.1
2626
+
es-object-atoms: 1.1.1
2627
+
2628
+
get-symbol-description@1.1.0:
2629
+
dependencies:
2630
+
call-bound: 1.0.4
2631
+
es-errors: 1.3.0
2632
+
get-intrinsic: 1.3.0
2633
+
1971
2634
get-tsconfig@4.13.0:
1972
2635
dependencies:
1973
2636
resolve-pkg-maps: 1.0.0
···
1998
2661
once: 1.4.0
1999
2662
path-is-absolute: 1.0.1
2000
2663
2664
+
globalthis@1.0.4:
2665
+
dependencies:
2666
+
define-properties: 1.2.1
2667
+
gopd: 1.2.0
2668
+
2669
+
gopd@1.2.0: {}
2670
+
2671
+
graceful-fs@4.2.11: {}
2672
+
2673
+
has-bigints@1.1.0: {}
2674
+
2001
2675
has-flag@3.0.0: {}
2002
2676
2003
2677
has-flag@4.0.0: {}
2004
2678
2679
+
has-property-descriptors@1.0.2:
2680
+
dependencies:
2681
+
es-define-property: 1.0.1
2682
+
2683
+
has-proto@1.2.0:
2684
+
dependencies:
2685
+
dunder-proto: 1.0.1
2686
+
2687
+
has-symbols@1.1.0: {}
2688
+
2689
+
has-tostringtag@1.0.2:
2690
+
dependencies:
2691
+
has-symbols: 1.1.0
2692
+
2005
2693
hasown@2.0.2:
2006
2694
dependencies:
2007
2695
function-bind: 1.1.2
···
2009
2697
help-me@5.0.0: {}
2010
2698
2011
2699
hono@4.11.3: {}
2700
+
2701
+
hosted-git-info@2.8.9: {}
2012
2702
2013
2703
ieee754@1.2.1: {}
2014
2704
···
2024
2714
2025
2715
inherits@2.0.4: {}
2026
2716
2717
+
internal-slot@1.1.0:
2718
+
dependencies:
2719
+
es-errors: 1.3.0
2720
+
hasown: 2.0.2
2721
+
side-channel: 1.1.0
2722
+
2027
2723
interpret@1.4.0: {}
2028
2724
2029
2725
ipaddr.js@2.3.0: {}
2030
2726
2727
+
is-array-buffer@3.0.5:
2728
+
dependencies:
2729
+
call-bind: 1.0.8
2730
+
call-bound: 1.0.4
2731
+
get-intrinsic: 1.3.0
2732
+
2031
2733
is-arrayish@0.2.1: {}
2032
2734
2735
+
is-async-function@2.1.1:
2736
+
dependencies:
2737
+
async-function: 1.0.0
2738
+
call-bound: 1.0.4
2739
+
get-proto: 1.0.1
2740
+
has-tostringtag: 1.0.2
2741
+
safe-regex-test: 1.1.0
2742
+
2743
+
is-bigint@1.1.0:
2744
+
dependencies:
2745
+
has-bigints: 1.1.0
2746
+
2747
+
is-boolean-object@1.2.2:
2748
+
dependencies:
2749
+
call-bound: 1.0.4
2750
+
has-tostringtag: 1.0.2
2751
+
2752
+
is-callable@1.2.7: {}
2753
+
2033
2754
is-core-module@2.16.1:
2034
2755
dependencies:
2035
2756
hasown: 2.0.2
2036
2757
2758
+
is-data-view@1.0.2:
2759
+
dependencies:
2760
+
call-bound: 1.0.4
2761
+
get-intrinsic: 1.3.0
2762
+
is-typed-array: 1.1.15
2763
+
2764
+
is-date-object@1.1.0:
2765
+
dependencies:
2766
+
call-bound: 1.0.4
2767
+
has-tostringtag: 1.0.2
2768
+
2769
+
is-finalizationregistry@1.1.1:
2770
+
dependencies:
2771
+
call-bound: 1.0.4
2772
+
2773
+
is-generator-function@1.1.2:
2774
+
dependencies:
2775
+
call-bound: 1.0.4
2776
+
generator-function: 2.0.1
2777
+
get-proto: 1.0.1
2778
+
has-tostringtag: 1.0.2
2779
+
safe-regex-test: 1.1.0
2780
+
2781
+
is-map@2.0.3: {}
2782
+
2783
+
is-negative-zero@2.0.3: {}
2784
+
2785
+
is-number-object@1.1.1:
2786
+
dependencies:
2787
+
call-bound: 1.0.4
2788
+
has-tostringtag: 1.0.2
2789
+
2037
2790
is-number@7.0.0: {}
2038
2791
2792
+
is-regex@1.2.1:
2793
+
dependencies:
2794
+
call-bound: 1.0.4
2795
+
gopd: 1.2.0
2796
+
has-tostringtag: 1.0.2
2797
+
hasown: 2.0.2
2798
+
2799
+
is-set@2.0.3: {}
2800
+
2801
+
is-shared-array-buffer@1.0.4:
2802
+
dependencies:
2803
+
call-bound: 1.0.4
2804
+
2805
+
is-string@1.1.1:
2806
+
dependencies:
2807
+
call-bound: 1.0.4
2808
+
has-tostringtag: 1.0.2
2809
+
2810
+
is-symbol@1.1.1:
2811
+
dependencies:
2812
+
call-bound: 1.0.4
2813
+
has-symbols: 1.1.0
2814
+
safe-regex-test: 1.1.0
2815
+
2816
+
is-typed-array@1.1.15:
2817
+
dependencies:
2818
+
which-typed-array: 1.1.19
2819
+
2820
+
is-weakmap@2.0.2: {}
2821
+
2822
+
is-weakref@1.1.1:
2823
+
dependencies:
2824
+
call-bound: 1.0.4
2825
+
2826
+
is-weakset@2.0.4:
2827
+
dependencies:
2828
+
call-bound: 1.0.4
2829
+
get-intrinsic: 1.3.0
2830
+
2831
+
isarray@2.0.5: {}
2832
+
2833
+
isexe@2.0.0: {}
2834
+
2039
2835
iso-datestring-validator@2.2.2: {}
2040
2836
2041
2837
jiti@2.6.1: {}
···
2050
2846
dependencies:
2051
2847
argparse: 2.0.1
2052
2848
2849
+
json-parse-better-errors@1.0.2: {}
2850
+
2053
2851
json-parse-even-better-errors@2.3.1: {}
2054
2852
2055
2853
kysely-codegen@0.19.0(kysely@0.28.9)(pg@8.16.3)(typescript@5.9.2):
···
2139
2937
2140
2938
lines-and-columns@1.2.4: {}
2141
2939
2940
+
load-json-file@4.0.0:
2941
+
dependencies:
2942
+
graceful-fs: 4.2.11
2943
+
parse-json: 4.0.0
2944
+
pify: 3.0.0
2945
+
strip-bom: 3.0.0
2946
+
2142
2947
lodash.snakecase@4.1.1: {}
2143
2948
2144
2949
lodash@4.17.21: {}
···
2149
2954
2150
2955
magic-bytes.js@1.12.1: {}
2151
2956
2957
+
math-intrinsics@1.1.0: {}
2958
+
2959
+
memorystream@0.3.1: {}
2960
+
2152
2961
micromatch@4.0.8:
2153
2962
dependencies:
2154
2963
braces: 3.0.3
···
2162
2971
2163
2972
multiformats@9.9.0: {}
2164
2973
2974
+
nice-try@1.0.5: {}
2975
+
2165
2976
node-fetch-native@1.6.7: {}
2166
2977
2978
+
normalize-package-data@2.5.0:
2979
+
dependencies:
2980
+
hosted-git-info: 2.8.9
2981
+
resolve: 1.22.11
2982
+
semver: 5.7.2
2983
+
validate-npm-package-license: 3.0.4
2984
+
2985
+
npm-run-all@4.1.5:
2986
+
dependencies:
2987
+
ansi-styles: 3.2.1
2988
+
chalk: 2.4.2
2989
+
cross-spawn: 6.0.6
2990
+
memorystream: 0.3.1
2991
+
minimatch: 3.1.2
2992
+
pidtree: 0.3.1
2993
+
read-pkg: 3.0.0
2994
+
shell-quote: 1.8.3
2995
+
string.prototype.padend: 3.1.6
2996
+
2167
2997
nypm@0.6.2:
2168
2998
dependencies:
2169
2999
citty: 0.1.6
···
2172
3002
pkg-types: 2.3.0
2173
3003
tinyexec: 1.0.2
2174
3004
3005
+
object-inspect@1.13.4: {}
3006
+
3007
+
object-keys@1.1.1: {}
3008
+
3009
+
object.assign@4.1.7:
3010
+
dependencies:
3011
+
call-bind: 1.0.8
3012
+
call-bound: 1.0.4
3013
+
define-properties: 1.2.1
3014
+
es-object-atoms: 1.1.1
3015
+
has-symbols: 1.1.0
3016
+
object-keys: 1.1.1
3017
+
2175
3018
ofetch@1.5.1:
2176
3019
dependencies:
2177
3020
destr: 2.0.5
···
2185
3028
once@1.4.0:
2186
3029
dependencies:
2187
3030
wrappy: 1.0.2
3031
+
3032
+
own-keys@1.0.1:
3033
+
dependencies:
3034
+
get-intrinsic: 1.3.0
3035
+
object-keys: 1.1.1
3036
+
safe-push-apply: 1.0.0
2188
3037
2189
3038
oxfmt@0.20.0:
2190
3039
dependencies:
···
2214
3063
dependencies:
2215
3064
callsites: 3.1.0
2216
3065
3066
+
parse-json@4.0.0:
3067
+
dependencies:
3068
+
error-ex: 1.3.4
3069
+
json-parse-better-errors: 1.0.2
3070
+
2217
3071
parse-json@5.2.0:
2218
3072
dependencies:
2219
3073
'@babel/code-frame': 7.27.1
···
2223
3077
2224
3078
path-is-absolute@1.0.1: {}
2225
3079
3080
+
path-key@2.0.1: {}
3081
+
2226
3082
path-parse@1.0.7: {}
2227
3083
3084
+
path-type@3.0.0:
3085
+
dependencies:
3086
+
pify: 3.0.0
3087
+
2228
3088
pathe@2.0.3: {}
2229
3089
2230
3090
perfect-debounce@2.0.0: {}
···
2268
3128
2269
3129
picomatch@2.3.1: {}
2270
3130
3131
+
pidtree@0.3.1: {}
3132
+
3133
+
pify@3.0.0: {}
3134
+
2271
3135
pino-abstract-transport@1.2.0:
2272
3136
dependencies:
2273
3137
readable-stream: 4.7.0
···
2344
3208
2345
3209
pluralize@8.0.0: {}
2346
3210
3211
+
possible-typed-array-names@1.1.0: {}
3212
+
2347
3213
postgres-array@2.0.0: {}
2348
3214
2349
3215
postgres-bytea@1.0.1: {}
···
2372
3238
defu: 6.1.4
2373
3239
destr: 2.0.5
2374
3240
3241
+
read-pkg@3.0.0:
3242
+
dependencies:
3243
+
load-json-file: 4.0.0
3244
+
normalize-package-data: 2.5.0
3245
+
path-type: 3.0.0
3246
+
2375
3247
readable-stream@4.7.0:
2376
3248
dependencies:
2377
3249
abort-controller: 3.0.0
···
2388
3260
dependencies:
2389
3261
resolve: 1.22.11
2390
3262
3263
+
reflect.getprototypeof@1.0.10:
3264
+
dependencies:
3265
+
call-bind: 1.0.8
3266
+
define-properties: 1.2.1
3267
+
es-abstract: 1.24.1
3268
+
es-errors: 1.3.0
3269
+
es-object-atoms: 1.1.1
3270
+
get-intrinsic: 1.3.0
3271
+
get-proto: 1.0.1
3272
+
which-builtin-type: 1.2.1
3273
+
3274
+
regexp.prototype.flags@1.5.4:
3275
+
dependencies:
3276
+
call-bind: 1.0.8
3277
+
define-properties: 1.2.1
3278
+
es-errors: 1.3.0
3279
+
get-proto: 1.0.1
3280
+
gopd: 1.2.0
3281
+
set-function-name: 2.0.2
3282
+
2391
3283
resolve-from@4.0.0: {}
2392
3284
2393
3285
resolve-pkg-maps@1.0.0: {}
···
2398
3290
path-parse: 1.0.7
2399
3291
supports-preserve-symlinks-flag: 1.0.0
2400
3292
3293
+
safe-array-concat@1.1.3:
3294
+
dependencies:
3295
+
call-bind: 1.0.8
3296
+
call-bound: 1.0.4
3297
+
get-intrinsic: 1.3.0
3298
+
has-symbols: 1.1.0
3299
+
isarray: 2.0.5
3300
+
2401
3301
safe-buffer@5.2.1: {}
2402
3302
3303
+
safe-push-apply@1.0.0:
3304
+
dependencies:
3305
+
es-errors: 1.3.0
3306
+
isarray: 2.0.5
3307
+
3308
+
safe-regex-test@1.1.0:
3309
+
dependencies:
3310
+
call-bound: 1.0.4
3311
+
es-errors: 1.3.0
3312
+
is-regex: 1.2.1
3313
+
2403
3314
safe-stable-stringify@2.5.0: {}
2404
3315
2405
3316
secure-json-parse@4.1.0: {}
2406
3317
3318
+
semver@5.7.2: {}
3319
+
3320
+
set-function-length@1.2.2:
3321
+
dependencies:
3322
+
define-data-property: 1.1.4
3323
+
es-errors: 1.3.0
3324
+
function-bind: 1.1.2
3325
+
get-intrinsic: 1.3.0
3326
+
gopd: 1.2.0
3327
+
has-property-descriptors: 1.0.2
3328
+
3329
+
set-function-name@2.0.2:
3330
+
dependencies:
3331
+
define-data-property: 1.1.4
3332
+
es-errors: 1.3.0
3333
+
functions-have-names: 1.2.3
3334
+
has-property-descriptors: 1.0.2
3335
+
3336
+
set-proto@1.0.0:
3337
+
dependencies:
3338
+
dunder-proto: 1.0.1
3339
+
es-errors: 1.3.0
3340
+
es-object-atoms: 1.1.1
3341
+
3342
+
shebang-command@1.2.0:
3343
+
dependencies:
3344
+
shebang-regex: 1.0.0
3345
+
3346
+
shebang-regex@1.0.0: {}
3347
+
3348
+
shell-quote@1.8.3: {}
3349
+
2407
3350
shelljs.exec@1.1.8: {}
2408
3351
2409
3352
shelljs@0.8.5:
···
2412
3355
interpret: 1.4.0
2413
3356
rechoir: 0.6.2
2414
3357
3358
+
side-channel-list@1.0.0:
3359
+
dependencies:
3360
+
es-errors: 1.3.0
3361
+
object-inspect: 1.13.4
3362
+
3363
+
side-channel-map@1.0.1:
3364
+
dependencies:
3365
+
call-bound: 1.0.4
3366
+
es-errors: 1.3.0
3367
+
get-intrinsic: 1.3.0
3368
+
object-inspect: 1.13.4
3369
+
3370
+
side-channel-weakmap@1.0.2:
3371
+
dependencies:
3372
+
call-bound: 1.0.4
3373
+
es-errors: 1.3.0
3374
+
get-intrinsic: 1.3.0
3375
+
object-inspect: 1.13.4
3376
+
side-channel-map: 1.0.1
3377
+
3378
+
side-channel@1.1.0:
3379
+
dependencies:
3380
+
es-errors: 1.3.0
3381
+
object-inspect: 1.13.4
3382
+
side-channel-list: 1.0.0
3383
+
side-channel-map: 1.0.1
3384
+
side-channel-weakmap: 1.0.2
3385
+
2415
3386
sonic-boom@3.8.1:
2416
3387
dependencies:
2417
3388
atomic-sleep: 1.0.0
···
2420
3391
dependencies:
2421
3392
atomic-sleep: 1.0.0
2422
3393
3394
+
spdx-correct@3.2.0:
3395
+
dependencies:
3396
+
spdx-expression-parse: 3.0.1
3397
+
spdx-license-ids: 3.0.22
3398
+
3399
+
spdx-exceptions@2.5.0: {}
3400
+
3401
+
spdx-expression-parse@3.0.1:
3402
+
dependencies:
3403
+
spdx-exceptions: 2.5.0
3404
+
spdx-license-ids: 3.0.22
3405
+
3406
+
spdx-license-ids@3.0.22: {}
3407
+
2423
3408
split2@4.2.0: {}
2424
3409
2425
3410
std-env@3.10.0: {}
2426
3411
3412
+
stop-iteration-iterator@1.1.0:
3413
+
dependencies:
3414
+
es-errors: 1.3.0
3415
+
internal-slot: 1.1.0
3416
+
3417
+
string.prototype.padend@3.1.6:
3418
+
dependencies:
3419
+
call-bind: 1.0.8
3420
+
define-properties: 1.2.1
3421
+
es-abstract: 1.24.1
3422
+
es-object-atoms: 1.1.1
3423
+
3424
+
string.prototype.trim@1.2.10:
3425
+
dependencies:
3426
+
call-bind: 1.0.8
3427
+
call-bound: 1.0.4
3428
+
define-data-property: 1.1.4
3429
+
define-properties: 1.2.1
3430
+
es-abstract: 1.24.1
3431
+
es-object-atoms: 1.1.1
3432
+
has-property-descriptors: 1.0.2
3433
+
3434
+
string.prototype.trimend@1.0.9:
3435
+
dependencies:
3436
+
call-bind: 1.0.8
3437
+
call-bound: 1.0.4
3438
+
define-properties: 1.2.1
3439
+
es-object-atoms: 1.1.1
3440
+
3441
+
string.prototype.trimstart@1.0.8:
3442
+
dependencies:
3443
+
call-bind: 1.0.8
3444
+
define-properties: 1.2.1
3445
+
es-object-atoms: 1.1.1
3446
+
2427
3447
string_decoder@1.3.0:
2428
3448
dependencies:
2429
3449
safe-buffer: 5.2.1
3450
+
3451
+
strip-bom@3.0.0: {}
2430
3452
2431
3453
strip-json-comments@5.0.3: {}
2432
3454
···
2473
3495
optionalDependencies:
2474
3496
fsevents: 2.3.3
2475
3497
3498
+
typed-array-buffer@1.0.3:
3499
+
dependencies:
3500
+
call-bound: 1.0.4
3501
+
es-errors: 1.3.0
3502
+
is-typed-array: 1.1.15
3503
+
3504
+
typed-array-byte-length@1.0.3:
3505
+
dependencies:
3506
+
call-bind: 1.0.8
3507
+
for-each: 0.3.5
3508
+
gopd: 1.2.0
3509
+
has-proto: 1.2.0
3510
+
is-typed-array: 1.1.15
3511
+
3512
+
typed-array-byte-offset@1.0.4:
3513
+
dependencies:
3514
+
available-typed-arrays: 1.0.7
3515
+
call-bind: 1.0.8
3516
+
for-each: 0.3.5
3517
+
gopd: 1.2.0
3518
+
has-proto: 1.2.0
3519
+
is-typed-array: 1.1.15
3520
+
reflect.getprototypeof: 1.0.10
3521
+
3522
+
typed-array-length@1.0.7:
3523
+
dependencies:
3524
+
call-bind: 1.0.8
3525
+
for-each: 0.3.5
3526
+
gopd: 1.2.0
3527
+
is-typed-array: 1.1.15
3528
+
possible-typed-array-names: 1.1.0
3529
+
reflect.getprototypeof: 1.0.10
3530
+
2476
3531
typescript@5.9.2: {}
2477
3532
2478
3533
typescript@5.9.3: {}
···
2483
3538
dependencies:
2484
3539
multiformats: 9.9.0
2485
3540
3541
+
unbox-primitive@1.1.0:
3542
+
dependencies:
3543
+
call-bound: 1.0.4
3544
+
has-bigints: 1.1.0
3545
+
has-symbols: 1.1.0
3546
+
which-boxed-primitive: 1.1.1
3547
+
2486
3548
undici-types@6.21.0: {}
2487
3549
2488
3550
undici-types@7.16.0: {}
···
2490
3552
undici@6.21.3: {}
2491
3553
2492
3554
unicode-segmenter@0.14.4: {}
3555
+
3556
+
validate-npm-package-license@3.0.4:
3557
+
dependencies:
3558
+
spdx-correct: 3.2.0
3559
+
spdx-expression-parse: 3.0.1
3560
+
3561
+
which-boxed-primitive@1.1.1:
3562
+
dependencies:
3563
+
is-bigint: 1.1.0
3564
+
is-boolean-object: 1.2.2
3565
+
is-number-object: 1.1.1
3566
+
is-string: 1.1.1
3567
+
is-symbol: 1.1.1
3568
+
3569
+
which-builtin-type@1.2.1:
3570
+
dependencies:
3571
+
call-bound: 1.0.4
3572
+
function.prototype.name: 1.1.8
3573
+
has-tostringtag: 1.0.2
3574
+
is-async-function: 2.1.1
3575
+
is-date-object: 1.1.0
3576
+
is-finalizationregistry: 1.1.1
3577
+
is-generator-function: 1.1.2
3578
+
is-regex: 1.2.1
3579
+
is-weakref: 1.1.1
3580
+
isarray: 2.0.5
3581
+
which-boxed-primitive: 1.1.1
3582
+
which-collection: 1.0.2
3583
+
which-typed-array: 1.1.19
3584
+
3585
+
which-collection@1.0.2:
3586
+
dependencies:
3587
+
is-map: 2.0.3
3588
+
is-set: 2.0.3
3589
+
is-weakmap: 2.0.2
3590
+
is-weakset: 2.0.4
3591
+
3592
+
which-typed-array@1.1.19:
3593
+
dependencies:
3594
+
available-typed-arrays: 1.0.7
3595
+
call-bind: 1.0.8
3596
+
call-bound: 1.0.4
3597
+
for-each: 0.3.5
3598
+
get-proto: 1.0.1
3599
+
gopd: 1.2.0
3600
+
has-tostringtag: 1.0.2
3601
+
3602
+
which@1.3.1:
3603
+
dependencies:
3604
+
isexe: 2.0.0
2493
3605
2494
3606
wrappy@1.0.2: {}
2495
3607