├── .dev.vars.example ├── .github └── workflows │ └── deploy.yml ├── .gitignore ├── .prettierrc ├── README.md ├── package.json ├── src ├── handlers │ ├── address.ts │ ├── avatar.ts │ ├── batch │ │ ├── addresses.ts │ │ └── names.ts │ └── name.ts ├── index.ts └── lib │ ├── avt-fallback.ts │ ├── constants.ts │ ├── fetchProfile.ts │ └── utils.ts ├── tsconfig.json ├── worker-configuration.d.ts ├── wrangler.toml └── yarn.lock /.dev.vars.example: -------------------------------------------------------------------------------- 1 | ETH_RPC= -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | name: Deploy 12 | steps: 13 | - uses: actions/checkout@v4 14 | - name: Deploy 15 | uses: cloudflare/wrangler-action@v3 16 | with: 17 | apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} 18 | secrets: | 19 | ETH_RPC 20 | env: 21 | ETH_RPC: ${{ secrets.ETH_RPC }} 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Dependency directories 11 | node_modules/ 12 | jspm_packages/ 13 | 14 | # TypeScript cache 15 | *.tsbuildinfo 16 | 17 | # Optional npm cache directory 18 | .npm 19 | 20 | # Optional eslint cache 21 | .eslintcache 22 | 23 | # Optional stylelint cache 24 | .stylelintcache 25 | 26 | # Yarn Integrity file 27 | .yarn-integrity 28 | 29 | # dotenv environment variable files 30 | .env 31 | .env.development.local 32 | .env.test.local 33 | .env.production.local 34 | .env.local 35 | 36 | # yarn v2 37 | .yarn/cache 38 | .yarn/unplugged 39 | .yarn/build-state.yml 40 | .yarn/install-state.gz 41 | .pnp.* 42 | 43 | # misc 44 | .DS_Store 45 | 46 | # Cloudflare 47 | .wrangler/ 48 | .dev.vars -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 90, 3 | "singleQuote": true, 4 | "semi": true, 5 | "useTabs": false 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ENS API 2 | 3 | > [!NOTE] 4 | > This is meant to be self-hosted. Follow the instructions below to deploy it to your own Cloudflare account. 5 | 6 | Cloudflare Worker that provides a simple API for fetching ENS profiles and avatars. Built with [ENSjs](https://www.npmjs.com/package/@ensdomains/ensjs), heavily inspired by [v3xlabs/enstate](https://github.com/v3xlabs/enstate). 7 | 8 | By default, all endpoints are cached for 10 minutes, then serve a stale response within the following 50 minutes while refreshing the cache in the background. Adjust these settings [here](src/lib/utils.ts#L65-L82). Avatars are cached for longer in most cases. 9 | 10 | ## Endpoints: 11 | 12 | - GET `/name/:name` - Fetch a profile for an ENS name 13 | - Params (all optional): 14 | - `texts` - keys of text records to fetch (comma-separated) 15 | - `coins` - coin types to fetch (comma-separated) 16 | - GET `/address/:address` - Fetch a profile for an Ethereum address, if it has a primary ENS name 17 | - Params (all optional): 18 | - `texts` - keys of text records to fetch (comma-separated) 19 | - `coins` - coin types to fetch (comma-separated) 20 | - GET `/avatar/:name` - Fetch an avatar for an ENS name 21 | - Params (all optional): 22 | - `width` - width of the avatar (default: 256) 23 | - `height` - height of the avatar (default: 256) 24 | - `fallback` - image URL to use if the ENS name has no avatar 25 | - POST `/batch/names` - Resolve a list of addresses from ENS names 26 | - Body: 27 | - `names` - array of ENS names 28 | - `coinType` (optional) - coin type to resolve (default: 60) 29 | - POST `/batch/addresses` - Resolve a list of primary ENS names from ETH addresses 30 | - Body: 31 | - `addresses` - array of ETH addresses 32 | 33 | ## How to run locally: 34 | 35 | Clone this repo 36 | 37 | ```bash 38 | git clone https://github.com/gskril/ens-api.git 39 | ``` 40 | 41 | Install dependencies 42 | 43 | ```bash 44 | yarn install 45 | ``` 46 | 47 | Set your environment variables (ETH RPC URL) 48 | 49 | ```bash 50 | cp .dev.vars.example .dev.vars 51 | ``` 52 | 53 | Run the development server 54 | 55 | ```bash 56 | yarn run dev 57 | ``` 58 | 59 | ## Deploy to Cloudflare 60 | 61 | [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/gskril/ens-api) 62 | 63 | Sign into the Cloudflare CLI 64 | 65 | ```bash 66 | npx wrangler login 67 | ``` 68 | 69 | Deploy the Worker 70 | 71 | ```bash 72 | yarn && yarn run deploy 73 | ``` 74 | 75 | Set your ETH RPC environment variable 76 | 77 | ```bash 78 | echo | npx wrangler secret put ETH_RPC 79 | ``` 80 | 81 | In order to enable avatar transformations, you will need to configure Cloudflare in a few ways: 82 | 83 | - Under "Images" > "Transformations", navigate to the zone you want to use and enable transformations. 84 | - Deploy this Worker to your Cloudflare account by following the instructions above. 85 | - Make your Worker accessible from the zone (domain) you enabled in step 1. 86 | - In the domain's DNS page, create an `A` record that points to `192.0.2.0` with any name you want as a subdomain. 87 | - Under "Worker Routes", add a route that matches the subdomain you created and points to the Worker you deployed. 88 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ens-api", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "deploy": "wrangler deploy", 7 | "dev": "wrangler dev" 8 | }, 9 | "devDependencies": { 10 | "@cloudflare/workers-types": "^4.20230814.0", 11 | "itty-router": "^4.0.17", 12 | "typescript": "^5.1.6", 13 | "wrangler": "^3.5.1" 14 | }, 15 | "dependencies": { 16 | "@ensdomains/ensjs": "^4.0.2", 17 | "viem": "^2.21.53", 18 | "zod": "^3.22.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/handlers/address.ts: -------------------------------------------------------------------------------- 1 | import { IRequest } from 'itty-router'; 2 | import { z } from 'zod'; 3 | import { Address } from 'viem'; 4 | 5 | import { 6 | cacheAndCreateResponse, 7 | checkCache, 8 | commaSeparatedListSchema, 9 | getPublicClient, 10 | parseKeysFromParams, 11 | } from '../lib/utils'; 12 | import { fetchProfile } from '../lib/fetchProfile'; 13 | 14 | const schema = z.object({ 15 | address: z.string().regex(/^0x[a-fA-F0-9]{40}$/), 16 | texts: commaSeparatedListSchema('string').optional(), 17 | coins: commaSeparatedListSchema('number').optional(), 18 | }); 19 | 20 | export async function handleAddress(request: IRequest, env: Env, ctx: ExecutionContext) { 21 | const { cache, cacheKey, response } = await checkCache('address', request); 22 | 23 | if (response) { 24 | return response; 25 | } 26 | 27 | const safeParse = schema.safeParse({ ...request.params, ...request.query }); 28 | 29 | if (!safeParse.success) { 30 | return Response.json(safeParse.error, { status: 400 }); 31 | } 32 | 33 | const params = safeParse.data; 34 | const address = params.address as Address; 35 | 36 | const client = getPublicClient(env); 37 | const name = await client.getEnsName({ address }); 38 | 39 | if (!name) { 40 | return new Response('No ENS name found for this address', { status: 404 }); 41 | } 42 | 43 | const { textKeys, coinKeys } = parseKeysFromParams(params); 44 | 45 | const profile = await fetchProfile({ 46 | name, 47 | textKeys, 48 | coinKeys, 49 | env, 50 | request, 51 | }); 52 | 53 | return cacheAndCreateResponse(ctx, cache, cacheKey, profile); 54 | } 55 | -------------------------------------------------------------------------------- /src/handlers/avatar.ts: -------------------------------------------------------------------------------- 1 | import { IRequest } from 'itty-router'; 2 | import { z } from 'zod'; 3 | 4 | import { fallbackResponse } from '../lib/avt-fallback'; 5 | import { checkCache, getPublicClient } from '../lib/utils'; 6 | 7 | const schema = z.object({ 8 | name: z.string(), 9 | width: z.coerce.number().optional(), 10 | height: z.coerce.number().optional(), 11 | fallback: z.string().url().optional(), 12 | }); 13 | 14 | export async function handleAvatar(request: IRequest, env: Env, ctx: ExecutionContext) { 15 | const { cache, cacheKey, response } = await checkCache('avatar', request); 16 | 17 | if (response) { 18 | console.log('returning from cache'); 19 | return response; 20 | } 21 | 22 | console.log('not cached'); 23 | const params = { ...request.params, ...request.query }; 24 | const safeParse = schema.safeParse(params); 25 | 26 | if (!safeParse.success) { 27 | return Response.json(safeParse.error, { status: 400 }); 28 | } 29 | 30 | const { name, width, height, fallback } = safeParse.data; 31 | const client = getPublicClient(env); 32 | 33 | // This occasionally returns null even when a name has an avatar 34 | // This occasionally times out when the record is a CAIP-22 or CAIP-29 value 35 | const ensAvatar = await client.getEnsAvatar({ 36 | name, 37 | assetGatewayUrls: { ipfs: 'https://ipfs.punkscape.xyz' }, 38 | }); 39 | 40 | if (!ensAvatar) { 41 | console.log('no avatar found'); 42 | return fallbackResponse(ctx, cache, cacheKey, fallback); 43 | } 44 | console.log('avatar', ensAvatar); 45 | 46 | // Note: Cloudflare sanitizes SVGs by default so we don't need extra checks here 47 | // https://developers.cloudflare.com/images/transform-images/#sanitized-svgs 48 | const res = await fetch(ensAvatar, { 49 | headers: request.headers, 50 | cf: { 51 | cacheTtl: 3600, 52 | cacheEverything: true, 53 | image: { 54 | width: width || height || 256, 55 | height: height || width || 256, 56 | fit: 'cover', 57 | }, 58 | }, 59 | }); 60 | 61 | // Sometimes OpenSea returns a 304 Not Modified status which is not technically `ok`, but we should still return. 62 | if ((res.status >= 200 && res.status < 400) || res.redirected) { 63 | ctx.waitUntil(cache.put(cacheKey, res.clone())); 64 | return res; 65 | } else { 66 | console.log({ res: res.status, ok: res.ok }); 67 | return fallbackResponse(ctx, cache, cacheKey, fallback); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/handlers/batch/addresses.ts: -------------------------------------------------------------------------------- 1 | import { Address } from 'viem'; 2 | import { batch, getName } from '@ensdomains/ensjs/public'; 3 | import { IRequest } from 'itty-router'; 4 | import { normalize } from 'viem/ens'; 5 | import zod from 'zod'; 6 | 7 | import { cacheAndCreateResponse, checkCache, getPublicClient } from '../../lib/utils'; 8 | 9 | const schema = zod.object({ 10 | addresses: zod.array(zod.string().regex(/^0x[a-fA-F0-9]{40}$/)).max(100), 11 | }); 12 | 13 | export async function handleAddresses( 14 | request: IRequest, 15 | env: Env, 16 | ctx: ExecutionContext 17 | ) { 18 | const body = await request.json().catch(() => ({})); 19 | const { cache, cacheKey, response } = await checkCache('addresses', request, body); 20 | 21 | if (response) { 22 | return response; 23 | } 24 | 25 | const safeParse = schema.safeParse(body); 26 | 27 | if (!safeParse.success) { 28 | return Response.json(safeParse.error, { status: 400 }); 29 | } 30 | 31 | const params = safeParse.data; 32 | const addresses = params.addresses as Address[]; 33 | const client = getPublicClient(env); 34 | 35 | const res = await batch( 36 | client, 37 | ...addresses.map((address) => getName.batch({ address })) 38 | ); 39 | 40 | const names = res.map((obj) => { 41 | if (!obj || !obj.match) return null; 42 | 43 | try { 44 | return normalize(obj.name); 45 | } catch (error) { 46 | return null; 47 | } 48 | }); 49 | 50 | return cacheAndCreateResponse(ctx, cache, cacheKey, names); 51 | } 52 | -------------------------------------------------------------------------------- /src/handlers/batch/names.ts: -------------------------------------------------------------------------------- 1 | import { IRequest } from 'itty-router'; 2 | import { normalize } from 'viem/ens'; 3 | import { z } from 'zod'; 4 | 5 | import { cacheAndCreateResponse, checkCache, getPublicClient } from '../../lib/utils'; 6 | import { batch, getAddressRecord } from '@ensdomains/ensjs/public'; 7 | 8 | const schema = z.object({ 9 | names: z 10 | .array( 11 | z.string().refine((name) => name.includes('.'), { 12 | message: 'Name must include a "."', 13 | }) 14 | ) 15 | .max(100), 16 | coinType: z.number().optional().default(60), 17 | }); 18 | 19 | export async function handleNames(request: IRequest, env: Env, ctx: ExecutionContext) { 20 | const body = await request.json().catch(() => ({})); 21 | const { cache, cacheKey, response } = await checkCache('names', request, body); 22 | 23 | if (response) { 24 | return response; 25 | } 26 | 27 | const safeSchema = schema.safeParse(body); 28 | 29 | if (!safeSchema.success) { 30 | return Response.json(safeSchema.error, { status: 400 }); 31 | } 32 | 33 | const { names, coinType } = safeSchema.data; 34 | const client = getPublicClient(env); 35 | 36 | const normalizedNames = names.map((name) => { 37 | try { 38 | return normalize(name); 39 | } catch { 40 | return ''; 41 | } 42 | }); 43 | 44 | const res = await batch( 45 | client, 46 | ...normalizedNames.map((name) => getAddressRecord.batch({ name, coin: coinType })) 47 | ); 48 | 49 | const addresses = res.map((obj) => obj?.value || null); 50 | return cacheAndCreateResponse(ctx, cache, cacheKey, addresses); 51 | } 52 | -------------------------------------------------------------------------------- /src/handlers/name.ts: -------------------------------------------------------------------------------- 1 | import { IRequest } from 'itty-router'; 2 | import { z } from 'zod'; 3 | 4 | import { 5 | cacheAndCreateResponse, 6 | checkCache, 7 | commaSeparatedListSchema, 8 | parseKeysFromParams, 9 | } from '../lib/utils'; 10 | import { fetchProfile } from '../lib/fetchProfile'; 11 | 12 | const schema = z.object({ 13 | name: z.string(), 14 | texts: commaSeparatedListSchema('string').optional(), 15 | coins: commaSeparatedListSchema('number').optional(), 16 | }); 17 | 18 | export async function handleName(request: IRequest, env: Env, ctx: ExecutionContext) { 19 | const { cache, cacheKey, response } = await checkCache('name', request); 20 | 21 | if (response) { 22 | return response; 23 | } 24 | 25 | const safeParse = schema.safeParse({ ...request.params, ...request.query }); 26 | 27 | if (!safeParse.success) { 28 | return Response.json(safeParse.error, { status: 400 }); 29 | } 30 | 31 | const params = safeParse.data; 32 | const { textKeys, coinKeys } = parseKeysFromParams(params); 33 | 34 | const profile = await fetchProfile({ 35 | name: params.name, 36 | textKeys, 37 | coinKeys, 38 | request, 39 | env, 40 | }); 41 | 42 | return cacheAndCreateResponse(ctx, cache, cacheKey, profile); 43 | } 44 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { createCors, error, Router } from 'itty-router'; 2 | 3 | import { handleAddress } from './handlers/address'; 4 | import { handleAddresses } from './handlers/batch/addresses'; 5 | import { handleAvatar } from './handlers/avatar'; 6 | import { handleName } from './handlers/name'; 7 | import { handleNames } from './handlers/batch/names'; 8 | 9 | const router = Router(); 10 | const { preflight, corsify } = createCors(); 11 | 12 | router 13 | .all('*', preflight) 14 | .get('/', () => Response.json(indexJson)) 15 | .get('/name/:name', handleName) 16 | .get('/address/:address', handleAddress) 17 | .get('/avatar/:name', handleAvatar) 18 | .post('/batch/addresses', handleAddresses) 19 | .post('/batch/names', handleNames) 20 | .all('*', () => error(404)); 21 | 22 | export default { 23 | async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise { 24 | return router.handle(request, env, ctx).then(corsify).catch(error); 25 | }, 26 | }; 27 | 28 | const indexJson = { 29 | endpoints: [ 30 | { 31 | method: 'GET', 32 | endpoint: '/name/:name', 33 | params: ['texts', 'coins'], 34 | }, 35 | { 36 | method: 'GET', 37 | endpoint: '/address/:address', 38 | params: ['texts', 'coins'], 39 | }, 40 | { 41 | method: 'GET', 42 | endpoint: '/avatar/:name', 43 | params: ['width', 'height', 'fallback'], 44 | }, 45 | { 46 | method: 'POST', 47 | endpoint: '/batch/addresses', 48 | body: ['addresses'], 49 | }, 50 | { 51 | method: 'POST', 52 | endpoint: '/batch/names', 53 | body: ['names', 'coinType'], 54 | }, 55 | ], 56 | }; 57 | -------------------------------------------------------------------------------- /src/lib/avt-fallback.ts: -------------------------------------------------------------------------------- 1 | const avatar = ` 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | `; 13 | 14 | // return 404 status but still send the fallback avatar 15 | export async function fallbackResponse( 16 | ctx: ExecutionContext, 17 | cache: Cache, 18 | cacheKey: Request, 19 | fallback?: string 20 | ) { 21 | let res: Response; 22 | 23 | if (fallback) { 24 | res = await fetch(fallback); 25 | } else { 26 | res = new Response(avatar, { 27 | status: 404, 28 | headers: { 29 | 'Content-Type': 'image/svg+xml', 30 | 'Cache-Control': 'public, max-age=600, stale-while-revalidate=3000', 31 | }, 32 | }); 33 | } 34 | 35 | return res; 36 | } 37 | -------------------------------------------------------------------------------- /src/lib/constants.ts: -------------------------------------------------------------------------------- 1 | // Select keys from ENSIP-5 2 | export const defaultTextKeys = [ 3 | 'avatar', 4 | 'description', 5 | 'display', 6 | 'email', 7 | 'location', 8 | 'url', 9 | 'com.github', 10 | 'com.linkedin', 11 | 'com.twitter', 12 | 'io.keybase', 13 | 'org.telegram', 14 | ]; 15 | 16 | // Select keys from ENSIP-9 and popular L2s 17 | export const defaultCoinKeys = [ 18 | 0, // Bitcoin 19 | 60, // Ethereum 20 | 2147492101, // Base 21 | 2147483658, // OP Mainnet 22 | ]; 23 | -------------------------------------------------------------------------------- /src/lib/fetchProfile.ts: -------------------------------------------------------------------------------- 1 | import { getRecords } from '@ensdomains/ensjs/public'; 2 | import { getPublicClient } from './utils'; 3 | import { normalize } from 'viem/ens'; 4 | 5 | type FetchProfileProps = { 6 | name: string; 7 | textKeys: string[]; 8 | coinKeys: number[]; 9 | request: Request; 10 | env: Env; 11 | }; 12 | 13 | export async function fetchProfile({ 14 | name: _name, 15 | textKeys, 16 | coinKeys, 17 | request, 18 | env, 19 | }: FetchProfileProps) { 20 | const name = normalize(_name); 21 | const client = getPublicClient(env); 22 | 23 | const profile = await getRecords(client, { 24 | name, 25 | texts: textKeys, 26 | coins: coinKeys, 27 | contentHash: false, 28 | }); 29 | 30 | const texts = profile.texts 31 | .map((text) => ({ [text.key]: text.value })) 32 | .reduce((a, b) => ({ ...a, ...b }), {}); 33 | 34 | const coins = profile.coins 35 | .map((coin) => ({ 36 | [coin.id]: { 37 | name: coin.name, 38 | address: coin.value, 39 | }, 40 | })) 41 | .reduce((a, b) => ({ ...a, ...b }), {}); 42 | 43 | const url = new URL(request.url); 44 | const baseUrl = `${url.protocol}//${url.host}`; 45 | 46 | const avatar = texts.avatar && { 47 | xs: `${baseUrl}/avatar/${name}?width=64`, 48 | sm: `${baseUrl}/avatar/${name}?width=128`, 49 | md: `${baseUrl}/avatar/${name}?width=256`, 50 | lg: `${baseUrl}/avatar/${name}?width=512`, 51 | }; 52 | 53 | return { 54 | name, 55 | address: coins[60]?.address, 56 | avatar, 57 | texts, 58 | coins, 59 | }; 60 | } 61 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { addEnsContracts, ensPublicActions } from '@ensdomains/ensjs'; 2 | import { createPublicClient, http, sha256 } from 'viem'; 3 | import { mainnet } from 'viem/chains'; 4 | import { z } from 'zod'; 5 | 6 | import { defaultCoinKeys, defaultTextKeys } from './constants'; 7 | import { IRequest } from 'itty-router/Router'; 8 | 9 | export function getPublicClient(env: Env) { 10 | return createPublicClient({ 11 | transport: http(env.ETH_RPC), 12 | chain: addEnsContracts(mainnet), 13 | batch: { 14 | multicall: { 15 | batchSize: 10_240, 16 | }, 17 | }, 18 | }).extend(ensPublicActions); 19 | } 20 | 21 | export const commaSeparatedListSchema = (type: 'string' | 'number') => { 22 | return z.string().refine((value) => { 23 | const values = value.split(','); 24 | 25 | if (type === 'string') { 26 | return values.every((v) => !!v.trim()); 27 | } else { 28 | return values.every((v) => !isNaN(Number(v))); 29 | } 30 | }); 31 | }; 32 | 33 | export function parseKeysFromParams({ 34 | texts, 35 | coins, 36 | }: { 37 | texts?: string | undefined; 38 | coins?: string | undefined; 39 | }) { 40 | const requestedTextKeys = texts?.split(',').map((key) => key.trim()) || []; 41 | const requestedCoinKeys = coins?.split(',').map((key) => Number(key)) || []; 42 | 43 | const textKeys = defaultTextKeys.concat(requestedTextKeys); 44 | const coinKeys = defaultCoinKeys.concat(requestedCoinKeys); 45 | 46 | return { textKeys, coinKeys }; 47 | } 48 | 49 | export async function checkCache(key: string, request: IRequest, body?: unknown) { 50 | const bodyHash = sha256(new TextEncoder().encode(JSON.stringify(body))); 51 | 52 | const cacheUrl = new URL(request.url); 53 | cacheUrl.pathname = cacheUrl.pathname + bodyHash; 54 | 55 | // Always use GET method to enable caching 56 | const cacheKey = new Request(cacheUrl, { method: 'GET', headers: request.headers }); 57 | const cache = await caches.open(key); 58 | 59 | // Check whether the value is already available in the cache 60 | const response = await cache.match(cacheKey); 61 | 62 | return { cache, cacheKey, response }; 63 | } 64 | 65 | export function cacheAndCreateResponse( 66 | ctx: ExecutionContext, 67 | cache: Cache, 68 | cacheKey: Request, 69 | data: any 70 | ) { 71 | const response = Response.json(data); 72 | 73 | // Cache the response for 10 minutes. If the same data is requested witin the 74 | // next 50 mins, serve the stale response while revalidating in the background 75 | response.headers.append( 76 | 'Cache-Control', 77 | 'public, max-age=600, stale-while-revalidate=3000' 78 | ); 79 | 80 | ctx.waitUntil(cache.put(cacheKey, response.clone())); 81 | return response; 82 | } 83 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | "lib": [ 16 | "es2021" 17 | ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, 18 | "jsx": "react" /* Specify what JSX code is generated. */, 19 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 20 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 21 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 22 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 23 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 24 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 25 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 26 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 27 | 28 | /* Modules */ 29 | "module": "es2022" /* Specify what module code is generated. */, 30 | // "rootDir": "./", /* Specify the root folder within your source files. */ 31 | "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, 32 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 33 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 34 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 35 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 36 | "types": [ 37 | "@cloudflare/workers-types" 38 | ] /* Specify type package names to be included without being referenced in a source file. */, 39 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 40 | "resolveJsonModule": true /* Enable importing .json files */, 41 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 42 | 43 | /* JavaScript Support */ 44 | "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, 45 | "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, 46 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 47 | 48 | /* Emit */ 49 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 50 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 51 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 52 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 53 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 54 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 55 | // "removeComments": true, /* Disable emitting comments. */ 56 | "noEmit": true /* Disable emitting files from a compilation. */, 57 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 58 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 59 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 60 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 61 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 62 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 63 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 64 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 65 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 66 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 67 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 68 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 69 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 70 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 71 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 72 | 73 | /* Interop Constraints */ 74 | "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, 75 | "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, 76 | // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, 77 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 78 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 79 | 80 | /* Type Checking */ 81 | "strict": true /* Enable all strict type-checking options. */, 82 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 83 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 84 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 85 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 86 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 87 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 88 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 89 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 90 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 91 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 92 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 93 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 94 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 95 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 96 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 97 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 98 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 99 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 100 | 101 | /* Completeness */ 102 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 103 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /worker-configuration.d.ts: -------------------------------------------------------------------------------- 1 | interface Env { 2 | ETH_RPC?: string; 3 | } 4 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "ens-api" 2 | main = "src/index.ts" 3 | compatibility_date = "2023-08-14" 4 | 5 | # The necessary secrets are: 6 | # - ETH_RPC 7 | # Run `echo | npx wrangler secret put ` for each of these 8 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@adraffy/ens-normalize@1.10.1": 6 | version "1.10.1" 7 | resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" 8 | integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== 9 | 10 | "@adraffy/ens-normalize@^1.10.1": 11 | version "1.11.0" 12 | resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" 13 | integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== 14 | 15 | "@cloudflare/kv-asset-handler@^0.2.0": 16 | version "0.2.0" 17 | resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz#c9959bbd7a1c40bd7c674adae98aa8c8d0e5ca68" 18 | integrity sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A== 19 | dependencies: 20 | mime "^3.0.0" 21 | 22 | "@cloudflare/workerd-darwin-64@1.20230814.1": 23 | version "1.20230814.1" 24 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20230814.1.tgz#f9e6192a196ffcce39047c98be27cd3a60bc8f3a" 25 | integrity sha512-aQUO7q7qXl+SVtOiMMlVKLNOSeL6GX43RKeflwzsD74dGgyHPiSfw5KCvXhkVbyN7u+yYF6HyFdaIvHLfn5jyA== 26 | 27 | "@cloudflare/workerd-darwin-arm64@1.20230814.1": 28 | version "1.20230814.1" 29 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20230814.1.tgz#cc8ab012ee54fe84e7da52ce04ba977c29755daf" 30 | integrity sha512-U2mcgi+AiuI/4EY5Wk/GmygiNoCNw/V2mcHmxESqe4r6XbJYOzBdEsjnqJ05rqd0JlEM8m64jRtE6/qBnQHygg== 31 | 32 | "@cloudflare/workerd-linux-64@1.20230814.1": 33 | version "1.20230814.1" 34 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230814.1.tgz#597a8ae250feef3de6fc982dafd6779ac76f00e3" 35 | integrity sha512-Q4kITXLTCuG2i2Z01fbb5AjVRRIf3+lS4ZVsFbTbIwtcOOG4Ozcw7ee7tKsFES7hFqR4Eg9gMG4/aS0mmi+L2g== 36 | 37 | "@cloudflare/workerd-linux-arm64@1.20230814.1": 38 | version "1.20230814.1" 39 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20230814.1.tgz#0669a26b975dc9c763e21626fa369bd232af1b66" 40 | integrity sha512-BX5SaksXw+pkREVw3Rw2eSNXplqZw+14CcwW/5x/4oq/C6yn5qCvKxJfM7pukJGMI4wkJPOYops7B3g27FB/HA== 41 | 42 | "@cloudflare/workerd-windows-64@1.20230814.1": 43 | version "1.20230814.1" 44 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20230814.1.tgz#9abc18825ee75142baf46905d6e1ba1904919705" 45 | integrity sha512-GWHqfyhsG/1wm2W8afkYX3q3fWXUWWD8NGtHfAs6ZVTHdW3mmYyMhKR0lc6ptBwz5i5aXRlP2S+CxxxwwDbKpw== 46 | 47 | "@cloudflare/workers-types@^4.20230814.0": 48 | version "4.20230814.0" 49 | resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20230814.0.tgz#7aadd4f600b1cf772a26160bd5ea836fa2aa42f6" 50 | integrity sha512-+jHiGjZg2UpULZSSHmHLqUG45TLg1s+uppSMlGvMn0u/xyFsRX9HX6b8Ydg/oHSp3jfSuPtX05GSvtgRAmrWTg== 51 | 52 | "@ensdomains/address-encoder@1.0.0-rc.3": 53 | version "1.0.0-rc.3" 54 | resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-1.0.0-rc.3.tgz#78a8081bed834661e7fd21a9c9f67f927100fce5" 55 | integrity sha512-8o6zH69rObIqDY4PusEWuN9jvVOct+9jj9AOPO7ifc3ev8nmsly0e8TE1sHkhk0iKFbd3DlSsUnJ+yuRWmdLCQ== 56 | dependencies: 57 | "@noble/curves" "^1.2.0" 58 | "@noble/hashes" "^1.3.2" 59 | "@scure/base" "^1.1.5" 60 | 61 | "@ensdomains/address-encoder@1.1.1": 62 | version "1.1.1" 63 | resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-1.1.1.tgz#5cbec1fc6e2435b109c058426d7c222cb5a5d8de" 64 | integrity sha512-yg7s+suCuKRhaGsgLu57W/jxIs/Lnqs/SU7jT7UwS4ATSnW94jbUCbmyyZ82CQwKsmwaUE8uYvvVb4N6lfz29A== 65 | dependencies: 66 | "@noble/curves" "^1.2.0" 67 | "@noble/hashes" "^1.3.2" 68 | "@scure/base" "^1.1.5" 69 | 70 | "@ensdomains/content-hash@3.1.0-rc.1": 71 | version "3.1.0-rc.1" 72 | resolved "https://registry.yarnpkg.com/@ensdomains/content-hash/-/content-hash-3.1.0-rc.1.tgz#f22220df19be2f60683070a683f5760a9a7134d8" 73 | integrity sha512-OzdkXgdFmduzcJKU4KRkkJkQHnm5p7m7FkX8k+bHOEoOIzc0ueGT/Jay4nnb60wNk1wSHRmzY+hHBMpFDiGReg== 74 | dependencies: 75 | "@ensdomains/address-encoder" "1.0.0-rc.3" 76 | "@noble/curves" "^1.2.0" 77 | "@scure/base" "^1.1.5" 78 | 79 | "@ensdomains/dnsprovejs@^0.5.1": 80 | version "0.5.1" 81 | resolved "https://registry.yarnpkg.com/@ensdomains/dnsprovejs/-/dnsprovejs-0.5.1.tgz#7b09121580d3224736567e680697fe179f0288af" 82 | integrity sha512-nfm4ggpK5YBVwVwLZKF9WPjRGRTL9aUxX2O4pqv/AnQCz3WeGHsW7VhVFLj2s4EoWSzCXwR1E6nuqgUwnH692w== 83 | dependencies: 84 | "@noble/hashes" "^1.3.2" 85 | dns-packet "^5.6.1" 86 | typescript-logging "^1.0.1" 87 | 88 | "@ensdomains/ensjs@^4.0.2": 89 | version "4.0.2" 90 | resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-4.0.2.tgz#c617f1363ba4e02f1bb884f1f6cce8bcd3899500" 91 | integrity sha512-4vDIZEFAa1doNA3H9MppUHxflSDYYPVNyaDbdHLksTa4taq3y4dGpletX67Xea8nxI+cMfjEi4nOzLJmPzRE/g== 92 | dependencies: 93 | "@adraffy/ens-normalize" "1.10.1" 94 | "@ensdomains/address-encoder" "1.1.1" 95 | "@ensdomains/content-hash" "3.1.0-rc.1" 96 | "@ensdomains/dnsprovejs" "^0.5.1" 97 | abitype "^1.0.0" 98 | dns-packet "^5.3.1" 99 | graphql "^16.3.0" 100 | graphql-request "6.1.0" 101 | pako "^2.1.0" 102 | ts-pattern "^5.4.0" 103 | 104 | "@esbuild-plugins/node-globals-polyfill@^0.1.1": 105 | version "0.1.1" 106 | resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz#a313ab3efbb2c17c8ce376aa216c627c9b40f9d7" 107 | integrity sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg== 108 | 109 | "@esbuild-plugins/node-modules-polyfill@^0.1.4": 110 | version "0.1.4" 111 | resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz#eb2f55da11967b2986c913f1a7957d1c868849c0" 112 | integrity sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg== 113 | dependencies: 114 | escape-string-regexp "^4.0.0" 115 | rollup-plugin-node-polyfills "^0.2.1" 116 | 117 | "@esbuild/android-arm64@0.16.3": 118 | version "0.16.3" 119 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz#6af6d16be6d534d776a51fc215bfd81a68906d2c" 120 | integrity sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg== 121 | 122 | "@esbuild/android-arm@0.16.3": 123 | version "0.16.3" 124 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.3.tgz#2a091222f3b1928e3246fb3c5202eaca88baab67" 125 | integrity sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA== 126 | 127 | "@esbuild/android-x64@0.16.3": 128 | version "0.16.3" 129 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.3.tgz#a6d749c58b022d371dc40d50ac1bb4aebd1eb953" 130 | integrity sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ== 131 | 132 | "@esbuild/darwin-arm64@0.16.3": 133 | version "0.16.3" 134 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz#92d1826ed2f21dcac5830b70d7215c6afbb744e2" 135 | integrity sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw== 136 | 137 | "@esbuild/darwin-x64@0.16.3": 138 | version "0.16.3" 139 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz#7fc3570c2b16e9ff4fc178593a0a4adb1ae8ea57" 140 | integrity sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ== 141 | 142 | "@esbuild/freebsd-arm64@0.16.3": 143 | version "0.16.3" 144 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz#16735ce16f8c9a4e7289e9e259aa01a8d9874307" 145 | integrity sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw== 146 | 147 | "@esbuild/freebsd-x64@0.16.3": 148 | version "0.16.3" 149 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz#f4edd1464cb072799ed6b8ab5178478e71c13459" 150 | integrity sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug== 151 | 152 | "@esbuild/linux-arm64@0.16.3": 153 | version "0.16.3" 154 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz#4b7ae6fe3618d9a40d6ca39c6edc991ac1447203" 155 | integrity sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ== 156 | 157 | "@esbuild/linux-arm@0.16.3": 158 | version "0.16.3" 159 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz#4b3e9f849822e16a76a70844c4db68075b259a58" 160 | integrity sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ== 161 | 162 | "@esbuild/linux-ia32@0.16.3": 163 | version "0.16.3" 164 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz#2ff3936b91bfff62f9ecf7f6411ef399b29ed22d" 165 | integrity sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA== 166 | 167 | "@esbuild/linux-loong64@0.16.3": 168 | version "0.16.3" 169 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz#ff8aa59f49d9ccbc1ff952ba1f5cd01a534562df" 170 | integrity sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw== 171 | 172 | "@esbuild/linux-mips64el@0.16.3": 173 | version "0.16.3" 174 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz#5dd5e118071c3912df69beedbfd11fb117f0fe5e" 175 | integrity sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw== 176 | 177 | "@esbuild/linux-ppc64@0.16.3": 178 | version "0.16.3" 179 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz#36c62e24eae7fa3f0d921506da8fc1e6098a1364" 180 | integrity sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q== 181 | 182 | "@esbuild/linux-riscv64@0.16.3": 183 | version "0.16.3" 184 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz#f0fec8e7affb5bcc817fefc61a21cbb95539e393" 185 | integrity sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ== 186 | 187 | "@esbuild/linux-s390x@0.16.3": 188 | version "0.16.3" 189 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz#22e10edd6e91f53c2e1f60e46abd453d7794409b" 190 | integrity sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ== 191 | 192 | "@esbuild/linux-x64@0.16.3": 193 | version "0.16.3" 194 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz#38388b73fd9eebe45b073d7d8099b9c2e54f7139" 195 | integrity sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w== 196 | 197 | "@esbuild/netbsd-x64@0.16.3": 198 | version "0.16.3" 199 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz#e0270569567f1530b8dbe6d11d5b4930b9cc71ae" 200 | integrity sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA== 201 | 202 | "@esbuild/openbsd-x64@0.16.3": 203 | version "0.16.3" 204 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz#3b16642d443848bca605f33ee3978a1890911e6d" 205 | integrity sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg== 206 | 207 | "@esbuild/sunos-x64@0.16.3": 208 | version "0.16.3" 209 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz#a838f247867380f0ae25ce1936dc5ab6f57b7734" 210 | integrity sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw== 211 | 212 | "@esbuild/win32-arm64@0.16.3": 213 | version "0.16.3" 214 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz#bedd9bef5fb41f89ce2599f1761973cf6d6a67b6" 215 | integrity sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg== 216 | 217 | "@esbuild/win32-ia32@0.16.3": 218 | version "0.16.3" 219 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz#49800aa812d8cc35ceef61e8d3b01224684cc0b1" 220 | integrity sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ== 221 | 222 | "@esbuild/win32-x64@0.16.3": 223 | version "0.16.3" 224 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz#94047dae921949cfb308117d993c4b941291ae10" 225 | integrity sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow== 226 | 227 | "@graphql-typed-document-node/core@^3.2.0": 228 | version "3.2.0" 229 | resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" 230 | integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== 231 | 232 | "@leichtgewicht/ip-codec@^2.0.1": 233 | version "2.0.4" 234 | resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" 235 | integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== 236 | 237 | "@noble/curves@1.6.0", "@noble/curves@~1.6.0": 238 | version "1.6.0" 239 | resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" 240 | integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== 241 | dependencies: 242 | "@noble/hashes" "1.5.0" 243 | 244 | "@noble/curves@^1.2.0": 245 | version "1.3.0" 246 | resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" 247 | integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== 248 | dependencies: 249 | "@noble/hashes" "1.3.3" 250 | 251 | "@noble/curves@^1.4.0", "@noble/curves@^1.6.0", "@noble/curves@~1.7.0": 252 | version "1.7.0" 253 | resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" 254 | integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== 255 | dependencies: 256 | "@noble/hashes" "1.6.0" 257 | 258 | "@noble/hashes@1.3.3", "@noble/hashes@^1.3.2": 259 | version "1.3.3" 260 | resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" 261 | integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== 262 | 263 | "@noble/hashes@1.5.0", "@noble/hashes@~1.5.0": 264 | version "1.5.0" 265 | resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" 266 | integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== 267 | 268 | "@noble/hashes@1.6.0": 269 | version "1.6.0" 270 | resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" 271 | integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== 272 | 273 | "@noble/hashes@^1.4.0", "@noble/hashes@^1.5.0", "@noble/hashes@~1.6.0": 274 | version "1.6.1" 275 | resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" 276 | integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== 277 | 278 | "@scure/base@^1.1.5": 279 | version "1.1.5" 280 | resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" 281 | integrity sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ== 282 | 283 | "@scure/base@~1.1.7", "@scure/base@~1.1.8": 284 | version "1.1.9" 285 | resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" 286 | integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== 287 | 288 | "@scure/base@~1.2.1": 289 | version "1.2.1" 290 | resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" 291 | integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== 292 | 293 | "@scure/bip32@1.5.0": 294 | version "1.5.0" 295 | resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.5.0.tgz#dd4a2e1b8a9da60e012e776d954c4186db6328e6" 296 | integrity sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw== 297 | dependencies: 298 | "@noble/curves" "~1.6.0" 299 | "@noble/hashes" "~1.5.0" 300 | "@scure/base" "~1.1.7" 301 | 302 | "@scure/bip32@^1.5.0": 303 | version "1.6.0" 304 | resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.0.tgz#6dbc6b4af7c9101b351f41231a879d8da47e0891" 305 | integrity sha512-82q1QfklrUUdXJzjuRU7iG7D7XiFx5PHYVS0+oeNKhyDLT7WPqs6pBcM2W5ZdwOwKCwoE1Vy1se+DHjcXwCYnA== 306 | dependencies: 307 | "@noble/curves" "~1.7.0" 308 | "@noble/hashes" "~1.6.0" 309 | "@scure/base" "~1.2.1" 310 | 311 | "@scure/bip39@1.4.0": 312 | version "1.4.0" 313 | resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6" 314 | integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw== 315 | dependencies: 316 | "@noble/hashes" "~1.5.0" 317 | "@scure/base" "~1.1.8" 318 | 319 | "@scure/bip39@^1.4.0": 320 | version "1.5.0" 321 | resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.0.tgz#c8f9533dbd787641b047984356531d84485f19be" 322 | integrity sha512-Dop+ASYhnrwm9+HA/HwXg7j2ZqM6yk2fyLWb5znexjctFY3+E+eU8cIWI0Pql0Qx4hPZCijlGq4OL71g+Uz30A== 323 | dependencies: 324 | "@noble/hashes" "~1.6.0" 325 | "@scure/base" "~1.2.1" 326 | 327 | abitype@1.0.6, abitype@^1.0.0, abitype@^1.0.6: 328 | version "1.0.6" 329 | resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" 330 | integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A== 331 | 332 | acorn-walk@^8.2.0: 333 | version "8.2.0" 334 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 335 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 336 | 337 | acorn@^8.8.0: 338 | version "8.10.0" 339 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" 340 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== 341 | 342 | anymatch@~3.1.2: 343 | version "3.1.3" 344 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 345 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 346 | dependencies: 347 | normalize-path "^3.0.0" 348 | picomatch "^2.0.4" 349 | 350 | as-table@^1.0.36: 351 | version "1.0.55" 352 | resolved "https://registry.yarnpkg.com/as-table/-/as-table-1.0.55.tgz#dc984da3937745de902cea1d45843c01bdbbec4f" 353 | integrity sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ== 354 | dependencies: 355 | printable-characters "^1.0.42" 356 | 357 | base64-js@^1.3.1: 358 | version "1.5.1" 359 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 360 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 361 | 362 | better-sqlite3@^8.1.0: 363 | version "8.5.1" 364 | resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.5.1.tgz#984f7645303afa76289569804ee56e211d8ffa66" 365 | integrity sha512-aDfC67xfll6bugnOqRJhdUWioQZnkhLkrwZ+oo6yZbNMtyktbwkDO4SfBcCVWbm4BlsCjCNTJchlHaBt+vB4Iw== 366 | dependencies: 367 | bindings "^1.5.0" 368 | prebuild-install "^7.1.0" 369 | 370 | binary-extensions@^2.0.0: 371 | version "2.2.0" 372 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 373 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 374 | 375 | bindings@^1.5.0: 376 | version "1.5.0" 377 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 378 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 379 | dependencies: 380 | file-uri-to-path "1.0.0" 381 | 382 | bl@^4.0.3: 383 | version "4.1.0" 384 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 385 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 386 | dependencies: 387 | buffer "^5.5.0" 388 | inherits "^2.0.4" 389 | readable-stream "^3.4.0" 390 | 391 | blake3-wasm@^2.1.5: 392 | version "2.1.5" 393 | resolved "https://registry.yarnpkg.com/blake3-wasm/-/blake3-wasm-2.1.5.tgz#b22dbb84bc9419ed0159caa76af4b1b132e6ba52" 394 | integrity sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g== 395 | 396 | braces@~3.0.2: 397 | version "3.0.2" 398 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 399 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 400 | dependencies: 401 | fill-range "^7.0.1" 402 | 403 | buffer-from@^1.0.0: 404 | version "1.1.2" 405 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 406 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 407 | 408 | buffer@^5.5.0: 409 | version "5.7.1" 410 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 411 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 412 | dependencies: 413 | base64-js "^1.3.1" 414 | ieee754 "^1.1.13" 415 | 416 | busboy@^1.6.0: 417 | version "1.6.0" 418 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" 419 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== 420 | dependencies: 421 | streamsearch "^1.1.0" 422 | 423 | capnp-ts@^0.7.0: 424 | version "0.7.0" 425 | resolved "https://registry.yarnpkg.com/capnp-ts/-/capnp-ts-0.7.0.tgz#16fd8e76b667d002af8fcf4bf92bf15d1a7b54a9" 426 | integrity sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g== 427 | dependencies: 428 | debug "^4.3.1" 429 | tslib "^2.2.0" 430 | 431 | chokidar@^3.5.3: 432 | version "3.5.3" 433 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 434 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 435 | dependencies: 436 | anymatch "~3.1.2" 437 | braces "~3.0.2" 438 | glob-parent "~5.1.2" 439 | is-binary-path "~2.1.0" 440 | is-glob "~4.0.1" 441 | normalize-path "~3.0.0" 442 | readdirp "~3.6.0" 443 | optionalDependencies: 444 | fsevents "~2.3.2" 445 | 446 | chownr@^1.1.1: 447 | version "1.1.4" 448 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 449 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 450 | 451 | cookie@^0.5.0: 452 | version "0.5.0" 453 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 454 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 455 | 456 | cross-fetch@^3.1.5: 457 | version "3.1.8" 458 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" 459 | integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== 460 | dependencies: 461 | node-fetch "^2.6.12" 462 | 463 | data-uri-to-buffer@^2.0.0: 464 | version "2.0.2" 465 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz#d296973d5a4897a5dbe31716d118211921f04770" 466 | integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA== 467 | 468 | debug@^4.3.1: 469 | version "4.3.4" 470 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 471 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 472 | dependencies: 473 | ms "2.1.2" 474 | 475 | decompress-response@^6.0.0: 476 | version "6.0.0" 477 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 478 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 479 | dependencies: 480 | mimic-response "^3.1.0" 481 | 482 | deep-extend@^0.6.0: 483 | version "0.6.0" 484 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 485 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 486 | 487 | detect-libc@^2.0.0: 488 | version "2.0.2" 489 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" 490 | integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== 491 | 492 | dns-packet@^5.3.1, dns-packet@^5.6.1: 493 | version "5.6.1" 494 | resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" 495 | integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== 496 | dependencies: 497 | "@leichtgewicht/ip-codec" "^2.0.1" 498 | 499 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 500 | version "1.4.4" 501 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 502 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 503 | dependencies: 504 | once "^1.4.0" 505 | 506 | error-stack-parser@^1.3.6: 507 | version "1.3.6" 508 | resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292" 509 | integrity sha512-xhuSYd8wLgOXwNgjcPeXMPL/IiiA1Huck+OPvClpJViVNNlJVtM41o+1emp7bPvlCJwCatFX2DWc05/DgfbWzA== 510 | dependencies: 511 | stackframe "^0.3.1" 512 | 513 | esbuild@0.16.3: 514 | version "0.16.3" 515 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.3.tgz#5868632fa23f7a8547f2a4ea359c44e946515c94" 516 | integrity sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg== 517 | optionalDependencies: 518 | "@esbuild/android-arm" "0.16.3" 519 | "@esbuild/android-arm64" "0.16.3" 520 | "@esbuild/android-x64" "0.16.3" 521 | "@esbuild/darwin-arm64" "0.16.3" 522 | "@esbuild/darwin-x64" "0.16.3" 523 | "@esbuild/freebsd-arm64" "0.16.3" 524 | "@esbuild/freebsd-x64" "0.16.3" 525 | "@esbuild/linux-arm" "0.16.3" 526 | "@esbuild/linux-arm64" "0.16.3" 527 | "@esbuild/linux-ia32" "0.16.3" 528 | "@esbuild/linux-loong64" "0.16.3" 529 | "@esbuild/linux-mips64el" "0.16.3" 530 | "@esbuild/linux-ppc64" "0.16.3" 531 | "@esbuild/linux-riscv64" "0.16.3" 532 | "@esbuild/linux-s390x" "0.16.3" 533 | "@esbuild/linux-x64" "0.16.3" 534 | "@esbuild/netbsd-x64" "0.16.3" 535 | "@esbuild/openbsd-x64" "0.16.3" 536 | "@esbuild/sunos-x64" "0.16.3" 537 | "@esbuild/win32-arm64" "0.16.3" 538 | "@esbuild/win32-ia32" "0.16.3" 539 | "@esbuild/win32-x64" "0.16.3" 540 | 541 | escape-string-regexp@^4.0.0: 542 | version "4.0.0" 543 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 544 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 545 | 546 | estree-walker@^0.6.1: 547 | version "0.6.1" 548 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 549 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 550 | 551 | eventemitter3@5.0.1: 552 | version "5.0.1" 553 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" 554 | integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== 555 | 556 | exit-hook@^2.2.1: 557 | version "2.2.1" 558 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-2.2.1.tgz#007b2d92c6428eda2b76e7016a34351586934593" 559 | integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw== 560 | 561 | expand-template@^2.0.3: 562 | version "2.0.3" 563 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 564 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 565 | 566 | file-uri-to-path@1.0.0: 567 | version "1.0.0" 568 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 569 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 570 | 571 | fill-range@^7.0.1: 572 | version "7.0.1" 573 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 574 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 575 | dependencies: 576 | to-regex-range "^5.0.1" 577 | 578 | fs-constants@^1.0.0: 579 | version "1.0.0" 580 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 581 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 582 | 583 | fsevents@~2.3.2: 584 | version "2.3.2" 585 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 586 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 587 | 588 | get-source@^2.0.12: 589 | version "2.0.12" 590 | resolved "https://registry.yarnpkg.com/get-source/-/get-source-2.0.12.tgz#0b47d57ea1e53ce0d3a69f4f3d277eb8047da944" 591 | integrity sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w== 592 | dependencies: 593 | data-uri-to-buffer "^2.0.0" 594 | source-map "^0.6.1" 595 | 596 | github-from-package@0.0.0: 597 | version "0.0.0" 598 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 599 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 600 | 601 | glob-parent@~5.1.2: 602 | version "5.1.2" 603 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 604 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 605 | dependencies: 606 | is-glob "^4.0.1" 607 | 608 | glob-to-regexp@^0.4.1: 609 | version "0.4.1" 610 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 611 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 612 | 613 | graphql-request@6.1.0: 614 | version "6.1.0" 615 | resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-6.1.0.tgz#f4eb2107967af3c7a5907eb3131c671eac89be4f" 616 | integrity sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw== 617 | dependencies: 618 | "@graphql-typed-document-node/core" "^3.2.0" 619 | cross-fetch "^3.1.5" 620 | 621 | graphql@^16.3.0: 622 | version "16.8.1" 623 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" 624 | integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== 625 | 626 | http-cache-semantics@^4.1.0: 627 | version "4.1.1" 628 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" 629 | integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== 630 | 631 | ieee754@^1.1.13: 632 | version "1.2.1" 633 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 634 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 635 | 636 | inherits@^2.0.3, inherits@^2.0.4: 637 | version "2.0.4" 638 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 639 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 640 | 641 | ini@~1.3.0: 642 | version "1.3.8" 643 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 644 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 645 | 646 | is-binary-path@~2.1.0: 647 | version "2.1.0" 648 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 649 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 650 | dependencies: 651 | binary-extensions "^2.0.0" 652 | 653 | is-extglob@^2.1.1: 654 | version "2.1.1" 655 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 656 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 657 | 658 | is-glob@^4.0.1, is-glob@~4.0.1: 659 | version "4.0.3" 660 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 661 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 662 | dependencies: 663 | is-extglob "^2.1.1" 664 | 665 | is-number@^7.0.0: 666 | version "7.0.0" 667 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 668 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 669 | 670 | isows@1.0.6: 671 | version "1.0.6" 672 | resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" 673 | integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== 674 | 675 | itty-router@^4.0.17: 676 | version "4.0.17" 677 | resolved "https://registry.yarnpkg.com/itty-router/-/itty-router-4.0.17.tgz#5d9853107552ef165251f28568936c70a2fb87fb" 678 | integrity sha512-Fu/GO3MFX6Hwd+QF1/BFjoFpPQKh2Bu4DtBdse5kECcUwldNBrZqgwq0IariLrP67iADGlzkHIlOWwJ8F4SJ4A== 679 | 680 | kleur@^4.1.5: 681 | version "4.1.5" 682 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" 683 | integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== 684 | 685 | lru-cache@^6.0.0: 686 | version "6.0.0" 687 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 688 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 689 | dependencies: 690 | yallist "^4.0.0" 691 | 692 | magic-string@^0.25.3: 693 | version "0.25.9" 694 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" 695 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== 696 | dependencies: 697 | sourcemap-codec "^1.4.8" 698 | 699 | mime@^3.0.0: 700 | version "3.0.0" 701 | resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" 702 | integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== 703 | 704 | mimic-response@^3.1.0: 705 | version "3.1.0" 706 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 707 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 708 | 709 | miniflare@3.20230814.1: 710 | version "3.20230814.1" 711 | resolved "https://registry.yarnpkg.com/miniflare/-/miniflare-3.20230814.1.tgz#61e4929f309cc85ef4a958e414af79eca79caa35" 712 | integrity sha512-LMgqd1Ut0+fnlvQepVbbBYQczQnyuuap8bgUwOyPETka0S9NR9NxMQSNaBgVZ0uOaG7xMJ/OVTRlz+TGB86PWA== 713 | dependencies: 714 | acorn "^8.8.0" 715 | acorn-walk "^8.2.0" 716 | better-sqlite3 "^8.1.0" 717 | capnp-ts "^0.7.0" 718 | exit-hook "^2.2.1" 719 | glob-to-regexp "^0.4.1" 720 | http-cache-semantics "^4.1.0" 721 | kleur "^4.1.5" 722 | set-cookie-parser "^2.6.0" 723 | source-map-support "0.5.21" 724 | stoppable "^1.1.0" 725 | undici "^5.13.0" 726 | workerd "1.20230814.1" 727 | ws "^8.11.0" 728 | youch "^3.2.2" 729 | zod "^3.20.6" 730 | 731 | minimist@^1.2.0, minimist@^1.2.3: 732 | version "1.2.8" 733 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 734 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 735 | 736 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 737 | version "0.5.3" 738 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 739 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 740 | 741 | ms@2.1.2: 742 | version "2.1.2" 743 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 744 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 745 | 746 | mustache@^4.2.0: 747 | version "4.2.0" 748 | resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" 749 | integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== 750 | 751 | nanoid@^3.3.3: 752 | version "3.3.6" 753 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 754 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 755 | 756 | napi-build-utils@^1.0.1: 757 | version "1.0.2" 758 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 759 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 760 | 761 | node-abi@^3.3.0: 762 | version "3.47.0" 763 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.47.0.tgz#6cbfa2916805ae25c2b7156ca640131632eb05e8" 764 | integrity sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A== 765 | dependencies: 766 | semver "^7.3.5" 767 | 768 | node-fetch@^2.6.12: 769 | version "2.7.0" 770 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 771 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 772 | dependencies: 773 | whatwg-url "^5.0.0" 774 | 775 | node-forge@^1: 776 | version "1.3.1" 777 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" 778 | integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== 779 | 780 | normalize-path@^3.0.0, normalize-path@~3.0.0: 781 | version "3.0.0" 782 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 783 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 784 | 785 | once@^1.3.1, once@^1.4.0: 786 | version "1.4.0" 787 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 788 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 789 | dependencies: 790 | wrappy "1" 791 | 792 | ox@0.1.2: 793 | version "0.1.2" 794 | resolved "https://registry.yarnpkg.com/ox/-/ox-0.1.2.tgz#0f791be2ccabeaf4928e6d423498fe1c8094e560" 795 | integrity sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww== 796 | dependencies: 797 | "@adraffy/ens-normalize" "^1.10.1" 798 | "@noble/curves" "^1.6.0" 799 | "@noble/hashes" "^1.5.0" 800 | "@scure/bip32" "^1.5.0" 801 | "@scure/bip39" "^1.4.0" 802 | abitype "^1.0.6" 803 | eventemitter3 "5.0.1" 804 | 805 | pako@^2.1.0: 806 | version "2.1.0" 807 | resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" 808 | integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== 809 | 810 | path-to-regexp@^6.2.0: 811 | version "6.2.1" 812 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" 813 | integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== 814 | 815 | picomatch@^2.0.4, picomatch@^2.2.1: 816 | version "2.3.1" 817 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 818 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 819 | 820 | prebuild-install@^7.1.0: 821 | version "7.1.1" 822 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 823 | integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 824 | dependencies: 825 | detect-libc "^2.0.0" 826 | expand-template "^2.0.3" 827 | github-from-package "0.0.0" 828 | minimist "^1.2.3" 829 | mkdirp-classic "^0.5.3" 830 | napi-build-utils "^1.0.1" 831 | node-abi "^3.3.0" 832 | pump "^3.0.0" 833 | rc "^1.2.7" 834 | simple-get "^4.0.0" 835 | tar-fs "^2.0.0" 836 | tunnel-agent "^0.6.0" 837 | 838 | printable-characters@^1.0.42: 839 | version "1.0.42" 840 | resolved "https://registry.yarnpkg.com/printable-characters/-/printable-characters-1.0.42.tgz#3f18e977a9bd8eb37fcc4ff5659d7be90868b3d8" 841 | integrity sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ== 842 | 843 | pump@^3.0.0: 844 | version "3.0.0" 845 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 846 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 847 | dependencies: 848 | end-of-stream "^1.1.0" 849 | once "^1.3.1" 850 | 851 | rc@^1.2.7: 852 | version "1.2.8" 853 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 854 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 855 | dependencies: 856 | deep-extend "^0.6.0" 857 | ini "~1.3.0" 858 | minimist "^1.2.0" 859 | strip-json-comments "~2.0.1" 860 | 861 | readable-stream@^3.1.1, readable-stream@^3.4.0: 862 | version "3.6.2" 863 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 864 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 865 | dependencies: 866 | inherits "^2.0.3" 867 | string_decoder "^1.1.1" 868 | util-deprecate "^1.0.1" 869 | 870 | readdirp@~3.6.0: 871 | version "3.6.0" 872 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 873 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 874 | dependencies: 875 | picomatch "^2.2.1" 876 | 877 | rollup-plugin-inject@^3.0.0: 878 | version "3.0.2" 879 | resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" 880 | integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== 881 | dependencies: 882 | estree-walker "^0.6.1" 883 | magic-string "^0.25.3" 884 | rollup-pluginutils "^2.8.1" 885 | 886 | rollup-plugin-node-polyfills@^0.2.1: 887 | version "0.2.1" 888 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd" 889 | integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA== 890 | dependencies: 891 | rollup-plugin-inject "^3.0.0" 892 | 893 | rollup-pluginutils@^2.8.1: 894 | version "2.8.2" 895 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 896 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 897 | dependencies: 898 | estree-walker "^0.6.1" 899 | 900 | safe-buffer@^5.0.1, safe-buffer@~5.2.0: 901 | version "5.2.1" 902 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 903 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 904 | 905 | selfsigned@^2.0.1: 906 | version "2.1.1" 907 | resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" 908 | integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== 909 | dependencies: 910 | node-forge "^1" 911 | 912 | semver@^7.3.5: 913 | version "7.5.4" 914 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 915 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 916 | dependencies: 917 | lru-cache "^6.0.0" 918 | 919 | set-cookie-parser@^2.6.0: 920 | version "2.6.0" 921 | resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" 922 | integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== 923 | 924 | simple-concat@^1.0.0: 925 | version "1.0.1" 926 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 927 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 928 | 929 | simple-get@^4.0.0: 930 | version "4.0.1" 931 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 932 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 933 | dependencies: 934 | decompress-response "^6.0.0" 935 | once "^1.3.1" 936 | simple-concat "^1.0.0" 937 | 938 | source-map-support@0.5.21: 939 | version "0.5.21" 940 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 941 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 942 | dependencies: 943 | buffer-from "^1.0.0" 944 | source-map "^0.6.0" 945 | 946 | source-map@0.5.6: 947 | version "0.5.6" 948 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 949 | integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== 950 | 951 | source-map@^0.6.0, source-map@^0.6.1: 952 | version "0.6.1" 953 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 954 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 955 | 956 | source-map@^0.7.4: 957 | version "0.7.4" 958 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" 959 | integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== 960 | 961 | sourcemap-codec@^1.4.8: 962 | version "1.4.8" 963 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 964 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 965 | 966 | stack-generator@^1.0.7: 967 | version "1.1.0" 968 | resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-1.1.0.tgz#36f6a920751a6c10f499a13c32cbb5f51a0b8b25" 969 | integrity sha512-sZDVjwC56vZoo+a5t0LH/1sMQLWYLi/r+Z2ztyCAOhOX3QBP34GWxK0FWf2eU1TIU2CJKCKBAtDZycUh/ZKMlw== 970 | dependencies: 971 | stackframe "^1.0.2" 972 | 973 | stackframe@^0.3.1, stackframe@~0.3: 974 | version "0.3.1" 975 | resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" 976 | integrity sha512-XmoiF4T5nuWEp2x2w92WdGjdHGY/cZa6LIbRsDRQR/Xlk4uW0PAUlH1zJYVffocwKpCdwyuypIp25xsSXEtZHw== 977 | 978 | stackframe@^1.0.2: 979 | version "1.3.4" 980 | resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" 981 | integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== 982 | 983 | stacktrace-gps@^2.4.3: 984 | version "2.4.4" 985 | resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-2.4.4.tgz#69c827e9d6d6f41cf438d7f195e2e3cbfcf28c44" 986 | integrity sha512-msFhuMEEklQLUtaJ+GeCDjzUN+PamfHWQiK3C1LnbHjoxSeF5dAxiE+aJkptNMmMNOropGFJ7G3ZT7dPZHgDaQ== 987 | dependencies: 988 | source-map "0.5.6" 989 | stackframe "~0.3" 990 | 991 | stacktrace-js@1.3.1: 992 | version "1.3.1" 993 | resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-1.3.1.tgz#67cab2589af5c417b962f7369940277bb3b6a18b" 994 | integrity sha512-b+5voFnXqg9TWdOE50soXL+WuOreYUm1Ukg9U7rzEWGL4+gcVxIcFasNBtOffVX0I1lYqVZj0PZXZvTt5e3YRQ== 995 | dependencies: 996 | error-stack-parser "^1.3.6" 997 | stack-generator "^1.0.7" 998 | stacktrace-gps "^2.4.3" 999 | 1000 | stacktracey@^2.1.8: 1001 | version "2.1.8" 1002 | resolved "https://registry.yarnpkg.com/stacktracey/-/stacktracey-2.1.8.tgz#bf9916020738ce3700d1323b32bd2c91ea71199d" 1003 | integrity sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw== 1004 | dependencies: 1005 | as-table "^1.0.36" 1006 | get-source "^2.0.12" 1007 | 1008 | stoppable@^1.1.0: 1009 | version "1.1.0" 1010 | resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" 1011 | integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== 1012 | 1013 | streamsearch@^1.1.0: 1014 | version "1.1.0" 1015 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" 1016 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== 1017 | 1018 | string_decoder@^1.1.1: 1019 | version "1.3.0" 1020 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1021 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1022 | dependencies: 1023 | safe-buffer "~5.2.0" 1024 | 1025 | strip-json-comments@~2.0.1: 1026 | version "2.0.1" 1027 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1028 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 1029 | 1030 | tar-fs@^2.0.0: 1031 | version "2.1.1" 1032 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1033 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1034 | dependencies: 1035 | chownr "^1.1.1" 1036 | mkdirp-classic "^0.5.2" 1037 | pump "^3.0.0" 1038 | tar-stream "^2.1.4" 1039 | 1040 | tar-stream@^2.1.4: 1041 | version "2.2.0" 1042 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1043 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1044 | dependencies: 1045 | bl "^4.0.3" 1046 | end-of-stream "^1.4.1" 1047 | fs-constants "^1.0.0" 1048 | inherits "^2.0.3" 1049 | readable-stream "^3.1.1" 1050 | 1051 | to-regex-range@^5.0.1: 1052 | version "5.0.1" 1053 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1054 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1055 | dependencies: 1056 | is-number "^7.0.0" 1057 | 1058 | tr46@~0.0.3: 1059 | version "0.0.3" 1060 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1061 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1062 | 1063 | ts-pattern@^5.4.0: 1064 | version "5.5.0" 1065 | resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-5.5.0.tgz#1f137eb2bd2bc30a030b5583dee022d00fac3415" 1066 | integrity sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg== 1067 | 1068 | tslib@^2.2.0: 1069 | version "2.6.1" 1070 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" 1071 | integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== 1072 | 1073 | tunnel-agent@^0.6.0: 1074 | version "0.6.0" 1075 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1076 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 1077 | dependencies: 1078 | safe-buffer "^5.0.1" 1079 | 1080 | typescript-logging@^1.0.1: 1081 | version "1.0.1" 1082 | resolved "https://registry.yarnpkg.com/typescript-logging/-/typescript-logging-1.0.1.tgz#e0f8157943780cf5943aacd53b04cb73d108a0f9" 1083 | integrity sha512-zp28ABme0m5q/nXabBaY9Hv/35N8lMH4FsvhpUO0zVi4vFs3uKlb5br2it61HAZF5k+U0aP6E67j0VD0IzXGpQ== 1084 | dependencies: 1085 | stacktrace-js "1.3.1" 1086 | 1087 | typescript@^5.1.6: 1088 | version "5.1.6" 1089 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" 1090 | integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== 1091 | 1092 | undici@^5.13.0: 1093 | version "5.23.0" 1094 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" 1095 | integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== 1096 | dependencies: 1097 | busboy "^1.6.0" 1098 | 1099 | util-deprecate@^1.0.1: 1100 | version "1.0.2" 1101 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1102 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1103 | 1104 | viem@^2.21.53: 1105 | version "2.21.53" 1106 | resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.53.tgz#a5ba6da48e5edded27dde286e431ae97034f4fc4" 1107 | integrity sha512-0pY8clBacAwzc59iV1vY4a6U4xvRlA5tAuhClJCKvqA6rXJzmNMMvxQ0EG79lkHr7WtBEruXz8nAmONXwnq4EQ== 1108 | dependencies: 1109 | "@noble/curves" "1.6.0" 1110 | "@noble/hashes" "1.5.0" 1111 | "@scure/bip32" "1.5.0" 1112 | "@scure/bip39" "1.4.0" 1113 | abitype "1.0.6" 1114 | isows "1.0.6" 1115 | ox "0.1.2" 1116 | webauthn-p256 "0.0.10" 1117 | ws "8.18.0" 1118 | 1119 | webauthn-p256@0.0.10: 1120 | version "0.0.10" 1121 | resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.10.tgz#877e75abe8348d3e14485932968edf3325fd2fdd" 1122 | integrity sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA== 1123 | dependencies: 1124 | "@noble/curves" "^1.4.0" 1125 | "@noble/hashes" "^1.4.0" 1126 | 1127 | webidl-conversions@^3.0.0: 1128 | version "3.0.1" 1129 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1130 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1131 | 1132 | whatwg-url@^5.0.0: 1133 | version "5.0.0" 1134 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1135 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1136 | dependencies: 1137 | tr46 "~0.0.3" 1138 | webidl-conversions "^3.0.0" 1139 | 1140 | workerd@1.20230814.1: 1141 | version "1.20230814.1" 1142 | resolved "https://registry.yarnpkg.com/workerd/-/workerd-1.20230814.1.tgz#659a0e3c940fcba8f0db32b4e22c20cbfe087674" 1143 | integrity sha512-zJeSEteXuAD+bpYJT8WvzTAHvIAkKPVxOV+Jy6zCLKz5e08N3OUbAF+wrvGWc8b2aB1sj+IYsdXfkv4puH+qXQ== 1144 | optionalDependencies: 1145 | "@cloudflare/workerd-darwin-64" "1.20230814.1" 1146 | "@cloudflare/workerd-darwin-arm64" "1.20230814.1" 1147 | "@cloudflare/workerd-linux-64" "1.20230814.1" 1148 | "@cloudflare/workerd-linux-arm64" "1.20230814.1" 1149 | "@cloudflare/workerd-windows-64" "1.20230814.1" 1150 | 1151 | wrangler@^3.5.1: 1152 | version "3.5.1" 1153 | resolved "https://registry.yarnpkg.com/wrangler/-/wrangler-3.5.1.tgz#e7835f964e061b86695c1b6f6fa799e8281e77f8" 1154 | integrity sha512-CnrKId+pmjTfLSidM9Ut7lUDCFWEtJyY3JT3Dk+TgYHvu2zVmMgUeQQZHZfvpVN5eaEZifNQr90KEvMLy7MhHw== 1155 | dependencies: 1156 | "@cloudflare/kv-asset-handler" "^0.2.0" 1157 | "@esbuild-plugins/node-globals-polyfill" "^0.1.1" 1158 | "@esbuild-plugins/node-modules-polyfill" "^0.1.4" 1159 | blake3-wasm "^2.1.5" 1160 | chokidar "^3.5.3" 1161 | esbuild "0.16.3" 1162 | miniflare "3.20230814.1" 1163 | nanoid "^3.3.3" 1164 | path-to-regexp "^6.2.0" 1165 | selfsigned "^2.0.1" 1166 | source-map "^0.7.4" 1167 | xxhash-wasm "^1.0.1" 1168 | optionalDependencies: 1169 | fsevents "~2.3.2" 1170 | 1171 | wrappy@1: 1172 | version "1.0.2" 1173 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1174 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1175 | 1176 | ws@8.18.0: 1177 | version "8.18.0" 1178 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" 1179 | integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== 1180 | 1181 | ws@^8.11.0: 1182 | version "8.13.0" 1183 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" 1184 | integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== 1185 | 1186 | xxhash-wasm@^1.0.1: 1187 | version "1.0.2" 1188 | resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz#ecc0f813219b727af4d5f3958ca6becee2f2f1ff" 1189 | integrity sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A== 1190 | 1191 | yallist@^4.0.0: 1192 | version "4.0.0" 1193 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1194 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1195 | 1196 | youch@^3.2.2: 1197 | version "3.2.3" 1198 | resolved "https://registry.yarnpkg.com/youch/-/youch-3.2.3.tgz#63c94ea504950a1a5bf1d5969439addba6c726e2" 1199 | integrity sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw== 1200 | dependencies: 1201 | cookie "^0.5.0" 1202 | mustache "^4.2.0" 1203 | stacktracey "^2.1.8" 1204 | 1205 | zod@^3.20.6: 1206 | version "3.22.1" 1207 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.1.tgz#815f850baf933fef96c1061322dbe579b1a80c27" 1208 | integrity sha512-+qUhAMl414+Elh+fRNtpU+byrwjDFOS1N7NioLY+tSlcADTx4TkCUua/hxJvxwDXcV4397/nZ420jy4n4+3WUg== 1209 | 1210 | zod@^3.22.4: 1211 | version "3.22.4" 1212 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" 1213 | integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== 1214 | --------------------------------------------------------------------------------