diff --git a/.changeset/atproto-upstream-upgrade.md b/.changeset/atproto-upstream-upgrade.md new file mode 100644 index 00000000..ea5a5ea9 --- /dev/null +++ b/.changeset/atproto-upstream-upgrade.md @@ -0,0 +1,15 @@ +--- +'ePDS': minor +--- + +Signing in and managing your account now run on the latest AT Protocol server, which requires operators to upgrade to Node.js 22.19 or newer. + +**Affects:** End users, Operators + +**End users:** the account and sign-in screens now come from a newer version of the underlying AT Protocol software, which adds changing your handle and deactivating or deleting your account through the account-management interface. The passwordless email-code sign-in and email verification you already use through ePDS are unchanged. + +**Operators:** + +- ePDS now requires **Node.js 22.19.0 or newer** (previously 20). Deployments pinned to Node 20 must upgrade; the Docker images already use `node:22-alpine`. `engines.node` is now `>=22.19.0` (the floor is set by a transitive `undici@8` runtime dependency, which fails on Node 22.0–22.18). +- The bundled AT Protocol packages moved to their latest releases: `@atproto/pds` 0.5.23, `@atproto/oauth-provider` 0.21.1, `@atproto/oauth-provider-ui` 0.8.9. +- No configuration changes are required, but the native `better-sqlite3` module must be built for the Node 22 ABI — a clean `pnpm install` on Node 22 handles this; an in-place Node version switch needs `pnpm rebuild better-sqlite3`. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8eb2dd2..97827a8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm format:check @@ -31,7 +31,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm lint @@ -43,7 +43,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm typecheck @@ -55,7 +55,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm build diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index eca24cf9..db82518d 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -115,7 +115,7 @@ jobs: - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: - node-version: 20 + node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b538a76..e9197079 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,7 +60,7 @@ jobs: - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0 - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: - node-version: 20 + node-version: 22 cache: 'pnpm' - run: pnpm install --frozen-lockfile diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..e2228113 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.19.0 diff --git a/Dockerfile.auth b/Dockerfile.auth index cb058177..27b07f9f 100644 --- a/Dockerfile.auth +++ b/Dockerfile.auth @@ -4,7 +4,7 @@ # so each service has its own Dockerfile. # -- Base -- -FROM node:20-alpine AS base +FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.9 --activate RUN addgroup -g 1001 appuser && adduser -u 1001 -G appuser -D appuser WORKDIR /app @@ -24,7 +24,7 @@ COPY tsconfig.json ./ RUN pnpm --filter @certified-app/auth-service... build # -- Auth Service -- -FROM node:20-alpine +FROM node:22-alpine RUN addgroup -g 1001 appuser && adduser -u 1001 -G appuser -D appuser RUN apk add --no-cache wget su-exec WORKDIR /app diff --git a/Dockerfile.demo b/Dockerfile.demo index 4dbde82e..9cc44d32 100644 --- a/Dockerfile.demo +++ b/Dockerfile.demo @@ -3,7 +3,7 @@ # with output: "standalone" and then runs the self-contained server. # -- Base -- -FROM node:20-alpine AS base +FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.9 --activate WORKDIR /app @@ -35,7 +35,7 @@ RUN /tmp/resolve-version.sh && \ pnpm --filter @certified-app/demo build # -- Production -- -FROM node:20-alpine +FROM node:22-alpine RUN addgroup -g 1001 appuser && adduser -u 1001 -G appuser -D appuser WORKDIR /app diff --git a/Dockerfile.pds b/Dockerfile.pds index 9dd798e9..7cecbab4 100644 --- a/Dockerfile.pds +++ b/Dockerfile.pds @@ -4,7 +4,7 @@ # so each service has its own Dockerfile. # -- Base -- -FROM node:20-alpine AS base +FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.9 --activate RUN addgroup -g 1001 appuser && adduser -u 1001 -G appuser -D appuser WORKDIR /app @@ -24,7 +24,7 @@ COPY tsconfig.json ./ RUN pnpm --filter @certified-app/pds-core... build # -- PDS Core -- -FROM node:20-alpine +FROM node:22-alpine RUN addgroup -g 1001 appuser && adduser -u 1001 -G appuser -D appuser RUN apk add --no-cache wget su-exec WORKDIR /app diff --git a/package.json b/package.json index 5d117057..6a1a3fec 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "description": "ePDS — extended Personal Data Server for AT Protocol with passwordless OTP authentication", "license": "MIT", "engines": { - "node": ">=20.0.0" + "node": ">=22.19.0" }, "packageManager": "pnpm@9.15.9", "//workspaces": "This field is only read by @manypkg/get-packages (used by Changesets) to put us into single-package mode. pnpm ignores it because pnpm-workspace.yaml takes precedence for actual workspace resolution. Do not remove without reading docs/PUBLISHING.md.", diff --git a/packages/pds-core/package.json b/packages/pds-core/package.json index 7dccdbfd..4fd06ad0 100644 --- a/packages/pds-core/package.json +++ b/packages/pds-core/package.json @@ -1,8 +1,12 @@ { "name": "@certified-app/pds-core", "private": true, + "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", + "engines": { + "node": ">=22.19.0" + }, "scripts": { "build": "tsc --build", "dev": "tsx watch src/index.ts", @@ -10,9 +14,10 @@ }, "dependencies": { "@atproto/crypto": "^0.4.5", - "@atproto/oauth-provider": "^0.15.9", - "@atproto/oauth-provider-ui": "^0.4.3", - "@atproto/pds": "^0.4.209", + "@atproto/oauth-provider": "^0.21.1", + "@atproto/oauth-provider-ui": "^0.8.9", + "@atproto/pds": "^0.5.23", + "@atproto/syntax": "^0.7.2", "@certified-app/shared": "workspace:*", "@did-plc/lib": "^0.0.4", "dotenv": "^16.3.1", @@ -21,7 +26,7 @@ }, "devDependencies": { "@types/express": "^4.17.21", - "@types/node": "^20.11.0", + "@types/node": "^22.0.0", "@types/serialize-javascript": "^5.0.4", "tsx": "^4.7.0", "typescript": "^5.3.3" diff --git a/packages/pds-core/src/__tests__/auth-ui-guard.test.ts b/packages/pds-core/src/__tests__/auth-ui-guard.test.ts index df213699..a5af01af 100644 --- a/packages/pds-core/src/__tests__/auth-ui-guard.test.ts +++ b/packages/pds-core/src/__tests__/auth-ui-guard.test.ts @@ -778,11 +778,11 @@ describe('createAuthUiGuard', () => { // --------------------------------------------------------------------------- // Helper: build a binding fixture good enough for the guard's matchesHint - // logic. Only `account.sub` and `account.preferred_username` are read. - function binding(sub: string, pu: string) { + // logic. Only `account.did` and `account.handle` are read. + function binding(did: string, handle: string) { return { - account: { sub, preferred_username: pu }, - } as unknown as { account: { sub: string; preferred_username: string } } + account: { did, handle }, + } as unknown as { account: { did: string; handle: string } } } // urn-prefixed request_uri so loadStoredPar actually attempts the read @@ -878,7 +878,7 @@ describe('createAuthUiGuard', () => { // one stale and one fresh. The checkLoginRequired predicate marks // only `did:plc:stale` as loginRequired. const onlyStaleIsLoginRequired = (b: unknown): boolean => - (b as { account: { sub: string } }).account.sub === 'did:plc:stale' + (b as { account: { did: string } }).account.did === 'did:plc:stale' const TWO_BINDINGS = [ binding('did:plc:stale', 'stale.example'), binding('did:plc:fresh', 'fresh.example'), diff --git a/packages/pds-core/src/__tests__/chooser-enrichment.test.ts b/packages/pds-core/src/__tests__/chooser-enrichment.test.ts index 53ae36bf..3539f393 100644 --- a/packages/pds-core/src/__tests__/chooser-enrichment.test.ts +++ b/packages/pds-core/src/__tests__/chooser-enrichment.test.ts @@ -507,9 +507,13 @@ describe('buildChooserEnrichmentScript sign-up hide + another-account rebind', ( // Capture-phase is essential — React's delegated root-level click // listener fires in bubble phase, so a bubble listener on the button // would run AFTER React swaps to upstream's stock sign-in component. - expect(script).toContain( - '\'[role="button"][aria-label="Login to account that is not listed"]\'', - ) + // oauth-provider-ui 0.8 changed the copy, so the script matches both + // the current and previous aria-label / visible-text variants. + expect(script).toContain('Sign in to an account that is not listed') + expect(script).toContain('Login to account that is not listed') + expect(script).toContain('Select another account') + expect(script).toContain('Another account') + expect(script).toContain('[role="button"][aria-label="') expect(script).toContain('e.preventDefault()') expect(script).toContain('e.stopImmediatePropagation()') expect(script).toContain('window.location.href') diff --git a/packages/pds-core/src/__tests__/identifier-guards.test.ts b/packages/pds-core/src/__tests__/identifier-guards.test.ts new file mode 100644 index 00000000..3fd8487d --- /dev/null +++ b/packages/pds-core/src/__tests__/identifier-guards.test.ts @@ -0,0 +1,83 @@ +import { describe, expect, it } from 'vitest' +import { + canLookUpAccountByHandle, + canCheckHandle, + canResolveHandle, + isValidConstructedHandle, +} from '../lib/identifier-guards.js' + +describe('canLookUpAccountByHandle', () => { + it('accepts a valid handle', () => { + expect(canLookUpAccountByHandle('alice.example.com')).toBe(true) + }) + + it('accepts a valid DID', () => { + expect(canLookUpAccountByHandle('did:plc:7iza6de2dwap2sbkpav7c6c6')).toBe( + true, + ) + }) + + it('rejects a syntactically invalid identifier', () => { + expect(canLookUpAccountByHandle('not a handle')).toBe(false) + }) + + it('rejects an empty string', () => { + expect(canLookUpAccountByHandle('')).toBe(false) + }) + + it('rejects a bare word with no dot and no did: prefix', () => { + expect(canLookUpAccountByHandle('alice')).toBe(false) + }) +}) + +describe('canCheckHandle', () => { + it('accepts a valid handle', () => { + expect(canCheckHandle('alice.example.com')).toBe(true) + }) + + it('rejects a DID (this endpoint only accepts handles)', () => { + // A DID is not a HandleString, so availability-check treats it as invalid + // — which the endpoint reports as "taken", never "free". + expect(canCheckHandle('did:plc:7iza6de2dwap2sbkpav7c6c6')).toBe(false) + }) + + it('rejects a syntactically invalid handle', () => { + expect(canCheckHandle('has spaces.example.com')).toBe(false) + }) + + it('rejects a handle with no dot', () => { + expect(canCheckHandle('alice')).toBe(false) + }) +}) + +describe('canResolveHandle', () => { + it('accepts a valid hosted handle', () => { + expect(canResolveHandle('alice.hosted.example')).toBe(true) + }) + + it('rejects a syntactically invalid handle', () => { + expect(canResolveHandle('bad handle')).toBe(false) + }) + + it('rejects an empty domain', () => { + expect(canResolveHandle('')).toBe(false) + }) +}) + +describe('isValidConstructedHandle', () => { + it('accepts a well-formed `${local}.${domain}` handle', () => { + expect(isValidConstructedHandle('alice.example.com')).toBe(true) + }) + + it('accepts a generated random-style handle', () => { + expect(isValidConstructedHandle('brave-otter-42.example.com')).toBe(true) + }) + + it('rejects a handle with no domain suffix (construction bug)', () => { + expect(isValidConstructedHandle('alice')).toBe(false) + }) + + it('rejects a handle containing whitespace', () => { + expect(isValidConstructedHandle('alice bob.example.com')).toBe(false) + }) +}) diff --git a/packages/pds-core/src/__tests__/preview-test-helpers.ts b/packages/pds-core/src/__tests__/preview-test-helpers.ts index 66e3e244..15207960 100644 --- a/packages/pds-core/src/__tests__/preview-test-helpers.ts +++ b/packages/pds-core/src/__tests__/preview-test-helpers.ts @@ -5,9 +5,16 @@ * about new-code duplication and gives the suites a single place to * grow the mock when the handler signature changes. */ -import { vi } from 'vitest' +import { vi, type Mock } from 'vitest' -export function mockLogger() { +// Explicit return type: under NodeNext module resolution the inferred type +// referenced @vitest/spy by a non-portable path (TS2742). Naming the Mock +// fields keeps the emitted .d.ts self-contained. +export function mockLogger(): { + info: Mock + warn: Mock + debug: Mock +} { return { info: vi.fn(), warn: vi.fn(), debug: vi.fn() } } diff --git a/packages/pds-core/src/auth-ui-guard.ts b/packages/pds-core/src/auth-ui-guard.ts index a053b24b..cc89ebe6 100644 --- a/packages/pds-core/src/auth-ui-guard.ts +++ b/packages/pds-core/src/auth-ui-guard.ts @@ -33,13 +33,14 @@ * See docs/design/session-reuse-bugs.md for the full failure-mode taxonomy. */ import type { NextFunction, Request, Response } from 'express' -import type { DeviceAccount, OAuthProvider } from '@atproto/oauth-provider' +import type { DeviceAccount } from '@atproto/oauth-provider/store' +import type { OAuthProvider } from '@atproto/oauth-provider/provider' import { DEVICE_ID_BYTES_LENGTH, DEVICE_ID_PREFIX, SESSION_ID_BYTES_LENGTH, SESSION_ID_PREFIX, -} from '@atproto/oauth-provider' +} from '@atproto/oauth-provider/constants' import type { Logger } from 'pino' import { parsePromptTokens as parsePromptTokensShared, @@ -380,8 +381,9 @@ function filterCandidateBindings( ): Binding[] { if (!loginHint) return bindings const matched = bindings.filter( - ({ account }) => - account.sub === loginHint || account.preferred_username === loginHint, + // Account is now strongly typed (oauth-provider-api 0.7): sub -> did, + // preferred_username -> handle (handle is optional). + ({ account }) => account.did === loginHint || account.handle === loginHint, ) return matched.length === 1 ? matched : bindings } diff --git a/packages/pds-core/src/chooser-enrichment.ts b/packages/pds-core/src/chooser-enrichment.ts index 871a72f6..d3396734 100644 --- a/packages/pds-core/src/chooser-enrichment.ts +++ b/packages/pds-core/src/chooser-enrichment.ts @@ -238,6 +238,11 @@ export function buildChooserEnrichmentScript(): string { // its compiled bundle. Match by exact text content; the button lives // inside #root alongside the chooser list. Idempotent via // dataset.epdsHidden so the MutationObserver doesn't thrash. + // + // NOTE: oauth-provider-ui 0.8 dropped the "Sign up" button from the + // account-selector page (no "Sign up"/"Create account" string in the + // account-page bundle), so this is currently a no-op. Kept as a cheap + // guard in case a signup affordance returns to the chooser upstream. function hideSignup() { var root = document.getElementById('root'); if (!root) return; @@ -269,19 +274,29 @@ export function buildChooserEnrichmentScript(): string { if (!root) return; // Upstream @atproto/oauth-provider-ui renders this as a // div-with-role, NOT a native button: - //
- // Another account + //
+ // Select another account //
- // The aria-label is more stable across upstream copy changes than - // the visible text, so match on that with a text-content fallback - // scoped to anything with role=button (div OR button). - var btn = root.querySelector( - '[role="button"][aria-label="Login to account that is not listed"]', - ); + // The aria-label copy changed in oauth-provider-ui 0.8 ("Login to + // account…" -> "Sign in to an account…", visible text "Another + // account" -> "Select another account"). Match either aria-label, + // then fall back to either visible-text variant scoped to role=button + // (div OR button) so a future copy tweak degrades rather than breaks. + var ARIA_LABELS = [ + 'Sign in to an account that is not listed', + 'Login to account that is not listed', + ]; + var TEXTS = ['Select another account', 'Another account']; + var btn = null; + for (var a = 0; a < ARIA_LABELS.length && !btn; a++) { + btn = root.querySelector( + '[role="button"][aria-label="' + ARIA_LABELS[a] + '"]', + ); + } if (!btn) { var candidates = root.querySelectorAll('[role="button"]'); for (var i = 0; i < candidates.length; i++) { - if ((candidates[i].textContent || '').trim() === 'Another account') { + if (TEXTS.indexOf((candidates[i].textContent || '').trim()) >= 0) { btn = candidates[i]; break; } diff --git a/packages/pds-core/src/index.ts b/packages/pds-core/src/index.ts index 48ea356a..16e8a807 100644 --- a/packages/pds-core/src/index.ts +++ b/packages/pds-core/src/index.ts @@ -25,13 +25,19 @@ applyPdsPortFallback() import type * as http from 'node:http' import { randomBytes } from 'node:crypto' import * as path from 'node:path' -import { PDS, envToCfg, envToSecrets, readEnv } from '@atproto/pds' +import { fileURLToPath } from 'node:url' import { readFileSync } from 'node:fs' -/* v8 ignore next 3 -- module-level init, only testable via e2e */ -const atprotoPdsPkg: { version: string } = JSON.parse( - readFileSync(require.resolve('@atproto/pds/package.json'), 'utf8'), -) -import { HandleUnavailableError } from '@atproto/oauth-provider' +import { createRequire } from 'node:module' +import { PDS, envToCfg, envToSecrets, readEnv } from '@atproto/pds' +import { HandleUnavailableError } from '@atproto/oauth-provider/errors' +import type { Account } from '@atproto/oauth-provider/store' +import type { DidString } from '@atproto/syntax' +import { + canLookUpAccountByHandle, + canCheckHandle, + canResolveHandle, + isValidConstructedHandle, +} from './lib/identifier-guards.js' import { generateRandomHandle, createLogger, @@ -68,6 +74,14 @@ import { loadDeviceAccountEmails } from './lib/device-accounts.js' import { handleCallbackError } from './lib/epds-callback-error.js' import { installTestHooks } from './lib/test-hooks.js' +/* v8 ignore next 4 -- module-level init, only testable via e2e */ +const atprotoPdsPkg: { version: string } = JSON.parse( + readFileSync( + createRequire(import.meta.url).resolve('@atproto/pds/package.json'), + 'utf8', + ), +) + const logger = createLogger('pds-core') /** @@ -322,16 +336,29 @@ async function main() { // the HMAC-signed callback; by the time we reach here, email is the verified primary. const existingAccount = await pds.ctx.accountManager.getAccountByEmail(email) - let did: string | undefined = existingAccount?.did + // existingAccount.did is already branded DidString (ActorAccount). + let did: DidString | undefined = existingAccount?.did - // eslint-disable-next-line @typescript-eslint/no-explicit-any -- @atproto/oauth-provider Account type not exported - let account: any + let account: Account | undefined if (did) { // Existing account const accountData = await provider.accountManager.getAccount(did) account = accountData.account } else if (chosenHandle) { + // chosenHandle is `${localPart}.${handleDomain}`, already validated via + // validateLocalPart above. Brand it as HandleString for the strongly + // typed account APIs; a failure here means the constructed handle is + // malformed (a bug), so fail loudly rather than proceed. + if (!isValidConstructedHandle(chosenHandle)) { + logger.error( + { handle: chosenHandle }, + 'constructed handle failed validation', + ) + res.status(500).send('Invalid handle') + return + } + // User chose a handle — pre-check existence before attempting createAccount. // This avoids treating non-collision errors (datastore failures, invite-code // misconfiguration, etc.) as handle collisions. @@ -370,7 +397,7 @@ async function main() { inviteCode: process.env.EPDS_INVITE_CODE, }, ) - did = account.sub + did = account.did logger.info( { did, email, handle: chosenHandle }, 'Created account with chosen handle', @@ -410,6 +437,13 @@ async function main() { for (let attempt = 0; attempt < 3; attempt++) { try { const randomHandle = generateRandomHandle(handleDomain) + // generateRandomHandle always yields `${local}.${domain}`; brand it + // for the strongly typed createAccount input. + if (!isValidConstructedHandle(randomHandle)) { + throw new Error( + `generated handle failed validation: ${randomHandle}`, + ) + } account = await provider.accountManager.createAccount( deviceId, deviceMetadata, @@ -427,7 +461,7 @@ async function main() { inviteCode: process.env.EPDS_INVITE_CODE, }, ) - did = account.sub + did = account.did logger.info({ did, email, handle: randomHandle }, 'Created account') break } catch (createErr: unknown) { @@ -441,7 +475,13 @@ async function main() { } // Step 4: Bind account to device session (for future SSO). - await provider.accountManager.upsertDeviceAccount(deviceId, account.sub) + if (!account) { + // Unreachable: every branch above either assigns account or returns/throws. + logger.error({ email }, 'account unexpectedly unset after resolution') + res.status(500).send('Account resolution failed') + return + } + await provider.accountManager.upsertDeviceAccount(deviceId, account.did) // Step 5: Determine whether to skip consent on sign-up. // Consent is skipped only when ALL of these hold: @@ -905,7 +945,9 @@ async function main() { // pds-core-rendered error page and the /preview/consent shell can // reference the Certified favicon without a cross-origin request to // the auth-service host. - const publicDir = path.resolve(__dirname, '..', 'public') + // ESM has no __dirname; derive this module's directory from import.meta.url. + const moduleDir = path.dirname(fileURLToPath(import.meta.url)) + const publicDir = path.resolve(moduleDir, '..', 'public') pds.app.get('/favicon.ico', (_req, res) => { res.sendFile(path.join(publicDir, 'favicon.svg')) }) @@ -998,6 +1040,11 @@ async function main() { res.status(400).json({ error: 'Missing handle' }) return } + if (!canLookUpAccountByHandle(handle)) { + // A syntactically invalid identifier cannot match any account. + res.json({ email: null }) + return + } try { const account = await pds.ctx.accountManager.getAccount(handle) res.json({ email: account?.email ?? null }) @@ -1020,6 +1067,13 @@ async function main() { res.status(400).json({ error: 'missing handle param' }) return } + if (!canCheckHandle(handle)) { + // A syntactically invalid handle can never be registered, so report it as + // unavailable rather than "free" (which would let signup proceed and then + // fail at account creation). + res.json({ exists: true }) + return + } try { const account = await pds.ctx.accountManager.getAccount(handle) res.json({ exists: !!account }) @@ -1186,6 +1240,12 @@ async function checkHandleRoute( message: 'handles are not provided on this domain', }) } + if (!canResolveHandle(domain)) { + return res.status(404).json({ + error: 'NotFound', + message: 'handle not found for this domain', + }) + } const account = await pds.ctx.accountManager.getAccount(domain) if (!account) { return res.status(404).json({ diff --git a/packages/pds-core/src/lib/device-accounts.ts b/packages/pds-core/src/lib/device-accounts.ts index e3a4d553..8442b90f 100644 --- a/packages/pds-core/src/lib/device-accounts.ts +++ b/packages/pds-core/src/lib/device-accounts.ts @@ -11,17 +11,14 @@ * return null — never partial data — so callers don't accidentally trust * a stale half-state. */ -import type { - DeviceAccount, - DeviceId, - OAuthProvider, -} from '@atproto/oauth-provider' +import type { DeviceAccount, DeviceId } from '@atproto/oauth-provider/store' +import type { OAuthProvider } from '@atproto/oauth-provider/provider' import { DEVICE_ID_BYTES_LENGTH, DEVICE_ID_PREFIX, SESSION_ID_BYTES_LENGTH, SESSION_ID_PREFIX, -} from '@atproto/oauth-provider' +} from '@atproto/oauth-provider/constants' import type { Logger } from 'pino' const DEVICE_ID_RE = new RegExp( diff --git a/packages/pds-core/src/lib/identifier-guards.ts b/packages/pds-core/src/lib/identifier-guards.ts new file mode 100644 index 00000000..570ed008 --- /dev/null +++ b/packages/pds-core/src/lib/identifier-guards.ts @@ -0,0 +1,64 @@ +/** + * Branded-identifier guards for the `/_internal` handle-lookup endpoints. + * + * Upstream's account APIs now require branded `HandleString` / + * `AtIdentifierString` values (oauth-provider-api 0.7 / @atproto/syntax), so + * each endpoint validates its input before calling accountManager. The guard + * decision differs by endpoint, and one case is non-obvious (an invalid handle + * on the availability check must read as *taken*, not *free*). Extracting the + * decisions here — following the `upstream-favicon.ts` pattern — keeps them + * unit-testable without standing up the PDS. + * + * These are type predicates: a `true` result narrows the argument to the + * branded type the accountManager call requires, so callers get both the + * documented decision and the compile-time narrowing. + */ +import { + isValidHandle, + isValidAtIdentifier, + type HandleString, + type AtIdentifierString, +} from '@atproto/syntax' + +/** + * `/_internal/account-by-handle` accepts a handle OR a DID. An invalid + * identifier cannot match any account, so a `false` result short-circuits the + * endpoint to `{ email: null }` (its not-found response). + */ +export function canLookUpAccountByHandle( + identifier: string, +): identifier is AtIdentifierString { + return isValidAtIdentifier(identifier) +} + +/** + * `/_internal/check-handle` (signup availability) accepts only a handle. A + * `false` result means the handle can never be registered, so the endpoint + * reports it as *unavailable* (`{ exists: true }`) rather than free — + * otherwise signup proceeds and then fails at account creation. + */ +export function canCheckHandle(handle: string): handle is HandleString { + return isValidHandle(handle) +} + +/** + * Hosted-domain handle resolution accepts only a handle. A `false` result + * resolves to 404, the same as an absent account. + */ +export function canResolveHandle(handle: string): handle is HandleString { + return isValidHandle(handle) +} + +/** + * A handle constructed for account creation — either `${localPart}.${domain}` + * from the user's chosen local part (already validated by `validateLocalPart`) + * or one produced by `generateRandomHandle`. Both should always be valid; a + * `false` result means the construction is buggy, and the caller fails loudly + * (500 for the chosen handle, throw+retry for the random one) rather than + * passing an unbranded string to `createAccount`. + */ +export function isValidConstructedHandle( + handle: string, +): handle is HandleString { + return isValidHandle(handle) +} diff --git a/packages/pds-core/src/lib/preview-shared.ts b/packages/pds-core/src/lib/preview-shared.ts index aba8a66f..ee66d63b 100644 --- a/packages/pds-core/src/lib/preview-shared.ts +++ b/packages/pds-core/src/lib/preview-shared.ts @@ -16,11 +16,11 @@ import { readFile } from 'node:fs/promises' import { createRequire } from 'node:module' import serialize from 'serialize-javascript' -// pds-core compiles to CommonJS, so createRequire(__filename) gives us a -// require that can resolve the sibling package without tripping the -// no-require-imports lint rule (we never call the local `require` — only -// require.resolve, which is a function lookup not a syntactic require). -const nodeRequire = createRequire(__filename) +// pds-core is pure ESM, so we build a require via import.meta.url to resolve +// the sibling package without tripping the no-require-imports lint rule (we +// never call the local `require` — only require.resolve, which is a function +// lookup not a syntactic require). +const nodeRequire = createRequire(import.meta.url) // Use structural request/response types rather than importing from // express — pds-core doesn't depend on express's types directly and @@ -58,9 +58,9 @@ export async function loadAssetRefs(): Promise<{ }> { if (cachedAssets) return cachedAssets // Read the manifest as a plain file rather than via `import(..., { with: - // { type: 'json' } })`. Import-attributes are only stable in Node 22+ - // and the repo allows Node >=20.0.0; require.resolve + fs.readFile - // works on every Node 20.x without attributes. + // { type: 'json' } })`. require.resolve + fs.readFile keeps the manifest + // load lazy (import-attributes would hoist it to parse time) and avoids + // depending on attribute-syntax stability across bundlers. const manifestPath = nodeRequire.resolve( '@atproto/oauth-provider-ui/bundle-manifest.json', ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0d50948..a56903ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -144,14 +144,17 @@ importers: specifier: ^0.4.5 version: 0.4.5 '@atproto/oauth-provider': - specifier: ^0.15.9 - version: 0.15.10 + specifier: ^0.21.1 + version: 0.21.1 '@atproto/oauth-provider-ui': - specifier: ^0.4.3 - version: 0.4.3 + specifier: ^0.8.9 + version: 0.8.9 '@atproto/pds': - specifier: ^0.4.209 - version: 0.4.211 + specifier: ^0.5.23 + version: 0.5.23 + '@atproto/syntax': + specifier: ^0.7.2 + version: 0.7.2 '@certified-app/shared': specifier: workspace:* version: link:../shared @@ -172,8 +175,8 @@ importers: specifier: ^4.17.21 version: 4.17.25 '@types/node': - specifier: ^20.11.0 - version: 20.19.33 + specifier: ^22.0.0 + version: 22.19.11 '@types/serialize-javascript': specifier: ^5.0.4 version: 5.0.4 @@ -211,49 +214,64 @@ importers: packages: - '@atproto-labs/did-resolver@0.2.6': - resolution: {integrity: sha512-2K1bC04nI2fmgNcvof+yA28IhGlpWn2JKYlPa7To9JTKI45FINCGkQSGiL2nyXlyzDJJ34fZ1aq6/IRFIOIiqg==} + '@atproto-labs/did-resolver@0.3.6': + resolution: {integrity: sha512-5Bb3xfDgOw4r+AjAVuZvk7lWQlUkq7dxJoRMHI46UTLEt99CQGqvKOBbA0xAXehYc76LJyaG9fulVQuWmVuqUA==} + engines: {node: '>=22'} '@atproto-labs/fetch-node@0.2.0': resolution: {integrity: sha512-Krq09nH/aeoiU2s9xdHA0FjTEFWG9B5FFenipv1iRixCcPc7V3DhTNDawxG9gI8Ny0k4dBVS9WTRN/IDzBx86Q==} engines: {node: '>=18.7.0'} + '@atproto-labs/fetch-node@0.3.6': + resolution: {integrity: sha512-sGBMlRMCRu0xAnesRe7WCe9e2TMdVMd4I5WrNa43dFs14KxBzHXaPLDM1ZiYe/wGf7midNG3md5/BXvdC6vPCA==} + engines: {node: '>=22'} + '@atproto-labs/fetch@0.2.3': resolution: {integrity: sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==} + '@atproto-labs/fetch@0.3.5': + resolution: {integrity: sha512-iDFZEoNqfL17EVKE+uNzdUD7YF8LWhEhxeBtP6x+PNuAxoXv3ip9vLmB8nNzNxFwVn++FipfDtSiPqmziv1bdA==} + engines: {node: '>=22'} + '@atproto-labs/pipe@0.1.1': resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==} - '@atproto-labs/simple-store-memory@0.1.4': - resolution: {integrity: sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw==} + '@atproto-labs/pipe@0.2.4': + resolution: {integrity: sha512-n67jCcrC+ouAeO10cWkpPzzLMlDi/lDCU30Us+LGqhOPhT6c4t5ASdBLQi9W3jUQtRzQBt3G9zipF+xKWNvVbw==} + engines: {node: '>=22'} - '@atproto-labs/simple-store-redis@0.0.1': - resolution: {integrity: sha512-hGkfDNVtTqwcRx27k6u25pgwNIHq3xDCRuojkfHf6c1B9R5rKphdZJ91Mn3lCvsyDB/lUqqLuzKuXQWFml/u5g==} + '@atproto-labs/simple-store-memory@0.2.5': + resolution: {integrity: sha512-Qme5VqkHKZA0w218/3pncvT+KYQzVdtP4aF72eCswh53SLrdGCG6F/NtllmJuYmp9uPGnHdql/Yt0BY1slAKjQ==} + engines: {node: '>=22'} + + '@atproto-labs/simple-store-redis@0.1.5': + resolution: {integrity: sha512-pr8RflgKBiKFTl+wjXs2M+gYX2kEf0K/QOTn5qy5Opy6mLGhoxcbKvc1VWG6nNTu33RdjrZTbeOAQG4ZjbpGOg==} + engines: {node: '>=22'} peerDependencies: ioredis: ^5.3.2 - '@atproto-labs/simple-store@0.3.0': - resolution: {integrity: sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==} - - '@atproto-labs/xrpc-utils@0.0.24': - resolution: {integrity: sha512-wWXd2Ht47UsL/UbDCr3twMFSZrh0xSI56u4O3kz0DTU4G+530mCG71mMVE6eeYcR+j6FEjp7o2Ld6c7wFklYGw==} + '@atproto-labs/simple-store@0.5.0': + resolution: {integrity: sha512-tA/BmCahnrLV+seUZzjkC1xVZQbjogiooQ5C4kkC6we2mP68v7SreQTuv/XPhK2wsSES6c1SYCgDkkLlDTzALA==} + engines: {node: '>=22'} - '@atproto/api@0.18.21': - resolution: {integrity: sha512-s35MIJerGT/pKe2xJtKKswqlIr/ola2r2iURBKBL0Mk1OKe6jP4YvTMh1N2d2PEANFzNNTbKoDaLfJPo2Uvc/w==} + '@atproto-labs/xrpc-utils@0.1.12': + resolution: {integrity: sha512-ecAsf6eRT2e8hn0jQdXcGREFhsKyqthVa2oN10Rlj2T8WflRVeV5PtiaxB4/L7Zre6eUN1xQbQtAcnIKL+Uccw==} + engines: {node: '>=22'} - '@atproto/aws@0.2.31': - resolution: {integrity: sha512-jzw0v4KttNqeEZtkIujIOCvWABJl4m8WQuSOlJtYeJhn/xaBC1+CNt7qnvYCzBd+T5nncZU8junHSEbOMdVwiA==} - engines: {node: '>=18.7.0'} + '@atproto/aws@0.3.9': + resolution: {integrity: sha512-UPx2vXBiD0Ly4CRpGDXN5GzF/3ASc+TB3zsp/JFgYJqgBd1uuYGJgEkzsJ/dcnQHQbiPyniOkwCuUyFjkUUXhg==} + engines: {node: '>=22'} - '@atproto/common-web@0.4.17': - resolution: {integrity: sha512-sfxD8NGxyoxhxmM9EUshEFbWcJ3+JHEOZF4Quk6HsCh1UxpHBmLabT/vEsAkDWl+C/8U0ine0+c/gHyE/OZiQQ==} + '@atproto/common-web@0.5.7': + resolution: {integrity: sha512-lvU8lFO5UByacsl3AReXkpTWjcPBS8mBqt40B45HwCt+s58a+xT/YI/+AUpmzSmsPVZCpeCmP6wgsOSC8RILXg==} + engines: {node: '>=22'} '@atproto/common@0.1.1': resolution: {integrity: sha512-GYwot5wF/z8iYGSPjrLHuratLc0CVgovmwfJss7+BUOB6y2/Vw8+1Vw0n9DDI0gb5vmx3UI8z0uJgC8aa8yuJg==} - '@atproto/common@0.5.13': - resolution: {integrity: sha512-+5c3wlvZVCCReoPSwvkPhKz3Y2FZlJzm69BrfkHMccAH0Rs0KLwnWtoE34zyzTLNH7hhy5okx5qJS6+ZlgE9Sg==} - engines: {node: '>=18.7.0'} + '@atproto/common@0.7.3': + resolution: {integrity: sha512-pmu+B6n83exJDJSCXazVVOpk+RuXsMK8VxKUnkiSXHP03+nRDDeNXaWEp1COBBU2dfAzYZZB6k4M8G3gq3zkcQ==} + engines: {node: '>=22'} '@atproto/crypto@0.1.0': resolution: {integrity: sha512-9xgFEPtsCiJEPt9o3HtJT30IdFTGw5cQRSJVIy5CFhqBA4vDLcdXiRDLCjkzHEVbtNCsHUW6CrlfOgbeLPcmcg==} @@ -262,268 +280,202 @@ packages: resolution: {integrity: sha512-n40aKkMoCatP0u9Yvhrdk6fXyOHFDDbkdm4h4HCyWW+KlKl8iXfD5iV+ECq+w5BM+QH25aIpt3/j6EUNerhLxw==} engines: {node: '>=18.7.0'} - '@atproto/did@0.3.0': - resolution: {integrity: sha512-raUPzUGegtW/6OxwCmM8bhZvuIMzxG5t9oWsth6Tp91Kb5fTnHV2h/KKNF1C82doeA4BdXCErTyg7ISwLbQkzA==} - - '@atproto/identity@0.4.12': - resolution: {integrity: sha512-P+Jn0HvKhIh1tps5n3xGrCxt+XiFWzp4kdgloyFhFmVLwjDU547DQkWx4r5Vhuiah7fRZGVSlk39R4U6SPrACg==} - engines: {node: '>=18.7.0'} - - '@atproto/jwk-jose@0.1.11': - resolution: {integrity: sha512-i4Fnr2sTBYmMmHXl7NJh8GrCH+tDQEVWrcDMDnV5DjJfkgT17wIqvojIw9SNbSL4Uf0OtfEv6AgG0A+mgh8b5Q==} - - '@atproto/jwk@0.6.0': - resolution: {integrity: sha512-bDoJPvt7TrQVi/rBfBrSSpGykhtIriKxeYCYQTiPRKFfyRhbgpElF0wPXADjIswnbzZdOwbY63az4E/CFVT3Tw==} + '@atproto/crypto@0.5.4': + resolution: {integrity: sha512-UR0BkuYNYuFtw+dA+y/oPPxzX0SWRnGJ+1Cfh/jGP1BvjRUyezK3omjpeLms5fYrXbM9vnfX+ckJFJqkBgLOdw==} + engines: {node: '>=22'} - '@atproto/lex-cbor@0.0.13': - resolution: {integrity: sha512-63nbzXJnQwV02XGpEa8WZxt7Zu87dnbzrUVL0Mqr55S1EGCzEF9U7Dauc9tKKLoZ88GmYrJN0irBsXtSi0VeWg==} + '@atproto/did@0.5.4': + resolution: {integrity: sha512-BlnwQ+obL+4ZA71KH/EzZ3TY+cpSxnLiUI85mjBJIQwvDF/oN2sQA18wIj9jpduviIt2b/cMtlJuzHjzBkfXvw==} + engines: {node: '>=22'} - '@atproto/lex-client@0.0.13': - resolution: {integrity: sha512-NftQ9SSIilMFFj99fBlv1hvZ6Oe4Bl+HYn4VkXrWsGrHeOIM3GLgVZSMWAlg33rCvd6bYfb+YnIdPxcV6lCU0g==} + '@atproto/identity@0.5.7': + resolution: {integrity: sha512-a2/pFBZH3l1olWx1VJgPhnTSV47rOyTfeoaWHtxQqZcpjx3pbXaaNMTGvUZblgTpVj7y9rhFL2ieU7YrNDt3+Q==} + engines: {node: '>=22'} - '@atproto/lex-data@0.0.12': - resolution: {integrity: sha512-aekJudcK1p6sbTqUv2bJMJBAGZaOJS0mgDclpK3U6VuBREK/au4B6ffunBFWgrDfg0Vwj2JGyEA7E51WZkJcRw==} + '@atproto/jwk-jose@0.2.4': + resolution: {integrity: sha512-gzDoA0JTwnc0ZJOBLM7WX9xFxtynRS2K1Bofb8epzoMWDQvyvfbPcfkdPrKFM7NXCFUVpGpBnsCB8KFPTf1rCg==} + engines: {node: '>=22'} - '@atproto/lex-document@0.0.14': - resolution: {integrity: sha512-BaCSZOZUIv3kQ23b3Lhe4sprJYHc0spSeWS3TLaMoVi6bFZ3RzeM8n7ROTzVP3BTNYxpRHPHtOarx9A8ZAAC4w==} + '@atproto/jwk@0.7.4': + resolution: {integrity: sha512-tq7TUDmNfe1yDfpRgdGQMJdl9TUlJmREQNCag9yg5w8Evu+TOiFiLgiOCbo7X4ouRPSgd1DpOzXbUa8UyKKMZA==} + engines: {node: '>=22'} - '@atproto/lex-json@0.0.12': - resolution: {integrity: sha512-XlEpnWWZdDJ5BIgG25GyH+6iBfyrFL18BI5JSE6rUfMObbFMrQRaCuRLQfryRXNysVz3L3U+Qb9y8KcXbE8AcA==} + '@atproto/lex-builder@0.1.9': + resolution: {integrity: sha512-NfvrxND66jibS9BDRCaKFVjubeaCenVz0j++yFGv10L+POu1XU6cc4naIjnLg9uvZrB4GXG8fvZJpyvfNghn0A==} + engines: {node: '>=22'} - '@atproto/lex-resolver@0.0.15': - resolution: {integrity: sha512-oNxcNCts3ReJ+A4hTPthQbPA68yMQ0ZrBUIiUTZwRazrmg/xkV15jtyYSnH4CGBjRdt420MV9aLR2s4qLSmyTQ==} + '@atproto/lex-cbor@0.1.5': + resolution: {integrity: sha512-JKDVu1/+QrRXy+cM72Ze7N7N3GUxhs3+wmwf3DyRQbDO0bdseC8mvZ9TYXhthM1Y92+pnCHIPci41etx8wz75Q==} + engines: {node: '>=22'} - '@atproto/lex-schema@0.0.13': - resolution: {integrity: sha512-FeY4YBesEUO4Ey3BJhDRma0cZt6XxunSZPXny5Q/6ltc7pvyJGXXtJ8D7mHl7p5EXPwylEYOQkM6ck4IyfMP0A==} + '@atproto/lex-client@0.3.1': + resolution: {integrity: sha512-GK5rhqOtIhzxd2BEByQTs1/K7u1QJ+0NkkksV94HgrTAHG+0S3DBg5P5+RPQu2uhHIDKFzXFhP5L+fFJubX4GQ==} + engines: {node: '>=22'} - '@atproto/lexicon@0.6.1': - resolution: {integrity: sha512-/vI1kVlY50Si+5MXpvOucelnYwb0UJ6Qto5mCp+7Q5C+Jtp+SoSykAPVvjVtTnQUH2vrKOFOwpb3C375vSKzXw==} + '@atproto/lex-data@0.1.6': + resolution: {integrity: sha512-rvovRrYWDEuerX+ZeQbdI5dKs0bYvuMjhwDOtT+pkOvdY4MkfN41DJCz/RAYVAQ7noPdaalB6pAX9euukheE/w==} + engines: {node: '>=22'} - '@atproto/oauth-provider-api@0.3.7': - resolution: {integrity: sha512-7yU9vuQFt/hy4NzlDtn+LuhIGvVKkhgWAkCmopnseMPBw6oGPT90uOsTxMkVGtHuKVvBSz7hOXoELXpnZq3gDQ==} + '@atproto/lex-document@0.1.7': + resolution: {integrity: sha512-DcJagPJpjg3MTPhpDQRkjJDmSDPZy4F9MRftsni757qLZ1NCE5dYjfg9XX6DPya6/JvscAV7qga/CJrHeUFyiw==} + engines: {node: '>=22'} - '@atproto/oauth-provider-frontend@0.2.9': - resolution: {integrity: sha512-m1NhqC7ydEpF5ELV13CxkgCawyMX8wbAXls/4af3Tsz3IOkdM6zPgQeYK7Zj+7Nywjml4mZTkJ8rZiT6O9+5sw==} - engines: {node: '>=18.7.0'} - - '@atproto/oauth-provider-ui@0.4.3': - resolution: {integrity: sha512-BLNZmtOwoHu2qk/Oi6dUR8TcXQaJre6wgW8YjkW5bKf+Vftn3PGzh8bKgr1fQZDYweZ6AF148imA2OzVSAaLHQ==} - engines: {node: '>=18.7.0'} + '@atproto/lex-installer@0.1.11': + resolution: {integrity: sha512-7sH0GcRKneaR7GBdgkM/f59huz2jebTrsfgQ50RonfZKPqfO/6uNwIjsJb8r6BjSxM7I7Os2z6LWdPVMYyoYDg==} + engines: {node: '>=22'} - '@atproto/oauth-provider@0.15.10': - resolution: {integrity: sha512-Iyh5F0nGQD+CrTV5YC52MiMySDBalCP0gj70naov5zgQ85qpvdr2W1puCv6IabB7/5LVL6bLgU0d7hbNfXhxDA==} - engines: {node: '>=18.7.0'} + '@atproto/lex-json@0.1.5': + resolution: {integrity: sha512-qOp6+Za5p/xDXACYIP3vySbKaf9CJDwiZEN78ghPT1gRoJohKG3ONt/WmvOxBVJqc6VTRaqEpbG9vX9oLF2qsA==} + engines: {node: '>=22'} - '@atproto/oauth-scopes@0.3.1': - resolution: {integrity: sha512-eUD9C78uYH+0ZUmiV/X6pRj4BKlH9I1xxJYW1Gb/qJiATuTZkJVm02urJb/BkWX4Qpxy4rOr8EProNg1wByIEA==} + '@atproto/lex-resolver@0.2.4': + resolution: {integrity: sha512-S7lxWp8CT5Par3eTq+VUXVpu6W5zHarq9oKZ6UneN0925Ey6juJ/kZI0jucxIpV/DXM+EF3GntOMbackFPxieg==} + engines: {node: '>=22'} - '@atproto/oauth-types@0.6.2': - resolution: {integrity: sha512-2cuboM4RQBCYR8NQC5uGRkW6KgCgKyq/B5/+tnMmWZYtZGVUQvsUWQHK/ZiMCnVXbcDNtc/RIEJQJDZ8FXMoxg==} + '@atproto/lex-schema@0.2.3': + resolution: {integrity: sha512-218xvlL7EdEdREY7ieAhaVPnBeGAf5h3tNkzE+X1Ob4tFLrWwA1sOQqliIURG9owE8v0ctqf9Uftx15eN0U0qQ==} + engines: {node: '>=22'} - '@atproto/oauth-types@0.6.3': - resolution: {integrity: sha512-jdKuoPknJuh/WjI+mYk7agSbx9mNVMbS6Dr3k1z2YMY2oRiCQjxYBuo4MLKATbxj05nMQaZRWlHRUazoAu5Cng==} + '@atproto/lex@0.3.2': + resolution: {integrity: sha512-/HcdVoq2BtkHxdWRo3vCciT6Cge9LfHVYtatnBrGlgHw6LYvjG2LHxmquhfPj26mKa3n2zVM8+3ia9RpoemSxw==} + engines: {node: '>=22'} + hasBin: true - '@atproto/pds@0.4.211': - resolution: {integrity: sha512-kEvdHHkpKXFrOuMo0vDDa12A2WkDSg+uu7JYonDxlFo+d2xHVCyZlCSmmtXOy9zr2cUBGx5YyNaJGv4UCVdH4w==} - engines: {node: '>=18.7.0'} + '@atproto/lexicon@0.7.9': + resolution: {integrity: sha512-/NoDu8xE0EmT0uCgTy03r9FIEjBSNN+xVHacJ+h+MW4MTMgegLdKlLnCySl2dzhYPu3/TK28CY4xIeEHz//GAw==} + engines: {node: '>=22'} - '@atproto/repo@0.8.12': - resolution: {integrity: sha512-QpVTVulgfz5PUiCTELlDBiRvnsnwrFWi+6CfY88VwXzrRHd9NE8GItK7sfxQ6U65vD/idH8ddCgFrlrsn1REPQ==} - engines: {node: '>=18.7.0'} + '@atproto/oauth-provider-api@0.7.7': + resolution: {integrity: sha512-CCC/p2LWqrCwPbvDFiNkZekk9nwqyldOAK0nr8OSIjOZ1eMQ9M335ghwD5+zm/TS55Z/Bf1AxlqX0JIK60dg/Q==} + engines: {node: '>=22'} - '@atproto/syntax@0.4.3': - resolution: {integrity: sha512-YoZUz40YAJr5nPwvCDWgodEOlt5IftZqPJvA0JDWjuZKD8yXddTwSzXSaKQAzGOpuM+/A3uXRtPzJJqlScc+iA==} + '@atproto/oauth-provider-ui@0.8.9': + resolution: {integrity: sha512-RKSEoIRv2aCcJPBP0b1k1hxPgu8p8+L1JmCxw7jLF9IbOWe2zSsNMbwQbE4tygKwIClx3JSUL1OCYZgbylsz8g==} + engines: {node: '>=22'} - '@atproto/ws-client@0.0.4': - resolution: {integrity: sha512-dox1XIymuC7/ZRhUqKezIGgooZS45C6vHCfu0PnWjfvsLCK2kAlnvX4IBkA/WpcoijDhQ9ejChnFbo/sLmgvAg==} - engines: {node: '>=18.7.0'} + '@atproto/oauth-provider@0.21.1': + resolution: {integrity: sha512-C3O82D0bAD0oGy/h6Afwgnx2Z+A+IBf+lS3uz6ow9edZEk61QVc4PM9z+uJtusZ0ZJqUCrFAwT3lkDFUcSEPYQ==} + engines: {node: '>=22'} - '@atproto/xrpc-server@0.10.14': - resolution: {integrity: sha512-vzpf5rs/eP/EIqPgw8Qzv/FaVr11MxyvGiZoe4+JPCPdCjzJIoZEY0dPP2x6dPx8MV8urRWnVApaYQgpVzIIIg==} - engines: {node: '>=18.7.0'} + '@atproto/oauth-scopes@0.5.7': + resolution: {integrity: sha512-RWhz93nR8R0R2vbwjbUemktjsVIkjrw6IAlNlcSQyzFvmsI/grWeZIHdRLGK1CC1WIQlyDYPWG8hChlQq63Iyw==} + engines: {node: '>=22'} - '@atproto/xrpc@0.7.7': - resolution: {integrity: sha512-K1ZyO/BU8JNtXX5dmPp7b5UrkLMMqpsIa/Lrj5D3Su+j1Xwq1m6QJ2XJ1AgjEjkI1v4Muzm7klianLE6XGxtmA==} + '@atproto/oauth-types@0.7.5': + resolution: {integrity: sha512-x75O0HsKB1IGfBikAQrrTX6EL8Rt4Q0+wMcwhZQRGPk/N/WqbYbsW3Powj4R8ZJKSfWCpVfaw32Piu1pTi891Q==} + engines: {node: '>=22'} - '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} + '@atproto/pds@0.5.23': + resolution: {integrity: sha512-3zE1dDEuYsLP6p1F1pYUa2Dwh7mJ3sudhG2gcaVaHc48YyvInrpn4wI62sg7vL4KBdAJdmmaUh1lSiVMd6SSgw==} + engines: {node: '>=22'} - '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + '@atproto/repo@0.10.7': + resolution: {integrity: sha512-nMV3y4d/KERrt9VOe3hcKyl/FVQeo6+54YKCt6bLiMLl8CPEtjwdVGwWlSkekaCoayjL0rTQ4zvjmKs+vCA1Ew==} + engines: {node: '>=22'} - '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@atproto/syntax@0.4.3': + resolution: {integrity: sha512-YoZUz40YAJr5nPwvCDWgodEOlt5IftZqPJvA0JDWjuZKD8yXddTwSzXSaKQAzGOpuM+/A3uXRtPzJJqlScc+iA==} - '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + '@atproto/syntax@0.7.2': + resolution: {integrity: sha512-tZ1Tr0R9pK4bI4Zs69t29cjMlCFQvRNBeNkqJC5pGeNuCt64D0eoF7s/AlqeVmYppClmQ0xJquggGgsMDP6j7w==} + engines: {node: '>=22'} - '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} + '@atproto/ws-client@0.1.8': + resolution: {integrity: sha512-EX9SpoOJY4QhDKXe/olJw2h+Lj10SMd0ErDSE8pf3aFmg4MEEA+KBMg7HO8b9U6SNSS6n2nl7GPe37D3rIJ5zw==} + engines: {node: '>=22'} - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + '@atproto/xrpc-server@0.11.13': + resolution: {integrity: sha512-i8wM2Cx022QhVqkafy+qMFZ8aGFb66siF3JpFch0R8/qVNKT8UqBlKzc7TI0Ef2Yh6c3BExVQ5kyWwdzL952zw==} + engines: {node: '>=22'} - '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@atproto/xrpc@0.8.8': + resolution: {integrity: sha512-5cZIaP775QpTZjSgqvt++ZEe5ZmSHFYNEMwa9IjXLkannitBPfEhIaGuHOI7If3Juc/sIkqVbAxedLSsRk1F6Q==} + engines: {node: '>=22'} - '@aws-sdk/client-cloudfront@3.994.0': - resolution: {integrity: sha512-43NqYL+JjPY38qVc1rjVQna3FNEO484AkQXAqBJByI7PIzURtrtSWv42PstI99t/GnGlZFikf72y+iclvz32pQ==} + '@aws-sdk/checksums@3.1000.24': + resolution: {integrity: sha512-7TWLjypP8kk3savsDBRuhZJx7mBuFFA2136BQhwwLllsAnO4Tmq/p+SXZaNxbuulkzUFz3BZzj0bb4YzexZcNQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-kms@3.994.0': - resolution: {integrity: sha512-fEDPmSJKgu1o4vRPO41ItR/9lhr7UuZ+2TXhPNvmxc/mIzI10/nX3YlSpHxMdFT7ONZqvOPE2wU61mzrQLFjZQ==} + '@aws-sdk/client-cloudfront@3.1101.0': + resolution: {integrity: sha512-oeGTFiZ6o80tZ7FPZ2SQElXO0sgeMTwF6ZKwibNSEt9fEUtYEzRd5rUMn626BnqJtG5iO/SoTRl7xP9Z/3RKNw==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.994.0': - resolution: {integrity: sha512-zIVQt/XfE2zTFrcPEf8R+KRaRD1++XHMPRhxXM2kVA6NA6Aq/cFCUyYOYYwSbWLF/XeToaX1auYGn3IoZKruPQ==} + '@aws-sdk/client-kms@3.1101.0': + resolution: {integrity: sha512-qczxakJlFYG9E6nE2yWIJ2nXq0HbMzHxMSWIsyubPZqx1TANHd2CSJWDTkg+IsNKq+94tG+e+EJo3uADwZ6cdw==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-sso@3.993.0': - resolution: {integrity: sha512-VLUN+wIeNX24fg12SCbzTUBnBENlL014yMKZvRhPkcn4wHR6LKgNrjsG3fZ03Xs0XoKaGtNFi1VVrq666sGBoQ==} + '@aws-sdk/client-s3@3.1101.0': + resolution: {integrity: sha512-16EFb1aTEBgPcfUAWAjjlB57IZCyn7B3rlfT+xqE7M6WoH8AMMU3vFZO0UOitwh/xvvzVx73YED1/n0PU4qBMw==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.973.11': - resolution: {integrity: sha512-wdQ8vrvHkKIV7yNUKXyjPWKCdYEUrZTHJ8Ojd5uJxXp9vqPCkUR1dpi1NtOLcrDgueJH7MUH5lQZxshjFPSbDA==} + '@aws-sdk/core@3.977.4': + resolution: {integrity: sha512-CEkcQlMOQJCvul60U7wdAOACjtdgFWDsfJI+6wUOGdhGNV2lGbuJpi/R50QLpFG3Tp+sQxa/RmzC3X7KHbhuTA==} engines: {node: '>=20.0.0'} - '@aws-sdk/crc64-nvme@3.972.0': - resolution: {integrity: sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==} + '@aws-sdk/credential-provider-env@3.972.65': + resolution: {integrity: sha512-lJT2aRw9wCV8jPHyFJjdZLD4HTydL6/22AnCSOB8e/LqOc55nEJGLHkJQeSxhn8QiqyjFwPKQFtMw0ovjRUY/g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.9': - resolution: {integrity: sha512-ZptrOwQynfupubvcngLkbdIq/aXvl/czdpEG8XJ8mN8Nb19BR0jaK0bR+tfuMU36Ez9q4xv7GGkHFqEEP2hUUQ==} + '@aws-sdk/credential-provider-http@3.972.67': + resolution: {integrity: sha512-N7fw/15hSwI/CPxe5ohOyb7O4ge9f5me1gVIn8OIkBRB0squ8OJqQyDyH/HoL+Sb1W5xdC88jVC+bHkw73iu+Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.11': - resolution: {integrity: sha512-hECWoOoH386bGr89NQc9vA/abkGf5TJrMREt+lhNcnSNmoBS04fK7vc3LrJBSQAUGGVj0Tz3f4dHB3w5veovig==} + '@aws-sdk/credential-provider-ini@3.973.10': + resolution: {integrity: sha512-Zh9XRaPnDN9buO7GfWBubS22R6Nq5D6hbyYEMN05LiOnXugm/8WDjUx6y756bSPbdn3aJB2qG4zFW3bN82QhoQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.9': - resolution: {integrity: sha512-zr1csEu9n4eDiHMTYJabX1mDGuGLgjgUnNckIivvk43DocJC9/f6DefFrnUPZXE+GHtbW50YuXb+JIxKykU74A==} + '@aws-sdk/credential-provider-login@3.972.72': + resolution: {integrity: sha512-zZapIKwaHp7TdTf9hbH1I3CVUdEupmt7FXO/BoTQGC+4h6NkXKWpqF2p5WyfpjurDLHCpSyh+BzMlAg8arqWLA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.9': - resolution: {integrity: sha512-m4RIpVgZChv0vWS/HKChg1xLgZPpx8Z+ly9Fv7FwA8SOfuC6I3htcSaBz2Ch4bneRIiBUhwP4ziUo0UZgtJStQ==} + '@aws-sdk/credential-provider-node@3.972.76': + resolution: {integrity: sha512-1yzLmRiYSgGC25v7ZZEwJn/auhHHTIHgFOmzL2f36hf1+7jSLcX+1QrAz4760WEzPiiQl8xmlpFhHfl2OoyVzA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.10': - resolution: {integrity: sha512-70nCESlvnzjo4LjJ8By8MYIiBogkYPSXl3WmMZfH9RZcB/Nt9qVWbFpYj6Fk1vLa4Vk8qagFVeXgxdieMxG1QA==} + '@aws-sdk/credential-provider-process@3.972.65': + resolution: {integrity: sha512-e5DbbNteOSalN58U83G6kFa4ECLEuGbGqNBHIXE7zYXA/m4GHblIGjFbSH7wYv6gBV8iNSDcRZBKfQZF5vF9nw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.9': - resolution: {integrity: sha512-gOWl0Fe2gETj5Bk151+LYKpeGi2lBDLNu+NMNpHRlIrKHdBmVun8/AalwMK8ci4uRfG5a3/+zvZBMpuen1SZ0A==} + '@aws-sdk/credential-provider-sso@3.973.9': + resolution: {integrity: sha512-0V0u4t+KBku9fbh5CPCaC5hUWwSzDafp8nCuDy817zWbp2gz80jO44rMQkiwnZ+k54B+tjAtzRy00DJRGTKGBg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.9': - resolution: {integrity: sha512-ey7S686foGTArvFhi3ifQXmgptKYvLSGE2250BAQceMSXZddz7sUSNERGJT2S7u5KIe/kgugxrt01hntXVln6w==} + '@aws-sdk/credential-provider-web-identity@3.972.71': + resolution: {integrity: sha512-e4dwiRltGAaQ+2yxw57Hj0l/BF3BHiG14+QpYE7bGYBlpAq/fkIri2BDhjWon8c0mhhtd2txQBAkQb9BcTStFg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.9': - resolution: {integrity: sha512-8LnfS76nHXoEc9aRRiMMpxZxJeDG0yusdyo3NvPhCgESmBUgpMa4luhGbClW5NoX/qRcGxxM6Z/esqANSNMTow==} + '@aws-sdk/lib-storage@3.1101.0': + resolution: {integrity: sha512-S2kYJzmX8a9SPgesOn8la1Ezuto8OqI4e85yNdiOJ/trLMrBxxEZoz8CtOk0uT3FjEJXVbYApzLNmVGVLvUwxA==} engines: {node: '>=20.0.0'} - - '@aws-sdk/lib-storage@3.879.0': - resolution: {integrity: sha512-FAb3vOfLIrf8lPuDoxKRu18DxXfQLEFm7MoXi0jd8ooFjD09jpVCQGNrRuMCqc688wrx7zJSovWObtn4LRjvrg==} - engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.879.0 - - '@aws-sdk/middleware-bucket-endpoint@3.972.3': - resolution: {integrity: sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-expect-continue@3.972.3': - resolution: {integrity: sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-flexible-checksums@3.972.9': - resolution: {integrity: sha512-E663+r/UQpvF3aJkD40p5ZANVQFsUcbE39jifMtN7wc0t1M0+2gJJp3i75R49aY9OiSX5lfVyPUNjN/BNRCCZA==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-host-header@3.972.3': - resolution: {integrity: sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-location-constraint@3.972.3': - resolution: {integrity: sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-logger@3.972.3': - resolution: {integrity: sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.972.3': - resolution: {integrity: sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-sdk-s3@3.972.11': - resolution: {integrity: sha512-Qr0T7ZQTRMOuR6ahxEoJR1thPVovfWrKB2a6KBGR+a8/ELrFodrgHwhq50n+5VMaGuLtGhHiISU3XGsZmtmVXQ==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-ssec@3.972.3': - resolution: {integrity: sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-user-agent@3.972.11': - resolution: {integrity: sha512-R8CvPsPHXwzIHCAza+bllY6PrctEk4lYq/SkHJz9NLoBHCcKQrbOcsfXxO6xmipSbUNIbNIUhH0lBsJGgsRdiw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/nested-clients@3.993.0': - resolution: {integrity: sha512-iOq86f2H67924kQUIPOAvlmMaOAvOLoDOIb66I2YqSUpMYB6ufiuJW3RlREgskxv86S5qKzMnfy/X6CqMjK6XQ==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/region-config-resolver@3.972.3': - resolution: {integrity: sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/signature-v4-multi-region@3.994.0': - resolution: {integrity: sha512-8y04Lv497KKd7f2TVlm2RaKQaNfnY17ZH8d3m+7sW/3R3BhZvHgWQZyqTb/vcN2ERz1YAnWx6woJyB3ZNFvakw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/token-providers@3.993.0': - resolution: {integrity: sha512-+35g4c+8r7sB9Sjp1KPdM8qxGn6B/shBjJtEUN4e+Edw9UEQlZKIzioOGu3UAbyE0a/s450LdLZr4wbJChtmww==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/types@3.973.1': - resolution: {integrity: sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==} - engines: {node: '>=20.0.0'} + '@aws-sdk/client-s3': ^3.1101.0 - '@aws-sdk/util-arn-parser@3.972.2': - resolution: {integrity: sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==} + '@aws-sdk/middleware-sdk-s3@3.972.70': + resolution: {integrity: sha512-APdP0iODt39AkjCjzTFIoFrxDH/Cz3CpWRDKLcsJg7eOnfE1htkxL9BhDoe/xL7cXdoMwh2HBYv3DiT1uf64NQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-endpoints@3.993.0': - resolution: {integrity: sha512-j6vioBeRZ4eHX4SWGvGPpwGg/xSOcK7f1GL0VM+rdf3ZFTIsUEhCFmD78B+5r2PgztcECSzEfvHQX01k8dPQPw==} + '@aws-sdk/nested-clients@3.997.39': + resolution: {integrity: sha512-wU5NPnj62Sb7A8xn/Zb+xThe05P3otNtDl37iOIi5DDMeCesNeCckaG+eXWGUs12Z9R34I8CD05TaTe6SIa61g==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-endpoints@3.994.0': - resolution: {integrity: sha512-L2obUBw4ACMMd1F/SG5LdfPyZ0xJNs9Maifwr3w0uWO+4YvHmk9FfRskfSfE/SLZ9S387oSZ+1xiP7BfVCP/Og==} + '@aws-sdk/signature-v4-multi-region@3.996.43': + resolution: {integrity: sha512-lKekx8bLBXSv4O+cslk9Zfnw2XKSkWBs3uWL5QGhH2ZAQfNS7FE0vcSSN2vD/AhxX54ZTywWxR4STThoeOXlBA==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.4': - resolution: {integrity: sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==} + '@aws-sdk/token-providers@3.1100.0': + resolution: {integrity: sha512-THf3MkgY3fNJZ3zdgSenLqR7gSE68KccCj1RCKretlG73Ppszvues02VpCUO9NlB/tZDC483FvGCld+AiPCkvg==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-user-agent-browser@3.972.3': - resolution: {integrity: sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==} - - '@aws-sdk/util-user-agent-node@3.972.9': - resolution: {integrity: sha512-JNswdsLdQemxqaSIBL2HRhsHPUBBziAgoi5RQv6/9avmE5g5RSdt1hWr3mHJ7OxqRYf+KeB11ExWbiqfrnoeaA==} + '@aws-sdk/types@3.974.2': + resolution: {integrity: sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA==} engines: {node: '>=20.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - '@aws-sdk/xml-builder@3.972.5': - resolution: {integrity: sha512-mCae5Ys6Qm1LDu0qdGwx2UQ63ONUe+FHw908fJzLDqFKTDBK4LDZUqKWm4OkTCNFq19bftjsBSESIGLD/s3/rA==} + '@aws-sdk/xml-builder@3.972.37': + resolution: {integrity: sha512-zKq4HQum8JwDyEuyfuI4bbiAcU0KxP6qy+9PR/IsR92IyE/DaBAikzAS50tjxip4bqIIANpCcG+Yyj6CVhXupg==} engines: {node: '>=20.0.0'} - '@aws/lambda-invoke-store@0.2.3': - resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} + '@aws/lambda-invoke-store@0.3.0': + resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.29.0': @@ -1338,220 +1290,28 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@smithy/abort-controller@4.2.8': - resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} - engines: {node: '>=18.0.0'} - - '@smithy/chunked-blob-reader-native@4.2.1': - resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} - engines: {node: '>=18.0.0'} - - '@smithy/chunked-blob-reader@5.2.0': - resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} - engines: {node: '>=18.0.0'} - - '@smithy/config-resolver@4.4.6': - resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} - engines: {node: '>=18.0.0'} - - '@smithy/core@3.23.2': - resolution: {integrity: sha512-HaaH4VbGie4t0+9nY3tNBRSxVTr96wzIqexUa6C2qx3MPePAuz7lIxPxYtt1Wc//SPfJLNoZJzfdt0B6ksj2jA==} - engines: {node: '>=18.0.0'} - - '@smithy/credential-provider-imds@4.2.8': - resolution: {integrity: sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-codec@4.2.8': - resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-browser@4.2.8': - resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-config-resolver@4.3.8': - resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-node@4.2.8': - resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-universal@4.2.8': - resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} - engines: {node: '>=18.0.0'} - - '@smithy/fetch-http-handler@5.3.9': - resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-blob-browser@4.2.9': - resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-node@4.2.8': - resolution: {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-stream-node@4.2.8': - resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} - engines: {node: '>=18.0.0'} - - '@smithy/invalid-dependency@4.2.8': - resolution: {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} - engines: {node: '>=18.0.0'} - - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - - '@smithy/is-array-buffer@4.2.0': - resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} - engines: {node: '>=18.0.0'} - - '@smithy/md5-js@4.2.8': - resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-content-length@4.2.8': - resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-endpoint@4.4.16': - resolution: {integrity: sha512-L5GICFCSsNhbJ5JSKeWFGFy16Q2OhoBizb3X2DrxaJwXSEujVvjG9Jt386dpQn2t7jINglQl0b4K/Su69BdbMA==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-retry@4.4.33': - resolution: {integrity: sha512-jLqZOdJhtIL4lnA9hXnAG6GgnJlo1sD3FqsTxm9wSfjviqgWesY/TMBVnT84yr4O0Vfe0jWoXlfFbzsBVph3WA==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-serde@4.2.9': - resolution: {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-stack@4.2.8': - resolution: {integrity: sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==} - engines: {node: '>=18.0.0'} - - '@smithy/node-config-provider@4.3.8': - resolution: {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} - engines: {node: '>=18.0.0'} - - '@smithy/node-http-handler@4.4.10': - resolution: {integrity: sha512-u4YeUwOWRZaHbWaebvrs3UhwQwj+2VNmcVCwXcYTvPIuVyM7Ex1ftAj+fdbG/P4AkBwLq/+SKn+ydOI4ZJE9PA==} - engines: {node: '>=18.0.0'} - - '@smithy/property-provider@4.2.8': - resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} - engines: {node: '>=18.0.0'} - - '@smithy/protocol-http@5.3.8': - resolution: {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} - engines: {node: '>=18.0.0'} - - '@smithy/querystring-builder@4.2.8': - resolution: {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} - engines: {node: '>=18.0.0'} - - '@smithy/querystring-parser@4.2.8': - resolution: {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} - engines: {node: '>=18.0.0'} - - '@smithy/service-error-classification@4.2.8': - resolution: {integrity: sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==} - engines: {node: '>=18.0.0'} - - '@smithy/shared-ini-file-loader@4.4.3': - resolution: {integrity: sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==} - engines: {node: '>=18.0.0'} - - '@smithy/signature-v4@5.3.8': - resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} - engines: {node: '>=18.0.0'} - - '@smithy/smithy-client@4.11.5': - resolution: {integrity: sha512-xixwBRqoeP2IUgcAl3U9dvJXc+qJum4lzo3maaJxifsZxKUYLfVfCXvhT4/jD01sRrHg5zjd1cw2Zmjr4/SuKQ==} - engines: {node: '>=18.0.0'} - - '@smithy/types@4.12.0': - resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} - engines: {node: '>=18.0.0'} - - '@smithy/url-parser@4.2.8': - resolution: {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-base64@4.3.0': - resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-browser@4.2.0': - resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-node@4.2.1': - resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-buffer-from@4.2.0': - resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} - engines: {node: '>=18.0.0'} - - '@smithy/util-config-provider@4.2.0': - resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-browser@4.3.32': - resolution: {integrity: sha512-092sjYfFMQ/iaPH798LY/OJFBcYu0sSK34Oy9vdixhsU36zlZu8OcYjF3TD4e2ARupyK7xaxPXl+T0VIJTEkkg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-node@4.2.35': - resolution: {integrity: sha512-miz/ggz87M8VuM29y7jJZMYkn7+IErM5p5UgKIf8OtqVs/h2bXr1Bt3uTsREsI/4nK8a0PQERbAPsVPVNIsG7Q==} - engines: {node: '>=18.0.0'} - - '@smithy/util-endpoints@3.2.8': - resolution: {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-hex-encoding@4.2.0': - resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-middleware@4.2.8': - resolution: {integrity: sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==} - engines: {node: '>=18.0.0'} - - '@smithy/util-retry@4.2.8': - resolution: {integrity: sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==} + '@smithy/core@3.31.1': + resolution: {integrity: sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.5.12': - resolution: {integrity: sha512-D8tgkrmhAX/UNeCZbqbEO3uqyghUnEmmoO9YEvRuwxjlkKKUE7FOgCJnqpTlQPe9MApdWPky58mNQQHbnCzoNg==} + '@smithy/credential-provider-imds@4.4.16': + resolution: {integrity: sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w==} engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@4.2.0': - resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} + '@smithy/fetch-http-handler@5.6.13': + resolution: {integrity: sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A==} engines: {node: '>=18.0.0'} - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - - '@smithy/util-utf8@4.2.0': - resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} + '@smithy/node-http-handler@4.9.13': + resolution: {integrity: sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.2.8': - resolution: {integrity: sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==} + '@smithy/signature-v4@5.6.12': + resolution: {integrity: sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ==} engines: {node: '>=18.0.0'} - '@smithy/uuid@1.1.0': - resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + '@smithy/types@4.16.1': + resolution: {integrity: sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg==} engines: {node: '>=18.0.0'} '@stablelib/base64@1.0.1': @@ -1570,6 +1330,9 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@ts-morph/common@0.28.1': + resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1977,9 +1740,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - await-lock@2.2.2: - resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} - axios@1.13.5: resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} @@ -2067,9 +1827,6 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - better-sqlite3@10.1.0: - resolution: {integrity: sha512-hqpHJaCfKEZFaAWdMh6crdzRWyzQzfP6Ih8TYI0vFn01a6ZTDSbJIMXN+6AMBaBOh99DzUy8l3PsV9R3qnJDng==} - better-sqlite3@12.6.2: resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==} engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} @@ -2149,6 +1906,10 @@ packages: resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} hasBin: true + cborg@4.5.8: + resolution: {integrity: sha512-6/viltD51JklRhq4L7jC3zgy6gryuG5xfZ3kzpE+PravtyeQLeQmCYLREhQH7pWENg5pY4Yu/XCd6a7dKScVlw==} + hasBin: true + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} @@ -2173,10 +1934,17 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -2397,6 +2165,9 @@ packages: elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2456,6 +2227,10 @@ packages: engines: {node: '>=18'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -2587,8 +2362,8 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} @@ -2638,10 +2413,6 @@ packages: fast-sha256@1.3.0: resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} - fast-xml-parser@5.3.6: - resolution: {integrity: sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==} - hasBin: true - fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2764,6 +2535,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -3144,14 +2919,14 @@ packages: knuth-shuffle-seeded@1.0.6: resolution: {integrity: sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==} - kysely@0.22.0: - resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} - engines: {node: '>=14.0.0'} - kysely@0.28.11: resolution: {integrity: sha512-zpGIFg0HuoC893rIjYX1BETkVWdDnzTzF5e0kWXJFg5lE0k1/LfNWBejrcnOFu8Q2Rfq/hTDTU7XLUM8QOrpzg==} engines: {node: '>=20.0.0'} + kysely@0.29.4: + resolution: {integrity: sha512-y5mVgQNkMbs1eK9Xyc0pmNdabN2wHhRYY/5r4W5HrUT1rYCEPeVNSj1RUJeSDKT3U0p+mXCvLgkrFuIafYI6BA==} + engines: {node: '>=22.0.0'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3297,6 +3072,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multiformats@13.4.2: + resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} + multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} @@ -3479,14 +3257,18 @@ packages: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} + p-queue@8.1.1: + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} + engines: {node: '>=18'} p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -3513,6 +3295,9 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3567,8 +3352,8 @@ packages: pino-abstract-transport@3.0.0: resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} - pino-http@8.6.1: - resolution: {integrity: sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA==} + pino-http@11.0.0: + resolution: {integrity: sha512-wqg5XIAGRRIWtTk8qPGxkbrfiwEWz1lgedVLvhLALudKXvg1/L2lTFgTGPJ4Z2e3qcRmxoFxDuSdMdMGNM6I1g==} pino-std-serializers@6.2.2: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} @@ -3982,6 +3767,14 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} + string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -4013,9 +3806,6 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strnum@2.1.2: - resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} - strtok3@6.3.0: resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} engines: {node: '>=10'} @@ -4095,10 +3885,6 @@ packages: resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} - tlds@1.261.0: - resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} - hasBin: true - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4127,6 +3913,9 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} + ts-morph@27.0.2: + resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -4200,6 +3989,9 @@ packages: uint8arrays@3.0.0: resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} + uint8arrays@5.1.1: + resolution: {integrity: sha512-9muQwa4wZG4dKi9gMAIBtnk2Pw87SRpvWTH6lOGm19V2Uqxr4uomUf2PGqPnWc+qs06sN8owUU4jfcoWOcfwVQ==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -4211,6 +4003,14 @@ packages: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} + undici@7.29.0: + resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + engines: {node: '>=20.18.1'} + + undici@8.10.0: + resolution: {integrity: sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==} + engines: {node: '>=22.19.0'} + unicode-segmenter@0.14.5: resolution: {integrity: sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==} @@ -4377,6 +4177,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -4396,11 +4200,23 @@ packages: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yaml@2.8.3: resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@18.1.0: + resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -4416,13 +4232,13 @@ packages: snapshots: - '@atproto-labs/did-resolver@0.2.6': + '@atproto-labs/did-resolver@0.3.6': dependencies: - '@atproto-labs/fetch': 0.2.3 - '@atproto-labs/pipe': 0.1.1 - '@atproto-labs/simple-store': 0.3.0 - '@atproto-labs/simple-store-memory': 0.1.4 - '@atproto/did': 0.3.0 + '@atproto-labs/fetch': 0.3.5 + '@atproto-labs/pipe': 0.2.4 + '@atproto-labs/simple-store': 0.5.0 + '@atproto-labs/simple-store-memory': 0.2.5 + '@atproto/did': 0.5.4 zod: 3.25.76 '@atproto-labs/fetch-node@0.2.0': @@ -4432,66 +4248,68 @@ snapshots: ipaddr.js: 2.3.0 undici: 6.23.0 + '@atproto-labs/fetch-node@0.3.6': + dependencies: + '@atproto-labs/fetch': 0.3.5 + '@atproto-labs/pipe': 0.2.4 + ipaddr.js: 2.3.0 + undici_v6: undici@6.23.0 + undici_v7: undici@7.29.0 + undici_v8: undici@8.10.0 + '@atproto-labs/fetch@0.2.3': dependencies: '@atproto-labs/pipe': 0.1.1 + '@atproto-labs/fetch@0.3.5': + dependencies: + '@atproto-labs/pipe': 0.2.4 + '@atproto-labs/pipe@0.1.1': {} - '@atproto-labs/simple-store-memory@0.1.4': + '@atproto-labs/pipe@0.2.4': {} + + '@atproto-labs/simple-store-memory@0.2.5': dependencies: - '@atproto-labs/simple-store': 0.3.0 + '@atproto-labs/simple-store': 0.5.0 lru-cache: 10.4.3 - '@atproto-labs/simple-store-redis@0.0.1(ioredis@5.9.3)': + '@atproto-labs/simple-store-redis@0.1.5(ioredis@5.9.3)': dependencies: - '@atproto-labs/simple-store': 0.3.0 + '@atproto-labs/simple-store': 0.5.0 ioredis: 5.9.3 - '@atproto-labs/simple-store@0.3.0': {} + '@atproto-labs/simple-store@0.5.0': {} - '@atproto-labs/xrpc-utils@0.0.24': + '@atproto-labs/xrpc-utils@0.1.12': dependencies: - '@atproto/xrpc': 0.7.7 - '@atproto/xrpc-server': 0.10.14 + '@atproto/xrpc': 0.8.8 + '@atproto/xrpc-server': 0.11.13 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@atproto/api@0.18.21': - dependencies: - '@atproto/common-web': 0.4.17 - '@atproto/lexicon': 0.6.1 - '@atproto/syntax': 0.4.3 - '@atproto/xrpc': 0.7.7 - await-lock: 2.2.2 - multiformats: 9.9.0 - tlds: 1.261.0 - zod: 3.25.76 - - '@atproto/aws@0.2.31': + '@atproto/aws@0.3.9': dependencies: - '@atproto/common': 0.5.13 - '@atproto/common-web': 0.4.17 - '@atproto/crypto': 0.4.5 - '@atproto/repo': 0.8.12 - '@aws-sdk/client-cloudfront': 3.994.0 - '@aws-sdk/client-kms': 3.994.0 - '@aws-sdk/client-s3': 3.994.0 - '@aws-sdk/lib-storage': 3.879.0(@aws-sdk/client-s3@3.994.0) + '@atproto/common': 0.7.3 + '@atproto/common-web': 0.5.7 + '@atproto/crypto': 0.5.4 + '@atproto/repo': 0.10.7 + '@aws-sdk/client-cloudfront': 3.1101.0 + '@aws-sdk/client-kms': 3.1101.0 + '@aws-sdk/client-s3': 3.1101.0 + '@aws-sdk/lib-storage': 3.1101.0(@aws-sdk/client-s3@3.1101.0) '@noble/curves': 1.9.7 key-encoder: 2.0.3 - multiformats: 9.9.0 - uint8arrays: 3.0.0 - transitivePeerDependencies: - - aws-crt + multiformats: 13.4.2 + uint8arrays: 5.1.1 - '@atproto/common-web@0.4.17': + '@atproto/common-web@0.5.7': dependencies: - '@atproto/lex-data': 0.0.12 - '@atproto/lex-json': 0.0.12 - '@atproto/syntax': 0.4.3 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-json': 0.1.5 + '@atproto/syntax': 0.7.2 zod: 3.25.76 '@atproto/common@0.1.1': @@ -4501,14 +4319,13 @@ snapshots: pino: 8.21.0 zod: 3.25.76 - '@atproto/common@0.5.13': + '@atproto/common@0.7.3': dependencies: - '@atproto/common-web': 0.4.17 - '@atproto/lex-cbor': 0.0.13 - '@atproto/lex-data': 0.0.12 - iso-datestring-validator: 2.2.2 - multiformats: 9.9.0 - pino: 8.21.0 + '@atproto/common-web': 0.5.7 + '@atproto/lex-cbor': 0.1.5 + '@atproto/lex-data': 0.1.6 + multiformats: 13.4.2 + pino: 10.3.1 '@atproto/crypto@0.1.0': dependencies: @@ -4524,113 +4341,144 @@ snapshots: '@noble/hashes': 1.8.0 uint8arrays: 3.0.0 - '@atproto/did@0.3.0': + '@atproto/crypto@0.5.4': + dependencies: + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + uint8arrays: 5.1.1 + + '@atproto/did@0.5.4': dependencies: zod: 3.25.76 - '@atproto/identity@0.4.12': + '@atproto/identity@0.5.7': dependencies: - '@atproto/common-web': 0.4.17 - '@atproto/crypto': 0.4.5 + '@atproto/common-web': 0.5.7 + '@atproto/crypto': 0.5.4 - '@atproto/jwk-jose@0.1.11': + '@atproto/jwk-jose@0.2.4': dependencies: - '@atproto/jwk': 0.6.0 + '@atproto/jwk': 0.7.4 jose: 5.10.0 - '@atproto/jwk@0.6.0': + '@atproto/jwk@0.7.4': dependencies: - multiformats: 9.9.0 + multiformats: 13.4.2 zod: 3.25.76 - '@atproto/lex-cbor@0.0.13': + '@atproto/lex-builder@0.1.9': dependencies: - '@atproto/lex-data': 0.0.12 + '@atproto/lex-document': 0.1.7 + '@atproto/lex-schema': 0.2.3 + prettier: 3.8.1 + ts-morph: 27.0.2 tslib: 2.8.1 - '@atproto/lex-client@0.0.13': + '@atproto/lex-cbor@0.1.5': dependencies: - '@atproto/lex-data': 0.0.12 - '@atproto/lex-json': 0.0.12 - '@atproto/lex-schema': 0.0.13 + '@atproto/lex-data': 0.1.6 + cborg: 4.5.8 tslib: 2.8.1 - '@atproto/lex-data@0.0.12': + '@atproto/lex-client@0.3.1': dependencies: - multiformats: 9.9.0 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-json': 0.1.5 + '@atproto/lex-schema': 0.2.3 + tslib: 2.8.1 + + '@atproto/lex-data@0.1.6': + dependencies: + multiformats: 13.4.2 tslib: 2.8.1 - uint8arrays: 3.0.0 unicode-segmenter: 0.14.5 - '@atproto/lex-document@0.0.14': + '@atproto/lex-document@0.1.7': dependencies: - '@atproto/lex-schema': 0.0.13 + '@atproto/lex-schema': 0.2.3 core-js: 3.48.0 tslib: 2.8.1 - '@atproto/lex-json@0.0.12': + '@atproto/lex-installer@0.1.11': dependencies: - '@atproto/lex-data': 0.0.12 + '@atproto/lex-builder': 0.1.9 + '@atproto/lex-cbor': 0.1.5 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-document': 0.1.7 + '@atproto/lex-resolver': 0.2.4 + '@atproto/lex-schema': 0.2.3 + '@atproto/syntax': 0.7.2 tslib: 2.8.1 - '@atproto/lex-resolver@0.0.15': + '@atproto/lex-json@0.1.5': dependencies: - '@atproto-labs/did-resolver': 0.2.6 - '@atproto/crypto': 0.4.5 - '@atproto/lex-client': 0.0.13 - '@atproto/lex-data': 0.0.12 - '@atproto/lex-document': 0.0.14 - '@atproto/lex-schema': 0.0.13 - '@atproto/repo': 0.8.12 - '@atproto/syntax': 0.4.3 + '@atproto/lex-data': 0.1.6 tslib: 2.8.1 - '@atproto/lex-schema@0.0.13': + '@atproto/lex-resolver@0.2.4': dependencies: - '@atproto/lex-data': 0.0.12 - '@atproto/syntax': 0.4.3 + '@atproto-labs/did-resolver': 0.3.6 + '@atproto/crypto': 0.5.4 + '@atproto/lex-client': 0.3.1 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-document': 0.1.7 + '@atproto/lex-schema': 0.2.3 + '@atproto/repo': 0.10.7 + '@atproto/syntax': 0.7.2 tslib: 2.8.1 - '@atproto/lexicon@0.6.1': + '@atproto/lex-schema@0.2.3': dependencies: - '@atproto/common-web': 0.4.17 - '@atproto/syntax': 0.4.3 - iso-datestring-validator: 2.2.2 - multiformats: 9.9.0 - zod: 3.25.76 + '@atproto/lex-data': 0.1.6 + '@atproto/syntax': 0.7.2 + '@standard-schema/spec': 1.1.0 + tslib: 2.8.1 - '@atproto/oauth-provider-api@0.3.7': + '@atproto/lex@0.3.2': dependencies: - '@atproto/jwk': 0.6.0 - '@atproto/oauth-types': 0.6.2 - - '@atproto/oauth-provider-frontend@0.2.9': - optionalDependencies: - '@atproto/oauth-provider-api': 0.3.7 - - '@atproto/oauth-provider-ui@0.4.3': - optionalDependencies: - '@atproto/oauth-provider-api': 0.3.7 + '@atproto/lex-builder': 0.1.9 + '@atproto/lex-client': 0.3.1 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-installer': 0.1.11 + '@atproto/lex-json': 0.1.5 + '@atproto/lex-schema': 0.2.3 + tslib: 2.8.1 + yargs: 18.1.0 - '@atproto/oauth-provider@0.15.10': + '@atproto/lexicon@0.7.9': dependencies: - '@atproto-labs/fetch': 0.2.3 - '@atproto-labs/fetch-node': 0.2.0 - '@atproto-labs/pipe': 0.1.1 - '@atproto-labs/simple-store': 0.3.0 - '@atproto-labs/simple-store-memory': 0.1.4 - '@atproto/common': 0.5.13 - '@atproto/did': 0.3.0 - '@atproto/jwk': 0.6.0 - '@atproto/jwk-jose': 0.1.11 - '@atproto/lex-document': 0.0.14 - '@atproto/lex-resolver': 0.0.15 - '@atproto/oauth-provider-api': 0.3.7 - '@atproto/oauth-provider-frontend': 0.2.9 - '@atproto/oauth-provider-ui': 0.4.3 - '@atproto/oauth-scopes': 0.3.1 - '@atproto/oauth-types': 0.6.3 - '@atproto/syntax': 0.4.3 + '@atproto/common-web': 0.5.7 + '@atproto/syntax': 0.7.2 + multiformats: 13.4.2 + zod: 3.25.76 + + '@atproto/oauth-provider-api@0.7.7': + dependencies: + '@atproto/jwk': 0.7.4 + '@atproto/oauth-types': 0.7.5 + '@atproto/syntax': 0.7.2 + + '@atproto/oauth-provider-ui@0.8.9': + dependencies: + '@atproto/oauth-provider-api': 0.7.7 + + '@atproto/oauth-provider@0.21.1': + dependencies: + '@atproto-labs/fetch-node': 0.3.6 + '@atproto-labs/pipe': 0.2.4 + '@atproto-labs/simple-store': 0.5.0 + '@atproto-labs/simple-store-memory': 0.2.5 + '@atproto/common': 0.7.3 + '@atproto/did': 0.5.4 + '@atproto/jwk': 0.7.4 + '@atproto/jwk-jose': 0.2.4 + '@atproto/lex-document': 0.1.7 + '@atproto/lex-resolver': 0.2.4 + '@atproto/oauth-provider-api': 0.7.7 + '@atproto/oauth-provider-ui': 0.8.9 + '@atproto/oauth-scopes': 0.5.7 + '@atproto/oauth-types': 0.7.5 + '@atproto/syntax': 0.7.2 '@hapi/accept': 6.0.3 '@hapi/address': 5.1.1 '@hapi/bourne': 3.0.0 @@ -4645,48 +4493,42 @@ snapshots: transitivePeerDependencies: - supports-color - '@atproto/oauth-scopes@0.3.1': - dependencies: - '@atproto/did': 0.3.0 - '@atproto/syntax': 0.4.3 - - '@atproto/oauth-types@0.6.2': + '@atproto/oauth-scopes@0.5.7': dependencies: - '@atproto/did': 0.3.0 - '@atproto/jwk': 0.6.0 - zod: 3.25.76 + '@atproto/did': 0.5.4 + '@atproto/syntax': 0.7.2 - '@atproto/oauth-types@0.6.3': + '@atproto/oauth-types@0.7.5': dependencies: - '@atproto/did': 0.3.0 - '@atproto/jwk': 0.6.0 + '@atproto/did': 0.5.4 + '@atproto/jwk': 0.7.4 zod: 3.25.76 - '@atproto/pds@0.4.211': - dependencies: - '@atproto-labs/fetch-node': 0.2.0 - '@atproto-labs/simple-store': 0.3.0 - '@atproto-labs/simple-store-memory': 0.1.4 - '@atproto-labs/simple-store-redis': 0.0.1(ioredis@5.9.3) - '@atproto-labs/xrpc-utils': 0.0.24 - '@atproto/api': 0.18.21 - '@atproto/aws': 0.2.31 - '@atproto/common': 0.5.13 - '@atproto/crypto': 0.4.5 - '@atproto/identity': 0.4.12 - '@atproto/lex-cbor': 0.0.13 - '@atproto/lex-data': 0.0.12 - '@atproto/lexicon': 0.6.1 - '@atproto/oauth-provider': 0.15.10 - '@atproto/oauth-scopes': 0.3.1 - '@atproto/repo': 0.8.12 - '@atproto/syntax': 0.4.3 - '@atproto/xrpc': 0.7.7 - '@atproto/xrpc-server': 0.10.14 + '@atproto/pds@0.5.23': + dependencies: + '@atproto-labs/fetch-node': 0.3.6 + '@atproto-labs/simple-store': 0.5.0 + '@atproto-labs/simple-store-memory': 0.2.5 + '@atproto-labs/simple-store-redis': 0.1.5(ioredis@5.9.3) + '@atproto-labs/xrpc-utils': 0.1.12 + '@atproto/aws': 0.3.9 + '@atproto/common': 0.7.3 + '@atproto/crypto': 0.5.4 + '@atproto/did': 0.5.4 + '@atproto/identity': 0.5.7 + '@atproto/lex': 0.3.2 + '@atproto/lex-cbor': 0.1.5 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-json': 0.1.5 + '@atproto/oauth-provider': 0.21.1 + '@atproto/oauth-scopes': 0.5.7 + '@atproto/repo': 0.10.7 + '@atproto/syntax': 0.7.2 + '@atproto/xrpc': 0.8.8 + '@atproto/xrpc-server': 0.11.13 '@did-plc/lib': 0.0.4 '@hapi/address': 5.1.1 - better-sqlite3: 10.1.0 - bytes: 3.1.2 + better-sqlite3: 12.6.2 compression: 1.8.1 cors: 2.8.6 disposable-email-domains-js: 1.21.0 @@ -4699,33 +4541,30 @@ snapshots: ioredis: 5.9.3 jose: 5.10.0 key-encoder: 2.0.3 - kysely: 0.22.0 - multiformats: 9.9.0 + kysely: 0.29.4 nodemailer: 6.10.1 nodemailer-html-to-text: 3.2.0 - p-queue: 6.6.2 - pino: 8.21.0 - pino-http: 8.6.1 + p-queue: 8.1.1 + pino: 10.3.1 + pino-http: 11.0.0 typed-emitter: 2.1.0 - uint8arrays: 3.0.0 - undici: 6.23.0 + uint8arrays: 5.1.1 + undici: 8.10.0 zod: 3.25.76 transitivePeerDependencies: - - aws-crt - bufferutil - debug - supports-color - utf-8-validate - '@atproto/repo@0.8.12': + '@atproto/repo@0.10.7': dependencies: - '@atproto/common': 0.5.13 - '@atproto/common-web': 0.4.17 - '@atproto/crypto': 0.4.5 - '@atproto/lexicon': 0.6.1 - '@ipld/dag-cbor': 7.0.3 - multiformats: 9.9.0 - uint8arrays: 3.0.0 + '@atproto/common': 0.7.3 + '@atproto/common-web': 0.5.7 + '@atproto/crypto': 0.5.4 + '@atproto/lex-cbor': 0.1.5 + '@atproto/lex-data': 0.1.6 + '@atproto/syntax': 0.7.2 varint: 6.0.0 zod: 3.25.76 @@ -4733,632 +4572,242 @@ snapshots: dependencies: tslib: 2.8.1 - '@atproto/ws-client@0.0.4': + '@atproto/syntax@0.7.2': dependencies: - '@atproto/common': 0.5.13 + iso-datestring-validator: 2.2.2 + tslib: 2.8.1 + + '@atproto/ws-client@0.1.8': + dependencies: + '@atproto/common': 0.7.3 ws: 8.19.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@atproto/xrpc-server@0.10.14': - dependencies: - '@atproto/common': 0.5.13 - '@atproto/crypto': 0.4.5 - '@atproto/lex-cbor': 0.0.13 - '@atproto/lex-data': 0.0.12 - '@atproto/lexicon': 0.6.1 - '@atproto/ws-client': 0.0.4 - '@atproto/xrpc': 0.7.7 + '@atproto/xrpc-server@0.11.13': + dependencies: + '@atproto/common': 0.7.3 + '@atproto/crypto': 0.5.4 + '@atproto/lex-cbor': 0.1.5 + '@atproto/lex-client': 0.3.1 + '@atproto/lex-data': 0.1.6 + '@atproto/lex-json': 0.1.5 + '@atproto/lex-schema': 0.2.3 + '@atproto/lexicon': 0.7.9 + '@atproto/ws-client': 0.1.8 + '@atproto/xrpc': 0.8.8 express: 4.22.1 http-errors: 2.0.1 mime-types: 2.1.35 rate-limiter-flexible: 2.4.2 ws: 8.19.0 - zod: 3.25.76 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@atproto/xrpc@0.7.7': + '@atproto/xrpc@0.8.8': dependencies: - '@atproto/lexicon': 0.6.1 + '@atproto/lexicon': 0.7.9 zod: 3.25.76 - '@aws-crypto/crc32@5.2.0': + '@aws-sdk/checksums@3.1000.24': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.1 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-crypto/crc32c@5.2.0': + '@aws-sdk/client-cloudfront@3.1101.0': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.1 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/credential-provider-node': 3.972.76 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-crypto/sha1-browser@5.2.0': + '@aws-sdk/client-kms@3.1101.0': dependencies: - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-locate-window': 3.965.4 - '@smithy/util-utf8': 2.3.0 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/credential-provider-node': 3.972.76 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-crypto/sha256-browser@5.2.0': - dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-locate-window': 3.965.4 - '@smithy/util-utf8': 2.3.0 + '@aws-sdk/client-s3@3.1101.0': + dependencies: + '@aws-sdk/checksums': 3.1000.24 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/credential-provider-node': 3.972.76 + '@aws-sdk/middleware-sdk-s3': 3.972.70 + '@aws-sdk/signature-v4-multi-region': 3.996.43 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-crypto/sha256-js@5.2.0': + '@aws-sdk/core@3.977.4': dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.1 + '@aws-sdk/types': 3.974.2 + '@aws-sdk/xml-builder': 3.972.37 + '@aws/lambda-invoke-store': 0.3.0 + '@smithy/core': 3.31.1 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 + bowser: 2.14.1 tslib: 2.8.1 - '@aws-crypto/supports-web-crypto@5.2.0': + '@aws-sdk/credential-provider-env@3.972.65': dependencies: + '@aws-sdk/core': 3.977.4 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-crypto/util@5.2.0': + '@aws-sdk/credential-provider-http@3.972.67': dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-sdk/client-cloudfront@3.994.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/credential-provider-node': 3.972.10 - '@aws-sdk/middleware-host-header': 3.972.3 - '@aws-sdk/middleware-logger': 3.972.3 - '@aws-sdk/middleware-recursion-detection': 3.972.3 - '@aws-sdk/middleware-user-agent': 3.972.11 - '@aws-sdk/region-config-resolver': 3.972.3 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-endpoints': 3.994.0 - '@aws-sdk/util-user-agent-browser': 3.972.3 - '@aws-sdk/util-user-agent-node': 3.972.9 - '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.23.2 - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/hash-node': 4.2.8 - '@smithy/invalid-dependency': 4.2.8 - '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/middleware-retry': 4.4.33 - '@smithy/middleware-serde': 4.2.9 - '@smithy/middleware-stack': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/node-http-handler': 4.4.10 - '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.32 - '@smithy/util-defaults-mode-node': 4.2.35 - '@smithy/util-endpoints': 3.2.8 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/util-stream': 4.5.12 - '@smithy/util-utf8': 4.2.0 - '@smithy/util-waiter': 4.2.8 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-kms@3.994.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/credential-provider-node': 3.972.10 - '@aws-sdk/middleware-host-header': 3.972.3 - '@aws-sdk/middleware-logger': 3.972.3 - '@aws-sdk/middleware-recursion-detection': 3.972.3 - '@aws-sdk/middleware-user-agent': 3.972.11 - '@aws-sdk/region-config-resolver': 3.972.3 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-endpoints': 3.994.0 - '@aws-sdk/util-user-agent-browser': 3.972.3 - '@aws-sdk/util-user-agent-node': 3.972.9 - '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.23.2 - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/hash-node': 4.2.8 - '@smithy/invalid-dependency': 4.2.8 - '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/middleware-retry': 4.4.33 - '@smithy/middleware-serde': 4.2.9 - '@smithy/middleware-stack': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/node-http-handler': 4.4.10 - '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.32 - '@smithy/util-defaults-mode-node': 4.2.35 - '@smithy/util-endpoints': 3.2.8 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-s3@3.994.0': - dependencies: - '@aws-crypto/sha1-browser': 5.2.0 - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/credential-provider-node': 3.972.10 - '@aws-sdk/middleware-bucket-endpoint': 3.972.3 - '@aws-sdk/middleware-expect-continue': 3.972.3 - '@aws-sdk/middleware-flexible-checksums': 3.972.9 - '@aws-sdk/middleware-host-header': 3.972.3 - '@aws-sdk/middleware-location-constraint': 3.972.3 - '@aws-sdk/middleware-logger': 3.972.3 - '@aws-sdk/middleware-recursion-detection': 3.972.3 - '@aws-sdk/middleware-sdk-s3': 3.972.11 - '@aws-sdk/middleware-ssec': 3.972.3 - '@aws-sdk/middleware-user-agent': 3.972.11 - '@aws-sdk/region-config-resolver': 3.972.3 - '@aws-sdk/signature-v4-multi-region': 3.994.0 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-endpoints': 3.994.0 - '@aws-sdk/util-user-agent-browser': 3.972.3 - '@aws-sdk/util-user-agent-node': 3.972.9 - '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.23.2 - '@smithy/eventstream-serde-browser': 4.2.8 - '@smithy/eventstream-serde-config-resolver': 4.3.8 - '@smithy/eventstream-serde-node': 4.2.8 - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/hash-blob-browser': 4.2.9 - '@smithy/hash-node': 4.2.8 - '@smithy/hash-stream-node': 4.2.8 - '@smithy/invalid-dependency': 4.2.8 - '@smithy/md5-js': 4.2.8 - '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/middleware-retry': 4.4.33 - '@smithy/middleware-serde': 4.2.9 - '@smithy/middleware-stack': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/node-http-handler': 4.4.10 - '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.32 - '@smithy/util-defaults-mode-node': 4.2.35 - '@smithy/util-endpoints': 3.2.8 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/util-stream': 4.5.12 - '@smithy/util-utf8': 4.2.0 - '@smithy/util-waiter': 4.2.8 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.993.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/middleware-host-header': 3.972.3 - '@aws-sdk/middleware-logger': 3.972.3 - '@aws-sdk/middleware-recursion-detection': 3.972.3 - '@aws-sdk/middleware-user-agent': 3.972.11 - '@aws-sdk/region-config-resolver': 3.972.3 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-endpoints': 3.993.0 - '@aws-sdk/util-user-agent-browser': 3.972.3 - '@aws-sdk/util-user-agent-node': 3.972.9 - '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.23.2 - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/hash-node': 4.2.8 - '@smithy/invalid-dependency': 4.2.8 - '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/middleware-retry': 4.4.33 - '@smithy/middleware-serde': 4.2.9 - '@smithy/middleware-stack': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/node-http-handler': 4.4.10 - '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.32 - '@smithy/util-defaults-mode-node': 4.2.35 - '@smithy/util-endpoints': 3.2.8 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.973.11': - dependencies: - '@aws-sdk/types': 3.973.1 - '@aws-sdk/xml-builder': 3.972.5 - '@smithy/core': 3.23.2 - '@smithy/node-config-provider': 4.3.8 - '@smithy/property-provider': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/signature-v4': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-utf8': 4.2.0 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/crc64-nvme@3.972.0': - dependencies: - '@smithy/types': 4.12.0 + '@aws-sdk/credential-provider-ini@3.973.10': + dependencies: + '@aws-sdk/core': 3.977.4 + '@aws-sdk/credential-provider-env': 3.972.65 + '@aws-sdk/credential-provider-http': 3.972.67 + '@aws-sdk/credential-provider-login': 3.972.72 + '@aws-sdk/credential-provider-process': 3.972.65 + '@aws-sdk/credential-provider-sso': 3.973.9 + '@aws-sdk/credential-provider-web-identity': 3.972.71 + '@aws-sdk/nested-clients': 3.997.39 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.9': + '@aws-sdk/credential-provider-login@3.972.72': dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/types': 3.973.1 - '@smithy/property-provider': 4.2.8 - '@smithy/types': 4.12.0 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/nested-clients': 3.997.39 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.11': - dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/types': 3.973.1 - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/node-http-handler': 4.4.10 - '@smithy/property-provider': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/util-stream': 4.5.12 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-ini@3.972.9': - dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/credential-provider-env': 3.972.9 - '@aws-sdk/credential-provider-http': 3.972.11 - '@aws-sdk/credential-provider-login': 3.972.9 - '@aws-sdk/credential-provider-process': 3.972.9 - '@aws-sdk/credential-provider-sso': 3.972.9 - '@aws-sdk/credential-provider-web-identity': 3.972.9 - '@aws-sdk/nested-clients': 3.993.0 - '@aws-sdk/types': 3.973.1 - '@smithy/credential-provider-imds': 4.2.8 - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-login@3.972.9': - dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/nested-clients': 3.993.0 - '@aws-sdk/types': 3.973.1 - '@smithy/property-provider': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.972.10': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.9 - '@aws-sdk/credential-provider-http': 3.972.11 - '@aws-sdk/credential-provider-ini': 3.972.9 - '@aws-sdk/credential-provider-process': 3.972.9 - '@aws-sdk/credential-provider-sso': 3.972.9 - '@aws-sdk/credential-provider-web-identity': 3.972.9 - '@aws-sdk/types': 3.973.1 - '@smithy/credential-provider-imds': 4.2.8 - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 + '@aws-sdk/credential-provider-node@3.972.76': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.65 + '@aws-sdk/credential-provider-http': 3.972.67 + '@aws-sdk/credential-provider-ini': 3.973.10 + '@aws-sdk/credential-provider-process': 3.972.65 + '@aws-sdk/credential-provider-sso': 3.973.9 + '@aws-sdk/credential-provider-web-identity': 3.972.71 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-process@3.972.9': + '@aws-sdk/credential-provider-process@3.972.65': dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/types': 3.973.1 - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.9': + '@aws-sdk/credential-provider-sso@3.973.9': dependencies: - '@aws-sdk/client-sso': 3.993.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/token-providers': 3.993.0 - '@aws-sdk/types': 3.973.1 - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/nested-clients': 3.997.39 + '@aws-sdk/token-providers': 3.1100.0 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-web-identity@3.972.9': + '@aws-sdk/credential-provider-web-identity@3.972.71': dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/nested-clients': 3.993.0 - '@aws-sdk/types': 3.973.1 - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/nested-clients': 3.997.39 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/lib-storage@3.879.0(@aws-sdk/client-s3@3.994.0)': + '@aws-sdk/lib-storage@3.1101.0(@aws-sdk/client-s3@3.1101.0)': dependencies: - '@aws-sdk/client-s3': 3.994.0 - '@smithy/abort-controller': 4.2.8 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/smithy-client': 4.11.5 + '@aws-sdk/client-s3': 3.1101.0 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/node-config-provider': 4.3.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-config-provider': 4.2.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-expect-continue@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-flexible-checksums@3.972.9': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/crc64-nvme': 3.972.0 - '@aws-sdk/types': 3.973.1 - '@smithy/is-array-buffer': 4.2.0 - '@smithy/node-config-provider': 4.3.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-stream': 4.5.12 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-host-header@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-location-constraint@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-logger@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-recursion-detection@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@aws/lambda-invoke-store': 0.2.3 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-s3@3.972.11': - dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/core': 3.23.2 - '@smithy/node-config-provider': 4.3.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/signature-v4': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/util-config-provider': 4.2.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-stream': 4.5.12 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-ssec@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-user-agent@3.972.11': - dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-endpoints': 3.993.0 - '@smithy/core': 3.23.2 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/nested-clients@3.993.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.11 - '@aws-sdk/middleware-host-header': 3.972.3 - '@aws-sdk/middleware-logger': 3.972.3 - '@aws-sdk/middleware-recursion-detection': 3.972.3 - '@aws-sdk/middleware-user-agent': 3.972.11 - '@aws-sdk/region-config-resolver': 3.972.3 - '@aws-sdk/types': 3.973.1 - '@aws-sdk/util-endpoints': 3.993.0 - '@aws-sdk/util-user-agent-browser': 3.972.3 - '@aws-sdk/util-user-agent-node': 3.972.9 - '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.23.2 - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/hash-node': 4.2.8 - '@smithy/invalid-dependency': 4.2.8 - '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/middleware-retry': 4.4.33 - '@smithy/middleware-serde': 4.2.9 - '@smithy/middleware-stack': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/node-http-handler': 4.4.10 - '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.32 - '@smithy/util-defaults-mode-node': 4.2.35 - '@smithy/util-endpoints': 3.2.8 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/region-config-resolver@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/config-resolver': 4.4.6 - '@smithy/node-config-provider': 4.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/signature-v4-multi-region@3.994.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.11 - '@aws-sdk/types': 3.973.1 - '@smithy/protocol-http': 5.3.8 - '@smithy/signature-v4': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/token-providers@3.993.0': - dependencies: - '@aws-sdk/core': 3.973.11 - '@aws-sdk/nested-clients': 3.993.0 - '@aws-sdk/types': 3.973.1 - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/types@3.973.1': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@aws-sdk/util-arn-parser@3.972.2': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-endpoints@3.993.0': + '@aws-sdk/middleware-sdk-s3@3.972.70': dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-endpoints': 3.2.8 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/signature-v4-multi-region': 3.996.43 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.994.0': + '@aws-sdk/nested-clients@3.997.39': dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-endpoints': 3.2.8 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/signature-v4-multi-region': 3.996.43 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.4': + '@aws-sdk/signature-v4-multi-region@3.996.43': dependencies: + '@aws-sdk/types': 3.974.2 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.972.3': + '@aws-sdk/token-providers@3.1100.0': dependencies: - '@aws-sdk/types': 3.973.1 - '@smithy/types': 4.12.0 - bowser: 2.14.1 + '@aws-sdk/core': 3.977.4 + '@aws-sdk/nested-clients': 3.997.39 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.972.9': + '@aws-sdk/types@3.974.2': dependencies: - '@aws-sdk/middleware-user-agent': 3.972.11 - '@aws-sdk/types': 3.973.1 - '@smithy/node-config-provider': 4.3.8 - '@smithy/types': 4.12.0 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.5': + '@aws-sdk/xml-builder@3.972.37': dependencies: - '@smithy/types': 4.12.0 - fast-xml-parser: 5.3.6 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws/lambda-invoke-store@0.2.3': {} + '@aws/lambda-invoke-store@0.3.0': {} '@babel/code-frame@7.29.0': dependencies: @@ -6132,341 +5581,36 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@smithy/abort-controller@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader-native@4.2.1': - dependencies: - '@smithy/util-base64': 4.3.0 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader@5.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/config-resolver@4.4.6': - dependencies: - '@smithy/node-config-provider': 4.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-config-provider': 4.2.0 - '@smithy/util-endpoints': 3.2.8 - '@smithy/util-middleware': 4.2.8 - tslib: 2.8.1 - - '@smithy/core@3.23.2': - dependencies: - '@smithy/middleware-serde': 4.2.9 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-stream': 4.5.12 - '@smithy/util-utf8': 4.2.0 - '@smithy/uuid': 1.1.0 - tslib: 2.8.1 - - '@smithy/credential-provider-imds@4.2.8': - dependencies: - '@smithy/node-config-provider': 4.3.8 - '@smithy/property-provider': 4.2.8 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - tslib: 2.8.1 - - '@smithy/eventstream-codec@4.2.8': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.12.0 - '@smithy/util-hex-encoding': 4.2.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-browser@4.2.8': - dependencies: - '@smithy/eventstream-serde-universal': 4.2.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-config-resolver@4.3.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-node@4.2.8': + '@smithy/core@3.31.1': dependencies: - '@smithy/eventstream-serde-universal': 4.2.8 - '@smithy/types': 4.12.0 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.8': + '@smithy/credential-provider-imds@4.4.16': dependencies: - '@smithy/eventstream-codec': 4.2.8 - '@smithy/types': 4.12.0 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.9': + '@smithy/fetch-http-handler@5.6.13': dependencies: - '@smithy/protocol-http': 5.3.8 - '@smithy/querystring-builder': 4.2.8 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.2.9': + '@smithy/node-http-handler@4.9.13': dependencies: - '@smithy/chunked-blob-reader': 5.2.0 - '@smithy/chunked-blob-reader-native': 4.2.1 - '@smithy/types': 4.12.0 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/hash-node@4.2.8': + '@smithy/signature-v4@5.6.12': dependencies: - '@smithy/types': 4.12.0 - '@smithy/util-buffer-from': 4.2.0 - '@smithy/util-utf8': 4.2.0 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 - '@smithy/hash-stream-node@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@smithy/invalid-dependency@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/is-array-buffer@2.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/is-array-buffer@4.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/md5-js@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@smithy/middleware-content-length@4.2.8': - dependencies: - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/middleware-endpoint@4.4.16': - dependencies: - '@smithy/core': 3.23.2 - '@smithy/middleware-serde': 4.2.9 - '@smithy/node-config-provider': 4.3.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-middleware': 4.2.8 - tslib: 2.8.1 - - '@smithy/middleware-retry@4.4.33': - dependencies: - '@smithy/node-config-provider': 4.3.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/service-error-classification': 4.2.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/uuid': 1.1.0 - tslib: 2.8.1 - - '@smithy/middleware-serde@4.2.9': - dependencies: - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/middleware-stack@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/node-config-provider@4.3.8': - dependencies: - '@smithy/property-provider': 4.2.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/node-http-handler@4.4.10': - dependencies: - '@smithy/abort-controller': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/querystring-builder': 4.2.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/property-provider@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/protocol-http@5.3.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/querystring-builder@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - '@smithy/util-uri-escape': 4.2.0 - tslib: 2.8.1 - - '@smithy/querystring-parser@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/service-error-classification@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - - '@smithy/shared-ini-file-loader@4.4.3': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/signature-v4@5.3.8': - dependencies: - '@smithy/is-array-buffer': 4.2.0 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-hex-encoding': 4.2.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-uri-escape': 4.2.0 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@smithy/smithy-client@4.11.5': - dependencies: - '@smithy/core': 3.23.2 - '@smithy/middleware-endpoint': 4.4.16 - '@smithy/middleware-stack': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-stream': 4.5.12 - tslib: 2.8.1 - - '@smithy/types@4.12.0': - dependencies: - tslib: 2.8.1 - - '@smithy/url-parser@4.2.8': - dependencies: - '@smithy/querystring-parser': 4.2.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/util-base64@4.3.0': - dependencies: - '@smithy/util-buffer-from': 4.2.0 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@smithy/util-body-length-browser@4.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-body-length-node@4.2.1': - dependencies: - tslib: 2.8.1 - - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-buffer-from@4.2.0': - dependencies: - '@smithy/is-array-buffer': 4.2.0 - tslib: 2.8.1 - - '@smithy/util-config-provider@4.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-defaults-mode-browser@4.3.32': - dependencies: - '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/util-defaults-mode-node@4.2.35': - dependencies: - '@smithy/config-resolver': 4.4.6 - '@smithy/credential-provider-imds': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.11.5 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/util-endpoints@3.2.8': - dependencies: - '@smithy/node-config-provider': 4.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/util-hex-encoding@4.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-middleware@4.2.8': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/util-retry@4.2.8': - dependencies: - '@smithy/service-error-classification': 4.2.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/util-stream@4.5.12': - dependencies: - '@smithy/fetch-http-handler': 5.3.9 - '@smithy/node-http-handler': 4.4.10 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 - '@smithy/util-buffer-from': 4.2.0 - '@smithy/util-hex-encoding': 4.2.0 - '@smithy/util-utf8': 4.2.0 - tslib: 2.8.1 - - '@smithy/util-uri-escape@4.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-utf8@4.2.0': - dependencies: - '@smithy/util-buffer-from': 4.2.0 - tslib: 2.8.1 - - '@smithy/util-waiter@4.2.8': - dependencies: - '@smithy/abort-controller': 4.2.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - - '@smithy/uuid@1.1.0': + '@smithy/types@4.16.1': dependencies: tslib: 2.8.1 @@ -6482,6 +5626,12 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@ts-morph/common@0.28.1': + dependencies: + minimatch: 10.2.2 + path-browserify: 1.0.1 + tinyglobby: 0.2.15 + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -6489,11 +5639,11 @@ snapshots: '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 20.19.33 + '@types/node': 22.19.11 '@types/bn.js@5.2.0': dependencies: - '@types/node': 20.19.33 + '@types/node': 22.19.11 '@types/body-parser@1.19.6': dependencies: @@ -6557,7 +5707,7 @@ snapshots: '@types/nodemailer@6.4.22': dependencies: - '@types/node': 20.19.33 + '@types/node': 22.19.11 '@types/normalize-package-data@2.4.4': {} @@ -6939,8 +6089,6 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - await-lock@2.2.2: {} - axios@1.13.5: dependencies: follow-redirects: 1.15.11 @@ -6989,11 +6137,6 @@ snapshots: dependencies: is-windows: 1.0.2 - better-sqlite3@10.1.0: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.3 - better-sqlite3@12.6.2: dependencies: bindings: 1.5.0 @@ -7097,6 +6240,8 @@ snapshots: cborg@1.10.2: {} + cborg@4.5.8: {} + chai@6.2.2: {} chalk@4.1.2: @@ -7118,8 +6263,16 @@ snapshots: client-only@0.0.1: {} + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + cluster-key-slot@1.1.2: {} + code-block-writer@13.0.3: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -7316,6 +6469,8 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -7450,6 +6605,8 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + escalade@3.2.0: {} + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} @@ -7604,7 +6761,7 @@ snapshots: event-target-shim@5.0.1: {} - eventemitter3@4.0.7: {} + eventemitter3@5.0.4: {} events@3.3.0: {} @@ -7674,10 +6831,6 @@ snapshots: fast-sha256@1.3.0: {} - fast-xml-parser@5.3.6: - dependencies: - strnum: 2.1.2 - fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -7797,6 +6950,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.6.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -8207,10 +7362,10 @@ snapshots: dependencies: seed-random: 2.2.0 - kysely@0.22.0: {} - kysely@0.28.11: {} + kysely@0.29.4: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -8319,6 +7474,8 @@ snapshots: ms@2.1.3: {} + multiformats@13.4.2: {} + multiformats@9.9.0: {} mz@2.7.0: @@ -8498,15 +7655,17 @@ snapshots: p-map@2.1.0: {} - p-queue@6.6.2: + p-queue@8.1.1: dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 + eventemitter3: 5.0.4 + p-timeout: 6.1.4 p-timeout@3.2.0: dependencies: p-finally: 1.0.0 + p-timeout@6.1.4: {} + p-try@2.2.0: {} p-wait-for@3.2.0: @@ -8531,6 +7690,8 @@ snapshots: parseurl@1.3.3: {} + path-browserify@1.0.1: {} + path-exists@4.0.0: {} path-key@3.1.1: {} @@ -8572,12 +7733,12 @@ snapshots: dependencies: split2: 4.2.0 - pino-http@8.6.1: + pino-http@11.0.0: dependencies: get-caller-file: 2.0.5 - pino: 8.21.0 - pino-std-serializers: 6.2.2 - process-warning: 3.0.0 + pino: 10.3.1 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 pino-std-serializers@6.2.2: {} @@ -9104,6 +8265,17 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.2 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.1.2 + + string-width@8.2.2: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.1.2 + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.9 @@ -9143,8 +8315,6 @@ snapshots: strip-json-comments@2.0.1: {} - strnum@2.1.2: {} - strtok3@6.3.0: dependencies: '@tokenizer/token': 0.3.0 @@ -9217,8 +8387,6 @@ snapshots: tinyrainbow@3.0.3: {} - tlds@1.261.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -9240,6 +8408,11 @@ snapshots: ts-dedent@2.2.0: {} + ts-morph@27.0.2: + dependencies: + '@ts-morph/common': 0.28.1 + code-block-writer: 13.0.3 + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -9334,6 +8507,10 @@ snapshots: dependencies: multiformats: 9.9.0 + uint8arrays@5.1.1: + dependencies: + multiformats: 13.4.2 + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -9345,6 +8522,10 @@ snapshots: undici@6.23.0: {} + undici@7.29.0: {} + + undici@8.10.0: {} + unicode-segmenter@0.14.5: {} unicorn-magic@0.4.0: {} @@ -9557,14 +8738,33 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.2 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrappy@1.0.2: {} ws@8.19.0: {} xmlbuilder@15.1.1: {} + y18n@5.0.8: {} + yaml@2.8.3: {} + yargs-parser@22.0.0: {} + + yargs@18.1.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 8.2.2 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yocto-queue@0.1.0: {} yup@1.7.1: