a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
atproto bluesky typescript npm
101
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(oauth-node-client): public client support

closes https://github.com/mary-ext/atcute/pull/58

Mary 04631931 44247d1f

+912 -2075
+6
.changeset/plain-socks-itch.md
··· 1 + --- 2 + '@atcute/oauth-node-client': minor 3 + '@atcute/oauth-types': patch 4 + --- 5 + 6 + public client support
+1
packages/oauth/node-client-public-example/.gitignore
··· 1 + node_modules
+46
packages/oauth/node-client-public-example/README.md
··· 1 + # node-client-public-example 2 + 3 + a simple CLI demonstrating [`@atcute/oauth-node-client`](../node-client) with a public (loopback) 4 + client. 5 + 6 + this example shows how to authenticate with AT Protocol OAuth without needing to set up a 7 + confidential client with keys. it's useful for CLI tools, local development, and testing. 8 + 9 + ## usage 10 + 11 + ```bash 12 + # authenticate and show your profile 13 + bun run start alice.bsky.social 14 + 15 + # or use a DID 16 + bun run start did:plc:z72i7hdynmk6r22z27h6tvur 17 + ``` 18 + 19 + the CLI will: 20 + 21 + 1. start a local callback server on a random port 22 + 2. print an authorization URL for you to open 23 + 3. wait for you to authorize the app 24 + 4. fetch and display your profile information 25 + 26 + ## how it works 27 + 28 + loopback clients use `http://localhost` as the client origin, which the OAuth server recognizes as a 29 + public client. no keys or client registration are required. 30 + 31 + ```typescript 32 + import { OAuthClient, scope } from '@atcute/oauth-node-client'; 33 + 34 + const oauth = new OAuthClient({ 35 + metadata: { 36 + // no client_id needed - it's built automatically from redirect_uris and scope 37 + redirect_uris: ['http://127.0.0.1:PORT/callback'], 38 + scope: [scope.rpc({ lxm: ['app.bsky.actor.getProfile'], aud: '*' })], 39 + }, 40 + // no keyset - this makes it a public client 41 + actorResolver: /* ... */, 42 + stores: /* ... */, 43 + }); 44 + ``` 45 + 46 + the library automatically builds the `client_id` from the redirect URIs and scope.
+19
packages/oauth/node-client-public-example/package.json
··· 1 + { 2 + "name": "node-client-public-example", 3 + "private": true, 4 + "type": "module", 5 + "scripts": { 6 + "start": "bun run src/index.ts" 7 + }, 8 + "dependencies": { 9 + "@atcute/bluesky": "workspace:^", 10 + "@atcute/client": "workspace:^", 11 + "@atcute/identity-resolver": "workspace:^", 12 + "@atcute/identity-resolver-node": "workspace:^", 13 + "@atcute/lexicons": "workspace:^", 14 + "@atcute/oauth-node-client": "workspace:^" 15 + }, 16 + "devDependencies": { 17 + "@types/bun": "latest" 18 + } 19 + }
+146
packages/oauth/node-client-public-example/src/index.ts
··· 1 + import { AppBskyActorGetProfile } from '@atcute/bluesky'; 2 + import { Client, ok } from '@atcute/client'; 3 + import { 4 + CompositeDidDocumentResolver, 5 + CompositeHandleResolver, 6 + LocalActorResolver, 7 + PlcDidDocumentResolver, 8 + WebDidDocumentResolver, 9 + WellKnownHandleResolver, 10 + } from '@atcute/identity-resolver'; 11 + import { NodeDnsHandleResolver } from '@atcute/identity-resolver-node'; 12 + import { isActorIdentifier } from '@atcute/lexicons/syntax'; 13 + import { MemoryStore, OAuthClient, scope, type StoredState } from '@atcute/oauth-node-client'; 14 + 15 + const TEN_MINUTES_MS = 10 * 60_000; 16 + 17 + // get identifier from command line 18 + const identifier = process.argv[2]?.trim(); 19 + if (!identifier) { 20 + console.error('usage: bun run start <handle-or-did>'); 21 + console.error(' example: bun run start alice.bsky.social'); 22 + console.error(' example: bun run start did:plc:z72i7hdynmk6r22z27h6tvur'); 23 + process.exit(1); 24 + } 25 + 26 + if (!isActorIdentifier(identifier)) { 27 + console.error(`error: invalid identifier "${identifier}"`); 28 + console.error('expected a handle (e.g. alice.bsky.social) or did (e.g. did:plc:...)'); 29 + process.exit(1); 30 + } 31 + 32 + // deferred for callback 33 + const deferred = Promise.withResolvers<URLSearchParams>(); 34 + 35 + // start callback server on a random port 36 + using server = Bun.serve({ 37 + port: 0, 38 + fetch(req) { 39 + const url = new URL(req.url); 40 + 41 + if (url.pathname === '/callback') { 42 + deferred.resolve(url.searchParams); 43 + 44 + return new Response( 45 + `<!doctype html> 46 + <html> 47 + <head><title>success</title></head> 48 + <body> 49 + <h1>authenticated!</h1> 50 + <p>you can close this window and return to the terminal.</p> 51 + </body> 52 + </html>`, 53 + { headers: { 'content-type': 'text/html' } }, 54 + ); 55 + } 56 + 57 + return new Response('not found', { status: 404 }); 58 + }, 59 + }); 60 + 61 + server.unref(); 62 + 63 + const port = server.port; 64 + const redirectUri = `http://127.0.0.1:${port}/callback`; 65 + 66 + // timeout after 5 minutes 67 + const timeout = setTimeout(() => { 68 + deferred.reject(new Error('OAuth callback timed out after 5 minutes')); 69 + }, 5 * 60_000); 70 + 71 + // create OAuth client with loopback metadata (no client_id needed!) 72 + const oauth = new OAuthClient({ 73 + metadata: { 74 + redirect_uris: [redirectUri], 75 + scope: [scope.rpc({ lxm: ['app.bsky.actor.getProfile'], aud: '*' })], 76 + }, 77 + 78 + actorResolver: new LocalActorResolver({ 79 + handleResolver: new CompositeHandleResolver({ 80 + methods: { 81 + dns: new NodeDnsHandleResolver(), 82 + http: new WellKnownHandleResolver(), 83 + }, 84 + }), 85 + didDocumentResolver: new CompositeDidDocumentResolver({ 86 + methods: { 87 + plc: new PlcDidDocumentResolver(), 88 + web: new WebDidDocumentResolver(), 89 + }, 90 + }), 91 + }), 92 + 93 + stores: { 94 + sessions: new MemoryStore({ maxSize: 10 }), 95 + states: new MemoryStore<string, StoredState>({ 96 + maxSize: 10, 97 + ttl: TEN_MINUTES_MS, 98 + ttlAutopurge: true, 99 + }), 100 + }, 101 + }); 102 + 103 + // start authorization flow 104 + const { url } = await oauth.authorize({ 105 + target: { type: 'account', identifier }, 106 + redirectUri, 107 + }); 108 + 109 + console.log(`\nopen this URL in your browser to authorize:\n${url.href}\n`); 110 + 111 + const params = await deferred.promise; 112 + clearTimeout(timeout); 113 + 114 + const { session } = await oauth.callback(params, { redirectUri }); 115 + 116 + console.log('authenticated'); 117 + 118 + console.log(`\nauthenticated as: ${session.did}\n`); 119 + 120 + // fetch profile 121 + const rpc = new Client({ handler: session }); 122 + const profile = await ok( 123 + rpc.call(AppBskyActorGetProfile, { 124 + params: { actor: session.did }, 125 + }), 126 + ); 127 + 128 + console.log('='.repeat(50)); 129 + console.log('profile'); 130 + console.log('='.repeat(50)); 131 + console.log(`handle: @${profile.handle}`); 132 + console.log(`did: ${profile.did}`); 133 + if (profile.displayName) { 134 + console.log(`display name: ${profile.displayName}`); 135 + } 136 + if (profile.description) { 137 + console.log( 138 + `bio: ${profile.description.split('\n')[0]}${profile.description.includes('\n') ? '...' : ''}`, 139 + ); 140 + } 141 + console.log(`followers: ${profile.followersCount ?? 0}`); 142 + console.log(`following: ${profile.followsCount ?? 0}`); 143 + console.log(`posts: ${profile.postsCount ?? 0}`); 144 + console.log('='.repeat(50)); 145 + 146 + process.exit(0);
+24
packages/oauth/node-client-public-example/tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "types": ["bun"], 4 + "noEmit": true, 5 + "esModuleInterop": true, 6 + "skipLibCheck": true, 7 + "target": "ESNext", 8 + "allowJs": true, 9 + "resolveJsonModule": true, 10 + "moduleDetection": "force", 11 + "isolatedModules": true, 12 + "verbatimModuleSyntax": true, 13 + "strict": true, 14 + "noImplicitOverride": true, 15 + "noUnusedLocals": true, 16 + "noUnusedParameters": true, 17 + "noFallthroughCasesInSwitch": true, 18 + "module": "NodeNext", 19 + "sourceMap": true, 20 + "declaration": true, 21 + "declarationMap": true 22 + }, 23 + "include": ["src"] 24 + }
+94 -9
packages/oauth/node-client/README.md
··· 1 1 # @atcute/oauth-node-client 2 2 3 - atproto OAuth client for Node.js (plus Deno, Bun, and other server runtimes). this package 4 - implements a **confidential client** that authenticates using `private_key_jwt`. 3 + atproto OAuth client for Node.js (plus Deno, Bun, and other server runtimes). 4 + 5 + supports both: 6 + 7 + - **confidential clients** - authenticate with `private_key_jwt`, longer session lifetimes (up to 180 8 + days), requires key management and hosted metadata 9 + - **public clients** - no authentication (`token_endpoint_auth_method: 'none'`), shorter sessions (2 10 + weeks max), simpler setup for CLI tools and local development 5 11 6 12 ```sh 7 13 npm install @atcute/oauth-node-client 8 14 ``` 9 15 10 - ## usage 16 + ## confidential clients 11 17 12 18 examples below use Hono, but any web framework works. 13 - 14 - ```ts 15 - import { Hono } from 'hono'; 16 - 17 - const app = new Hono(); 18 - ``` 19 19 20 20 ### key management 21 21 ··· 247 247 ```ts 248 248 await session.signOut(); 249 249 ``` 250 + 251 + ## public clients 252 + 253 + public clients don't require key management or hosted metadata. they're ideal for CLI tools, local 254 + development, and native apps. the tradeoff is shorter session lifetimes (2 weeks max vs 180 days for 255 + confidential clients). 256 + 257 + ### loopback clients 258 + 259 + loopback clients use `http://localhost` as their origin, which authorization servers recognize as a 260 + public client. no client registration or hosted metadata is required - the library builds the 261 + `client_id` automatically from your redirect URIs and scopes. 262 + 263 + ```ts 264 + import { MemoryStore, OAuthClient, scope, type StoredState } from '@atcute/oauth-node-client'; 265 + import { 266 + CompositeDidDocumentResolver, 267 + CompositeHandleResolver, 268 + LocalActorResolver, 269 + PlcDidDocumentResolver, 270 + WebDidDocumentResolver, 271 + WellKnownHandleResolver, 272 + } from '@atcute/identity-resolver'; 273 + import { NodeDnsHandleResolver } from '@atcute/identity-resolver-node'; 274 + 275 + // use any available port for the callback server 276 + const port = 8080; 277 + const redirectUri = `http://127.0.0.1:${port}/callback`; 278 + 279 + const oauth = new OAuthClient({ 280 + metadata: { 281 + // no client_id needed - built automatically as: 282 + // http://localhost?redirect_uri=http://127.0.0.1:8080/callback&scope=... 283 + redirect_uris: [redirectUri], 284 + scope: [scope.rpc({ lxm: ['app.bsky.actor.getProfile'], aud: '*' })], 285 + }, 286 + // no keyset - this makes it a public client 287 + 288 + stores: { 289 + sessions: new MemoryStore(), 290 + states: new MemoryStore<string, StoredState>({ maxSize: 10, ttl: 10 * 60_000 }), 291 + }, 292 + 293 + actorResolver: new LocalActorResolver({ 294 + handleResolver: new CompositeHandleResolver({ 295 + methods: { 296 + dns: new NodeDnsHandleResolver(), 297 + http: new WellKnownHandleResolver(), 298 + }, 299 + }), 300 + didDocumentResolver: new CompositeDidDocumentResolver({ 301 + methods: { 302 + plc: new PlcDidDocumentResolver(), 303 + web: new WebDidDocumentResolver(), 304 + }, 305 + }), 306 + }), 307 + }); 308 + ``` 309 + 310 + loopback redirect URIs must use `127.0.0.1` or `[::1]` (not `localhost`). the port can be any 311 + available port - authorization servers ignore the port when matching loopback redirect URIs per RFC 312 + 8252. 313 + 314 + see the [node-client-public-example](../node-client-public-example) package for a complete CLI 315 + example. 316 + 317 + ### discoverable public clients 318 + 319 + for public clients that need a discoverable `client_id` (e.g., mobile apps or web apps without a 320 + backend), provide a `client_id` URL pointing to hosted metadata: 321 + 322 + ```ts 323 + const oauth = new OAuthClient({ 324 + metadata: { 325 + client_id: 'https://example.com/oauth-client-metadata.json', 326 + redirect_uris: ['https://example.com/callback'], 327 + scope: 'atproto', 328 + }, 329 + stores: { /* ... */ }, 330 + actorResolver: /* ... */, 331 + }); 332 + ``` 333 + 334 + the hosted metadata should set `token_endpoint_auth_method: 'none'` and omit `jwks`/`jwks_uri`. 250 335 251 336 ## custom stores 252 337
+11
packages/oauth/node-client/lib/index.ts
··· 9 9 10 10 export { 11 11 buildClientMetadata, 12 + buildPublicClientMetadata, 12 13 scope, 13 14 type AtprotoAuthorizationServerMetadata, 14 15 type AtprotoProtectedResourceMetadata, 15 16 type ConfidentialClientMetadata, 17 + type DiscoverablePublicClientMetadata, 18 + type LoopbackClientMetadata, 16 19 type OAuthAuthorizationServerMetadata, 17 20 type OAuthClientMetadata, 18 21 type OAuthProtectedResourceMetadata, 19 22 type OAuthResponseMode, 23 + type PublicClientMetadata, 20 24 } from '@atcute/oauth-types'; 21 25 22 26 export { ··· 26 30 type AuthorizeTarget, 27 31 type CallbackOptions, 28 32 type CallbackResult, 33 + type ConfidentialOAuthClientOptions, 29 34 type OAuthClientOptions, 30 35 type OAuthClientStores, 36 + type PublicOAuthClientOptions, 31 37 type RestoreOptions, 32 38 } from './oauth-client.js'; 33 39 ··· 50 56 51 57 export type { AuthorizationServerMetadataCache } from './resolvers/authorization-server-metadata.js'; 52 58 export type { ProtectedResourceMetadataCache } from './resolvers/protected-resource-metadata.js'; 59 + export type { 60 + ClientAuthMethod, 61 + ConfidentialClientAuthMethod, 62 + PublicClientAuthMethod, 63 + } from './oauth-client-auth.js'; 53 64 export type { SessionStore, StoredSession } from './types/sessions.js'; 54 65 export type { StateStore, StoredState } from './types/states.js'; 55 66 export type { TokenSet } from './types/token-set.js';
+53 -13
packages/oauth/node-client/lib/oauth-client-auth.ts
··· 7 7 } from '@atcute/oauth-types'; 8 8 9 9 /** 10 - * client authentication method. only `private_key_jwt` is supported. 10 + * client authentication method for confidential clients using `private_key_jwt`. 11 11 */ 12 - export interface ClientAuthMethod { 12 + export interface ConfidentialClientAuthMethod { 13 13 method: 'private_key_jwt'; 14 14 /** key ID used for signing */ 15 15 kid: string; 16 16 } 17 17 18 18 /** 19 + * client authentication method for public clients using `none`. 20 + */ 21 + export interface PublicClientAuthMethod { 22 + method: 'none'; 23 + } 24 + 25 + /** 26 + * client authentication method. 27 + * 28 + * - `private_key_jwt`: confidential clients that authenticate with a JWT assertion 29 + * - `none`: public clients that don't authenticate at the token endpoint 30 + */ 31 + export type ClientAuthMethod = ConfidentialClientAuthMethod | PublicClientAuthMethod; 32 + 33 + /** 19 34 * client credentials for a token endpoint request. 20 35 */ 21 36 export interface ClientCredentials { ··· 26 41 27 42 /** 28 43 * factory function that produces client credentials for each request. 44 + * 45 + * returns `undefined` for public clients (no authentication). 29 46 */ 30 - export type ClientCredentialsFactory = () => Promise<ClientCredentials>; 47 + export type ClientCredentialsFactory = () => Promise<ClientCredentials | undefined>; 31 48 32 49 /** 33 50 * negotiates the client authentication method with the authorization server. 34 51 * 35 52 * @param serverMetadata authorization server metadata 36 - * @param keyset client's private keyset 37 - * @returns negotiated auth method with key ID 38 - * @throws if server doesn't support `private_key_jwt` or no compatible key exists 53 + * @param keyset client's private keyset, or undefined for public clients 54 + * @returns negotiated auth method 55 + * @throws if server doesn't support the required authentication method 39 56 */ 40 57 export const negotiateClientAuth = ( 41 58 serverMetadata: OAuthAuthorizationServerMetadata, 42 - keyset: Keyset, 59 + keyset: Keyset | undefined, 43 60 ): ClientAuthMethod => { 44 61 const supportedMethods = serverMetadata.token_endpoint_auth_methods_supported; 45 62 46 - // verify server supports private_key_jwt 63 + // public client - no keyset 64 + if (keyset === undefined) { 65 + if (supportedMethods && !supportedMethods.includes('none')) { 66 + throw new Error( 67 + `server does not support "none" authentication for public clients. ` + 68 + `supported methods: ${supportedMethods.join(', ')}`, 69 + ); 70 + } 71 + return { method: 'none' }; 72 + } 73 + 74 + // confidential client - verify server supports private_key_jwt 47 75 if (supportedMethods && !supportedMethods.includes('private_key_jwt')) { 48 76 throw new Error( 49 77 `server does not support "private_key_jwt" authentication. ` + ··· 64 92 }; 65 93 66 94 export interface CreateClientAssertionFactoryOptions { 67 - /** negotiated auth method (contains kid) */ 95 + /** negotiated auth method */ 68 96 authMethod: ClientAuthMethod; 69 97 /** authorization server metadata */ 70 98 serverMetadata: OAuthAuthorizationServerMetadata; 71 99 /** client ID */ 72 100 clientId: string; 73 - /** client's private keyset */ 74 - keyset: Keyset; 101 + /** client's private keyset, or undefined for public clients */ 102 + keyset: Keyset | undefined; 75 103 } 76 104 77 105 /** 78 106 * creates a factory that produces client credentials (JWT assertions) for token requests. 79 107 * 108 + * for public clients (authMethod.method === 'none'), returns a factory that produces `undefined`. 109 + * 80 110 * @param options factory configuration 81 - * @returns async function that creates fresh credentials for each request 82 - * @throws if the key is no longer available in the keyset 111 + * @returns async function that creates fresh credentials for each request, or undefined for public clients 112 + * @throws if the key is no longer available in the keyset (confidential clients only) 83 113 */ 84 114 export const createClientAssertionFactory = ( 85 115 options: CreateClientAssertionFactoryOptions, 86 116 ): ClientCredentialsFactory => { 87 117 const { authMethod, serverMetadata, clientId, keyset } = options; 118 + 119 + // public client - no credentials 120 + if (authMethod.method === 'none') { 121 + return async () => undefined; 122 + } 123 + 124 + // confidential client - keyset is required 125 + if (keyset === undefined) { 126 + throw new Error('keyset is required for confidential clients'); 127 + } 88 128 89 129 // get server's supported signing algorithms 90 130 const supportedAlgs = serverMetadata.token_endpoint_auth_signing_alg_values_supported ?? [FALLBACK_ALG];
+52 -7
packages/oauth/node-client/lib/oauth-client.ts
··· 5 5 import { Keyset } from '@atcute/oauth-keyset'; 6 6 import { 7 7 buildClientMetadata, 8 + buildPublicClientMetadata, 8 9 FALLBACK_ALG, 9 10 type ConfidentialClientMetadata, 10 11 type OAuthClientMetadata, 11 12 type OAuthPrompt, 12 13 type OAuthResponseMode, 14 + type PublicClientMetadata, 13 15 } from '@atcute/oauth-types'; 14 16 15 17 import { nanoid } from 'nanoid'; ··· 46 48 prMetadata?: ProtectedResourceMetadataCache; 47 49 } 48 50 49 - export interface OAuthClientOptions { 51 + /** options for a confidential OAuth client (with keyset for private_key_jwt) */ 52 + export interface ConfidentialOAuthClientOptions { 50 53 /** client metadata */ 51 54 metadata: ConfidentialClientMetadata; 52 55 /** client's signing keys (or an already constructed keyset) */ ··· 65 68 fetch?: typeof globalThis.fetch; 66 69 } 67 70 71 + /** options for a public OAuth client (no keyset, uses token_endpoint_auth_method: 'none') */ 72 + export interface PublicOAuthClientOptions { 73 + /** public client metadata */ 74 + metadata: PublicClientMetadata; 75 + /** identity resolver for DID/handle resolution */ 76 + actorResolver: ActorResolver; 77 + /** storage backends */ 78 + stores: OAuthClientStores; 79 + 80 + /** OAuth response mode for authorization responses */ 81 + responseMode?: OAuthResponseMode; 82 + /** lock function for coordinating token refresh, defaults to in-memory */ 83 + requestLock?: LockFunction; 84 + 85 + /** custom fetch implementation */ 86 + fetch?: typeof globalThis.fetch; 87 + } 88 + 89 + /** 90 + * options for creating an OAuth client. 91 + * 92 + * - confidential clients provide a `keyset` for private_key_jwt authentication 93 + * - public clients omit `keyset` and use token_endpoint_auth_method: 'none' 94 + */ 95 + export type OAuthClientOptions = ConfidentialOAuthClientOptions | PublicOAuthClientOptions; 96 + 68 97 export type AuthorizeTarget = 69 98 | { type: 'account'; identifier: ActorIdentifier } 70 99 | { type: 'pds'; serviceUrl: string }; ··· 115 144 } 116 145 117 146 /** 118 - * OAuth client for AT Protocol confidential clients. 147 + * OAuth client for AT Protocol. 148 + * 149 + * supports both confidential clients (with keyset for private_key_jwt) and 150 + * public clients (no keyset, uses token_endpoint_auth_method: 'none'). 119 151 * 120 152 * handles authorization flow, session management, and token lifecycle. 121 153 */ 122 154 export class OAuthClient { 123 155 readonly metadata: OAuthClientMetadata; 124 - readonly keyset: Keyset; 156 + readonly keyset: Keyset | undefined; 125 157 126 158 private readonly responseMode: OAuthResponseMode; 127 159 private readonly resolver: OAuthResolver; ··· 133 165 constructor(options: OAuthClientOptions) { 134 166 const { stores } = options; 135 167 136 - const keyset = Array.isArray(options.keyset) ? new Keyset(options.keyset) : options.keyset; 168 + let metadata: OAuthClientMetadata; 169 + let keyset: Keyset | undefined; 170 + 171 + if ('keyset' in options && options.keyset !== undefined) { 172 + // confidential client 173 + keyset = Array.isArray(options.keyset) ? new Keyset(options.keyset) : options.keyset; 174 + metadata = buildClientMetadata(options.metadata as ConfidentialClientMetadata, keyset); 175 + } else { 176 + // public client 177 + keyset = undefined; 178 + metadata = buildPublicClientMetadata(options.metadata as PublicClientMetadata); 179 + } 137 180 138 - this.metadata = buildClientMetadata(options.metadata, keyset); 181 + this.metadata = metadata; 139 182 this.keyset = keyset; 140 183 this.responseMode = options.responseMode ?? 'query'; 141 184 this.fetch = options.fetch ?? globalThis.fetch; ··· 195 238 196 239 /** 197 240 * public JWKS for serving at jwks_uri. 241 + * 242 + * returns `undefined` for public clients (no keyset). 198 243 */ 199 - get jwks(): { keys: readonly PublicJwk[] } { 200 - return this.keyset.publicJwks; 244 + get jwks(): { keys: readonly PublicJwk[] } | undefined { 245 + return this.keyset?.publicJwks; 201 246 } 202 247 203 248 /**
+112
packages/oauth/node-client/lib/oauth-server-agent.test.ts
··· 76 76 }); 77 77 }; 78 78 79 + const createPublicServerAgent = async ( 80 + options?: Partial<OAuthServerAgentOptions> & { mockFetch?: typeof fetch }, 81 + ): Promise<OAuthServerAgent> => { 82 + const dpopKey = await generateDpopKey(); 83 + 84 + return new OAuthServerAgent({ 85 + authMethod: { method: 'none' }, 86 + dpopKey, 87 + serverMetadata: options?.serverMetadata ?? createMockMetadata(), 88 + clientMetadata: { 89 + client_id: 'http://localhost?redirect_uri=http://127.0.0.1/callback&scope=atproto', 90 + client_name: 'Test CLI', 91 + redirect_uris: ['http://127.0.0.1/callback'], 92 + grant_types: ['authorization_code', 'refresh_token'], 93 + response_types: ['code'], 94 + scope: 'atproto', 95 + application_type: 'native', 96 + dpop_bound_access_tokens: true, 97 + token_endpoint_auth_method: 'none', 98 + }, 99 + dpopNonces: new MemoryStore({}), 100 + oauthResolver: options?.oauthResolver ?? createMockOAuthResolver(), 101 + keyset: undefined, 102 + fetch: options?.mockFetch, 103 + }); 104 + }; 105 + 79 106 describe('OAuthServerAgent', () => { 80 107 // valid DID format for testing (did:plc uses base32 encoding) 81 108 const TEST_DID = 'did:plc:ewvi7nxzyoun6zhxrhs64oiz'; ··· 301 328 const agent = await createServerAgent({}); 302 329 303 330 expect(agent.issuer).toBe('https://auth.example.com'); 331 + }); 332 + }); 333 + 334 + describe('public client support', () => { 335 + it('should exchange code without client_assertion for public clients', async () => { 336 + const mockFetch = vi.fn().mockImplementation(async (request: Request) => { 337 + // dpopFetch passes a Request object - read the body from it 338 + const body = await request.clone().text(); 339 + expect(body).not.toContain('client_assertion'); 340 + expect(body).toContain('client_id=http'); 341 + 342 + return createMockResponse(200, { 343 + access_token: 'access-123', 344 + refresh_token: 'refresh-123', 345 + token_type: 'DPoP', 346 + expires_in: 3600, 347 + scope: 'atproto', 348 + sub: TEST_DID, 349 + }); 350 + }); 351 + 352 + const agent = await createPublicServerAgent({ mockFetch }); 353 + 354 + const result = await agent.exchangeCode('auth-code', 'verifier', 'http://127.0.0.1/callback'); 355 + 356 + expect(result.access_token).toBe('access-123'); 357 + expect(result.sub).toBe(TEST_DID); 358 + expect(mockFetch).toHaveBeenCalledTimes(1); 359 + }); 360 + 361 + it('should refresh tokens without client_assertion for public clients', async () => { 362 + const mockFetch = vi.fn().mockImplementation(async (request: Request) => { 363 + const body = await request.clone().text(); 364 + expect(body).not.toContain('client_assertion'); 365 + expect(body).toContain('client_id=http'); 366 + 367 + return createMockResponse(200, { 368 + access_token: 'new-access-123', 369 + refresh_token: 'new-refresh-123', 370 + token_type: 'DPoP', 371 + expires_in: 3600, 372 + scope: 'atproto', 373 + sub: TEST_DID, 374 + }); 375 + }); 376 + 377 + const agent = await createPublicServerAgent({ mockFetch }); 378 + 379 + const result = await agent.refresh({ 380 + iss: 'https://auth.example.com', 381 + sub: TEST_DID as Did, 382 + aud: 'https://pds.example.com', 383 + scope: 'atproto', 384 + access_token: 'old-access', 385 + refresh_token: 'old-refresh', 386 + token_type: 'DPoP', 387 + }); 388 + 389 + expect(result.access_token).toBe('new-access-123'); 390 + }); 391 + 392 + it('should send PAR without client_assertion for public clients', async () => { 393 + const mockFetch = vi.fn().mockImplementation(async (request: Request) => { 394 + const body = await request.clone().text(); 395 + expect(body).not.toContain('client_assertion'); 396 + expect(body).toContain('client_id=http'); 397 + 398 + return createMockResponse(200, { 399 + request_uri: 'urn:ietf:params:oauth:request_uri:abc123', 400 + expires_in: 60, 401 + }); 402 + }); 403 + 404 + const agent = await createPublicServerAgent({ mockFetch }); 405 + 406 + const result = await agent.pushAuthorizationRequest({ 407 + response_type: 'code', 408 + redirect_uri: 'http://127.0.0.1/callback', 409 + scope: 'atproto', 410 + code_challenge: 'challenge', 411 + code_challenge_method: 'S256', 412 + state: 'state123', 413 + }); 414 + 415 + expect(result.request_uri).toBe('urn:ietf:params:oauth:request_uri:abc123'); 304 416 }); 305 417 }); 306 418 });
+12 -7
packages/oauth/node-client/lib/oauth-server-agent.ts
··· 45 45 dpopNonces: DpopNonceCache; 46 46 /** OAuth resolver for identity verification */ 47 47 oauthResolver: OAuthResolver; 48 - /** client's private keyset */ 49 - keyset: Keyset; 48 + /** client's private keyset, or undefined for public clients */ 49 + keyset: Keyset | undefined; 50 50 /** custom fetch implementation */ 51 51 fetch?: typeof globalThis.fetch; 52 52 } ··· 62 62 readonly serverMetadata: AtprotoAuthorizationServerMetadata; 63 63 readonly clientMetadata: OAuthClientMetadata; 64 64 readonly oauthResolver: OAuthResolver; 65 - readonly keyset: Keyset; 65 + readonly keyset: Keyset | undefined; 66 66 readonly dpopNonces: DpopNonceCache; 67 67 68 68 private readonly dpopFetch: typeof globalThis.fetch; ··· 252 252 body.set(key, value); 253 253 } 254 254 } 255 - // add client credentials 256 - body.set('client_id', credentials.client_id); 257 - body.set('client_assertion_type', credentials.client_assertion_type); 258 - body.set('client_assertion', credentials.client_assertion); 255 + 256 + // always add client_id 257 + body.set('client_id', this.clientMetadata.client_id!); 258 + 259 + // add client credentials for confidential clients 260 + if (credentials) { 261 + body.set('client_assertion_type', credentials.client_assertion_type); 262 + body.set('client_assertion', credentials.client_assertion); 263 + } 259 264 260 265 const response = await this.dpopFetch(endpoint, { 261 266 method: 'POST',
+3 -3
packages/oauth/node-client/lib/oauth-server-factory.ts
··· 11 11 clientMetadata: OAuthClientMetadata; 12 12 /** OAuth resolver for metadata discovery */ 13 13 resolver: OAuthResolver; 14 - /** client's private keyset */ 15 - keyset: Keyset; 14 + /** client's private keyset, or undefined for public clients */ 15 + keyset: Keyset | undefined; 16 16 /** DPoP nonce cache, keyed by origin */ 17 17 dpopNonces: DpopNonceCache; 18 18 /** custom fetch implementation */ ··· 27 27 export class OAuthServerFactory { 28 28 readonly clientMetadata: OAuthClientMetadata; 29 29 readonly resolver: OAuthResolver; 30 - readonly keyset: Keyset; 30 + readonly keyset: Keyset | undefined; 31 31 readonly dpopNonces: DpopNonceCache; 32 32 readonly fetch?: typeof globalThis.fetch; 33 33
+1 -1
packages/oauth/node-client/package.json
··· 1 1 { 2 2 "name": "@atcute/oauth-node-client", 3 3 "version": "1.0.0", 4 - "description": "atproto OAuth client for Node.js", 4 + "description": "atproto OAuth client for Node.js and other server runtimes", 5 5 "license": "0BSD", 6 6 "repository": { 7 7 "url": "https://github.com/mary-ext/atcute",
+86 -2
packages/oauth/types/lib/build-client-metadata.ts
··· 5 5 confidentialClientMetadataSchema, 6 6 type ConfidentialClientMetadata, 7 7 } from './schemas/atcute-confidential-client-metadata.js'; 8 + import { 9 + publicClientMetadataSchema, 10 + type PublicClientMetadata, 11 + } from './schemas/atcute-public-client-metadata.js'; 12 + import { DEFAULT_ATPROTO_OAUTH_SCOPE } from './schemas/atproto-oauth-scope.js'; 8 13 import type { OAuthClientMetadata } from './schemas/oauth-client-metadata.js'; 9 14 10 15 /** 11 - * builds an atproto client metadata 12 - * 16 + * builds an atproto client metadata for a confidential client. 13 17 * 14 18 * @param input client metadata 15 19 * @param keyset available keys ··· 70 74 71 75 return metadata; 72 76 }; 77 + 78 + /** 79 + * builds a loopback client_id from redirect_uris and scope. 80 + * 81 + * @param redirectUris loopback redirect URIs 82 + * @param scope OAuth scope string 83 + * @returns loopback client_id URL 84 + */ 85 + const buildLoopbackClientId = (redirectUris: readonly string[], scope: string): string => { 86 + const params = new URLSearchParams(); 87 + 88 + // only include scope if not the default 89 + if (scope !== DEFAULT_ATPROTO_OAUTH_SCOPE) { 90 + params.set('scope', scope); 91 + } 92 + 93 + // include redirect URIs 94 + for (const uri of redirectUris) { 95 + params.append('redirect_uri', uri); 96 + } 97 + 98 + if (params.size > 0) { 99 + return `http://localhost?${params.toString()}`; 100 + } 101 + 102 + return 'http://localhost'; 103 + }; 104 + 105 + /** 106 + * builds an atproto client metadata for a public client. 107 + * 108 + * public clients use `token_endpoint_auth_method: 'none'` and don't require a keyset. 109 + * per AT Protocol spec, they have shorter token lifetimes and cannot use silent sign-in. 110 + * 111 + * - if `client_id` is omitted: loopback client (client_id built from redirect_uris/scope) 112 + * - if `client_id` is provided: discoverable public client 113 + * 114 + * @param input public client metadata 115 + * @returns built client metadata 116 + */ 117 + export const buildPublicClientMetadata = (input: PublicClientMetadata): OAuthClientMetadata => { 118 + const parsed = publicClientMetadataSchema.parse(input, { mode: 'passthrough' }); 119 + const scope = Array.isArray(parsed.scope) ? parsed.scope.join(' ') : parsed.scope; 120 + 121 + if (parsed.client_id === undefined) { 122 + // loopback client - server generates metadata from client_id URL 123 + return { 124 + client_id: buildLoopbackClientId(parsed.redirect_uris, scope), 125 + redirect_uris: parsed.redirect_uris, 126 + scope, 127 + 128 + application_type: 'native', 129 + response_types: ['code'], 130 + grant_types: ['authorization_code', 'refresh_token'], 131 + 132 + token_endpoint_auth_method: 'none', 133 + dpop_bound_access_tokens: true, 134 + }; 135 + } 136 + 137 + // discoverable public client 138 + return { 139 + client_id: parsed.client_id, 140 + client_name: parsed.client_name, 141 + client_uri: parsed.client_uri, 142 + policy_uri: parsed.policy_uri, 143 + tos_uri: parsed.tos_uri, 144 + logo_uri: parsed.logo_uri, 145 + redirect_uris: parsed.redirect_uris, 146 + scope, 147 + 148 + application_type: parsed.application_type ?? 'web', 149 + subject_type: 'public', 150 + response_types: ['code'], 151 + grant_types: ['authorization_code', 'refresh_token'], 152 + 153 + token_endpoint_auth_method: 'none', 154 + dpop_bound_access_tokens: true, 155 + }; 156 + };
+9 -1
packages/oauth/types/lib/index.ts
··· 1 - export { buildClientMetadata } from './build-client-metadata.js'; 1 + export { buildClientMetadata, buildPublicClientMetadata } from './build-client-metadata.js'; 2 2 export { CLIENT_ASSERTION_TYPE_JWT_BEARER, FALLBACK_ALG } from './constants.js'; 3 3 4 4 export * as scope from './scope.js'; ··· 8 8 confidentialClientMetadataSchema, 9 9 type ConfidentialClientMetadata, 10 10 } from './schemas/atcute-confidential-client-metadata.js'; 11 + export { 12 + discoverablePublicClientMetadataSchema, 13 + loopbackClientMetadataSchema, 14 + publicClientMetadataSchema, 15 + type DiscoverablePublicClientMetadata, 16 + type LoopbackClientMetadata, 17 + type PublicClientMetadata, 18 + } from './schemas/atcute-public-client-metadata.js'; 11 19 export { 12 20 atprotoOAuthScopeSchema, 13 21 ATPROTO_SCOPE_VALUE,
+197
packages/oauth/types/lib/schemas/atcute-public-client-metadata.ts
··· 1 + import * as v from '@badrap/valita'; 2 + 3 + import { atprotoOAuthScopeSchema } from './atproto-oauth-scope.js'; 4 + import { oauthClientIdDiscoverableSchema } from './oauth-client-id-discoverable.js'; 5 + import { loopbackRedirectUriSchema, oauthRedirectUriSchema } from './oauth-redirect-uri.js'; 6 + import { nonLocalWebUriSchema, privateUseUriSchema, webUriSchema } from './uri.js'; 7 + import { isLoopbackHost } from './utils.js'; 8 + 9 + const SINGLE_SCOPE_RE = /^[\x21\x23-\x5B\x5D-\x7E]+$/; 10 + 11 + const singleScopeSchema = v.string().assert((input) => SINGLE_SCOPE_RE.test(input), `invalid OAuth scope`); 12 + 13 + const scopeSchema = v.union( 14 + atprotoOAuthScopeSchema.chain((input) => { 15 + const scopes = input.split(/\s+/); 16 + 17 + for (let i = 0, len = scopes.length; i < len; i++) { 18 + const aka = scopes[i]; 19 + 20 + for (let j = 0; j < i; j++) { 21 + if (aka === scopes[j]) { 22 + return v.err(`duplicate "${aka}" scope`); 23 + } 24 + } 25 + } 26 + 27 + return v.ok(input); 28 + }), 29 + v.array(singleScopeSchema).chain((input) => { 30 + if (!input.includes('atproto')) { 31 + input = ['atproto', ...input]; 32 + } 33 + 34 + for (let i = 0, len = input.length; i < len; i++) { 35 + const aka = input[i]; 36 + 37 + for (let j = 0; j < i; j++) { 38 + if (aka === input[j]) { 39 + return v.err(`duplicate "${aka}" scope`); 40 + } 41 + } 42 + } 43 + 44 + return v.ok(input); 45 + }), 46 + ); 47 + 48 + const redirectUrisSchema = v 49 + .array(oauthRedirectUriSchema) 50 + .assert((arr) => arr.length > 0, `must have at least one redirect URI`) 51 + .assert((arr) => { 52 + for (const uri of arr) { 53 + // private-use URIs don't have URL-style credentials 54 + if (!uri.includes('://')) { 55 + continue; 56 + } 57 + const url = new URL(uri); 58 + if (url.username || url.password) { 59 + return false; 60 + } 61 + } 62 + return true; 63 + }, `redirect URIs must not contain credentials`); 64 + 65 + /** 66 + * user-facing client metadata for configuring a loopback public OAuth client. 67 + * 68 + * loopback clients are for localhost development and CLI tools. they use 69 + * `http://localhost` as the client_id origin, which is built automatically 70 + * from the redirect_uris and scope. 71 + */ 72 + export const loopbackClientMetadataSchema = v 73 + .object({ 74 + /** must not be provided for loopback clients */ 75 + client_id: v.undefined().optional(), 76 + 77 + /** 78 + * redirect URIs for authorization responses. 79 + * 80 + * must be loopback IP addresses (127.0.0.1 or [::1]). 81 + * per RFC 8252, port numbers are ignored during redirect URI matching, 82 + * allowing ephemeral ports. 83 + */ 84 + redirect_uris: redirectUrisSchema, 85 + 86 + /** OAuth scope (must include "atproto") */ 87 + scope: scopeSchema, 88 + }) 89 + .chain((input) => { 90 + // validate all redirect URIs are loopback 91 + for (let i = 0; i < input.redirect_uris.length; i++) { 92 + const uri = input.redirect_uris[i]; 93 + const result = loopbackRedirectUriSchema.try(uri, { mode: 'strict' }); 94 + if (!result.ok) { 95 + return v.err({ 96 + message: `loopback clients require loopback redirect URIs (127.0.0.1 or [::1]): ${result.message}`, 97 + path: ['redirect_uris', i], 98 + }); 99 + } 100 + 101 + const url = new URL(uri); 102 + if (!isLoopbackHost(url.hostname) || url.hostname === 'localhost') { 103 + return v.err({ 104 + message: `loopback redirect URIs must use 127.0.0.1 or [::1], not ${url.hostname}`, 105 + path: ['redirect_uris', i], 106 + }); 107 + } 108 + } 109 + 110 + return v.ok(input); 111 + }); 112 + 113 + export type LoopbackClientMetadata = v.Infer<typeof loopbackClientMetadataSchema>; 114 + 115 + /** 116 + * user-facing client metadata for configuring a discoverable public OAuth client. 117 + * 118 + * discoverable public clients have an HTTPS client_id URL where metadata is hosted, 119 + * but don't use a keyset (token_endpoint_auth_method: 'none'). 120 + */ 121 + export const discoverablePublicClientMetadataSchema = v 122 + .object({ 123 + /** discoverable HTTPS client_id URL */ 124 + client_id: oauthClientIdDiscoverableSchema, 125 + 126 + /** redirect URIs for authorization responses */ 127 + redirect_uris: redirectUrisSchema, 128 + 129 + /** OAuth scope (must include "atproto") */ 130 + scope: scopeSchema, 131 + 132 + /** 133 + * application type - defaults to 'web'. 134 + */ 135 + application_type: v.union(v.literal('web'), v.literal('native')).optional(), 136 + 137 + /** optional client homepage */ 138 + client_uri: webUriSchema.optional(), 139 + /** optional display name */ 140 + client_name: v.string().optional(), 141 + /** optional policy url */ 142 + policy_uri: nonLocalWebUriSchema.optional(), 143 + /** optional terms of service url */ 144 + tos_uri: nonLocalWebUriSchema.optional(), 145 + /** optional logo url */ 146 + logo_uri: nonLocalWebUriSchema.optional(), 147 + }) 148 + .chain((input) => { 149 + // validate redirect URIs are HTTPS, loopback, or private-use 150 + for (let i = 0; i < input.redirect_uris.length; i++) { 151 + const uri = input.redirect_uris[i]; 152 + 153 + // private-use URIs are allowed 154 + if (!uri.includes('://')) { 155 + const result = privateUseUriSchema.try(uri, { mode: 'strict' }); 156 + if (!result.ok) { 157 + return v.err({ 158 + message: `invalid redirect URI: ${result.message}`, 159 + path: ['redirect_uris', i], 160 + }); 161 + } 162 + continue; 163 + } 164 + 165 + const url = new URL(uri); 166 + 167 + // loopback http URIs are allowed for native apps 168 + if (url.protocol === 'http:' && isLoopbackHost(url.hostname)) { 169 + continue; 170 + } 171 + 172 + // otherwise must be https 173 + if (url.protocol !== 'https:') { 174 + return v.err({ 175 + message: `redirect URI must use https:, http: loopback, or private-use scheme`, 176 + path: ['redirect_uris', i], 177 + }); 178 + } 179 + } 180 + 181 + return v.ok(input); 182 + }); 183 + 184 + export type DiscoverablePublicClientMetadata = v.Infer<typeof discoverablePublicClientMetadataSchema>; 185 + 186 + /** 187 + * user-facing client metadata for configuring a public OAuth client. 188 + * 189 + * - if `client_id` is omitted: loopback client (for localhost dev / CLI tools) 190 + * - if `client_id` is provided: discoverable public client (HTTPS URL) 191 + */ 192 + export const publicClientMetadataSchema = v.union( 193 + loopbackClientMetadataSchema, 194 + discoverablePublicClientMetadataSchema, 195 + ); 196 + 197 + export type PublicClientMetadata = v.Infer<typeof publicClientMetadataSchema>;
+40 -2032
pnpm-lock.yaml
··· 796 796 specifier: ^5.1.6 797 797 version: 5.1.6 798 798 799 - packages/oauth/cab: 800 - dependencies: 801 - '@atcute/client': 802 - specifier: workspace:^ 803 - version: link:../../clients/client 804 - '@atcute/lexicons': 805 - specifier: workspace:^ 806 - version: link:../../lexicons/lexicons 807 - '@atcute/multibase': 808 - specifier: workspace:^ 809 - version: link:../../utilities/multibase 810 - '@atcute/oauth-crypto': 811 - specifier: workspace:^ 812 - version: link:../crypto 813 - '@atcute/oauth-keyset': 814 - specifier: workspace:^ 815 - version: link:../keyset 816 - '@atcute/oauth-types': 817 - specifier: workspace:^ 818 - version: link:../types 819 - '@atcute/uint8array': 820 - specifier: workspace:^ 821 - version: link:../../misc/uint8array 822 - '@atcute/xrpc-server': 823 - specifier: workspace:^ 824 - version: link:../../servers/xrpc-server 825 - devDependencies: 826 - '@atcute/lex-cli': 827 - specifier: workspace:^ 828 - version: link:../../lexicons/lex-cli 829 - '@atcute/lexicon-doc': 830 - specifier: workspace:^ 831 - version: link:../../lexicons/lexicon-doc 832 - '@atcute/oauth-browser-client': 833 - specifier: workspace:^ 834 - version: link:../browser-client 835 - '@atcute/oauth-cab': 836 - specifier: 'file:' 837 - version: file:packages/oauth/cab(@atcute/oauth-browser-client@packages+oauth+browser-client) 838 - vitest: 839 - specifier: ^4.0.16 840 - version: 4.0.16(@types/node@25.0.3)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 841 - 842 - packages/oauth/cab-example: 843 - dependencies: 844 - '@atcute/client': 845 - specifier: workspace:* 846 - version: link:../../clients/client 847 - '@atcute/identity-resolver': 848 - specifier: workspace:* 849 - version: link:../../identity/identity-resolver 850 - '@atcute/lexicons': 851 - specifier: workspace:* 852 - version: link:../../lexicons/lexicons 853 - '@atcute/oauth-browser-client': 854 - specifier: workspace:* 855 - version: link:../browser-client 856 - '@atcute/oauth-cab': 857 - specifier: workspace:* 858 - version: link:../cab 859 - vue: 860 - specifier: ^3.5.26 861 - version: 3.5.27(typescript@5.9.3) 862 - vue-router: 863 - specifier: ^4.6.4 864 - version: 4.6.4(vue@3.5.27(typescript@5.9.3)) 865 - devDependencies: 866 - '@cloudflare/vite-plugin': 867 - specifier: ^1.21.0 868 - version: 1.21.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(workerd@1.20260114.0)(wrangler@4.59.2) 869 - '@tsconfig/node24': 870 - specifier: ^24.0.3 871 - version: 24.0.4 872 - '@types/node': 873 - specifier: ^24.10.4 874 - version: 24.10.9 875 - '@vitejs/plugin-vue': 876 - specifier: ^6.0.3 877 - version: 6.0.3(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vue@3.5.27(typescript@5.9.3)) 878 - '@vue/tsconfig': 879 - specifier: ^0.8.1 880 - version: 0.8.1(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) 881 - npm-run-all2: 882 - specifier: ^8.0.4 883 - version: 8.0.4 884 - tsx: 885 - specifier: ^4.19.4 886 - version: 4.20.6 887 - typescript: 888 - specifier: ~5.9.3 889 - version: 5.9.3 890 - vite: 891 - specifier: ^7.3.0 892 - version: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 893 - vite-plugin-vue-devtools: 894 - specifier: ^8.0.5 895 - version: 8.0.5(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vue@3.5.27(typescript@5.9.3)) 896 - vue-tsc: 897 - specifier: ^3.2.2 898 - version: 3.2.2(typescript@5.9.3) 899 - wrangler: 900 - specifier: ^4.59.2 901 - version: 4.59.2 902 - 903 799 packages/oauth/crypto: 904 800 dependencies: 905 801 '@atcute/multibase': ··· 999 895 '@types/bun': 1000 896 specifier: latest 1001 897 version: 1.3.6 898 + 899 + packages/oauth/node-client-public-example: 900 + dependencies: 901 + '@atcute/bluesky': 902 + specifier: workspace:^ 903 + version: link:../../definitions/bluesky 904 + '@atcute/client': 905 + specifier: workspace:^ 906 + version: link:../../clients/client 907 + '@atcute/identity-resolver': 908 + specifier: workspace:^ 909 + version: link:../../identity/identity-resolver 910 + '@atcute/identity-resolver-node': 911 + specifier: workspace:^ 912 + version: link:../../identity/identity-resolver-node 913 + '@atcute/lexicons': 914 + specifier: workspace:^ 915 + version: link:../../lexicons/lexicons 916 + '@atcute/oauth-node-client': 917 + specifier: workspace:^ 918 + version: link:../node-client 919 + devDependencies: 920 + '@types/bun': 921 + specifier: latest 922 + version: 1.3.8 1002 923 1003 924 packages/oauth/types: 1004 925 dependencies: ··· 1352 1273 '@atcute/microcosm@file:packages/definitions/microcosm': 1353 1274 resolution: {directory: packages/definitions/microcosm, type: directory} 1354 1275 1355 - '@atcute/oauth-cab@file:packages/oauth/cab': 1356 - resolution: {directory: packages/oauth/cab, type: directory} 1357 - peerDependencies: 1358 - '@atcute/oauth-browser-client': ^2.0.3 1359 - peerDependenciesMeta: 1360 - '@atcute/oauth-browser-client': 1361 - optional: true 1362 - 1363 1276 '@atcute/ozone@file:packages/definitions/ozone': 1364 1277 resolution: {directory: packages/definitions/ozone, type: directory} 1365 1278 ··· 1683 1596 resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} 1684 1597 engines: {node: '>=18.0.0'} 1685 1598 1686 - '@babel/code-frame@7.28.6': 1687 - resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} 1688 - engines: {node: '>=6.9.0'} 1689 - 1690 - '@babel/compat-data@7.28.6': 1691 - resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} 1692 - engines: {node: '>=6.9.0'} 1693 - 1694 - '@babel/core@7.28.6': 1695 - resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} 1696 - engines: {node: '>=6.9.0'} 1697 - 1698 - '@babel/generator@7.28.6': 1699 - resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} 1700 - engines: {node: '>=6.9.0'} 1701 - 1702 - '@babel/helper-annotate-as-pure@7.27.3': 1703 - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} 1704 - engines: {node: '>=6.9.0'} 1705 - 1706 - '@babel/helper-compilation-targets@7.28.6': 1707 - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} 1708 - engines: {node: '>=6.9.0'} 1709 - 1710 - '@babel/helper-create-class-features-plugin@7.28.6': 1711 - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} 1712 - engines: {node: '>=6.9.0'} 1713 - peerDependencies: 1714 - '@babel/core': ^7.0.0 1715 - 1716 - '@babel/helper-globals@7.28.0': 1717 - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 1718 - engines: {node: '>=6.9.0'} 1719 - 1720 - '@babel/helper-member-expression-to-functions@7.28.5': 1721 - resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} 1722 - engines: {node: '>=6.9.0'} 1723 - 1724 - '@babel/helper-module-imports@7.28.6': 1725 - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} 1726 - engines: {node: '>=6.9.0'} 1727 - 1728 - '@babel/helper-module-transforms@7.28.6': 1729 - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} 1730 - engines: {node: '>=6.9.0'} 1731 - peerDependencies: 1732 - '@babel/core': ^7.0.0 1733 - 1734 - '@babel/helper-optimise-call-expression@7.27.1': 1735 - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} 1736 - engines: {node: '>=6.9.0'} 1737 - 1738 - '@babel/helper-plugin-utils@7.28.6': 1739 - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} 1740 - engines: {node: '>=6.9.0'} 1741 - 1742 - '@babel/helper-replace-supers@7.28.6': 1743 - resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} 1744 - engines: {node: '>=6.9.0'} 1745 - peerDependencies: 1746 - '@babel/core': ^7.0.0 1747 - 1748 - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 1749 - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} 1750 - engines: {node: '>=6.9.0'} 1751 - 1752 1599 '@babel/helper-string-parser@7.27.1': 1753 1600 resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 1754 1601 engines: {node: '>=6.9.0'} ··· 1757 1604 resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 1758 1605 engines: {node: '>=6.9.0'} 1759 1606 1760 - '@babel/helper-validator-option@7.27.1': 1761 - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 1762 - engines: {node: '>=6.9.0'} 1763 - 1764 - '@babel/helpers@7.28.6': 1765 - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} 1766 - engines: {node: '>=6.9.0'} 1767 - 1768 1607 '@babel/parser@7.28.5': 1769 1608 resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 1770 1609 engines: {node: '>=6.0.0'} 1771 1610 hasBin: true 1772 1611 1773 - '@babel/parser@7.28.6': 1774 - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} 1775 - engines: {node: '>=6.0.0'} 1776 - hasBin: true 1777 - 1778 - '@babel/plugin-proposal-decorators@7.28.6': 1779 - resolution: {integrity: sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==} 1780 - engines: {node: '>=6.9.0'} 1781 - peerDependencies: 1782 - '@babel/core': ^7.0.0-0 1783 - 1784 - '@babel/plugin-syntax-decorators@7.28.6': 1785 - resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} 1786 - engines: {node: '>=6.9.0'} 1787 - peerDependencies: 1788 - '@babel/core': ^7.0.0-0 1789 - 1790 - '@babel/plugin-syntax-import-attributes@7.28.6': 1791 - resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} 1792 - engines: {node: '>=6.9.0'} 1793 - peerDependencies: 1794 - '@babel/core': ^7.0.0-0 1795 - 1796 - '@babel/plugin-syntax-import-meta@7.10.4': 1797 - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 1798 - peerDependencies: 1799 - '@babel/core': ^7.0.0-0 1800 - 1801 - '@babel/plugin-syntax-jsx@7.28.6': 1802 - resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} 1803 - engines: {node: '>=6.9.0'} 1804 - peerDependencies: 1805 - '@babel/core': ^7.0.0-0 1806 - 1807 - '@babel/plugin-syntax-typescript@7.28.6': 1808 - resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} 1809 - engines: {node: '>=6.9.0'} 1810 - peerDependencies: 1811 - '@babel/core': ^7.0.0-0 1812 - 1813 - '@babel/plugin-transform-typescript@7.28.6': 1814 - resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} 1815 - engines: {node: '>=6.9.0'} 1816 - peerDependencies: 1817 - '@babel/core': ^7.0.0-0 1818 - 1819 1612 '@babel/runtime@7.28.4': 1820 1613 resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} 1821 1614 engines: {node: '>=6.9.0'} 1822 1615 1823 - '@babel/template@7.28.6': 1824 - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} 1825 - engines: {node: '>=6.9.0'} 1826 - 1827 - '@babel/traverse@7.28.6': 1828 - resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} 1829 - engines: {node: '>=6.9.0'} 1830 - 1831 1616 '@babel/types@7.28.5': 1832 1617 resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 1833 - engines: {node: '>=6.9.0'} 1834 - 1835 - '@babel/types@7.28.6': 1836 - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} 1837 1618 engines: {node: '>=6.9.0'} 1838 1619 1839 1620 '@badrap/valita@0.4.6': ··· 1929 1710 '@changesets/write@0.4.0': 1930 1711 resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 1931 1712 1932 - '@cloudflare/kv-asset-handler@0.4.2': 1933 - resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} 1934 - engines: {node: '>=18.0.0'} 1935 - 1936 - '@cloudflare/unenv-preset@2.10.0': 1937 - resolution: {integrity: sha512-/uII4vLQXhzCAZzEVeYAjFLBNg2nqTJ1JGzd2lRF6ItYe6U2zVoYGfeKpGx/EkBF6euiU+cyBXgMdtJih+nQ6g==} 1938 - peerDependencies: 1939 - unenv: 2.0.0-rc.24 1940 - workerd: ^1.20251221.0 1941 - peerDependenciesMeta: 1942 - workerd: 1943 - optional: true 1944 - 1945 - '@cloudflare/vite-plugin@1.21.0': 1946 - resolution: {integrity: sha512-3VXtkfjOQL+k3Plj+t0BHRyw8iIIRBQ8RJU6KJHJQKdYHA6rJE/WlSa/lRd0A8MMhvP8e8QiMLuDqveEN8gCZg==} 1947 - peerDependencies: 1948 - vite: ^6.1.0 || ^7.0.0 1949 - wrangler: ^4.59.2 1950 - 1951 - '@cloudflare/workerd-darwin-64@1.20260114.0': 1952 - resolution: {integrity: sha512-HNlsRkfNgardCig2P/5bp/dqDECsZ4+NU5XewqArWxMseqt3C5daSuptI620s4pn7Wr0ZKg7jVLH0PDEBkA+aA==} 1953 - engines: {node: '>=16'} 1954 - cpu: [x64] 1955 - os: [darwin] 1956 - 1957 - '@cloudflare/workerd-darwin-arm64@1.20260114.0': 1958 - resolution: {integrity: sha512-qyE1UdFnAlxzb+uCfN/d9c8icch7XRiH49/DjoqEa+bCDihTuRS7GL1RmhVIqHJhb3pX3DzxmKgQZBDBL83Inw==} 1959 - engines: {node: '>=16'} 1960 - cpu: [arm64] 1961 - os: [darwin] 1962 - 1963 - '@cloudflare/workerd-linux-64@1.20260114.0': 1964 - resolution: {integrity: sha512-Z0BLvAj/JPOabzads2ddDEfgExWTlD22pnwsuNbPwZAGTSZeQa3Y47eGUWyHk+rSGngknk++S7zHTGbKuG7RRg==} 1965 - engines: {node: '>=16'} 1966 - cpu: [x64] 1967 - os: [linux] 1968 - 1969 - '@cloudflare/workerd-linux-arm64@1.20260114.0': 1970 - resolution: {integrity: sha512-kPUmEtUxUWlr9PQ64kuhdK0qyo8idPe5IIXUgi7xCD7mDd6EOe5J7ugDpbfvfbYKEjx4DpLvN2t45izyI/Sodw==} 1971 - engines: {node: '>=16'} 1972 - cpu: [arm64] 1973 - os: [linux] 1974 - 1975 - '@cloudflare/workerd-windows-64@1.20260114.0': 1976 - resolution: {integrity: sha512-MJnKgm6i1jZGyt2ZHQYCnRlpFTEZcK2rv9y7asS3KdVEXaDgGF8kOns5u6YL6/+eMogfZuHRjfDS+UqRTUYIFA==} 1977 - engines: {node: '>=16'} 1978 - cpu: [x64] 1979 - os: [win32] 1980 - 1981 1713 '@cloudflare/workers-types@4.20260103.0': 1982 1714 resolution: {integrity: sha512-jANmoGpJcXARnwlkvrQOeWyjYD1quTfHcs+++Z544XRHOSfLc4XSlts7snIhbiIGgA5bo66zDhraF+9lKUr2hw==} 1983 - 1984 - '@cspotcode/source-map-support@0.8.1': 1985 - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 1986 - engines: {node: '>=12'} 1987 1715 1988 1716 '@did-plc/lib@0.0.4': 1989 1717 resolution: {integrity: sha512-Omeawq3b8G/c/5CtkTtzovSOnWuvIuCI4GTJNrt1AmCskwEQV7zbX5d6km1mjJNbE0gHuQPTVqZxLVqetNbfwA==} ··· 2006 1734 cpu: [ppc64] 2007 1735 os: [aix] 2008 1736 2009 - '@esbuild/aix-ppc64@0.27.0': 2010 - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} 2011 - engines: {node: '>=18'} 2012 - cpu: [ppc64] 2013 - os: [aix] 2014 - 2015 1737 '@esbuild/aix-ppc64@0.27.2': 2016 1738 resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} 2017 1739 engines: {node: '>=18'} ··· 2024 1746 cpu: [arm64] 2025 1747 os: [android] 2026 1748 2027 - '@esbuild/android-arm64@0.27.0': 2028 - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} 2029 - engines: {node: '>=18'} 2030 - cpu: [arm64] 2031 - os: [android] 2032 - 2033 1749 '@esbuild/android-arm64@0.27.2': 2034 1750 resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} 2035 1751 engines: {node: '>=18'} ··· 2038 1754 2039 1755 '@esbuild/android-arm@0.25.12': 2040 1756 resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 2041 - engines: {node: '>=18'} 2042 - cpu: [arm] 2043 - os: [android] 2044 - 2045 - '@esbuild/android-arm@0.27.0': 2046 - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} 2047 1757 engines: {node: '>=18'} 2048 1758 cpu: [arm] 2049 1759 os: [android] ··· 2060 1770 cpu: [x64] 2061 1771 os: [android] 2062 1772 2063 - '@esbuild/android-x64@0.27.0': 2064 - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} 2065 - engines: {node: '>=18'} 2066 - cpu: [x64] 2067 - os: [android] 2068 - 2069 1773 '@esbuild/android-x64@0.27.2': 2070 1774 resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} 2071 1775 engines: {node: '>=18'} ··· 2078 1782 cpu: [arm64] 2079 1783 os: [darwin] 2080 1784 2081 - '@esbuild/darwin-arm64@0.27.0': 2082 - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} 2083 - engines: {node: '>=18'} 2084 - cpu: [arm64] 2085 - os: [darwin] 2086 - 2087 1785 '@esbuild/darwin-arm64@0.27.2': 2088 1786 resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} 2089 1787 engines: {node: '>=18'} ··· 2096 1794 cpu: [x64] 2097 1795 os: [darwin] 2098 1796 2099 - '@esbuild/darwin-x64@0.27.0': 2100 - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} 2101 - engines: {node: '>=18'} 2102 - cpu: [x64] 2103 - os: [darwin] 2104 - 2105 1797 '@esbuild/darwin-x64@0.27.2': 2106 1798 resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} 2107 1799 engines: {node: '>=18'} ··· 2110 1802 2111 1803 '@esbuild/freebsd-arm64@0.25.12': 2112 1804 resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 2113 - engines: {node: '>=18'} 2114 - cpu: [arm64] 2115 - os: [freebsd] 2116 - 2117 - '@esbuild/freebsd-arm64@0.27.0': 2118 - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} 2119 1805 engines: {node: '>=18'} 2120 1806 cpu: [arm64] 2121 1807 os: [freebsd] ··· 2132 1818 cpu: [x64] 2133 1819 os: [freebsd] 2134 1820 2135 - '@esbuild/freebsd-x64@0.27.0': 2136 - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} 2137 - engines: {node: '>=18'} 2138 - cpu: [x64] 2139 - os: [freebsd] 2140 - 2141 1821 '@esbuild/freebsd-x64@0.27.2': 2142 1822 resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} 2143 1823 engines: {node: '>=18'} ··· 2150 1830 cpu: [arm64] 2151 1831 os: [linux] 2152 1832 2153 - '@esbuild/linux-arm64@0.27.0': 2154 - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} 2155 - engines: {node: '>=18'} 2156 - cpu: [arm64] 2157 - os: [linux] 2158 - 2159 1833 '@esbuild/linux-arm64@0.27.2': 2160 1834 resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} 2161 1835 engines: {node: '>=18'} ··· 2168 1842 cpu: [arm] 2169 1843 os: [linux] 2170 1844 2171 - '@esbuild/linux-arm@0.27.0': 2172 - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} 2173 - engines: {node: '>=18'} 2174 - cpu: [arm] 2175 - os: [linux] 2176 - 2177 1845 '@esbuild/linux-arm@0.27.2': 2178 1846 resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} 2179 1847 engines: {node: '>=18'} ··· 2182 1850 2183 1851 '@esbuild/linux-ia32@0.25.12': 2184 1852 resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 2185 - engines: {node: '>=18'} 2186 - cpu: [ia32] 2187 - os: [linux] 2188 - 2189 - '@esbuild/linux-ia32@0.27.0': 2190 - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} 2191 1853 engines: {node: '>=18'} 2192 1854 cpu: [ia32] 2193 1855 os: [linux] ··· 2204 1866 cpu: [loong64] 2205 1867 os: [linux] 2206 1868 2207 - '@esbuild/linux-loong64@0.27.0': 2208 - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} 2209 - engines: {node: '>=18'} 2210 - cpu: [loong64] 2211 - os: [linux] 2212 - 2213 1869 '@esbuild/linux-loong64@0.27.2': 2214 1870 resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} 2215 1871 engines: {node: '>=18'} ··· 2222 1878 cpu: [mips64el] 2223 1879 os: [linux] 2224 1880 2225 - '@esbuild/linux-mips64el@0.27.0': 2226 - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} 2227 - engines: {node: '>=18'} 2228 - cpu: [mips64el] 2229 - os: [linux] 2230 - 2231 1881 '@esbuild/linux-mips64el@0.27.2': 2232 1882 resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} 2233 1883 engines: {node: '>=18'} ··· 2236 1886 2237 1887 '@esbuild/linux-ppc64@0.25.12': 2238 1888 resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 2239 - engines: {node: '>=18'} 2240 - cpu: [ppc64] 2241 - os: [linux] 2242 - 2243 - '@esbuild/linux-ppc64@0.27.0': 2244 - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} 2245 1889 engines: {node: '>=18'} 2246 1890 cpu: [ppc64] 2247 1891 os: [linux] ··· 2258 1902 cpu: [riscv64] 2259 1903 os: [linux] 2260 1904 2261 - '@esbuild/linux-riscv64@0.27.0': 2262 - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} 2263 - engines: {node: '>=18'} 2264 - cpu: [riscv64] 2265 - os: [linux] 2266 - 2267 1905 '@esbuild/linux-riscv64@0.27.2': 2268 1906 resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} 2269 1907 engines: {node: '>=18'} ··· 2276 1914 cpu: [s390x] 2277 1915 os: [linux] 2278 1916 2279 - '@esbuild/linux-s390x@0.27.0': 2280 - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} 2281 - engines: {node: '>=18'} 2282 - cpu: [s390x] 2283 - os: [linux] 2284 - 2285 1917 '@esbuild/linux-s390x@0.27.2': 2286 1918 resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} 2287 1919 engines: {node: '>=18'} ··· 2294 1926 cpu: [x64] 2295 1927 os: [linux] 2296 1928 2297 - '@esbuild/linux-x64@0.27.0': 2298 - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} 2299 - engines: {node: '>=18'} 2300 - cpu: [x64] 2301 - os: [linux] 2302 - 2303 1929 '@esbuild/linux-x64@0.27.2': 2304 1930 resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} 2305 1931 engines: {node: '>=18'} ··· 2308 1934 2309 1935 '@esbuild/netbsd-arm64@0.25.12': 2310 1936 resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 2311 - engines: {node: '>=18'} 2312 - cpu: [arm64] 2313 - os: [netbsd] 2314 - 2315 - '@esbuild/netbsd-arm64@0.27.0': 2316 - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} 2317 1937 engines: {node: '>=18'} 2318 1938 cpu: [arm64] 2319 1939 os: [netbsd] ··· 2330 1950 cpu: [x64] 2331 1951 os: [netbsd] 2332 1952 2333 - '@esbuild/netbsd-x64@0.27.0': 2334 - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} 2335 - engines: {node: '>=18'} 2336 - cpu: [x64] 2337 - os: [netbsd] 2338 - 2339 1953 '@esbuild/netbsd-x64@0.27.2': 2340 1954 resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} 2341 1955 engines: {node: '>=18'} ··· 2348 1962 cpu: [arm64] 2349 1963 os: [openbsd] 2350 1964 2351 - '@esbuild/openbsd-arm64@0.27.0': 2352 - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} 2353 - engines: {node: '>=18'} 2354 - cpu: [arm64] 2355 - os: [openbsd] 2356 - 2357 1965 '@esbuild/openbsd-arm64@0.27.2': 2358 1966 resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} 2359 1967 engines: {node: '>=18'} ··· 2366 1974 cpu: [x64] 2367 1975 os: [openbsd] 2368 1976 2369 - '@esbuild/openbsd-x64@0.27.0': 2370 - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} 2371 - engines: {node: '>=18'} 2372 - cpu: [x64] 2373 - os: [openbsd] 2374 - 2375 1977 '@esbuild/openbsd-x64@0.27.2': 2376 1978 resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} 2377 1979 engines: {node: '>=18'} ··· 2380 1982 2381 1983 '@esbuild/openharmony-arm64@0.25.12': 2382 1984 resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 2383 - engines: {node: '>=18'} 2384 - cpu: [arm64] 2385 - os: [openharmony] 2386 - 2387 - '@esbuild/openharmony-arm64@0.27.0': 2388 - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} 2389 1985 engines: {node: '>=18'} 2390 1986 cpu: [arm64] 2391 1987 os: [openharmony] ··· 2402 1998 cpu: [x64] 2403 1999 os: [sunos] 2404 2000 2405 - '@esbuild/sunos-x64@0.27.0': 2406 - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} 2407 - engines: {node: '>=18'} 2408 - cpu: [x64] 2409 - os: [sunos] 2410 - 2411 2001 '@esbuild/sunos-x64@0.27.2': 2412 2002 resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} 2413 2003 engines: {node: '>=18'} ··· 2420 2010 cpu: [arm64] 2421 2011 os: [win32] 2422 2012 2423 - '@esbuild/win32-arm64@0.27.0': 2424 - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} 2425 - engines: {node: '>=18'} 2426 - cpu: [arm64] 2427 - os: [win32] 2428 - 2429 2013 '@esbuild/win32-arm64@0.27.2': 2430 2014 resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} 2431 2015 engines: {node: '>=18'} ··· 2438 2022 cpu: [ia32] 2439 2023 os: [win32] 2440 2024 2441 - '@esbuild/win32-ia32@0.27.0': 2442 - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} 2443 - engines: {node: '>=18'} 2444 - cpu: [ia32] 2445 - os: [win32] 2446 - 2447 2025 '@esbuild/win32-ia32@0.27.2': 2448 2026 resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} 2449 2027 engines: {node: '>=18'} ··· 2452 2030 2453 2031 '@esbuild/win32-x64@0.25.12': 2454 2032 resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 2455 - engines: {node: '>=18'} 2456 - cpu: [x64] 2457 - os: [win32] 2458 - 2459 - '@esbuild/win32-x64@0.27.0': 2460 - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} 2461 2033 engines: {node: '>=18'} 2462 2034 cpu: [x64] 2463 2035 os: [win32] ··· 2493 2065 peerDependencies: 2494 2066 hono: ^4 2495 2067 2496 - '@img/colour@1.0.0': 2497 - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} 2498 - engines: {node: '>=18'} 2499 - 2500 2068 '@img/sharp-darwin-arm64@0.33.5': 2501 2069 resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 2502 2070 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2503 2071 cpu: [arm64] 2504 2072 os: [darwin] 2505 2073 2506 - '@img/sharp-darwin-arm64@0.34.5': 2507 - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} 2508 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2509 - cpu: [arm64] 2510 - os: [darwin] 2511 - 2512 2074 '@img/sharp-darwin-x64@0.33.5': 2513 2075 resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 2514 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2515 - cpu: [x64] 2516 - os: [darwin] 2517 - 2518 - '@img/sharp-darwin-x64@0.34.5': 2519 - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} 2520 2076 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2521 2077 cpu: [x64] 2522 2078 os: [darwin] ··· 2526 2082 cpu: [arm64] 2527 2083 os: [darwin] 2528 2084 2529 - '@img/sharp-libvips-darwin-arm64@1.2.4': 2530 - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} 2531 - cpu: [arm64] 2532 - os: [darwin] 2533 - 2534 2085 '@img/sharp-libvips-darwin-x64@1.0.4': 2535 2086 resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 2536 2087 cpu: [x64] 2537 2088 os: [darwin] 2538 2089 2539 - '@img/sharp-libvips-darwin-x64@1.2.4': 2540 - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} 2541 - cpu: [x64] 2542 - os: [darwin] 2543 - 2544 2090 '@img/sharp-libvips-linux-arm64@1.0.4': 2545 2091 resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 2546 - cpu: [arm64] 2547 - os: [linux] 2548 - libc: [glibc] 2549 - 2550 - '@img/sharp-libvips-linux-arm64@1.2.4': 2551 - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} 2552 2092 cpu: [arm64] 2553 2093 os: [linux] 2554 2094 libc: [glibc] ··· 2559 2099 os: [linux] 2560 2100 libc: [glibc] 2561 2101 2562 - '@img/sharp-libvips-linux-arm@1.2.4': 2563 - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} 2564 - cpu: [arm] 2565 - os: [linux] 2566 - libc: [glibc] 2567 - 2568 - '@img/sharp-libvips-linux-ppc64@1.2.4': 2569 - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} 2570 - cpu: [ppc64] 2571 - os: [linux] 2572 - libc: [glibc] 2573 - 2574 - '@img/sharp-libvips-linux-riscv64@1.2.4': 2575 - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} 2576 - cpu: [riscv64] 2577 - os: [linux] 2578 - libc: [glibc] 2579 - 2580 2102 '@img/sharp-libvips-linux-s390x@1.0.4': 2581 2103 resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 2582 - cpu: [s390x] 2583 - os: [linux] 2584 - libc: [glibc] 2585 - 2586 - '@img/sharp-libvips-linux-s390x@1.2.4': 2587 - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} 2588 2104 cpu: [s390x] 2589 2105 os: [linux] 2590 2106 libc: [glibc] ··· 2595 2111 os: [linux] 2596 2112 libc: [glibc] 2597 2113 2598 - '@img/sharp-libvips-linux-x64@1.2.4': 2599 - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} 2600 - cpu: [x64] 2601 - os: [linux] 2602 - libc: [glibc] 2603 - 2604 2114 '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 2605 2115 resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 2606 2116 cpu: [arm64] 2607 2117 os: [linux] 2608 2118 libc: [musl] 2609 2119 2610 - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 2611 - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} 2612 - cpu: [arm64] 2613 - os: [linux] 2614 - libc: [musl] 2615 - 2616 2120 '@img/sharp-libvips-linuxmusl-x64@1.0.4': 2617 2121 resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 2618 2122 cpu: [x64] 2619 2123 os: [linux] 2620 2124 libc: [musl] 2621 2125 2622 - '@img/sharp-libvips-linuxmusl-x64@1.2.4': 2623 - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} 2624 - cpu: [x64] 2625 - os: [linux] 2626 - libc: [musl] 2627 - 2628 2126 '@img/sharp-linux-arm64@0.33.5': 2629 2127 resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 2630 2128 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} ··· 2632 2130 os: [linux] 2633 2131 libc: [glibc] 2634 2132 2635 - '@img/sharp-linux-arm64@0.34.5': 2636 - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} 2637 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2638 - cpu: [arm64] 2639 - os: [linux] 2640 - libc: [glibc] 2641 - 2642 2133 '@img/sharp-linux-arm@0.33.5': 2643 2134 resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 2644 2135 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} ··· 2646 2137 os: [linux] 2647 2138 libc: [glibc] 2648 2139 2649 - '@img/sharp-linux-arm@0.34.5': 2650 - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} 2651 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2652 - cpu: [arm] 2653 - os: [linux] 2654 - libc: [glibc] 2655 - 2656 - '@img/sharp-linux-ppc64@0.34.5': 2657 - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} 2658 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2659 - cpu: [ppc64] 2660 - os: [linux] 2661 - libc: [glibc] 2662 - 2663 - '@img/sharp-linux-riscv64@0.34.5': 2664 - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} 2665 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2666 - cpu: [riscv64] 2667 - os: [linux] 2668 - libc: [glibc] 2669 - 2670 2140 '@img/sharp-linux-s390x@0.33.5': 2671 2141 resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 2672 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2673 - cpu: [s390x] 2674 - os: [linux] 2675 - libc: [glibc] 2676 - 2677 - '@img/sharp-linux-s390x@0.34.5': 2678 - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} 2679 2142 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2680 2143 cpu: [s390x] 2681 2144 os: [linux] ··· 2688 2151 os: [linux] 2689 2152 libc: [glibc] 2690 2153 2691 - '@img/sharp-linux-x64@0.34.5': 2692 - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} 2693 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2694 - cpu: [x64] 2695 - os: [linux] 2696 - libc: [glibc] 2697 - 2698 2154 '@img/sharp-linuxmusl-arm64@0.33.5': 2699 2155 resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 2700 2156 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} ··· 2702 2158 os: [linux] 2703 2159 libc: [musl] 2704 2160 2705 - '@img/sharp-linuxmusl-arm64@0.34.5': 2706 - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} 2707 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2708 - cpu: [arm64] 2709 - os: [linux] 2710 - libc: [musl] 2711 - 2712 2161 '@img/sharp-linuxmusl-x64@0.33.5': 2713 2162 resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 2714 2163 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} ··· 2716 2165 os: [linux] 2717 2166 libc: [musl] 2718 2167 2719 - '@img/sharp-linuxmusl-x64@0.34.5': 2720 - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} 2721 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2722 - cpu: [x64] 2723 - os: [linux] 2724 - libc: [musl] 2725 - 2726 2168 '@img/sharp-wasm32@0.33.5': 2727 2169 resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 2728 2170 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2729 2171 cpu: [wasm32] 2730 2172 2731 - '@img/sharp-wasm32@0.34.5': 2732 - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} 2733 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2734 - cpu: [wasm32] 2735 - 2736 - '@img/sharp-win32-arm64@0.34.5': 2737 - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} 2738 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2739 - cpu: [arm64] 2740 - os: [win32] 2741 - 2742 2173 '@img/sharp-win32-ia32@0.33.5': 2743 2174 resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 2744 2175 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2745 2176 cpu: [ia32] 2746 2177 os: [win32] 2747 2178 2748 - '@img/sharp-win32-ia32@0.34.5': 2749 - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} 2750 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2751 - cpu: [ia32] 2752 - os: [win32] 2753 - 2754 2179 '@img/sharp-win32-x64@0.33.5': 2755 2180 resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 2756 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2757 - cpu: [x64] 2758 - os: [win32] 2759 - 2760 - '@img/sharp-win32-x64@0.34.5': 2761 - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} 2762 2181 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2763 2182 cpu: [x64] 2764 2183 os: [win32] ··· 2830 2249 resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 2831 2250 engines: {node: '>=12'} 2832 2251 2833 - '@jridgewell/gen-mapping@0.3.13': 2834 - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 2835 - 2836 - '@jridgewell/remapping@2.3.5': 2837 - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} 2838 - 2839 2252 '@jridgewell/resolve-uri@3.1.2': 2840 2253 resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 2841 2254 engines: {node: '>=6.0.0'} ··· 2845 2258 2846 2259 '@jridgewell/trace-mapping@0.3.31': 2847 2260 resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 2848 - 2849 - '@jridgewell/trace-mapping@0.3.9': 2850 - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 2851 2261 2852 2262 '@jsr/mary__tar@0.3.1': 2853 2263 resolution: {integrity: sha512-T803kucwCLVOXFJGzVbpkT5vRK6fARy5HL6xMiLK5hJFck72bsAeluENlRnvD0kFPSlFNp/5EJWfTHnpDK0qYA==, tarball: https://npm.jsr.io/~/11/@jsr/mary__tar/0.3.1.tgz} ··· 3139 2549 '@polka/url@1.0.0-next.29': 3140 2550 resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} 3141 2551 3142 - '@poppinss/colors@4.1.6': 3143 - resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} 3144 - 3145 - '@poppinss/dumper@0.6.5': 3146 - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} 3147 - 3148 - '@poppinss/exception@1.2.3': 3149 - resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} 3150 - 3151 2552 '@prettier/plugin-oxc@0.1.3': 3152 2553 resolution: {integrity: sha512-aABz3zIRilpWMekbt1FL1JVBQrQLR8L4Td2SRctECrWSsXGTNn/G1BqNSKCdbvQS1LWstAXfqcXzDki7GAAJyg==} 3153 2554 engines: {node: '>=14'} 3154 - 3155 - '@rolldown/pluginutils@1.0.0-beta.53': 3156 - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} 3157 2555 3158 2556 '@rollup/rollup-android-arm-eabi@4.54.0': 3159 2557 resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} ··· 3275 2673 resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} 3276 2674 cpu: [x64] 3277 2675 os: [win32] 3278 - 3279 - '@sindresorhus/is@7.2.0': 3280 - resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} 3281 - engines: {node: '>=18'} 3282 2676 3283 2677 '@smithy/abort-controller@4.2.7': 3284 2678 resolution: {integrity: sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==} ··· 3496 2890 resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} 3497 2891 engines: {node: '>=18.0.0'} 3498 2892 3499 - '@speed-highlight/core@1.2.14': 3500 - resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} 3501 - 3502 2893 '@standard-schema/spec@1.1.0': 3503 2894 resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} 3504 2895 3505 2896 '@tokenizer/token@0.3.0': 3506 2897 resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} 3507 - 3508 - '@tsconfig/node24@24.0.4': 3509 - resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} 3510 2898 3511 2899 '@tybys/wasm-util@0.10.1': 3512 2900 resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} ··· 3519 2907 3520 2908 '@types/bun@1.3.6': 3521 2909 resolution: {integrity: sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA==} 2910 + 2911 + '@types/bun@1.3.8': 2912 + resolution: {integrity: sha512-3LvWJ2q5GerAXYxO2mffLTqOzEu5qnhEAlh48Vnu8WQfnmSwbgagjGZV6BoHKJztENYEDn6QmVd949W4uESRJA==} 3522 2913 3523 2914 '@types/chai@5.2.3': 3524 2915 resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} ··· 3544 2935 '@types/node@22.19.3': 3545 2936 resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} 3546 2937 3547 - '@types/node@24.10.9': 3548 - resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} 3549 - 3550 2938 '@types/node@25.0.3': 3551 2939 resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} 3552 2940 ··· 3597 2985 peerDependencies: 3598 2986 valibot: ^1.2.0 3599 2987 3600 - '@vitejs/plugin-vue@6.0.3': 3601 - resolution: {integrity: sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==} 3602 - engines: {node: ^20.19.0 || >=22.12.0} 3603 - peerDependencies: 3604 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 3605 - vue: ^3.2.25 3606 - 3607 2988 '@vitest/browser-playwright@4.0.16': 3608 2989 resolution: {integrity: sha512-I2Fy/ANdphi1yI46d15o0M1M4M0UJrUiVKkH5oKeRZZCdPg0fw/cfTKZzv9Ge9eobtJYp4BGblMzXdXH0vcl5g==} 3609 2990 peerDependencies: ··· 3653 3034 '@vitest/utils@4.0.16': 3654 3035 resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} 3655 3036 3656 - '@volar/language-core@2.4.27': 3657 - resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} 3658 - 3659 - '@volar/source-map@2.4.27': 3660 - resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} 3661 - 3662 - '@volar/typescript@2.4.27': 3663 - resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} 3664 - 3665 - '@vue/babel-helper-vue-transform-on@1.5.0': 3666 - resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} 3667 - 3668 - '@vue/babel-plugin-jsx@1.5.0': 3669 - resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} 3670 - peerDependencies: 3671 - '@babel/core': ^7.0.0-0 3672 - peerDependenciesMeta: 3673 - '@babel/core': 3674 - optional: true 3675 - 3676 - '@vue/babel-plugin-resolve-type@1.5.0': 3677 - resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} 3678 - peerDependencies: 3679 - '@babel/core': ^7.0.0-0 3680 - 3681 - '@vue/compiler-core@3.5.27': 3682 - resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} 3683 - 3684 - '@vue/compiler-dom@3.5.27': 3685 - resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} 3686 - 3687 - '@vue/compiler-sfc@3.5.27': 3688 - resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} 3689 - 3690 - '@vue/compiler-ssr@3.5.27': 3691 - resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} 3692 - 3693 - '@vue/devtools-api@6.6.4': 3694 - resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} 3695 - 3696 - '@vue/devtools-core@8.0.5': 3697 - resolution: {integrity: sha512-dpCw8nl0GDBuiL9SaY0mtDxoGIEmU38w+TQiYEPOLhW03VDC0lfNMYXS/qhl4I0YlysGp04NLY4UNn6xgD0VIQ==} 3698 - peerDependencies: 3699 - vue: ^3.0.0 3700 - 3701 - '@vue/devtools-kit@8.0.5': 3702 - resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} 3703 - 3704 - '@vue/devtools-shared@8.0.5': 3705 - resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} 3706 - 3707 - '@vue/language-core@3.2.2': 3708 - resolution: {integrity: sha512-5DAuhxsxBN9kbriklh3Q5AMaJhyOCNiQJvCskN9/30XOpdLiqZU9Q+WvjArP17ubdGEyZtBzlIeG5nIjEbNOrQ==} 3709 - 3710 - '@vue/reactivity@3.5.27': 3711 - resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} 3712 - 3713 - '@vue/runtime-core@3.5.27': 3714 - resolution: {integrity: sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==} 3715 - 3716 - '@vue/runtime-dom@3.5.27': 3717 - resolution: {integrity: sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==} 3718 - 3719 - '@vue/server-renderer@3.5.27': 3720 - resolution: {integrity: sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==} 3721 - peerDependencies: 3722 - vue: 3.5.27 3723 - 3724 - '@vue/shared@3.5.27': 3725 - resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} 3726 - 3727 - '@vue/tsconfig@0.8.1': 3728 - resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} 3729 - peerDependencies: 3730 - typescript: 5.x 3731 - vue: ^3.4.0 3732 - peerDependenciesMeta: 3733 - typescript: 3734 - optional: true 3735 - vue: 3736 - optional: true 3737 - 3738 3037 abort-controller@3.0.0: 3739 3038 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 3740 3039 engines: {node: '>=6.5'} ··· 3742 3041 accepts@1.3.8: 3743 3042 resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 3744 3043 engines: {node: '>= 0.6'} 3745 - 3746 - alien-signals@3.1.2: 3747 - resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} 3748 3044 3749 3045 ansi-colors@4.1.3: 3750 3046 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} ··· 3766 3062 resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} 3767 3063 engines: {node: '>=12'} 3768 3064 3769 - ansis@4.2.0: 3770 - resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} 3771 - engines: {node: '>=14'} 3772 - 3773 3065 argparse@1.0.10: 3774 3066 resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 3775 3067 ··· 3812 3104 base64-js@1.5.1: 3813 3105 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 3814 3106 3815 - baseline-browser-mapping@2.9.15: 3816 - resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} 3817 - hasBin: true 3818 - 3819 3107 better-path-resolve@1.0.0: 3820 3108 resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 3821 3109 engines: {node: '>=4'} ··· 3830 3118 bindings@1.5.0: 3831 3119 resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 3832 3120 3833 - birpc@2.9.0: 3834 - resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} 3835 - 3836 3121 bl@4.1.0: 3837 3122 resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 3838 - 3839 - blake3-wasm@2.1.5: 3840 - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 3841 3123 3842 3124 bn.js@4.12.2: 3843 3125 resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} ··· 3859 3141 brorand@1.1.0: 3860 3142 resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} 3861 3143 3862 - browserslist@4.28.1: 3863 - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} 3864 - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 3865 - hasBin: true 3866 - 3867 3144 buffer@5.6.0: 3868 3145 resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} 3869 3146 ··· 3879 3156 bun-types@1.3.6: 3880 3157 resolution: {integrity: sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ==} 3881 3158 3882 - bundle-name@4.1.0: 3883 - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} 3884 - engines: {node: '>=18'} 3159 + bun-types@1.3.8: 3160 + resolution: {integrity: sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q==} 3885 3161 3886 3162 bytes@3.1.2: 3887 3163 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} ··· 3894 3170 call-bound@1.0.4: 3895 3171 resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 3896 3172 engines: {node: '>= 0.4'} 3897 - 3898 - caniuse-lite@1.0.30001765: 3899 - resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} 3900 3173 3901 3174 cbor-extract@2.2.0: 3902 3175 resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} ··· 3969 3242 resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 3970 3243 engines: {node: '>= 0.6'} 3971 3244 3972 - convert-source-map@2.0.0: 3973 - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 3974 - 3975 3245 cookie-signature@1.0.7: 3976 3246 resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} 3977 3247 ··· 3979 3249 resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 3980 3250 engines: {node: '>= 0.6'} 3981 3251 3982 - cookie@1.1.1: 3983 - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} 3984 - engines: {node: '>=18'} 3985 - 3986 - copy-anything@4.0.5: 3987 - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} 3988 - engines: {node: '>=18'} 3989 - 3990 3252 core-js@3.47.0: 3991 3253 resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} 3992 3254 ··· 3997 3259 cross-spawn@7.0.6: 3998 3260 resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 3999 3261 engines: {node: '>= 8'} 4000 - 4001 - csstype@3.2.3: 4002 - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} 4003 3262 4004 3263 debug@2.6.9: 4005 3264 resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} ··· 4030 3289 resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 4031 3290 engines: {node: '>=0.10.0'} 4032 3291 4033 - default-browser-id@5.0.1: 4034 - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} 4035 - engines: {node: '>=18'} 4036 - 4037 - default-browser@5.4.0: 4038 - resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} 4039 - engines: {node: '>=18'} 4040 - 4041 - define-lazy-prop@3.0.0: 4042 - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 4043 - engines: {node: '>=12'} 4044 - 4045 3292 delay@5.0.0: 4046 3293 resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} 4047 3294 engines: {node: '>=10'} ··· 4100 3347 ee-first@1.1.1: 4101 3348 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 4102 3349 4103 - electron-to-chromium@1.5.267: 4104 - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} 4105 - 4106 3350 elliptic@6.6.1: 4107 3351 resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} 4108 3352 ··· 4129 3373 entities@2.2.0: 4130 3374 resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 4131 3375 4132 - entities@7.0.0: 4133 - resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} 4134 - engines: {node: '>=0.12'} 4135 - 4136 - error-stack-parser-es@1.0.5: 4137 - resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} 4138 - 4139 3376 es-define-property@1.0.1: 4140 3377 resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 4141 3378 engines: {node: '>= 0.4'} ··· 4160 3397 engines: {node: '>=18'} 4161 3398 hasBin: true 4162 3399 4163 - esbuild@0.27.0: 4164 - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} 4165 - engines: {node: '>=18'} 4166 - hasBin: true 4167 - 4168 3400 esbuild@0.27.2: 4169 3401 resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} 4170 3402 engines: {node: '>=18'} 4171 3403 hasBin: true 4172 3404 4173 - escalade@3.2.0: 4174 - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 4175 - engines: {node: '>=6'} 4176 - 4177 3405 escape-html@1.0.3: 4178 3406 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 4179 3407 ··· 4184 3412 resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 4185 3413 engines: {node: '>=4'} 4186 3414 hasBin: true 4187 - 4188 - estree-walker@2.0.2: 4189 - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 4190 3415 4191 3416 estree-walker@3.0.3: 4192 3417 resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} ··· 4329 3554 function-bind@1.1.2: 4330 3555 resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 4331 3556 4332 - gensync@1.0.0-beta.2: 4333 - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 4334 - engines: {node: '>=6.9.0'} 4335 - 4336 3557 get-caller-file@2.0.5: 4337 3558 resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 4338 3559 engines: {node: 6.* || 8.* || >= 10.*} ··· 4412 3633 hono@4.11.3: 4413 3634 resolution: {integrity: sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==} 4414 3635 engines: {node: '>=16.9.0'} 4415 - 4416 - hookable@5.5.3: 4417 - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} 4418 3636 4419 3637 html-escaper@2.0.2: 4420 3638 resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} ··· 4475 3693 is-arrayish@0.3.4: 4476 3694 resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} 4477 3695 4478 - is-docker@3.0.0: 4479 - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 4480 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4481 - hasBin: true 4482 - 4483 3696 is-extglob@2.1.1: 4484 3697 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 4485 3698 engines: {node: '>=0.10.0'} ··· 4492 3705 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 4493 3706 engines: {node: '>=0.10.0'} 4494 3707 4495 - is-inside-container@1.0.0: 4496 - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 4497 - engines: {node: '>=14.16'} 4498 - hasBin: true 4499 - 4500 3708 is-number@7.0.0: 4501 3709 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 4502 3710 engines: {node: '>=0.12.0'} ··· 4505 3713 resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 4506 3714 engines: {node: '>=4'} 4507 3715 4508 - is-what@5.5.0: 4509 - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} 4510 - engines: {node: '>=18'} 4511 - 4512 3716 is-windows@1.0.2: 4513 3717 resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 4514 3718 engines: {node: '>=0.10.0'} 4515 3719 4516 - is-wsl@3.1.0: 4517 - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 4518 - engines: {node: '>=16'} 4519 - 4520 3720 isexe@2.0.0: 4521 3721 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 4522 - 4523 - isexe@3.1.1: 4524 - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} 4525 - engines: {node: '>=16'} 4526 3722 4527 3723 iso-datestring-validator@2.2.2: 4528 3724 resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} ··· 4553 3749 jose@5.10.0: 4554 3750 resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} 4555 3751 4556 - js-tokens@4.0.0: 4557 - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 4558 - 4559 3752 js-tokens@9.0.1: 4560 3753 resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} 4561 3754 ··· 4567 3760 resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 4568 3761 hasBin: true 4569 3762 4570 - jsesc@3.1.0: 4571 - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 4572 - engines: {node: '>=6'} 4573 - hasBin: true 4574 - 4575 - json-parse-even-better-errors@4.0.0: 4576 - resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} 4577 - engines: {node: ^18.17.0 || >=20.5.0} 4578 - 4579 - json5@2.2.3: 4580 - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 4581 - engines: {node: '>=6'} 4582 - hasBin: true 4583 - 4584 3763 jsonfile@4.0.0: 4585 3764 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 4586 3765 4587 3766 key-encoder@2.0.3: 4588 3767 resolution: {integrity: sha512-fgBtpAGIr/Fy5/+ZLQZIPPhsZEcbSlYu/Wu96tNDFNSjSACw5lEIOFeaVdQ/iwrb8oxjlWi6wmWdH76hV6GZjg==} 4589 - 4590 - kleur@4.1.5: 4591 - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 4592 - engines: {node: '>=6'} 4593 - 4594 - kolorist@1.8.0: 4595 - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} 4596 3768 4597 3769 kysely@0.22.0: 4598 3770 resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} ··· 4617 3789 4618 3790 lru-cache@10.4.3: 4619 3791 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 4620 - 4621 - lru-cache@5.1.1: 4622 - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 4623 3792 4624 3793 magic-string@0.30.21: 4625 3794 resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} ··· 4639 3808 resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 4640 3809 engines: {node: '>= 0.6'} 4641 3810 4642 - memorystream@0.3.1: 4643 - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} 4644 - engines: {node: '>= 0.10.0'} 4645 - 4646 3811 merge-descriptors@1.0.3: 4647 3812 resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 4648 3813 ··· 4679 3844 resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 4680 3845 engines: {node: '>=10'} 4681 3846 4682 - miniflare@4.20260114.0: 4683 - resolution: {integrity: sha512-QwHT7S6XqGdQxIvql1uirH/7/i3zDEt0B/YBXTYzMfJtVCR4+ue3KPkU+Bl0zMxvpgkvjh9+eCHhJbKEqya70A==} 4684 - engines: {node: '>=18.0.0'} 4685 - hasBin: true 4686 - 4687 3847 minimalistic-assert@1.0.1: 4688 3848 resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} 4689 3849 ··· 4703 3863 4704 3864 mitata@1.0.34: 4705 3865 resolution: {integrity: sha512-Mc3zrtNBKIMeHSCQ0XqRLo1vbdIx1wvFV9c8NJAiyho6AjNfMY8bVhbS12bwciUdd1t4rj8099CH3N3NFahaUA==} 4706 - 4707 - mitt@3.0.1: 4708 - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} 4709 3866 4710 3867 mkdirp-classic@0.5.3: 4711 3868 resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} ··· 4723 3880 4724 3881 ms@2.1.3: 4725 3882 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 4726 - 4727 - muggle-string@0.4.1: 4728 - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} 4729 3883 4730 3884 multiformats@13.4.2: 4731 3885 resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} ··· 4773 3927 resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} 4774 3928 hasBin: true 4775 3929 4776 - node-releases@2.0.27: 4777 - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} 4778 - 4779 3930 nodemailer-html-to-text@3.2.0: 4780 3931 resolution: {integrity: sha512-RJUC6640QV1PzTHHapOrc6IzrAJUZtk2BdVdINZ9VTLm+mcQNyBO9LYyhrnufkzqiD9l8hPLJ97rSyK4WanPNg==} 4781 3932 engines: {node: '>= 10.23.0'} ··· 4784 3935 resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==} 4785 3936 engines: {node: '>=6.0.0'} 4786 3937 4787 - npm-normalize-package-bin@4.0.0: 4788 - resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} 4789 - engines: {node: ^18.17.0 || >=20.5.0} 4790 - 4791 - npm-run-all2@8.0.4: 4792 - resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==} 4793 - engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'} 4794 - hasBin: true 4795 - 4796 3938 npm-run-path@3.1.0: 4797 3939 resolution: {integrity: sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==} 4798 3940 engines: {node: '>=8'} ··· 4808 3950 obug@2.1.1: 4809 3951 resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 4810 3952 4811 - ohash@2.0.11: 4812 - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 4813 - 4814 3953 on-exit-leak-free@2.1.2: 4815 3954 resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 4816 3955 engines: {node: '>=14.0.0'} ··· 4829 3968 one-webcrypto@1.0.3: 4830 3969 resolution: {integrity: sha512-fu9ywBVBPx0gS9K0etIROTiCkvI5S1TDjFsYFb3rC1ewFxeOqsbzq7aIMBHsYfrTHBcGXJaONXXjTl8B01cW1Q==} 4831 3970 4832 - open@10.2.0: 4833 - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} 4834 - engines: {node: '>=18'} 4835 - 4836 3971 outdent@0.5.0: 4837 3972 resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 4838 3973 ··· 4908 4043 partysocket@1.1.10: 4909 4044 resolution: {integrity: sha512-ACfn0P6lQuj8/AqB4L5ZDFcIEbpnIteNNObrlxqV1Ge80GTGhjuJ2sNKwNQlFzhGi4kI7fP/C1Eqh8TR78HjDQ==} 4910 4045 4911 - path-browserify@1.0.1: 4912 - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 4913 - 4914 4046 path-exists@4.0.0: 4915 4047 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 4916 4048 engines: {node: '>=8'} ··· 4926 4058 path-to-regexp@0.1.12: 4927 4059 resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} 4928 4060 4929 - path-to-regexp@6.3.0: 4930 - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 4931 - 4932 4061 path-type@4.0.0: 4933 4062 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 4934 4063 engines: {node: '>=8'} ··· 4940 4069 resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} 4941 4070 engines: {node: '>=8'} 4942 4071 4943 - perfect-debounce@2.0.0: 4944 - resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} 4945 - 4946 4072 pg-cloudflare@1.2.7: 4947 4073 resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} 4948 4074 ··· 4987 4113 picomatch@4.0.3: 4988 4114 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 4989 4115 engines: {node: '>=12'} 4990 - 4991 - pidtree@0.6.0: 4992 - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 4993 - engines: {node: '>=0.10'} 4994 - hasBin: true 4995 4116 4996 4117 pify@4.0.1: 4997 4118 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} ··· 5115 4236 resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 5116 4237 hasBin: true 5117 4238 5118 - read-package-json-fast@4.0.0: 5119 - resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} 5120 - engines: {node: ^18.17.0 || >=20.5.0} 5121 - 5122 4239 read-yaml-file@1.1.0: 5123 4240 resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 5124 4241 engines: {node: '>=6'} ··· 5158 4275 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 5159 4276 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 5160 4277 5161 - rfdc@1.4.1: 5162 - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 5163 - 5164 4278 roarr@7.21.2: 5165 4279 resolution: {integrity: sha512-RyXI+aNxwVyfF71a9cqz/jhXWbycnVh7GXnnJUniIBXKTOJQF3rmpNexStXt8TUcKyiXCwyfYzboZLMYUllPDA==} 5166 4280 engines: {node: '>=18.0'} ··· 5170 4284 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 5171 4285 hasBin: true 5172 4286 5173 - run-applescript@7.1.0: 5174 - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} 5175 - engines: {node: '>=18'} 5176 - 5177 4287 run-parallel@1.2.0: 5178 4288 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 5179 4289 ··· 5193 4303 semver-compare@1.0.0: 5194 4304 resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} 5195 4305 5196 - semver@6.3.1: 5197 - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 5198 - hasBin: true 5199 - 5200 4306 semver@7.7.3: 5201 4307 resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 5202 4308 engines: {node: '>=10'} ··· 5217 4323 resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 5218 4324 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 5219 4325 5220 - sharp@0.34.5: 5221 - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} 5222 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 5223 - 5224 4326 shebang-command@2.0.0: 5225 4327 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 5226 4328 engines: {node: '>=8'} ··· 5228 4330 shebang-regex@3.0.0: 5229 4331 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 5230 4332 engines: {node: '>=8'} 5231 - 5232 - shell-quote@1.8.3: 5233 - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} 5234 - engines: {node: '>= 0.4'} 5235 4333 5236 4334 side-channel-list@1.0.0: 5237 4335 resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} ··· 5287 4385 spawndamnit@3.0.1: 5288 4386 resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 5289 4387 5290 - speakingurl@14.0.1: 5291 - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} 5292 - engines: {node: '>=0.10.0'} 5293 - 5294 4388 split2@4.2.0: 5295 4389 resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 5296 4390 engines: {node: '>= 10.x'} ··· 5352 4446 resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} 5353 4447 engines: {node: '>=10'} 5354 4448 5355 - superjson@2.2.6: 5356 - resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} 5357 - engines: {node: '>=16'} 5358 - 5359 - supports-color@10.2.2: 5360 - resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} 5361 - engines: {node: '>=18'} 5362 - 5363 4449 supports-color@7.2.0: 5364 4450 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 5365 4451 engines: {node: '>=8'} ··· 5473 4559 resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==} 5474 4560 engines: {node: '>=18.17'} 5475 4561 5476 - undici@7.14.0: 5477 - resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} 5478 - engines: {node: '>=20.18.1'} 5479 - 5480 - unenv@2.0.0-rc.24: 5481 - resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} 5482 - 5483 4562 unicode-segmenter@0.14.5: 5484 4563 resolution: {integrity: sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==} 5485 4564 ··· 5491 4570 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 5492 4571 engines: {node: '>= 0.8'} 5493 4572 5494 - unplugin-utils@0.3.1: 5495 - resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} 5496 - engines: {node: '>=20.19.0'} 5497 - 5498 - update-browserslist-db@1.2.3: 5499 - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} 5500 - hasBin: true 5501 - peerDependencies: 5502 - browserslist: '>= 4.21.0' 5503 - 5504 4573 util-deprecate@1.0.2: 5505 4574 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 5506 4575 ··· 5523 4592 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 5524 4593 engines: {node: '>= 0.8'} 5525 4594 5526 - vite-dev-rpc@1.1.0: 5527 - resolution: {integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==} 5528 - peerDependencies: 5529 - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 5530 - 5531 - vite-hot-client@2.1.0: 5532 - resolution: {integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==} 5533 - peerDependencies: 5534 - vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 5535 - 5536 - vite-plugin-inspect@11.3.3: 5537 - resolution: {integrity: sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==} 5538 - engines: {node: '>=14'} 5539 - peerDependencies: 5540 - '@nuxt/kit': '*' 5541 - vite: ^6.0.0 || ^7.0.0-0 5542 - peerDependenciesMeta: 5543 - '@nuxt/kit': 5544 - optional: true 5545 - 5546 - vite-plugin-vue-devtools@8.0.5: 5547 - resolution: {integrity: sha512-p619BlKFOqQXJ6uDWS1vUPQzuJOD6xJTfftj57JXBGoBD/yeQCowR7pnWcr/FEX4/HVkFbreI6w2uuGBmQOh6A==} 5548 - engines: {node: '>=v14.21.3'} 5549 - peerDependencies: 5550 - vite: ^6.0.0 || ^7.0.0-0 5551 - 5552 - vite-plugin-vue-inspector@5.3.2: 5553 - resolution: {integrity: sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q==} 5554 - peerDependencies: 5555 - vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 5556 - 5557 4595 vite@7.3.0: 5558 4596 resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} 5559 4597 engines: {node: ^20.19.0 || >=22.12.0} ··· 5628 4666 jsdom: 5629 4667 optional: true 5630 4668 5631 - vscode-uri@3.1.0: 5632 - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} 5633 - 5634 - vue-router@4.6.4: 5635 - resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} 5636 - peerDependencies: 5637 - vue: ^3.5.0 5638 - 5639 - vue-tsc@3.2.2: 5640 - resolution: {integrity: sha512-r9YSia/VgGwmbbfC06hDdAatH634XJ9nVl6Zrnz1iK4ucp8Wu78kawplXnIDa3MSu1XdQQePTHLXYwPDWn+nyQ==} 5641 - hasBin: true 5642 - peerDependencies: 5643 - typescript: '>=5.0.0' 5644 - 5645 - vue@3.5.27: 5646 - resolution: {integrity: sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==} 5647 - peerDependencies: 5648 - typescript: '*' 5649 - peerDependenciesMeta: 5650 - typescript: 5651 - optional: true 5652 - 5653 4669 which@2.0.2: 5654 4670 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 5655 4671 engines: {node: '>= 8'} 5656 4672 hasBin: true 5657 4673 5658 - which@5.0.0: 5659 - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} 5660 - engines: {node: ^18.17.0 || >=20.5.0} 5661 - hasBin: true 5662 - 5663 4674 why-is-node-running@2.3.0: 5664 4675 resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 5665 4676 engines: {node: '>=8'} ··· 5668 4679 wordwrap@1.0.0: 5669 4680 resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} 5670 4681 5671 - workerd@1.20260114.0: 5672 - resolution: {integrity: sha512-kTJ+jNdIllOzWuVA3NRQRvywP0T135zdCjAE2dAUY1BFbxM6fmMZV8BbskEoQ4hAODVQUfZQmyGctcwvVCKxFA==} 5673 - engines: {node: '>=16'} 5674 - hasBin: true 5675 - 5676 - wrangler@4.59.2: 5677 - resolution: {integrity: sha512-Z4xn6jFZTaugcOKz42xvRAYKgkVUERHVbuCJ5+f+gK+R6k12L02unakPGOA0L0ejhUl16dqDjKe4tmL9sedHcw==} 5678 - engines: {node: '>=20.0.0'} 5679 - hasBin: true 5680 - peerDependencies: 5681 - '@cloudflare/workers-types': ^4.20260114.0 5682 - peerDependenciesMeta: 5683 - '@cloudflare/workers-types': 5684 - optional: true 5685 - 5686 4682 wrap-ansi@7.0.0: 5687 4683 resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 5688 4684 engines: {node: '>=10'} ··· 5698 4694 wrappy@1.0.2: 5699 4695 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 5700 4696 5701 - ws@8.18.0: 5702 - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 5703 - engines: {node: '>=10.0.0'} 5704 - peerDependencies: 5705 - bufferutil: ^4.0.1 5706 - utf-8-validate: '>=5.0.2' 5707 - peerDependenciesMeta: 5708 - bufferutil: 5709 - optional: true 5710 - utf-8-validate: 5711 - optional: true 5712 - 5713 4697 ws@8.18.3: 5714 4698 resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} 5715 4699 engines: {node: '>=10.0.0'} ··· 5722 4706 utf-8-validate: 5723 4707 optional: true 5724 4708 5725 - wsl-utils@0.1.0: 5726 - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} 5727 - engines: {node: '>=18'} 5728 - 5729 4709 xtend@4.0.2: 5730 4710 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 5731 4711 engines: {node: '>=0.4'} 5732 4712 5733 - yallist@3.1.1: 5734 - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 5735 - 5736 4713 yaml@2.8.0: 5737 4714 resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} 5738 4715 engines: {node: '>= 14.6'} ··· 5742 4719 resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} 5743 4720 engines: {node: '>=12.20'} 5744 4721 5745 - youch-core@0.3.3: 5746 - resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} 5747 - 5748 - youch@4.1.0-beta.10: 5749 - resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} 5750 - 5751 4722 zod@3.25.76: 5752 4723 resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 5753 4724 ··· 5786 4757 '@atcute/microcosm@file:packages/definitions/microcosm': 5787 4758 dependencies: 5788 4759 '@atcute/lexicons': link:packages/lexicons/lexicons 5789 - 5790 - '@atcute/oauth-cab@file:packages/oauth/cab(@atcute/oauth-browser-client@packages+oauth+browser-client)': 5791 - dependencies: 5792 - '@atcute/client': link:packages/clients/client 5793 - '@atcute/lexicons': link:packages/lexicons/lexicons 5794 - '@atcute/multibase': link:packages/utilities/multibase 5795 - '@atcute/oauth-crypto': link:packages/oauth/crypto 5796 - '@atcute/oauth-keyset': link:packages/oauth/keyset 5797 - '@atcute/oauth-types': link:packages/oauth/types 5798 - '@atcute/uint8array': link:packages/misc/uint8array 5799 - '@atcute/xrpc-server': link:packages/servers/xrpc-server 5800 - optionalDependencies: 5801 - '@atcute/oauth-browser-client': link:packages/oauth/browser-client 5802 4760 5803 4761 '@atcute/ozone@file:packages/definitions/ozone': 5804 4762 dependencies: ··· 6764 5722 6765 5723 '@aws/lambda-invoke-store@0.2.2': {} 6766 5724 6767 - '@babel/code-frame@7.28.6': 6768 - dependencies: 6769 - '@babel/helper-validator-identifier': 7.28.5 6770 - js-tokens: 4.0.0 6771 - picocolors: 1.1.1 6772 - 6773 - '@babel/compat-data@7.28.6': {} 6774 - 6775 - '@babel/core@7.28.6': 6776 - dependencies: 6777 - '@babel/code-frame': 7.28.6 6778 - '@babel/generator': 7.28.6 6779 - '@babel/helper-compilation-targets': 7.28.6 6780 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) 6781 - '@babel/helpers': 7.28.6 6782 - '@babel/parser': 7.28.6 6783 - '@babel/template': 7.28.6 6784 - '@babel/traverse': 7.28.6 6785 - '@babel/types': 7.28.6 6786 - '@jridgewell/remapping': 2.3.5 6787 - convert-source-map: 2.0.0 6788 - debug: 4.4.3 6789 - gensync: 1.0.0-beta.2 6790 - json5: 2.2.3 6791 - semver: 6.3.1 6792 - transitivePeerDependencies: 6793 - - supports-color 6794 - 6795 - '@babel/generator@7.28.6': 6796 - dependencies: 6797 - '@babel/parser': 7.28.6 6798 - '@babel/types': 7.28.6 6799 - '@jridgewell/gen-mapping': 0.3.13 6800 - '@jridgewell/trace-mapping': 0.3.31 6801 - jsesc: 3.1.0 6802 - 6803 - '@babel/helper-annotate-as-pure@7.27.3': 6804 - dependencies: 6805 - '@babel/types': 7.28.5 6806 - 6807 - '@babel/helper-compilation-targets@7.28.6': 6808 - dependencies: 6809 - '@babel/compat-data': 7.28.6 6810 - '@babel/helper-validator-option': 7.27.1 6811 - browserslist: 4.28.1 6812 - lru-cache: 5.1.1 6813 - semver: 6.3.1 6814 - 6815 - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)': 6816 - dependencies: 6817 - '@babel/core': 7.28.6 6818 - '@babel/helper-annotate-as-pure': 7.27.3 6819 - '@babel/helper-member-expression-to-functions': 7.28.5 6820 - '@babel/helper-optimise-call-expression': 7.27.1 6821 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) 6822 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 6823 - '@babel/traverse': 7.28.6 6824 - semver: 6.3.1 6825 - transitivePeerDependencies: 6826 - - supports-color 6827 - 6828 - '@babel/helper-globals@7.28.0': {} 6829 - 6830 - '@babel/helper-member-expression-to-functions@7.28.5': 6831 - dependencies: 6832 - '@babel/traverse': 7.28.6 6833 - '@babel/types': 7.28.5 6834 - transitivePeerDependencies: 6835 - - supports-color 6836 - 6837 - '@babel/helper-module-imports@7.28.6': 6838 - dependencies: 6839 - '@babel/traverse': 7.28.6 6840 - '@babel/types': 7.28.6 6841 - transitivePeerDependencies: 6842 - - supports-color 6843 - 6844 - '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': 6845 - dependencies: 6846 - '@babel/core': 7.28.6 6847 - '@babel/helper-module-imports': 7.28.6 6848 - '@babel/helper-validator-identifier': 7.28.5 6849 - '@babel/traverse': 7.28.6 6850 - transitivePeerDependencies: 6851 - - supports-color 6852 - 6853 - '@babel/helper-optimise-call-expression@7.27.1': 6854 - dependencies: 6855 - '@babel/types': 7.28.5 6856 - 6857 - '@babel/helper-plugin-utils@7.28.6': {} 6858 - 6859 - '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)': 6860 - dependencies: 6861 - '@babel/core': 7.28.6 6862 - '@babel/helper-member-expression-to-functions': 7.28.5 6863 - '@babel/helper-optimise-call-expression': 7.27.1 6864 - '@babel/traverse': 7.28.6 6865 - transitivePeerDependencies: 6866 - - supports-color 6867 - 6868 - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 6869 - dependencies: 6870 - '@babel/traverse': 7.28.6 6871 - '@babel/types': 7.28.5 6872 - transitivePeerDependencies: 6873 - - supports-color 6874 - 6875 5725 '@babel/helper-string-parser@7.27.1': {} 6876 5726 6877 5727 '@babel/helper-validator-identifier@7.28.5': {} 6878 5728 6879 - '@babel/helper-validator-option@7.27.1': {} 6880 - 6881 - '@babel/helpers@7.28.6': 6882 - dependencies: 6883 - '@babel/template': 7.28.6 6884 - '@babel/types': 7.28.6 6885 - 6886 5729 '@babel/parser@7.28.5': 6887 5730 dependencies: 6888 5731 '@babel/types': 7.28.5 6889 5732 6890 - '@babel/parser@7.28.6': 6891 - dependencies: 6892 - '@babel/types': 7.28.6 6893 - 6894 - '@babel/plugin-proposal-decorators@7.28.6(@babel/core@7.28.6)': 6895 - dependencies: 6896 - '@babel/core': 7.28.6 6897 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) 6898 - '@babel/helper-plugin-utils': 7.28.6 6899 - '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.28.6) 6900 - transitivePeerDependencies: 6901 - - supports-color 6902 - 6903 - '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.28.6)': 6904 - dependencies: 6905 - '@babel/core': 7.28.6 6906 - '@babel/helper-plugin-utils': 7.28.6 6907 - 6908 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.6)': 6909 - dependencies: 6910 - '@babel/core': 7.28.6 6911 - '@babel/helper-plugin-utils': 7.28.6 6912 - 6913 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.6)': 6914 - dependencies: 6915 - '@babel/core': 7.28.6 6916 - '@babel/helper-plugin-utils': 7.28.6 6917 - 6918 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)': 6919 - dependencies: 6920 - '@babel/core': 7.28.6 6921 - '@babel/helper-plugin-utils': 7.28.6 6922 - 6923 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.6)': 6924 - dependencies: 6925 - '@babel/core': 7.28.6 6926 - '@babel/helper-plugin-utils': 7.28.6 6927 - 6928 - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.6)': 6929 - dependencies: 6930 - '@babel/core': 7.28.6 6931 - '@babel/helper-annotate-as-pure': 7.27.3 6932 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) 6933 - '@babel/helper-plugin-utils': 7.28.6 6934 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 6935 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6) 6936 - transitivePeerDependencies: 6937 - - supports-color 6938 - 6939 5733 '@babel/runtime@7.28.4': {} 6940 5734 6941 - '@babel/template@7.28.6': 6942 - dependencies: 6943 - '@babel/code-frame': 7.28.6 6944 - '@babel/parser': 7.28.6 6945 - '@babel/types': 7.28.6 6946 - 6947 - '@babel/traverse@7.28.6': 6948 - dependencies: 6949 - '@babel/code-frame': 7.28.6 6950 - '@babel/generator': 7.28.6 6951 - '@babel/helper-globals': 7.28.0 6952 - '@babel/parser': 7.28.6 6953 - '@babel/template': 7.28.6 6954 - '@babel/types': 7.28.6 6955 - debug: 4.4.3 6956 - transitivePeerDependencies: 6957 - - supports-color 6958 - 6959 5735 '@babel/types@7.28.5': 6960 - dependencies: 6961 - '@babel/helper-string-parser': 7.27.1 6962 - '@babel/helper-validator-identifier': 7.28.5 6963 - 6964 - '@babel/types@7.28.6': 6965 5736 dependencies: 6966 5737 '@babel/helper-string-parser': 7.27.1 6967 5738 '@babel/helper-validator-identifier': 7.28.5 ··· 7132 5903 human-id: 4.1.3 7133 5904 prettier: 2.8.8 7134 5905 7135 - '@cloudflare/kv-asset-handler@0.4.2': {} 7136 - 7137 - '@cloudflare/unenv-preset@2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0)': 7138 - dependencies: 7139 - unenv: 2.0.0-rc.24 7140 - optionalDependencies: 7141 - workerd: 1.20260114.0 7142 - 7143 - '@cloudflare/vite-plugin@1.21.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(workerd@1.20260114.0)(wrangler@4.59.2)': 7144 - dependencies: 7145 - '@cloudflare/unenv-preset': 2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0) 7146 - miniflare: 4.20260114.0 7147 - unenv: 2.0.0-rc.24 7148 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 7149 - wrangler: 4.59.2 7150 - ws: 8.18.0 7151 - transitivePeerDependencies: 7152 - - bufferutil 7153 - - utf-8-validate 7154 - - workerd 7155 - 7156 - '@cloudflare/workerd-darwin-64@1.20260114.0': 7157 - optional: true 7158 - 7159 - '@cloudflare/workerd-darwin-arm64@1.20260114.0': 7160 - optional: true 7161 - 7162 - '@cloudflare/workerd-linux-64@1.20260114.0': 7163 - optional: true 7164 - 7165 - '@cloudflare/workerd-linux-arm64@1.20260114.0': 7166 - optional: true 7167 - 7168 - '@cloudflare/workerd-windows-64@1.20260114.0': 7169 - optional: true 7170 - 7171 5906 '@cloudflare/workers-types@4.20260103.0': {} 7172 5907 7173 - '@cspotcode/source-map-support@0.8.1': 7174 - dependencies: 7175 - '@jridgewell/trace-mapping': 0.3.9 7176 - 7177 5908 '@did-plc/lib@0.0.4': 7178 5909 dependencies: 7179 5910 '@atproto/common': 0.1.1 ··· 7225 5956 '@esbuild/aix-ppc64@0.25.12': 7226 5957 optional: true 7227 5958 7228 - '@esbuild/aix-ppc64@0.27.0': 7229 - optional: true 7230 - 7231 5959 '@esbuild/aix-ppc64@0.27.2': 7232 5960 optional: true 7233 5961 7234 5962 '@esbuild/android-arm64@0.25.12': 7235 5963 optional: true 7236 5964 7237 - '@esbuild/android-arm64@0.27.0': 7238 - optional: true 7239 - 7240 5965 '@esbuild/android-arm64@0.27.2': 7241 5966 optional: true 7242 5967 7243 5968 '@esbuild/android-arm@0.25.12': 7244 5969 optional: true 7245 5970 7246 - '@esbuild/android-arm@0.27.0': 7247 - optional: true 7248 - 7249 5971 '@esbuild/android-arm@0.27.2': 7250 5972 optional: true 7251 5973 7252 5974 '@esbuild/android-x64@0.25.12': 7253 - optional: true 7254 - 7255 - '@esbuild/android-x64@0.27.0': 7256 5975 optional: true 7257 5976 7258 5977 '@esbuild/android-x64@0.27.2': 7259 5978 optional: true 7260 5979 7261 5980 '@esbuild/darwin-arm64@0.25.12': 7262 - optional: true 7263 - 7264 - '@esbuild/darwin-arm64@0.27.0': 7265 5981 optional: true 7266 5982 7267 5983 '@esbuild/darwin-arm64@0.27.2': ··· 7270 5986 '@esbuild/darwin-x64@0.25.12': 7271 5987 optional: true 7272 5988 7273 - '@esbuild/darwin-x64@0.27.0': 7274 - optional: true 7275 - 7276 5989 '@esbuild/darwin-x64@0.27.2': 7277 5990 optional: true 7278 5991 7279 5992 '@esbuild/freebsd-arm64@0.25.12': 7280 5993 optional: true 7281 5994 7282 - '@esbuild/freebsd-arm64@0.27.0': 7283 - optional: true 7284 - 7285 5995 '@esbuild/freebsd-arm64@0.27.2': 7286 5996 optional: true 7287 5997 7288 5998 '@esbuild/freebsd-x64@0.25.12': 7289 5999 optional: true 7290 6000 7291 - '@esbuild/freebsd-x64@0.27.0': 7292 - optional: true 7293 - 7294 6001 '@esbuild/freebsd-x64@0.27.2': 7295 6002 optional: true 7296 6003 7297 6004 '@esbuild/linux-arm64@0.25.12': 7298 - optional: true 7299 - 7300 - '@esbuild/linux-arm64@0.27.0': 7301 6005 optional: true 7302 6006 7303 6007 '@esbuild/linux-arm64@0.27.2': ··· 7306 6010 '@esbuild/linux-arm@0.25.12': 7307 6011 optional: true 7308 6012 7309 - '@esbuild/linux-arm@0.27.0': 7310 - optional: true 7311 - 7312 6013 '@esbuild/linux-arm@0.27.2': 7313 6014 optional: true 7314 6015 7315 6016 '@esbuild/linux-ia32@0.25.12': 7316 6017 optional: true 7317 6018 7318 - '@esbuild/linux-ia32@0.27.0': 7319 - optional: true 7320 - 7321 6019 '@esbuild/linux-ia32@0.27.2': 7322 6020 optional: true 7323 6021 7324 6022 '@esbuild/linux-loong64@0.25.12': 7325 - optional: true 7326 - 7327 - '@esbuild/linux-loong64@0.27.0': 7328 6023 optional: true 7329 6024 7330 6025 '@esbuild/linux-loong64@0.27.2': ··· 7333 6028 '@esbuild/linux-mips64el@0.25.12': 7334 6029 optional: true 7335 6030 7336 - '@esbuild/linux-mips64el@0.27.0': 7337 - optional: true 7338 - 7339 6031 '@esbuild/linux-mips64el@0.27.2': 7340 6032 optional: true 7341 6033 7342 6034 '@esbuild/linux-ppc64@0.25.12': 7343 6035 optional: true 7344 6036 7345 - '@esbuild/linux-ppc64@0.27.0': 7346 - optional: true 7347 - 7348 6037 '@esbuild/linux-ppc64@0.27.2': 7349 6038 optional: true 7350 6039 7351 6040 '@esbuild/linux-riscv64@0.25.12': 7352 6041 optional: true 7353 6042 7354 - '@esbuild/linux-riscv64@0.27.0': 7355 - optional: true 7356 - 7357 6043 '@esbuild/linux-riscv64@0.27.2': 7358 6044 optional: true 7359 6045 7360 6046 '@esbuild/linux-s390x@0.25.12': 7361 - optional: true 7362 - 7363 - '@esbuild/linux-s390x@0.27.0': 7364 6047 optional: true 7365 6048 7366 6049 '@esbuild/linux-s390x@0.27.2': ··· 7369 6052 '@esbuild/linux-x64@0.25.12': 7370 6053 optional: true 7371 6054 7372 - '@esbuild/linux-x64@0.27.0': 7373 - optional: true 7374 - 7375 6055 '@esbuild/linux-x64@0.27.2': 7376 6056 optional: true 7377 6057 7378 6058 '@esbuild/netbsd-arm64@0.25.12': 7379 6059 optional: true 7380 6060 7381 - '@esbuild/netbsd-arm64@0.27.0': 7382 - optional: true 7383 - 7384 6061 '@esbuild/netbsd-arm64@0.27.2': 7385 6062 optional: true 7386 6063 7387 6064 '@esbuild/netbsd-x64@0.25.12': 7388 6065 optional: true 7389 6066 7390 - '@esbuild/netbsd-x64@0.27.0': 7391 - optional: true 7392 - 7393 6067 '@esbuild/netbsd-x64@0.27.2': 7394 6068 optional: true 7395 6069 7396 6070 '@esbuild/openbsd-arm64@0.25.12': 7397 - optional: true 7398 - 7399 - '@esbuild/openbsd-arm64@0.27.0': 7400 6071 optional: true 7401 6072 7402 6073 '@esbuild/openbsd-arm64@0.27.2': ··· 7405 6076 '@esbuild/openbsd-x64@0.25.12': 7406 6077 optional: true 7407 6078 7408 - '@esbuild/openbsd-x64@0.27.0': 7409 - optional: true 7410 - 7411 6079 '@esbuild/openbsd-x64@0.27.2': 7412 6080 optional: true 7413 6081 7414 6082 '@esbuild/openharmony-arm64@0.25.12': 7415 6083 optional: true 7416 6084 7417 - '@esbuild/openharmony-arm64@0.27.0': 7418 - optional: true 7419 - 7420 6085 '@esbuild/openharmony-arm64@0.27.2': 7421 6086 optional: true 7422 6087 7423 6088 '@esbuild/sunos-x64@0.25.12': 7424 6089 optional: true 7425 6090 7426 - '@esbuild/sunos-x64@0.27.0': 7427 - optional: true 7428 - 7429 6091 '@esbuild/sunos-x64@0.27.2': 7430 6092 optional: true 7431 6093 7432 6094 '@esbuild/win32-arm64@0.25.12': 7433 - optional: true 7434 - 7435 - '@esbuild/win32-arm64@0.27.0': 7436 6095 optional: true 7437 6096 7438 6097 '@esbuild/win32-arm64@0.27.2': ··· 7441 6100 '@esbuild/win32-ia32@0.25.12': 7442 6101 optional: true 7443 6102 7444 - '@esbuild/win32-ia32@0.27.0': 7445 - optional: true 7446 - 7447 6103 '@esbuild/win32-ia32@0.27.2': 7448 6104 optional: true 7449 6105 7450 6106 '@esbuild/win32-x64@0.25.12': 7451 - optional: true 7452 - 7453 - '@esbuild/win32-x64@0.27.0': 7454 6107 optional: true 7455 6108 7456 6109 '@esbuild/win32-x64@0.27.2': ··· 7480 6133 '@hono/node-server@1.19.7(hono@4.11.3)': 7481 6134 dependencies: 7482 6135 hono: 4.11.3 7483 - 7484 - '@img/colour@1.0.0': {} 7485 6136 7486 6137 '@img/sharp-darwin-arm64@0.33.5': 7487 6138 optionalDependencies: 7488 6139 '@img/sharp-libvips-darwin-arm64': 1.0.4 7489 6140 optional: true 7490 6141 7491 - '@img/sharp-darwin-arm64@0.34.5': 7492 - optionalDependencies: 7493 - '@img/sharp-libvips-darwin-arm64': 1.2.4 7494 - optional: true 7495 - 7496 6142 '@img/sharp-darwin-x64@0.33.5': 7497 6143 optionalDependencies: 7498 6144 '@img/sharp-libvips-darwin-x64': 1.0.4 7499 6145 optional: true 7500 6146 7501 - '@img/sharp-darwin-x64@0.34.5': 7502 - optionalDependencies: 7503 - '@img/sharp-libvips-darwin-x64': 1.2.4 7504 - optional: true 7505 - 7506 6147 '@img/sharp-libvips-darwin-arm64@1.0.4': 7507 6148 optional: true 7508 6149 7509 - '@img/sharp-libvips-darwin-arm64@1.2.4': 7510 - optional: true 7511 - 7512 6150 '@img/sharp-libvips-darwin-x64@1.0.4': 7513 - optional: true 7514 - 7515 - '@img/sharp-libvips-darwin-x64@1.2.4': 7516 6151 optional: true 7517 6152 7518 6153 '@img/sharp-libvips-linux-arm64@1.0.4': 7519 6154 optional: true 7520 6155 7521 - '@img/sharp-libvips-linux-arm64@1.2.4': 7522 - optional: true 7523 - 7524 6156 '@img/sharp-libvips-linux-arm@1.0.5': 7525 6157 optional: true 7526 6158 7527 - '@img/sharp-libvips-linux-arm@1.2.4': 7528 - optional: true 7529 - 7530 - '@img/sharp-libvips-linux-ppc64@1.2.4': 7531 - optional: true 7532 - 7533 - '@img/sharp-libvips-linux-riscv64@1.2.4': 7534 - optional: true 7535 - 7536 6159 '@img/sharp-libvips-linux-s390x@1.0.4': 7537 6160 optional: true 7538 6161 7539 - '@img/sharp-libvips-linux-s390x@1.2.4': 7540 - optional: true 7541 - 7542 6162 '@img/sharp-libvips-linux-x64@1.0.4': 7543 6163 optional: true 7544 6164 7545 - '@img/sharp-libvips-linux-x64@1.2.4': 7546 - optional: true 7547 - 7548 6165 '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 7549 - optional: true 7550 - 7551 - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 7552 6166 optional: true 7553 6167 7554 6168 '@img/sharp-libvips-linuxmusl-x64@1.0.4': 7555 6169 optional: true 7556 6170 7557 - '@img/sharp-libvips-linuxmusl-x64@1.2.4': 7558 - optional: true 7559 - 7560 6171 '@img/sharp-linux-arm64@0.33.5': 7561 6172 optionalDependencies: 7562 6173 '@img/sharp-libvips-linux-arm64': 1.0.4 7563 6174 optional: true 7564 6175 7565 - '@img/sharp-linux-arm64@0.34.5': 7566 - optionalDependencies: 7567 - '@img/sharp-libvips-linux-arm64': 1.2.4 7568 - optional: true 7569 - 7570 6176 '@img/sharp-linux-arm@0.33.5': 7571 6177 optionalDependencies: 7572 6178 '@img/sharp-libvips-linux-arm': 1.0.5 7573 6179 optional: true 7574 6180 7575 - '@img/sharp-linux-arm@0.34.5': 7576 - optionalDependencies: 7577 - '@img/sharp-libvips-linux-arm': 1.2.4 7578 - optional: true 7579 - 7580 - '@img/sharp-linux-ppc64@0.34.5': 7581 - optionalDependencies: 7582 - '@img/sharp-libvips-linux-ppc64': 1.2.4 7583 - optional: true 7584 - 7585 - '@img/sharp-linux-riscv64@0.34.5': 7586 - optionalDependencies: 7587 - '@img/sharp-libvips-linux-riscv64': 1.2.4 7588 - optional: true 7589 - 7590 6181 '@img/sharp-linux-s390x@0.33.5': 7591 6182 optionalDependencies: 7592 6183 '@img/sharp-libvips-linux-s390x': 1.0.4 7593 - optional: true 7594 - 7595 - '@img/sharp-linux-s390x@0.34.5': 7596 - optionalDependencies: 7597 - '@img/sharp-libvips-linux-s390x': 1.2.4 7598 6184 optional: true 7599 6185 7600 6186 '@img/sharp-linux-x64@0.33.5': ··· 7602 6188 '@img/sharp-libvips-linux-x64': 1.0.4 7603 6189 optional: true 7604 6190 7605 - '@img/sharp-linux-x64@0.34.5': 7606 - optionalDependencies: 7607 - '@img/sharp-libvips-linux-x64': 1.2.4 7608 - optional: true 7609 - 7610 6191 '@img/sharp-linuxmusl-arm64@0.33.5': 7611 6192 optionalDependencies: 7612 6193 '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 7613 6194 optional: true 7614 6195 7615 - '@img/sharp-linuxmusl-arm64@0.34.5': 7616 - optionalDependencies: 7617 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 7618 - optional: true 7619 - 7620 6196 '@img/sharp-linuxmusl-x64@0.33.5': 7621 6197 optionalDependencies: 7622 6198 '@img/sharp-libvips-linuxmusl-x64': 1.0.4 7623 6199 optional: true 7624 6200 7625 - '@img/sharp-linuxmusl-x64@0.34.5': 7626 - optionalDependencies: 7627 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 7628 - optional: true 7629 - 7630 6201 '@img/sharp-wasm32@0.33.5': 7631 6202 dependencies: 7632 6203 '@emnapi/runtime': 1.7.1 7633 6204 optional: true 7634 6205 7635 - '@img/sharp-wasm32@0.34.5': 7636 - dependencies: 7637 - '@emnapi/runtime': 1.7.1 7638 - optional: true 7639 - 7640 - '@img/sharp-win32-arm64@0.34.5': 7641 - optional: true 7642 - 7643 6206 '@img/sharp-win32-ia32@0.33.5': 7644 6207 optional: true 7645 6208 7646 - '@img/sharp-win32-ia32@0.34.5': 7647 - optional: true 7648 - 7649 6209 '@img/sharp-win32-x64@0.33.5': 7650 - optional: true 7651 - 7652 - '@img/sharp-win32-x64@0.34.5': 7653 6210 optional: true 7654 6211 7655 6212 '@inquirer/ansi@2.0.3': {} ··· 7716 6273 wrap-ansi: 8.1.0 7717 6274 wrap-ansi-cjs: wrap-ansi@7.0.0 7718 6275 7719 - '@jridgewell/gen-mapping@0.3.13': 7720 - dependencies: 7721 - '@jridgewell/sourcemap-codec': 1.5.5 7722 - '@jridgewell/trace-mapping': 0.3.31 7723 - 7724 - '@jridgewell/remapping@2.3.5': 7725 - dependencies: 7726 - '@jridgewell/gen-mapping': 0.3.13 7727 - '@jridgewell/trace-mapping': 0.3.31 7728 - 7729 6276 '@jridgewell/resolve-uri@3.1.2': {} 7730 6277 7731 6278 '@jridgewell/sourcemap-codec@1.5.5': {} 7732 6279 7733 6280 '@jridgewell/trace-mapping@0.3.31': 7734 - dependencies: 7735 - '@jridgewell/resolve-uri': 3.1.2 7736 - '@jridgewell/sourcemap-codec': 1.5.5 7737 - 7738 - '@jridgewell/trace-mapping@0.3.9': 7739 6281 dependencies: 7740 6282 '@jridgewell/resolve-uri': 3.1.2 7741 6283 '@jridgewell/sourcemap-codec': 1.5.5 ··· 7936 6478 7937 6479 '@polka/url@1.0.0-next.29': {} 7938 6480 7939 - '@poppinss/colors@4.1.6': 7940 - dependencies: 7941 - kleur: 4.1.5 7942 - 7943 - '@poppinss/dumper@0.6.5': 7944 - dependencies: 7945 - '@poppinss/colors': 4.1.6 7946 - '@sindresorhus/is': 7.2.0 7947 - supports-color: 10.2.2 7948 - 7949 - '@poppinss/exception@1.2.3': {} 7950 - 7951 6481 '@prettier/plugin-oxc@0.1.3': 7952 6482 dependencies: 7953 6483 oxc-parser: 0.99.0 7954 - 7955 - '@rolldown/pluginutils@1.0.0-beta.53': {} 7956 6484 7957 6485 '@rollup/rollup-android-arm-eabi@4.54.0': 7958 6486 optional: true ··· 8019 6547 8020 6548 '@rollup/rollup-win32-x64-msvc@4.54.0': 8021 6549 optional: true 8022 - 8023 - '@sindresorhus/is@7.2.0': {} 8024 6550 8025 6551 '@smithy/abort-controller@4.2.7': 8026 6552 dependencies: ··· 8360 6886 dependencies: 8361 6887 tslib: 2.8.1 8362 6888 8363 - '@speed-highlight/core@1.2.14': {} 8364 - 8365 6889 '@standard-schema/spec@1.1.0': {} 8366 6890 8367 6891 '@tokenizer/token@0.3.0': {} 8368 - 8369 - '@tsconfig/node24@24.0.4': {} 8370 6892 8371 6893 '@tybys/wasm-util@0.10.1': 8372 6894 dependencies: ··· 8385 6907 dependencies: 8386 6908 bun-types: 1.3.6 8387 6909 6910 + '@types/bun@1.3.8': 6911 + dependencies: 6912 + bun-types: 1.3.8 6913 + 8388 6914 '@types/chai@5.2.3': 8389 6915 dependencies: 8390 6916 '@types/deep-eql': 4.0.2 ··· 8408 6934 dependencies: 8409 6935 undici-types: 6.21.0 8410 6936 8411 - '@types/node@24.10.9': 8412 - dependencies: 8413 - undici-types: 7.16.0 8414 - 8415 6937 '@types/node@25.0.3': 8416 6938 dependencies: 8417 6939 undici-types: 7.16.0 ··· 8454 6976 '@valibot/to-json-schema@1.5.0(valibot@1.2.0(typescript@5.9.3))': 8455 6977 dependencies: 8456 6978 valibot: 1.2.0(typescript@5.9.3) 8457 - 8458 - '@vitejs/plugin-vue@6.0.3(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vue@3.5.27(typescript@5.9.3))': 8459 - dependencies: 8460 - '@rolldown/pluginutils': 1.0.0-beta.53 8461 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 8462 - vue: 3.5.27(typescript@5.9.3) 8463 6979 8464 6980 '@vitest/browser-playwright@4.0.16(playwright@1.57.0)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vitest@4.0.16)': 8465 6981 dependencies: ··· 8608 7124 '@vitest/pretty-format': 4.0.16 8609 7125 tinyrainbow: 3.0.3 8610 7126 8611 - '@volar/language-core@2.4.27': 8612 - dependencies: 8613 - '@volar/source-map': 2.4.27 8614 - 8615 - '@volar/source-map@2.4.27': {} 8616 - 8617 - '@volar/typescript@2.4.27': 8618 - dependencies: 8619 - '@volar/language-core': 2.4.27 8620 - path-browserify: 1.0.1 8621 - vscode-uri: 3.1.0 8622 - 8623 - '@vue/babel-helper-vue-transform-on@1.5.0': {} 8624 - 8625 - '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.6)': 8626 - dependencies: 8627 - '@babel/helper-module-imports': 7.28.6 8628 - '@babel/helper-plugin-utils': 7.28.6 8629 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) 8630 - '@babel/template': 7.28.6 8631 - '@babel/traverse': 7.28.6 8632 - '@babel/types': 7.28.5 8633 - '@vue/babel-helper-vue-transform-on': 1.5.0 8634 - '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.6) 8635 - '@vue/shared': 3.5.27 8636 - optionalDependencies: 8637 - '@babel/core': 7.28.6 8638 - transitivePeerDependencies: 8639 - - supports-color 8640 - 8641 - '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.6)': 8642 - dependencies: 8643 - '@babel/code-frame': 7.28.6 8644 - '@babel/core': 7.28.6 8645 - '@babel/helper-module-imports': 7.28.6 8646 - '@babel/helper-plugin-utils': 7.28.6 8647 - '@babel/parser': 7.28.5 8648 - '@vue/compiler-sfc': 3.5.27 8649 - transitivePeerDependencies: 8650 - - supports-color 8651 - 8652 - '@vue/compiler-core@3.5.27': 8653 - dependencies: 8654 - '@babel/parser': 7.28.5 8655 - '@vue/shared': 3.5.27 8656 - entities: 7.0.0 8657 - estree-walker: 2.0.2 8658 - source-map-js: 1.2.1 8659 - 8660 - '@vue/compiler-dom@3.5.27': 8661 - dependencies: 8662 - '@vue/compiler-core': 3.5.27 8663 - '@vue/shared': 3.5.27 8664 - 8665 - '@vue/compiler-sfc@3.5.27': 8666 - dependencies: 8667 - '@babel/parser': 7.28.5 8668 - '@vue/compiler-core': 3.5.27 8669 - '@vue/compiler-dom': 3.5.27 8670 - '@vue/compiler-ssr': 3.5.27 8671 - '@vue/shared': 3.5.27 8672 - estree-walker: 2.0.2 8673 - magic-string: 0.30.21 8674 - postcss: 8.5.6 8675 - source-map-js: 1.2.1 8676 - 8677 - '@vue/compiler-ssr@3.5.27': 8678 - dependencies: 8679 - '@vue/compiler-dom': 3.5.27 8680 - '@vue/shared': 3.5.27 8681 - 8682 - '@vue/devtools-api@6.6.4': {} 8683 - 8684 - '@vue/devtools-core@8.0.5(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vue@3.5.27(typescript@5.9.3))': 8685 - dependencies: 8686 - '@vue/devtools-kit': 8.0.5 8687 - '@vue/devtools-shared': 8.0.5 8688 - mitt: 3.0.1 8689 - nanoid: 5.1.6 8690 - pathe: 2.0.3 8691 - vite-hot-client: 2.1.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)) 8692 - vue: 3.5.27(typescript@5.9.3) 8693 - transitivePeerDependencies: 8694 - - vite 8695 - 8696 - '@vue/devtools-kit@8.0.5': 8697 - dependencies: 8698 - '@vue/devtools-shared': 8.0.5 8699 - birpc: 2.9.0 8700 - hookable: 5.5.3 8701 - mitt: 3.0.1 8702 - perfect-debounce: 2.0.0 8703 - speakingurl: 14.0.1 8704 - superjson: 2.2.6 8705 - 8706 - '@vue/devtools-shared@8.0.5': 8707 - dependencies: 8708 - rfdc: 1.4.1 8709 - 8710 - '@vue/language-core@3.2.2': 8711 - dependencies: 8712 - '@volar/language-core': 2.4.27 8713 - '@vue/compiler-dom': 3.5.27 8714 - '@vue/shared': 3.5.27 8715 - alien-signals: 3.1.2 8716 - muggle-string: 0.4.1 8717 - path-browserify: 1.0.1 8718 - picomatch: 4.0.3 8719 - 8720 - '@vue/reactivity@3.5.27': 8721 - dependencies: 8722 - '@vue/shared': 3.5.27 8723 - 8724 - '@vue/runtime-core@3.5.27': 8725 - dependencies: 8726 - '@vue/reactivity': 3.5.27 8727 - '@vue/shared': 3.5.27 8728 - 8729 - '@vue/runtime-dom@3.5.27': 8730 - dependencies: 8731 - '@vue/reactivity': 3.5.27 8732 - '@vue/runtime-core': 3.5.27 8733 - '@vue/shared': 3.5.27 8734 - csstype: 3.2.3 8735 - 8736 - '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@5.9.3))': 8737 - dependencies: 8738 - '@vue/compiler-ssr': 3.5.27 8739 - '@vue/shared': 3.5.27 8740 - vue: 3.5.27(typescript@5.9.3) 8741 - 8742 - '@vue/shared@3.5.27': {} 8743 - 8744 - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3))': 8745 - optionalDependencies: 8746 - typescript: 5.9.3 8747 - vue: 3.5.27(typescript@5.9.3) 8748 - 8749 7127 abort-controller@3.0.0: 8750 7128 dependencies: 8751 7129 event-target-shim: 5.0.1 ··· 8754 7132 dependencies: 8755 7133 mime-types: 2.1.35 8756 7134 negotiator: 0.6.3 8757 - 8758 - alien-signals@3.1.2: {} 8759 7135 8760 7136 ansi-colors@4.1.3: {} 8761 7137 ··· 8769 7145 8770 7146 ansi-styles@6.2.3: {} 8771 7147 8772 - ansis@4.2.0: {} 8773 - 8774 7148 argparse@1.0.10: 8775 7149 dependencies: 8776 7150 sprintf-js: 1.0.3 ··· 8814 7188 8815 7189 base64-js@1.5.1: {} 8816 7190 8817 - baseline-browser-mapping@2.9.15: {} 8818 - 8819 7191 better-path-resolve@1.0.0: 8820 7192 dependencies: 8821 7193 is-windows: 1.0.2 ··· 8831 7203 dependencies: 8832 7204 file-uri-to-path: 1.0.0 8833 7205 8834 - birpc@2.9.0: {} 8835 - 8836 7206 bl@4.1.0: 8837 7207 dependencies: 8838 7208 buffer: 5.7.1 8839 7209 inherits: 2.0.4 8840 7210 readable-stream: 3.6.2 8841 - 8842 - blake3-wasm@2.1.5: {} 8843 7211 8844 7212 bn.js@4.12.2: {} 8845 7213 ··· 8872 7240 8873 7241 brorand@1.1.0: {} 8874 7242 8875 - browserslist@4.28.1: 8876 - dependencies: 8877 - baseline-browser-mapping: 2.9.15 8878 - caniuse-lite: 1.0.30001765 8879 - electron-to-chromium: 1.5.267 8880 - node-releases: 2.0.27 8881 - update-browserslist-db: 1.2.3(browserslist@4.28.1) 8882 - 8883 7243 buffer@5.6.0: 8884 7244 dependencies: 8885 7245 base64-js: 1.5.1 ··· 8903 7263 dependencies: 8904 7264 '@types/node': 22.19.3 8905 7265 8906 - bundle-name@4.1.0: 7266 + bun-types@1.3.8: 8907 7267 dependencies: 8908 - run-applescript: 7.1.0 7268 + '@types/node': 22.19.3 8909 7269 8910 7270 bytes@3.1.2: {} 8911 7271 ··· 8918 7278 dependencies: 8919 7279 call-bind-apply-helpers: 1.0.2 8920 7280 get-intrinsic: 1.3.0 8921 - 8922 - caniuse-lite@1.0.30001765: {} 8923 7281 8924 7282 cbor-extract@2.2.0: 8925 7283 dependencies: ··· 8995 7353 8996 7354 content-type@1.0.5: {} 8997 7355 8998 - convert-source-map@2.0.0: {} 8999 - 9000 7356 cookie-signature@1.0.7: {} 9001 7357 9002 7358 cookie@0.7.2: {} 9003 7359 9004 - cookie@1.1.1: {} 9005 - 9006 - copy-anything@4.0.5: 9007 - dependencies: 9008 - is-what: 5.5.0 9009 - 9010 7360 core-js@3.47.0: {} 9011 7361 9012 7362 cors@2.8.5: ··· 9019 7369 path-key: 3.1.1 9020 7370 shebang-command: 2.0.0 9021 7371 which: 2.0.2 9022 - 9023 - csstype@3.2.3: {} 9024 7372 9025 7373 debug@2.6.9: 9026 7374 dependencies: ··· 9037 7385 deep-extend@0.6.0: {} 9038 7386 9039 7387 deepmerge@4.3.1: {} 9040 - 9041 - default-browser-id@5.0.1: {} 9042 - 9043 - default-browser@5.4.0: 9044 - dependencies: 9045 - bundle-name: 4.1.0 9046 - default-browser-id: 5.0.1 9047 - 9048 - define-lazy-prop@3.0.0: {} 9049 7388 9050 7389 delay@5.0.0: {} 9051 7390 ··· 9095 7434 9096 7435 ee-first@1.1.1: {} 9097 7436 9098 - electron-to-chromium@1.5.267: {} 9099 - 9100 7437 elliptic@6.6.1: 9101 7438 dependencies: 9102 7439 bn.js: 4.12.2 ··· 9125 7462 strip-ansi: 6.0.1 9126 7463 9127 7464 entities@2.2.0: {} 9128 - 9129 - entities@7.0.0: {} 9130 - 9131 - error-stack-parser-es@1.0.5: {} 9132 7465 9133 7466 es-define-property@1.0.1: {} 9134 7467 ··· 9176 7509 '@esbuild/win32-ia32': 0.25.12 9177 7510 '@esbuild/win32-x64': 0.25.12 9178 7511 9179 - esbuild@0.27.0: 9180 - optionalDependencies: 9181 - '@esbuild/aix-ppc64': 0.27.0 9182 - '@esbuild/android-arm': 0.27.0 9183 - '@esbuild/android-arm64': 0.27.0 9184 - '@esbuild/android-x64': 0.27.0 9185 - '@esbuild/darwin-arm64': 0.27.0 9186 - '@esbuild/darwin-x64': 0.27.0 9187 - '@esbuild/freebsd-arm64': 0.27.0 9188 - '@esbuild/freebsd-x64': 0.27.0 9189 - '@esbuild/linux-arm': 0.27.0 9190 - '@esbuild/linux-arm64': 0.27.0 9191 - '@esbuild/linux-ia32': 0.27.0 9192 - '@esbuild/linux-loong64': 0.27.0 9193 - '@esbuild/linux-mips64el': 0.27.0 9194 - '@esbuild/linux-ppc64': 0.27.0 9195 - '@esbuild/linux-riscv64': 0.27.0 9196 - '@esbuild/linux-s390x': 0.27.0 9197 - '@esbuild/linux-x64': 0.27.0 9198 - '@esbuild/netbsd-arm64': 0.27.0 9199 - '@esbuild/netbsd-x64': 0.27.0 9200 - '@esbuild/openbsd-arm64': 0.27.0 9201 - '@esbuild/openbsd-x64': 0.27.0 9202 - '@esbuild/openharmony-arm64': 0.27.0 9203 - '@esbuild/sunos-x64': 0.27.0 9204 - '@esbuild/win32-arm64': 0.27.0 9205 - '@esbuild/win32-ia32': 0.27.0 9206 - '@esbuild/win32-x64': 0.27.0 9207 - 9208 7512 esbuild@0.27.2: 9209 7513 optionalDependencies: 9210 7514 '@esbuild/aix-ppc64': 0.27.2 ··· 9234 7538 '@esbuild/win32-ia32': 0.27.2 9235 7539 '@esbuild/win32-x64': 0.27.2 9236 7540 9237 - escalade@3.2.0: {} 9238 - 9239 7541 escape-html@1.0.3: {} 9240 7542 9241 7543 esm-env@1.2.2: {} 9242 7544 9243 7545 esprima@4.0.1: {} 9244 - 9245 - estree-walker@2.0.2: {} 9246 7546 9247 7547 estree-walker@3.0.3: 9248 7548 dependencies: ··· 9402 7702 9403 7703 function-bind@1.1.2: {} 9404 7704 9405 - gensync@1.0.0-beta.2: {} 9406 - 9407 7705 get-caller-file@2.0.5: {} 9408 7706 9409 7707 get-east-asian-width@1.4.0: {} ··· 9431 7729 get-tsconfig@4.13.0: 9432 7730 dependencies: 9433 7731 resolve-pkg-maps: 1.0.0 7732 + optional: true 9434 7733 9435 7734 github-from-package@0.0.0: {} 9436 7735 ··· 9495 7794 minimalistic-crypto-utils: 1.0.1 9496 7795 9497 7796 hono@4.11.3: {} 9498 - 9499 - hookable@5.5.3: {} 9500 7797 9501 7798 html-escaper@2.0.2: {} 9502 7799 ··· 9567 7864 9568 7865 is-arrayish@0.3.4: {} 9569 7866 9570 - is-docker@3.0.0: {} 9571 - 9572 7867 is-extglob@2.1.1: {} 9573 7868 9574 7869 is-fullwidth-code-point@3.0.0: {} ··· 9577 7872 dependencies: 9578 7873 is-extglob: 2.1.1 9579 7874 9580 - is-inside-container@1.0.0: 9581 - dependencies: 9582 - is-docker: 3.0.0 9583 - 9584 7875 is-number@7.0.0: {} 9585 7876 9586 7877 is-subdir@1.2.0: 9587 7878 dependencies: 9588 7879 better-path-resolve: 1.0.0 9589 7880 9590 - is-what@5.5.0: {} 9591 - 9592 7881 is-windows@1.0.2: {} 9593 7882 9594 - is-wsl@3.1.0: 9595 - dependencies: 9596 - is-inside-container: 1.0.0 9597 - 9598 7883 isexe@2.0.0: {} 9599 - 9600 - isexe@3.1.1: {} 9601 7884 9602 7885 iso-datestring-validator@2.2.2: {} 9603 7886 ··· 9633 7916 9634 7917 jose@5.10.0: {} 9635 7918 9636 - js-tokens@4.0.0: {} 9637 - 9638 7919 js-tokens@9.0.1: {} 9639 7920 9640 7921 js-yaml@3.14.2: ··· 9646 7927 dependencies: 9647 7928 argparse: 2.0.1 9648 7929 9649 - jsesc@3.1.0: {} 9650 - 9651 - json-parse-even-better-errors@4.0.0: {} 9652 - 9653 - json5@2.2.3: {} 9654 - 9655 7930 jsonfile@4.0.0: 9656 7931 optionalDependencies: 9657 7932 graceful-fs: 4.2.11 ··· 9663 7938 bn.js: 4.12.2 9664 7939 elliptic: 6.6.1 9665 7940 9666 - kleur@4.1.5: {} 9667 - 9668 - kolorist@1.8.0: {} 9669 - 9670 7941 kysely@0.22.0: {} 9671 7942 9672 7943 kysely@0.23.5: {} ··· 9683 7954 9684 7955 lru-cache@10.4.3: {} 9685 7956 9686 - lru-cache@5.1.1: 9687 - dependencies: 9688 - yallist: 3.1.1 9689 - 9690 7957 magic-string@0.30.21: 9691 7958 dependencies: 9692 7959 '@jridgewell/sourcemap-codec': 1.5.5 ··· 9704 7971 math-intrinsics@1.1.0: {} 9705 7972 9706 7973 media-typer@0.3.0: {} 9707 - 9708 - memorystream@0.3.1: {} 9709 7974 9710 7975 merge-descriptors@1.0.3: {} 9711 7976 ··· 9730 7995 9731 7996 mimic-response@3.1.0: {} 9732 7997 9733 - miniflare@4.20260114.0: 9734 - dependencies: 9735 - '@cspotcode/source-map-support': 0.8.1 9736 - sharp: 0.34.5 9737 - undici: 7.14.0 9738 - workerd: 1.20260114.0 9739 - ws: 8.18.0 9740 - youch: 4.1.0-beta.10 9741 - zod: 3.25.76 9742 - transitivePeerDependencies: 9743 - - bufferutil 9744 - - utf-8-validate 9745 - 9746 7998 minimalistic-assert@1.0.1: {} 9747 7999 9748 8000 minimalistic-crypto-utils@1.0.1: {} ··· 9757 8009 9758 8010 mitata@1.0.34: {} 9759 8011 9760 - mitt@3.0.1: {} 9761 - 9762 8012 mkdirp-classic@0.5.3: {} 9763 8013 9764 8014 mri@1.2.0: {} ··· 9768 8018 ms@2.0.0: {} 9769 8019 9770 8020 ms@2.1.3: {} 9771 - 9772 - muggle-string@0.4.1: {} 9773 8021 9774 8022 multiformats@13.4.2: {} 9775 8023 ··· 9800 8048 9801 8049 node-gyp-build@4.8.4: {} 9802 8050 9803 - node-releases@2.0.27: {} 9804 - 9805 8051 nodemailer-html-to-text@3.2.0: 9806 8052 dependencies: 9807 8053 html-to-text: 7.1.1 9808 8054 9809 8055 nodemailer@6.10.1: {} 9810 8056 9811 - npm-normalize-package-bin@4.0.0: {} 9812 - 9813 - npm-run-all2@8.0.4: 9814 - dependencies: 9815 - ansi-styles: 6.2.3 9816 - cross-spawn: 7.0.6 9817 - memorystream: 0.3.1 9818 - picomatch: 4.0.3 9819 - pidtree: 0.6.0 9820 - read-package-json-fast: 4.0.0 9821 - shell-quote: 1.8.3 9822 - which: 5.0.0 9823 - 9824 8057 npm-run-path@3.1.0: 9825 8058 dependencies: 9826 8059 path-key: 3.1.1 ··· 9831 8064 9832 8065 obug@2.1.1: {} 9833 8066 9834 - ohash@2.0.11: {} 9835 - 9836 8067 on-exit-leak-free@2.1.2: {} 9837 8068 9838 8069 on-finished@2.4.1: ··· 9847 8078 9848 8079 one-webcrypto@1.0.3: {} 9849 8080 9850 - open@10.2.0: 9851 - dependencies: 9852 - default-browser: 5.4.0 9853 - define-lazy-prop: 3.0.0 9854 - is-inside-container: 1.0.0 9855 - wsl-utils: 0.1.0 9856 - 9857 8081 outdent@0.5.0: {} 9858 8082 9859 8083 oxc-parser@0.99.0: ··· 9953 8177 dependencies: 9954 8178 event-target-polyfill: 0.0.4 9955 8179 9956 - path-browserify@1.0.1: {} 9957 - 9958 8180 path-exists@4.0.0: {} 9959 8181 9960 8182 path-key@3.1.1: {} ··· 9965 8187 minipass: 7.1.2 9966 8188 9967 8189 path-to-regexp@0.1.12: {} 9968 - 9969 - path-to-regexp@6.3.0: {} 9970 8190 9971 8191 path-type@4.0.0: {} 9972 8192 ··· 9974 8194 9975 8195 peek-readable@4.1.0: {} 9976 8196 9977 - perfect-debounce@2.0.0: {} 9978 - 9979 8197 pg-cloudflare@1.2.7: 9980 8198 optional: true 9981 8199 ··· 10016 8234 picomatch@2.3.1: {} 10017 8235 10018 8236 picomatch@4.0.3: {} 10019 - 10020 - pidtree@0.6.0: {} 10021 8237 10022 8238 pify@4.0.1: {} 10023 8239 ··· 10153 8369 minimist: 1.2.8 10154 8370 strip-json-comments: 2.0.1 10155 8371 10156 - read-package-json-fast@4.0.0: 10157 - dependencies: 10158 - json-parse-even-better-errors: 4.0.0 10159 - npm-normalize-package-bin: 4.0.0 10160 - 10161 8372 read-yaml-file@1.1.0: 10162 8373 dependencies: 10163 8374 graceful-fs: 4.2.11 ··· 10193 8404 10194 8405 resolve-from@5.0.0: {} 10195 8406 10196 - resolve-pkg-maps@1.0.0: {} 8407 + resolve-pkg-maps@1.0.0: 8408 + optional: true 10197 8409 10198 8410 reusify@1.1.0: {} 10199 8411 10200 - rfdc@1.4.1: {} 10201 - 10202 8412 roarr@7.21.2: 10203 8413 dependencies: 10204 8414 fast-printf: 1.6.10 ··· 10232 8442 '@rollup/rollup-win32-x64-gnu': 4.54.0 10233 8443 '@rollup/rollup-win32-x64-msvc': 4.54.0 10234 8444 fsevents: 2.3.3 10235 - 10236 - run-applescript@7.1.0: {} 10237 8445 10238 8446 run-parallel@1.2.0: 10239 8447 dependencies: ··· 10252 8460 10253 8461 semver-compare@1.0.0: {} 10254 8462 10255 - semver@6.3.1: {} 10256 - 10257 8463 semver@7.7.3: {} 10258 8464 10259 8465 send@0.19.2: ··· 10311 8517 '@img/sharp-win32-ia32': 0.33.5 10312 8518 '@img/sharp-win32-x64': 0.33.5 10313 8519 10314 - sharp@0.34.5: 10315 - dependencies: 10316 - '@img/colour': 1.0.0 10317 - detect-libc: 2.1.2 10318 - semver: 7.7.3 10319 - optionalDependencies: 10320 - '@img/sharp-darwin-arm64': 0.34.5 10321 - '@img/sharp-darwin-x64': 0.34.5 10322 - '@img/sharp-libvips-darwin-arm64': 1.2.4 10323 - '@img/sharp-libvips-darwin-x64': 1.2.4 10324 - '@img/sharp-libvips-linux-arm': 1.2.4 10325 - '@img/sharp-libvips-linux-arm64': 1.2.4 10326 - '@img/sharp-libvips-linux-ppc64': 1.2.4 10327 - '@img/sharp-libvips-linux-riscv64': 1.2.4 10328 - '@img/sharp-libvips-linux-s390x': 1.2.4 10329 - '@img/sharp-libvips-linux-x64': 1.2.4 10330 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 10331 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 10332 - '@img/sharp-linux-arm': 0.34.5 10333 - '@img/sharp-linux-arm64': 0.34.5 10334 - '@img/sharp-linux-ppc64': 0.34.5 10335 - '@img/sharp-linux-riscv64': 0.34.5 10336 - '@img/sharp-linux-s390x': 0.34.5 10337 - '@img/sharp-linux-x64': 0.34.5 10338 - '@img/sharp-linuxmusl-arm64': 0.34.5 10339 - '@img/sharp-linuxmusl-x64': 0.34.5 10340 - '@img/sharp-wasm32': 0.34.5 10341 - '@img/sharp-win32-arm64': 0.34.5 10342 - '@img/sharp-win32-ia32': 0.34.5 10343 - '@img/sharp-win32-x64': 0.34.5 10344 - 10345 8520 shebang-command@2.0.0: 10346 8521 dependencies: 10347 8522 shebang-regex: 3.0.0 10348 8523 10349 8524 shebang-regex@3.0.0: {} 10350 8525 10351 - shell-quote@1.8.3: {} 10352 - 10353 8526 side-channel-list@1.0.0: 10354 8527 dependencies: 10355 8528 es-errors: 1.3.0 ··· 10415 8588 cross-spawn: 7.0.6 10416 8589 signal-exit: 4.1.0 10417 8590 10418 - speakingurl@14.0.1: {} 10419 - 10420 8591 split2@4.2.0: {} 10421 8592 10422 8593 sprintf-js@1.0.3: {} ··· 10475 8646 '@tokenizer/token': 0.3.0 10476 8647 peek-readable: 4.1.0 10477 8648 10478 - superjson@2.2.6: 10479 - dependencies: 10480 - copy-anything: 4.0.5 10481 - 10482 - supports-color@10.2.2: {} 10483 - 10484 8649 supports-color@7.2.0: 10485 8650 dependencies: 10486 8651 has-flag: 4.0.0 ··· 10544 8709 get-tsconfig: 4.13.0 10545 8710 optionalDependencies: 10546 8711 fsevents: 2.3.3 8712 + optional: true 10547 8713 10548 8714 tunnel-agent@0.6.0: 10549 8715 dependencies: ··· 10581 8747 10582 8748 undici@6.22.0: {} 10583 8749 10584 - undici@7.14.0: {} 10585 - 10586 - unenv@2.0.0-rc.24: 10587 - dependencies: 10588 - pathe: 2.0.3 10589 - 10590 8750 unicode-segmenter@0.14.5: {} 10591 8751 10592 8752 universalify@0.1.2: {} 10593 8753 10594 8754 unpipe@1.0.0: {} 10595 8755 10596 - unplugin-utils@0.3.1: 10597 - dependencies: 10598 - pathe: 2.0.3 10599 - picomatch: 4.0.3 10600 - 10601 - update-browserslist-db@1.2.3(browserslist@4.28.1): 10602 - dependencies: 10603 - browserslist: 4.28.1 10604 - escalade: 3.2.0 10605 - picocolors: 1.1.1 10606 - 10607 8756 util-deprecate@1.0.2: {} 10608 8757 10609 8758 utils-merge@1.0.1: {} ··· 10616 8765 10617 8766 vary@1.1.2: {} 10618 8767 10619 - vite-dev-rpc@1.1.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)): 10620 - dependencies: 10621 - birpc: 2.9.0 10622 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 10623 - vite-hot-client: 2.1.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)) 10624 - 10625 - vite-hot-client@2.1.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)): 10626 - dependencies: 10627 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 10628 - 10629 - vite-plugin-inspect@11.3.3(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)): 10630 - dependencies: 10631 - ansis: 4.2.0 10632 - debug: 4.4.3 10633 - error-stack-parser-es: 1.0.5 10634 - ohash: 2.0.11 10635 - open: 10.2.0 10636 - perfect-debounce: 2.0.0 10637 - sirv: 3.0.2 10638 - unplugin-utils: 0.3.1 10639 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 10640 - vite-dev-rpc: 1.1.0(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)) 10641 - transitivePeerDependencies: 10642 - - supports-color 10643 - 10644 - vite-plugin-vue-devtools@8.0.5(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vue@3.5.27(typescript@5.9.3)): 10645 - dependencies: 10646 - '@vue/devtools-core': 8.0.5(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0))(vue@3.5.27(typescript@5.9.3)) 10647 - '@vue/devtools-kit': 8.0.5 10648 - '@vue/devtools-shared': 8.0.5 10649 - sirv: 3.0.2 10650 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 10651 - vite-plugin-inspect: 11.3.3(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)) 10652 - vite-plugin-vue-inspector: 5.3.2(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)) 10653 - transitivePeerDependencies: 10654 - - '@nuxt/kit' 10655 - - supports-color 10656 - - vue 10657 - 10658 - vite-plugin-vue-inspector@5.3.2(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0)): 10659 - dependencies: 10660 - '@babel/core': 7.28.6 10661 - '@babel/plugin-proposal-decorators': 7.28.6(@babel/core@7.28.6) 10662 - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.6) 10663 - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.6) 10664 - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6) 10665 - '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.6) 10666 - '@vue/compiler-dom': 3.5.27 10667 - kolorist: 1.8.0 10668 - magic-string: 0.30.21 10669 - vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0) 10670 - transitivePeerDependencies: 10671 - - supports-color 10672 - 10673 8768 vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0): 10674 8769 dependencies: 10675 8770 esbuild: 0.27.2 ··· 10680 8775 tinyglobby: 0.2.15 10681 8776 optionalDependencies: 10682 8777 '@types/node': 22.19.3 10683 - fsevents: 2.3.3 10684 - jiti: 2.6.1 10685 - tsx: 4.20.6 10686 - yaml: 2.8.0 10687 - 10688 - vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(tsx@4.20.6)(yaml@2.8.0): 10689 - dependencies: 10690 - esbuild: 0.27.2 10691 - fdir: 6.5.0(picomatch@4.0.3) 10692 - picomatch: 4.0.3 10693 - postcss: 8.5.6 10694 - rollup: 4.54.0 10695 - tinyglobby: 0.2.15 10696 - optionalDependencies: 10697 - '@types/node': 24.10.9 10698 8778 fsevents: 2.3.3 10699 8779 jiti: 2.6.1 10700 8780 tsx: 4.20.6 ··· 10791 8871 - tsx 10792 8872 - yaml 10793 8873 10794 - vscode-uri@3.1.0: {} 10795 - 10796 - vue-router@4.6.4(vue@3.5.27(typescript@5.9.3)): 10797 - dependencies: 10798 - '@vue/devtools-api': 6.6.4 10799 - vue: 3.5.27(typescript@5.9.3) 10800 - 10801 - vue-tsc@3.2.2(typescript@5.9.3): 10802 - dependencies: 10803 - '@volar/typescript': 2.4.27 10804 - '@vue/language-core': 3.2.2 10805 - typescript: 5.9.3 10806 - 10807 - vue@3.5.27(typescript@5.9.3): 10808 - dependencies: 10809 - '@vue/compiler-dom': 3.5.27 10810 - '@vue/compiler-sfc': 3.5.27 10811 - '@vue/runtime-dom': 3.5.27 10812 - '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@5.9.3)) 10813 - '@vue/shared': 3.5.27 10814 - optionalDependencies: 10815 - typescript: 5.9.3 10816 - 10817 8874 which@2.0.2: 10818 8875 dependencies: 10819 8876 isexe: 2.0.0 10820 8877 10821 - which@5.0.0: 10822 - dependencies: 10823 - isexe: 3.1.1 10824 - 10825 8878 why-is-node-running@2.3.0: 10826 8879 dependencies: 10827 8880 siginfo: 2.0.0 ··· 10829 8882 10830 8883 wordwrap@1.0.0: {} 10831 8884 10832 - workerd@1.20260114.0: 10833 - optionalDependencies: 10834 - '@cloudflare/workerd-darwin-64': 1.20260114.0 10835 - '@cloudflare/workerd-darwin-arm64': 1.20260114.0 10836 - '@cloudflare/workerd-linux-64': 1.20260114.0 10837 - '@cloudflare/workerd-linux-arm64': 1.20260114.0 10838 - '@cloudflare/workerd-windows-64': 1.20260114.0 10839 - 10840 - wrangler@4.59.2: 10841 - dependencies: 10842 - '@cloudflare/kv-asset-handler': 0.4.2 10843 - '@cloudflare/unenv-preset': 2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0) 10844 - blake3-wasm: 2.1.5 10845 - esbuild: 0.27.0 10846 - miniflare: 4.20260114.0 10847 - path-to-regexp: 6.3.0 10848 - unenv: 2.0.0-rc.24 10849 - workerd: 1.20260114.0 10850 - optionalDependencies: 10851 - fsevents: 2.3.3 10852 - transitivePeerDependencies: 10853 - - bufferutil 10854 - - utf-8-validate 10855 - 10856 8885 wrap-ansi@7.0.0: 10857 8886 dependencies: 10858 8887 ansi-styles: 4.3.0 ··· 10873 8902 10874 8903 wrappy@1.0.2: {} 10875 8904 10876 - ws@8.18.0: {} 10877 - 10878 8905 ws@8.18.3: {} 10879 8906 10880 - wsl-utils@0.1.0: 10881 - dependencies: 10882 - is-wsl: 3.1.0 10883 - 10884 8907 xtend@4.0.2: {} 10885 - 10886 - yallist@3.1.1: {} 10887 8908 10888 8909 yaml@2.8.0: 10889 8910 optional: true 10890 8911 10891 8912 yocto-queue@1.2.2: {} 10892 - 10893 - youch-core@0.3.3: 10894 - dependencies: 10895 - '@poppinss/exception': 1.2.3 10896 - error-stack-parser-es: 1.0.5 10897 - 10898 - youch@4.1.0-beta.10: 10899 - dependencies: 10900 - '@poppinss/colors': 4.1.6 10901 - '@poppinss/dumper': 0.6.5 10902 - '@speed-highlight/core': 1.2.14 10903 - cookie: 1.1.1 10904 - youch-core: 0.3.3 10905 8913 10906 8914 zod@3.25.76: {}