├── .gitignore
├── README.md
├── minidon.sql
├── package.json
├── public
└── static
│ └── icon.png
├── src
├── index.ts
├── logic.ts
├── routes
│ ├── Pages.tsx
│ ├── ui.tsx
│ ├── user.ts
│ └── webfinger.ts
├── types.ts
└── utils.ts
├── tsconfig.json
├── wrangler.sample.toml
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | wrangler.toml
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Minidon
2 |
3 | Minimal implementation of ActivityPub with Cloudflare Workers and D1.
4 |
5 | ## What can we do?
6 |
7 | * Having only one actor
8 | * The actor is discovered via webfinger (so you can find the account from other instances)
9 | * Notifying followers of new posts (so new posts show up in their timeline)
10 | * Web interface to post messages
11 |
12 | ## Screencast
13 |
14 | 
15 |
16 | ## Requirements
17 |
18 | * Node.js
19 | * Cloudflare Account
20 |
21 | ## Installation
22 |
23 | ```
24 | yarn install
25 | ```
26 |
27 | ## Configuration
28 |
29 | ```
30 | cp wrangler.sample.toml wrangler.toml
31 | ```
32 |
33 | Fill the values:
34 |
35 | * `preferredUsername` - Your account name. eg. `yusukebe`
36 | * `name` - Your long name. eg. `Yusuke Wada`
37 | * `BASIC_USERNAME` - Basic auth username for login to Web UI
38 | * `BASIC_PASSWORD` - Basic auth password
39 |
40 | Pick up the value of `PRIVATE_KEY` from the files generated by `ssh-keygen`:
41 |
42 | ```
43 | ssh-keygen -b 4096 -m PKCS8 -t rsa -N '' -f id_rsa
44 | ```
45 |
46 | You can also use the value as "Secret variables" in Cloudflare Workers.
47 |
48 | ## Setup D1
49 |
50 | ```
51 | wrangler d1 create minidon
52 | ```
53 |
54 | `database_id` will be shown on your console. Copy it and paste into the value of `database_id` and `preview_database_id` in wrangler.toml.
55 |
56 | Create tables:
57 |
58 | ```
59 | wrangler d1 execute minidon --file minidon.sql
60 | ```
61 |
62 | ## Development
63 |
64 | ```
65 | yarn dev
66 | ```
67 |
68 | ## Deploy
69 |
70 | ```
71 | yarn deploy
72 | ```
73 |
74 | ## Usage
75 |
76 | `@{name}@{minion.username.workers.dev}` will be your account id.
77 | Paste it on such a Mastodon URL input, the account will be shown.
78 |
79 | To post the message, access `https://minion.username.workers.dev/ui`.
80 |
81 | ## Author
82 |
83 | Yusuke Wada
84 |
85 | ## License
86 |
87 | MIT
88 |
89 | And using a lot of code in Matchbox and inspired by Express ActivityPub Server.
90 |
91 | Matchbox
92 | https://gitlab.com/acefed/matchbox
93 | Copyright (c) 2022 Acefed MIT License
94 |
95 | Express ActivityPub Server
96 | https://github.com/dariusk/express-activitypub
97 | Copyright (c) 2018 Darius Kazemi. Licensed under the MIT license.
--------------------------------------------------------------------------------
/minidon.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE follower (
2 | id TEXT PRIMARY KEY
3 | );
4 |
5 | CREATE TABLE message (
6 | id TEXT PRIMARY KEY,
7 | body TEXT
8 | );
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "dev": "wrangler dev src/index.ts",
4 | "deploy": "wrangler publish src/index.ts"
5 | },
6 | "dependencies": {
7 | "hono": "3.0.0-rc.10"
8 | },
9 | "devDependencies": {
10 | "@cloudflare/workers-types": "^4.20221111.1",
11 | "wrangler": "^2.9.0"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/public/static/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yusukebe/minidon/2f4e70f92c056e23ab67400e76de3e9e8f2823e1/public/static/icon.png
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { Hono } from 'hono'
2 | import { serveStatic } from 'hono/cloudflare-workers'
3 | import { logger } from 'hono/logger'
4 | import ui from './routes/ui'
5 | import webfinger from './routes/webfinger'
6 | import user from './routes/user'
7 |
8 | const app = new Hono()
9 |
10 | app.use('*', logger())
11 |
12 | app.get('/static/*', serveStatic({ root: './' }))
13 |
14 | app.get('/', (c) => c.text('Minidon'))
15 | app.route('/.well-known/webfinger', webfinger)
16 | app.route('/u', user)
17 | app.route('/ui', ui)
18 |
19 | app.showRoutes()
20 |
21 | export default app
22 |
--------------------------------------------------------------------------------
/src/logic.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Based on Matchbox
3 | * Matchbox https://gitlab.com/acefed/matchbox Copyright (c) 2022 Acefed MIT License
4 | */
5 |
6 | import { btos, stob } from './utils'
7 |
8 | export async function getInbox(req: string) {
9 | const res = await fetch(req, {
10 | method: 'GET',
11 | headers: { Accept: 'application/activity+json' },
12 | })
13 | return res.json()
14 | }
15 |
16 | export async function postInbox(req: string, data: any, headers: { [key: string]: string }) {
17 | const res = await fetch(req, { method: 'POST', body: JSON.stringify(data), headers })
18 | return res
19 | }
20 |
21 | export async function signHeaders(
22 | res: any,
23 | strName: string,
24 | strHost: string,
25 | strInbox: string,
26 | privateKey: CryptoKey
27 | ) {
28 | const strTime = new Date().toUTCString()
29 | const s = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(JSON.stringify(res)))
30 | const s256 = btoa(btos(s))
31 | const sig = await crypto.subtle.sign(
32 | 'RSASSA-PKCS1-v1_5',
33 | privateKey,
34 | stob(
35 | `(request-target): post ${new URL(strInbox).pathname}\n` +
36 | `host: ${new URL(strInbox).hostname}\n` +
37 | `date: ${strTime}\n` +
38 | `digest: SHA-256=${s256}`
39 | )
40 | )
41 | const b64 = btoa(btos(sig))
42 | const headers = {
43 | Host: new URL(strInbox).hostname,
44 | Date: strTime,
45 | Digest: `SHA-256=${s256}`,
46 | Signature:
47 | `keyId="https://${strHost}/u/${strName}",` +
48 | `algorithm="rsa-sha256",` +
49 | `headers="(request-target) host date digest",` +
50 | `signature="${b64}"`,
51 | Accept: 'application/activity+json',
52 | 'Content-Type': 'application/activity+json',
53 | 'Accept-Encoding': 'gzip',
54 | 'User-Agent': `Minidon/0.0.0 (+https://${strHost}/)`,
55 | }
56 | return headers
57 | }
58 |
59 | export async function acceptFollow(
60 | strName: string,
61 | strHost: string,
62 | x: any,
63 | y: any,
64 | privateKey: CryptoKey
65 | ) {
66 | const strId = crypto.randomUUID()
67 | const strInbox = x.inbox
68 | const res = {
69 | '@context': 'https://www.w3.org/ns/activitystreams',
70 | id: `https://${strHost}/u/${strName}/s/${strId}`,
71 | type: 'Accept',
72 | actor: `https://${strHost}/u/${strName}`,
73 | object: y,
74 | }
75 | const headers = await signHeaders(res, strName, strHost, strInbox, privateKey)
76 | await postInbox(strInbox, res, headers)
77 | }
78 |
79 | export async function createNote(
80 | strId: string,
81 | strName: string,
82 | strHost: string,
83 | x: any,
84 | y: string,
85 | privateKey: CryptoKey
86 | ) {
87 | const strTime = new Date().toISOString().substring(0, 19) + 'Z'
88 | const strInbox = x.inbox
89 | const res = {
90 | '@context': 'https://www.w3.org/ns/activitystreams',
91 | id: `https://${strHost}/u/${strName}/s/${strId}/activity`,
92 | type: 'Create',
93 | actor: `https://${strHost}/u/${strName}`,
94 | published: strTime,
95 | to: ['https://www.w3.org/ns/activitystreams#Public'],
96 | cc: [`https://${strHost}/u/${strName}/followers`],
97 | object: {
98 | id: `https://${strHost}/u/${strName}/s/${strId}`,
99 | type: 'Note',
100 | attributedTo: `https://${strHost}/u/${strName}`,
101 | content: y,
102 | url: `https://${strHost}/u/${strName}/s/${strId}`,
103 | published: strTime,
104 | to: ['https://www.w3.org/ns/activitystreams#Public'],
105 | cc: [`https://${strHost}/u/${strName}/followers`],
106 | },
107 | }
108 | const headers = await signHeaders(res, strName, strHost, strInbox, privateKey)
109 | await postInbox(strInbox, res, headers)
110 | }
111 |
112 | export async function deleteNote(
113 | strName: string,
114 | strHost: string,
115 | x: any,
116 | y: string,
117 | privateKey: CryptoKey
118 | ) {
119 | const strId = crypto.randomUUID()
120 | const strInbox = x.inbox
121 | const res = {
122 | '@context': 'https://www.w3.org/ns/activitystreams',
123 | id: `https://${strHost}/u/${strName}/s/${strId}/activity`,
124 | type: 'Delete',
125 | actor: `https://${strHost}/u/${strName}`,
126 | object: {
127 | id: y,
128 | type: 'Note',
129 | },
130 | }
131 | const headers = await signHeaders(res, strName, strHost, strInbox, privateKey)
132 | await postInbox(strInbox, res, headers)
133 | }
134 |
--------------------------------------------------------------------------------
/src/routes/Pages.tsx:
--------------------------------------------------------------------------------
1 | import { html } from 'hono/html'
2 | import { Message } from '../types'
3 |
4 | const Form = () => {
5 | return (
6 |
12 | )
13 | }
14 |
15 | export const Top = (props: { messages: Message[] }) => {
16 | return (
17 |
18 |
21 |
22 |
23 | {props.messages.reverse().map((message) => {
24 | return {message.body}
25 | })}
26 |
27 | )
28 | }
29 |
30 | const Layout = (props: any) => html`
31 |
32 |
33 | Minidon
34 |
35 |
36 |
37 | ${props.children}
38 |
39 | `
40 |
--------------------------------------------------------------------------------
/src/routes/ui.tsx:
--------------------------------------------------------------------------------
1 | import { Hono } from 'hono'
2 | import { basicAuth } from 'hono/basic-auth'
3 | import { Top } from './Pages'
4 | import { Env, Message } from '../types'
5 | import { validator } from 'hono/validator'
6 | import { importprivateKey } from '../utils'
7 | import { createNote, getInbox } from '../logic'
8 |
9 | const app = new Hono()
10 |
11 | app.use('*', async (c, next) => {
12 | const auth = basicAuth({
13 | username: c.env.BASIC_USERNAME,
14 | password: c.env.BASIC_PASSWORD,
15 | })
16 | return await auth(c, next)
17 | })
18 |
19 | app.get('/', async (c) => {
20 | const { results } = await c.env.DB.prepare(`SELECT * FROM message;`).all()
21 | const messages = results
22 | return c.html()
23 | })
24 |
25 | app.post(
26 | '/post',
27 | validator('form', (value, c) => {
28 | if (!value['body']) {
29 | return c.text('Invalid!', 400)
30 | }
31 | return value as Message
32 | }),
33 | async (c) => {
34 | const message = c.req.valid('form')
35 | const messageId = crypto.randomUUID()
36 |
37 | const strHost = new URL(c.req.url).hostname
38 | const strName = c.env.preferredUsername
39 |
40 | const PRIVATE_KEY = await importprivateKey(c.env.PRIVATE_KEY)
41 |
42 | const { results } = await c.env.DB.prepare(`SELECT id FROM follower;`).all<{ id: string }>()
43 | const followers = results
44 |
45 | for (const follower of followers) {
46 | const x = await getInbox(follower.id)
47 | await createNote(messageId, strName, strHost, x, message.body, PRIVATE_KEY)
48 | }
49 |
50 | await c.env.DB.prepare(`INSERT INTO message(id, body) VALUES(?, ?);`)
51 | .bind(messageId, message.body)
52 | .run()
53 |
54 | return c.redirect('/ui')
55 | }
56 | )
57 |
58 | export default app
59 |
--------------------------------------------------------------------------------
/src/routes/user.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Based on Matchbox
3 | * Matchbox https://gitlab.com/acefed/matchbox Copyright (c) 2022 Acefed MIT License
4 | */
5 |
6 | import { Hono } from 'hono'
7 | import { Env, Follower } from '../types'
8 | import { exportPublicKey, importprivateKey, privateKeyToPublicKey } from '../utils'
9 | import { acceptFollow, getInbox } from '../logic'
10 |
11 | const app = new Hono()
12 |
13 | app.get(':strName', async (c) => {
14 | const strName = c.req.param('strName')
15 | const strHost = new URL(c.req.url).hostname
16 |
17 | if (strName !== c.env.preferredUsername) return c.notFound()
18 | if (!c.req.header('Accept').includes('application/activity+json')) {
19 | return c.text(`${strName}: ${c.env.name}`)
20 | }
21 |
22 | const PRIVATE_KEY = await importprivateKey(c.env.PRIVATE_KEY)
23 | const PUBLIC_KEY = await privateKeyToPublicKey(PRIVATE_KEY)
24 | const public_key_pem = await exportPublicKey(PUBLIC_KEY)
25 |
26 | const r = {
27 | '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'],
28 | id: `https://${strHost}/u/${strName}`,
29 | type: 'Person',
30 | inbox: `https://${strHost}/u/${strName}/inbox`,
31 | followers: `https://${strHost}/u/${strName}/followers`,
32 | preferredUsername: strName,
33 | name: c.env.name,
34 | url: `https://${strHost}/u/${strName}`,
35 | publicKey: {
36 | id: `https://${strHost}/u/${strName}`,
37 | type: 'Key',
38 | owner: `https://${strHost}/u/${strName}`,
39 | publicKeyPem: public_key_pem,
40 | },
41 | icon: {
42 | type: 'Image',
43 | mediaType: 'image/png',
44 | url: `https://${strHost}/static/icon.png`,
45 | },
46 | }
47 |
48 | return c.json(r, 200, { 'Content-Type': 'activity+json' })
49 | })
50 |
51 | app.get(':strName/inbox', (c) => c.body(null, 405))
52 | app.post(':strName/inbox', async (c) => {
53 | const strName = c.req.param('strName')
54 | const strHost = new URL(c.req.url).hostname
55 |
56 | if (strName !== c.env.preferredUsername) return c.notFound()
57 | if (!c.req.header('Content-Type').includes('application/activity+json')) return c.body(null, 400)
58 | const y = await c.req.json()
59 | if (new URL(y.actor).protocol !== 'https:') return c.body(null, 400)
60 |
61 | const x = await getInbox(y.actor)
62 | if (!x) return c.body(null, 500)
63 |
64 | const private_key = await importprivateKey(c.env.PRIVATE_KEY)
65 |
66 | if (y.type === 'Follow') {
67 | const actor = y.actor
68 | await c.env.DB.prepare(`INSERT OR REPLACE INTO follower(id) VALUES(?);`).bind(actor).run()
69 | await acceptFollow(strName, strHost, x, y, private_key)
70 | return c.body(null)
71 | }
72 |
73 | if (y.type === 'Undo') {
74 | const z = y.object
75 | if (z.type === 'Follow') {
76 | await c.env.DB.prepare(`DELETE FROM follower WHERE id = ?;`).bind(y.actor).run()
77 | return c.body(null)
78 | }
79 | }
80 |
81 | return c.body(null, 500)
82 | })
83 |
84 | app.get(':strName/followers', async (c) => {
85 | const strName = c.req.param('strName')
86 | const strHost = new URL(c.req.url).hostname
87 | if (strName !== c.env.preferredUsername) return c.notFound()
88 | if (!c.req.header('Accept').includes('application/activity+json')) return c.body(null, 400)
89 |
90 | const { results } = await c.env.DB.prepare(`SELECT * FROM follower;`).all()
91 | const followers = results
92 |
93 | const items = followers.map(({ id }) => {
94 | return id
95 | })
96 |
97 | const r = {
98 | '@context': 'https://www.w3.org/ns/activitystreams',
99 | id: `https://${strHost}/u/${strName}/followers`,
100 | type: 'OrderedCollection',
101 | first: {
102 | type: 'OrderedCollectionPage',
103 | totalItems: followers.length,
104 | partOf: `https://${strHost}/u/${strName}/followers`,
105 | orderedItems: items,
106 | id: `https://${strHost}/u/${strName}/followers?page=1`,
107 | },
108 | }
109 |
110 | return c.json(r, 200, { 'Content-Type': 'activity+json' })
111 | })
112 |
113 | export default app
114 |
--------------------------------------------------------------------------------
/src/routes/webfinger.ts:
--------------------------------------------------------------------------------
1 | import { Hono } from 'hono'
2 | import { Env } from 'hono'
3 |
4 | const app = new Hono()
5 |
6 | app.get('/', (c) => {
7 | const strName = c.env.preferredUsername
8 | const strHost = new URL(c.req.url).hostname
9 | if (c.req.query('resource') !== `acct:${strName}@${strHost}`) return c.notFound()
10 | const r = {
11 | subject: `acct:${strName}@${strHost}`,
12 | links: [
13 | {
14 | rel: 'self',
15 | type: 'application/activity+json',
16 | href: `https://${strHost}/u/${strName}`,
17 | },
18 | ],
19 | }
20 | return c.json(r, 200, { 'Content-Type': 'jrd+json' })
21 | })
22 |
23 | export default app
24 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | export type Env = {
2 | Bindings: {
3 | DB: D1Database
4 | preferredUsername: string
5 | name: string
6 | PRIVATE_KEY: string
7 | BASIC_USERNAME: string
8 | BASIC_PASSWORD: string
9 | }
10 | }
11 |
12 | export type Follower = {
13 | id: string
14 | }
15 |
16 | export type Message = {
17 | id: string
18 | body: string
19 | }
20 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | export function stob(s: string) {
2 | return Uint8Array.from(s, (c) => c.charCodeAt(0))
3 | }
4 |
5 | export function btos(b: ArrayBuffer) {
6 | return String.fromCharCode(...new Uint8Array(b))
7 | }
8 |
9 | export async function importprivateKey(pem: string) {
10 | const pemHeader = '-----BEGIN PRIVATE KEY-----'
11 | const pemFooter = '-----END PRIVATE KEY-----'
12 | if (pem.startsWith('"')) pem = pem.slice(1)
13 | if (pem.endsWith('"')) pem = pem.slice(0, -1)
14 | pem = pem.split('\\n').join('')
15 | pem = pem.split('\n').join('')
16 | const pemContents = pem.substring(pemHeader.length, pem.length - pemFooter.length)
17 | const der = stob(atob(pemContents))
18 | const r = await crypto.subtle.importKey(
19 | 'pkcs8',
20 | der,
21 | {
22 | name: 'RSASSA-PKCS1-v1_5',
23 | hash: 'SHA-256',
24 | },
25 | true,
26 | ['sign']
27 | )
28 | return r
29 | }
30 |
31 | export async function privateKeyToPublicKey(key: CryptoKey) {
32 | const jwk = await crypto.subtle.exportKey('jwk', key)
33 | if ('kty' in jwk) {
34 | delete jwk.d
35 | delete jwk.p
36 | delete jwk.q
37 | delete jwk.dp
38 | delete jwk.dq
39 | delete jwk.qi
40 | delete jwk.oth
41 | jwk.key_ops = ['verify']
42 | }
43 | const r = await crypto.subtle.importKey(
44 | 'jwk',
45 | jwk,
46 | {
47 | name: 'RSASSA-PKCS1-v1_5',
48 | hash: 'SHA-256',
49 | },
50 | true,
51 | ['verify']
52 | )
53 | return r
54 | }
55 |
56 | export async function exportPublicKey(key: CryptoKey) {
57 | const der = await crypto.subtle.exportKey('spki', key)
58 | if ('byteLength' in der) {
59 | let pemContents = btoa(btos(der))
60 |
61 | let pem = '-----BEGIN PUBLIC KEY-----\n'
62 | while (pemContents.length > 0) {
63 | pem += pemContents.substring(0, 64) + '\n'
64 | pemContents = pemContents.substring(64)
65 | }
66 | pem += '-----END PUBLIC KEY-----\n'
67 | return pem
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "module": "ESNext",
5 | "moduleResolution": "node",
6 | "lib": [
7 | "esnext"
8 | ],
9 | "types": [
10 | "@cloudflare/workers-types"
11 | ],
12 | "jsx": "react-jsx",
13 | "jsxFragmentFactory": "Fragment",
14 | "jsxImportSource": "hono/jsx"
15 | }
16 | }
--------------------------------------------------------------------------------
/wrangler.sample.toml:
--------------------------------------------------------------------------------
1 | name = "minidon"
2 | compatibility_date = "2023-01-01"
3 |
4 | [site]
5 | bucket = "./public"
6 |
7 | [[ d1_databases ]]
8 | binding = "DB"
9 | database_name = "minidon"
10 | database_id = ""
11 | preview_database_id = ""
12 |
13 | [vars]
14 | preferredUsername = ""
15 | name = ""
16 | BASIC_USERNAME = ""
17 | BASIC_PASSWORD = ""
18 |
19 | PRIVATE_KEY = """-----BEGIN PRIVATE KEY-----
20 |
21 | -----END PRIVATE KEY-----
22 | """
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@cloudflare/kv-asset-handler@^0.2.0":
6 | version "0.2.0"
7 | resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz#c9959bbd7a1c40bd7c674adae98aa8c8d0e5ca68"
8 | integrity sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==
9 | dependencies:
10 | mime "^3.0.0"
11 |
12 | "@cloudflare/workers-types@^4.20221111.1":
13 | version "4.20230115.0"
14 | resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20230115.0.tgz#84e6c7b1a753098dbc7cd718fdcf191c215225af"
15 | integrity sha512-GPJEiO8AFN+jUpA+DHJ1qdVmk4s/hq8JYKjOV/+U7avGquQbVnj905+Kg6uAEfrq16muwmRKl+XJGqsvlBlDNg==
16 |
17 | "@esbuild-plugins/node-globals-polyfill@^0.1.1":
18 | version "0.1.1"
19 | resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz#a313ab3efbb2c17c8ce376aa216c627c9b40f9d7"
20 | integrity sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==
21 |
22 | "@esbuild-plugins/node-modules-polyfill@^0.1.4":
23 | version "0.1.4"
24 | resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz#eb2f55da11967b2986c913f1a7957d1c868849c0"
25 | integrity sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==
26 | dependencies:
27 | escape-string-regexp "^4.0.0"
28 | rollup-plugin-node-polyfills "^0.2.1"
29 |
30 | "@iarna/toml@^2.2.5":
31 | version "2.2.5"
32 | resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
33 | integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==
34 |
35 | "@miniflare/cache@2.11.0":
36 | version "2.11.0"
37 | resolved "https://registry.yarnpkg.com/@miniflare/cache/-/cache-2.11.0.tgz#e13f4a860ebe01fc67f0169e76be93350c29d7ff"
38 | integrity sha512-L/kc9AzidPwFuk2fwHpAEePi0kNBk6FWUq3ln+9beRCDrPEpfVrDRFpNleF1NFZz5//oeVMuo8F0IVUQGzR7+Q==
39 | dependencies:
40 | "@miniflare/core" "2.11.0"
41 | "@miniflare/shared" "2.11.0"
42 | http-cache-semantics "^4.1.0"
43 | undici "5.9.1"
44 |
45 | "@miniflare/cli-parser@2.11.0":
46 | version "2.11.0"
47 | resolved "https://registry.yarnpkg.com/@miniflare/cli-parser/-/cli-parser-2.11.0.tgz#47f517731791c9e652e9849d590fde3235737529"
48 | integrity sha512-JUmyRzEGAS6CouvXJwBh8p44onfw3KRpfq5JGXEuHModOGjTp6li7PQyCTNPV2Hv/7StAXWnTFGXeAqyDHuTig==
49 | dependencies:
50 | "@miniflare/shared" "2.11.0"
51 | kleur "^4.1.4"
52 |
53 | "@miniflare/core@2.11.0":
54 | version "2.11.0"
55 | resolved "https://registry.yarnpkg.com/@miniflare/core/-/core-2.11.0.tgz#68efb7c9bab0d56bdf284b704089b035cd0b1a28"
56 | integrity sha512-UFMFiCG0co36VpZkgFrSBnrxo71uf1x+cjlzzJi3khmMyDlnLu4RuIQsAqvKbYom6fi3G9Q8lTgM7JuOXFyjhw==
57 | dependencies:
58 | "@iarna/toml" "^2.2.5"
59 | "@miniflare/queues" "2.11.0"
60 | "@miniflare/shared" "2.11.0"
61 | "@miniflare/watcher" "2.11.0"
62 | busboy "^1.6.0"
63 | dotenv "^10.0.0"
64 | kleur "^4.1.4"
65 | set-cookie-parser "^2.4.8"
66 | undici "5.9.1"
67 | urlpattern-polyfill "^4.0.3"
68 |
69 | "@miniflare/d1@2.11.0":
70 | version "2.11.0"
71 | resolved "https://registry.yarnpkg.com/@miniflare/d1/-/d1-2.11.0.tgz#1c340abe1c50cce27432b100d78b345b45e60b10"
72 | integrity sha512-aDdBVQZ2C0Zs3+Y9ZbRctmuQxozPfpumwJ/6NG6fBadANvune/hW7ddEoxyteIEU9W3IgzVj8s4by4VvasX90A==
73 | dependencies:
74 | "@miniflare/core" "2.11.0"
75 | "@miniflare/shared" "2.11.0"
76 |
77 | "@miniflare/durable-objects@2.11.0":
78 | version "2.11.0"
79 | resolved "https://registry.yarnpkg.com/@miniflare/durable-objects/-/durable-objects-2.11.0.tgz#4c53c27a939e022a1de47ee338cec395cbb9e24d"
80 | integrity sha512-0cKJaMgraTEU1b4kqK8cjD2oTeOjA6QU3Y+lWiZT/k1PMHZULovrSFnjii7qZ8npf4VHSIN6XYPxhyxRyEM65Q==
81 | dependencies:
82 | "@miniflare/core" "2.11.0"
83 | "@miniflare/shared" "2.11.0"
84 | "@miniflare/storage-memory" "2.11.0"
85 | undici "5.9.1"
86 |
87 | "@miniflare/html-rewriter@2.11.0":
88 | version "2.11.0"
89 | resolved "https://registry.yarnpkg.com/@miniflare/html-rewriter/-/html-rewriter-2.11.0.tgz#5e5e1292876feca3002b3a729dd8f892f7ef0d0c"
90 | integrity sha512-olTqmuYTHnoTNtiA0vjQ/ixRfbwgPzDrAUbtXDCYW45VFbHfDVJrJGZX3Jg0HpSlxy86Zclle1SUxGbVDzxsBg==
91 | dependencies:
92 | "@miniflare/core" "2.11.0"
93 | "@miniflare/shared" "2.11.0"
94 | html-rewriter-wasm "^0.4.1"
95 | undici "5.9.1"
96 |
97 | "@miniflare/http-server@2.11.0":
98 | version "2.11.0"
99 | resolved "https://registry.yarnpkg.com/@miniflare/http-server/-/http-server-2.11.0.tgz#76d2e2c6549528d965e5f48a8ddc3448c28d4569"
100 | integrity sha512-sMLcrDFzqqAvnQmAUH0hRTo8sBjW79VZYfnIH5FAGSGcKX6kdAGs9RStdYZ4CftQCBAEQScX0KBsMx5FwJRe9Q==
101 | dependencies:
102 | "@miniflare/core" "2.11.0"
103 | "@miniflare/shared" "2.11.0"
104 | "@miniflare/web-sockets" "2.11.0"
105 | kleur "^4.1.4"
106 | selfsigned "^2.0.0"
107 | undici "5.9.1"
108 | ws "^8.2.2"
109 | youch "^2.2.2"
110 |
111 | "@miniflare/kv@2.11.0":
112 | version "2.11.0"
113 | resolved "https://registry.yarnpkg.com/@miniflare/kv/-/kv-2.11.0.tgz#af162567e2d49ae533be60bca29eaf9486408a68"
114 | integrity sha512-3m9dL2HBBN170V1JvwjjucR5zl4G3mlcsV6C1E7A2wLl2Z2TWvIx/tSY9hrhkD96dFnejwJ9qmPMbXMMuynhjg==
115 | dependencies:
116 | "@miniflare/shared" "2.11.0"
117 |
118 | "@miniflare/queues@2.11.0":
119 | version "2.11.0"
120 | resolved "https://registry.yarnpkg.com/@miniflare/queues/-/queues-2.11.0.tgz#feb48d1934b4f98d9bc605d0967140f8e70cc5be"
121 | integrity sha512-fLHjdrNLKhn0LZM/aii/9GsAttFd+lWlGzK8HOg1R0vhfKBwEub4zntjMmOfFbDm1ntc21tdMK7n3ldUphwh5w==
122 | dependencies:
123 | "@miniflare/shared" "2.11.0"
124 |
125 | "@miniflare/r2@2.11.0":
126 | version "2.11.0"
127 | resolved "https://registry.yarnpkg.com/@miniflare/r2/-/r2-2.11.0.tgz#52f19d22b63b4d5e72d2b96ee514333a810dce7a"
128 | integrity sha512-MKuyJ/gGNsK3eWbGdygvozqcyaZhM3C6NGHvoaZwH503dwN569j5DpatTWiHGFeDeSu64VqcIsGehz05GDUaag==
129 | dependencies:
130 | "@miniflare/shared" "2.11.0"
131 | undici "5.9.1"
132 |
133 | "@miniflare/runner-vm@2.11.0":
134 | version "2.11.0"
135 | resolved "https://registry.yarnpkg.com/@miniflare/runner-vm/-/runner-vm-2.11.0.tgz#801c16ddbd360c3c8fcca84c43faaecfd2d4ef70"
136 | integrity sha512-bkVSuvCf5+VylqN8lTiLxIYqYcKFbl+BywZGwGQndPC/3wh42J00mM0jw4hRbvXgwuBhlUyCVpEXtYlftFFT/g==
137 | dependencies:
138 | "@miniflare/shared" "2.11.0"
139 |
140 | "@miniflare/scheduler@2.11.0":
141 | version "2.11.0"
142 | resolved "https://registry.yarnpkg.com/@miniflare/scheduler/-/scheduler-2.11.0.tgz#2568d44f571e73355369be6a6da4481aa4af25c8"
143 | integrity sha512-DPdzINhdWeS99eIicGoluMsD4pLTTAWNQbgCv3CTwgdKA3dxdvMSCkNqZzQLiALzvk9+rSfj46FlH++HE7o7/w==
144 | dependencies:
145 | "@miniflare/core" "2.11.0"
146 | "@miniflare/shared" "2.11.0"
147 | cron-schedule "^3.0.4"
148 |
149 | "@miniflare/shared@2.11.0":
150 | version "2.11.0"
151 | resolved "https://registry.yarnpkg.com/@miniflare/shared/-/shared-2.11.0.tgz#12905f4b4310bdcc28169667d024ca6fab35a035"
152 | integrity sha512-fWMqq3ZkWAg+k7CnyzMV/rZHugwn+/JxvVzCxrtvxzwotTN547THlOxgZe8JAP23U9BiTxOfpTfnLvFEjAmegw==
153 | dependencies:
154 | "@types/better-sqlite3" "^7.6.0"
155 | kleur "^4.1.4"
156 | npx-import "^1.1.3"
157 | picomatch "^2.3.1"
158 |
159 | "@miniflare/sites@2.11.0":
160 | version "2.11.0"
161 | resolved "https://registry.yarnpkg.com/@miniflare/sites/-/sites-2.11.0.tgz#f7849ed6cc13fd3a96a329b815828ed5e4f22df3"
162 | integrity sha512-qbefKdWZUJgsdLf+kCw03sn3h/92LZgJAbkOpP6bCrfWkXlJ37EQXO4KWdhn4Ghc7A6GwU1s1I/mdB64B3AewQ==
163 | dependencies:
164 | "@miniflare/kv" "2.11.0"
165 | "@miniflare/shared" "2.11.0"
166 | "@miniflare/storage-file" "2.11.0"
167 |
168 | "@miniflare/storage-file@2.11.0":
169 | version "2.11.0"
170 | resolved "https://registry.yarnpkg.com/@miniflare/storage-file/-/storage-file-2.11.0.tgz#eaa30899d6a369f9a0dca32859ff1b36db1f0bac"
171 | integrity sha512-beWF/lTX74x7AiaSB+xQxywPSNdhtEKvqDkRui8eOJ5kqN2o4UaleLKQGgqmCw3WyHRIsckV7If1qpbNiLtWMw==
172 | dependencies:
173 | "@miniflare/shared" "2.11.0"
174 | "@miniflare/storage-memory" "2.11.0"
175 |
176 | "@miniflare/storage-memory@2.11.0":
177 | version "2.11.0"
178 | resolved "https://registry.yarnpkg.com/@miniflare/storage-memory/-/storage-memory-2.11.0.tgz#24b6ba299435a96dbe8929308c49cdd2346d2d25"
179 | integrity sha512-s0AhPww7fq/Jz80NbPb+ffhcVRKnfPi7H1dHTRTre2Ud23EVJjAWl2gat42x8NOT/Fu3/o/7A72DWQQJqfO98A==
180 | dependencies:
181 | "@miniflare/shared" "2.11.0"
182 |
183 | "@miniflare/watcher@2.11.0":
184 | version "2.11.0"
185 | resolved "https://registry.yarnpkg.com/@miniflare/watcher/-/watcher-2.11.0.tgz#4cfe96ed8131118de31287d7b2690758925f4505"
186 | integrity sha512-RUfjz2iYcsQXLcGySemJl98CJ2iierbWsPGWZhIVZI+NNhROkEy77g/Q+lvP2ATwexG3/dUSfdJ3P8aH+sI4Ig==
187 | dependencies:
188 | "@miniflare/shared" "2.11.0"
189 |
190 | "@miniflare/web-sockets@2.11.0":
191 | version "2.11.0"
192 | resolved "https://registry.yarnpkg.com/@miniflare/web-sockets/-/web-sockets-2.11.0.tgz#1d4ef353c618a971c882efcc33ed37df9fa01af1"
193 | integrity sha512-NC8RKrmxrO0hZmwpzn5g4hPGA2VblnFTIBobmWoxuK95eW49zfs7dtE/PyFs+blsGv3CjTIjHVSQ782K+C6HFA==
194 | dependencies:
195 | "@miniflare/core" "2.11.0"
196 | "@miniflare/shared" "2.11.0"
197 | undici "5.9.1"
198 | ws "^8.2.2"
199 |
200 | "@types/better-sqlite3@^7.6.0":
201 | version "7.6.3"
202 | resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz#117c3c182e300799b84d1b7e1781c27d8d536505"
203 | integrity sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==
204 | dependencies:
205 | "@types/node" "*"
206 |
207 | "@types/node@*":
208 | version "18.11.19"
209 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d"
210 | integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==
211 |
212 | "@types/stack-trace@0.0.29":
213 | version "0.0.29"
214 | resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d"
215 | integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==
216 |
217 | anymatch@~3.1.2:
218 | version "3.1.3"
219 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
220 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
221 | dependencies:
222 | normalize-path "^3.0.0"
223 | picomatch "^2.0.4"
224 |
225 | binary-extensions@^2.0.0:
226 | version "2.2.0"
227 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
228 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
229 |
230 | blake3-wasm@^2.1.5:
231 | version "2.1.5"
232 | resolved "https://registry.yarnpkg.com/blake3-wasm/-/blake3-wasm-2.1.5.tgz#b22dbb84bc9419ed0159caa76af4b1b132e6ba52"
233 | integrity sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==
234 |
235 | braces@~3.0.2:
236 | version "3.0.2"
237 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
238 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
239 | dependencies:
240 | fill-range "^7.0.1"
241 |
242 | buffer-from@^1.0.0:
243 | version "1.1.2"
244 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
245 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
246 |
247 | builtins@^5.0.0:
248 | version "5.0.1"
249 | resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9"
250 | integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==
251 | dependencies:
252 | semver "^7.0.0"
253 |
254 | busboy@^1.6.0:
255 | version "1.6.0"
256 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
257 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
258 | dependencies:
259 | streamsearch "^1.1.0"
260 |
261 | chokidar@^3.5.3:
262 | version "3.5.3"
263 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
264 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
265 | dependencies:
266 | anymatch "~3.1.2"
267 | braces "~3.0.2"
268 | glob-parent "~5.1.2"
269 | is-binary-path "~2.1.0"
270 | is-glob "~4.0.1"
271 | normalize-path "~3.0.0"
272 | readdirp "~3.6.0"
273 | optionalDependencies:
274 | fsevents "~2.3.2"
275 |
276 | cookie@^0.4.1:
277 | version "0.4.2"
278 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
279 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
280 |
281 | cron-schedule@^3.0.4:
282 | version "3.0.6"
283 | resolved "https://registry.yarnpkg.com/cron-schedule/-/cron-schedule-3.0.6.tgz#7d0a3ad9154112fc3720fe43238a43d50e8465e7"
284 | integrity sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==
285 |
286 | cross-spawn@^7.0.3:
287 | version "7.0.3"
288 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
289 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
290 | dependencies:
291 | path-key "^3.1.0"
292 | shebang-command "^2.0.0"
293 | which "^2.0.1"
294 |
295 | dotenv@^10.0.0:
296 | version "10.0.0"
297 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
298 | integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
299 |
300 | esbuild-android-64@0.14.51:
301 | version "0.14.51"
302 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz#414a087cb0de8db1e347ecca6c8320513de433db"
303 | integrity sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==
304 |
305 | esbuild-android-arm64@0.14.51:
306 | version "0.14.51"
307 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz#55de3bce2aab72bcd2b606da4318ad00fb9c8151"
308 | integrity sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==
309 |
310 | esbuild-darwin-64@0.14.51:
311 | version "0.14.51"
312 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz#4259f23ed6b4cea2ec8a28d87b7fb9801f093754"
313 | integrity sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==
314 |
315 | esbuild-darwin-arm64@0.14.51:
316 | version "0.14.51"
317 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz#d77b4366a71d84e530ba019d540b538b295d494a"
318 | integrity sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==
319 |
320 | esbuild-freebsd-64@0.14.51:
321 | version "0.14.51"
322 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz#27b6587b3639f10519c65e07219d249b01f2ad38"
323 | integrity sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==
324 |
325 | esbuild-freebsd-arm64@0.14.51:
326 | version "0.14.51"
327 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz#63c435917e566808c71fafddc600aca4d78be1ec"
328 | integrity sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==
329 |
330 | esbuild-linux-32@0.14.51:
331 | version "0.14.51"
332 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz#c3da774143a37e7f11559b9369d98f11f997a5d9"
333 | integrity sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==
334 |
335 | esbuild-linux-64@0.14.51:
336 | version "0.14.51"
337 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz#5d92b67f674e02ae0b4a9de9a757ba482115c4ae"
338 | integrity sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==
339 |
340 | esbuild-linux-arm64@0.14.51:
341 | version "0.14.51"
342 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz#dac84740516e859d8b14e1ecc478dd5241b10c93"
343 | integrity sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==
344 |
345 | esbuild-linux-arm@0.14.51:
346 | version "0.14.51"
347 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz#b3ae7000696cd53ed95b2b458554ff543a60e106"
348 | integrity sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==
349 |
350 | esbuild-linux-mips64le@0.14.51:
351 | version "0.14.51"
352 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz#dad10770fac94efa092b5a0643821c955a9dd385"
353 | integrity sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==
354 |
355 | esbuild-linux-ppc64le@0.14.51:
356 | version "0.14.51"
357 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz#b68c2f8294d012a16a88073d67e976edd4850ae0"
358 | integrity sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==
359 |
360 | esbuild-linux-riscv64@0.14.51:
361 | version "0.14.51"
362 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz#608a318b8697123e44c1e185cdf6708e3df50b93"
363 | integrity sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==
364 |
365 | esbuild-linux-s390x@0.14.51:
366 | version "0.14.51"
367 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz#c9e7791170a3295dba79b93aa452beb9838a8625"
368 | integrity sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==
369 |
370 | esbuild-netbsd-64@0.14.51:
371 | version "0.14.51"
372 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz#0abd40b8c2e37fda6f5cc41a04cb2b690823d891"
373 | integrity sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==
374 |
375 | esbuild-openbsd-64@0.14.51:
376 | version "0.14.51"
377 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz#4adba0b7ea7eb1428bb00d8e94c199a949b130e8"
378 | integrity sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==
379 |
380 | esbuild-sunos-64@0.14.51:
381 | version "0.14.51"
382 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz#4b8a6d97dfedda30a6e39607393c5c90ebf63891"
383 | integrity sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==
384 |
385 | esbuild-windows-32@0.14.51:
386 | version "0.14.51"
387 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz#d31d8ca0c1d314fb1edea163685a423b62e9ac17"
388 | integrity sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==
389 |
390 | esbuild-windows-64@0.14.51:
391 | version "0.14.51"
392 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz#7d3c09c8652d222925625637bdc7e6c223e0085d"
393 | integrity sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==
394 |
395 | esbuild-windows-arm64@0.14.51:
396 | version "0.14.51"
397 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz#0220d2304bfdc11bc27e19b2aaf56edf183e4ae9"
398 | integrity sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==
399 |
400 | esbuild@0.14.51:
401 | version "0.14.51"
402 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.51.tgz#1c8ecbc8db3710da03776211dc3ee3448f7aa51e"
403 | integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==
404 | optionalDependencies:
405 | esbuild-android-64 "0.14.51"
406 | esbuild-android-arm64 "0.14.51"
407 | esbuild-darwin-64 "0.14.51"
408 | esbuild-darwin-arm64 "0.14.51"
409 | esbuild-freebsd-64 "0.14.51"
410 | esbuild-freebsd-arm64 "0.14.51"
411 | esbuild-linux-32 "0.14.51"
412 | esbuild-linux-64 "0.14.51"
413 | esbuild-linux-arm "0.14.51"
414 | esbuild-linux-arm64 "0.14.51"
415 | esbuild-linux-mips64le "0.14.51"
416 | esbuild-linux-ppc64le "0.14.51"
417 | esbuild-linux-riscv64 "0.14.51"
418 | esbuild-linux-s390x "0.14.51"
419 | esbuild-netbsd-64 "0.14.51"
420 | esbuild-openbsd-64 "0.14.51"
421 | esbuild-sunos-64 "0.14.51"
422 | esbuild-windows-32 "0.14.51"
423 | esbuild-windows-64 "0.14.51"
424 | esbuild-windows-arm64 "0.14.51"
425 |
426 | escape-string-regexp@^4.0.0:
427 | version "4.0.0"
428 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
429 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
430 |
431 | estree-walker@^0.6.1:
432 | version "0.6.1"
433 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
434 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
435 |
436 | execa@^6.1.0:
437 | version "6.1.0"
438 | resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20"
439 | integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==
440 | dependencies:
441 | cross-spawn "^7.0.3"
442 | get-stream "^6.0.1"
443 | human-signals "^3.0.1"
444 | is-stream "^3.0.0"
445 | merge-stream "^2.0.0"
446 | npm-run-path "^5.1.0"
447 | onetime "^6.0.0"
448 | signal-exit "^3.0.7"
449 | strip-final-newline "^3.0.0"
450 |
451 | fill-range@^7.0.1:
452 | version "7.0.1"
453 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
454 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
455 | dependencies:
456 | to-regex-range "^5.0.1"
457 |
458 | fsevents@~2.3.2:
459 | version "2.3.2"
460 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
461 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
462 |
463 | get-stream@^6.0.1:
464 | version "6.0.1"
465 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
466 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
467 |
468 | glob-parent@~5.1.2:
469 | version "5.1.2"
470 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
471 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
472 | dependencies:
473 | is-glob "^4.0.1"
474 |
475 | hono@3.0.0-rc.10:
476 | version "3.0.0-rc.10"
477 | resolved "https://registry.yarnpkg.com/hono/-/hono-3.0.0-rc.10.tgz#d60ec9db495d3b23437f2b1000a529d4128fe16e"
478 | integrity sha512-JrO8wJv6T02lbafCxcfjbusgeUZ+GkBpS1LEv6X0uAmYTELXnH4Fn+nRD4sN4ZTrS6PsedoLDlOlcL7v7hE41w==
479 |
480 | html-rewriter-wasm@^0.4.1:
481 | version "0.4.1"
482 | resolved "https://registry.yarnpkg.com/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz#235e3d96c1aa4bfd2182661ee13881e290ff5ff2"
483 | integrity sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==
484 |
485 | http-cache-semantics@^4.1.0:
486 | version "4.1.1"
487 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
488 | integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
489 |
490 | human-signals@^3.0.1:
491 | version "3.0.1"
492 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
493 | integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
494 |
495 | is-binary-path@~2.1.0:
496 | version "2.1.0"
497 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
498 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
499 | dependencies:
500 | binary-extensions "^2.0.0"
501 |
502 | is-extglob@^2.1.1:
503 | version "2.1.1"
504 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
505 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
506 |
507 | is-glob@^4.0.1, is-glob@~4.0.1:
508 | version "4.0.3"
509 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
510 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
511 | dependencies:
512 | is-extglob "^2.1.1"
513 |
514 | is-number@^7.0.0:
515 | version "7.0.0"
516 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
517 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
518 |
519 | is-stream@^3.0.0:
520 | version "3.0.0"
521 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
522 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
523 |
524 | isexe@^2.0.0:
525 | version "2.0.0"
526 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
527 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
528 |
529 | kleur@^4.1.4:
530 | version "4.1.5"
531 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
532 | integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
533 |
534 | lru-cache@^6.0.0:
535 | version "6.0.0"
536 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
537 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
538 | dependencies:
539 | yallist "^4.0.0"
540 |
541 | magic-string@^0.25.3:
542 | version "0.25.9"
543 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
544 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
545 | dependencies:
546 | sourcemap-codec "^1.4.8"
547 |
548 | merge-stream@^2.0.0:
549 | version "2.0.0"
550 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
551 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
552 |
553 | mime@^3.0.0:
554 | version "3.0.0"
555 | resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
556 | integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
557 |
558 | mimic-fn@^4.0.0:
559 | version "4.0.0"
560 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
561 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
562 |
563 | miniflare@2.11.0:
564 | version "2.11.0"
565 | resolved "https://registry.yarnpkg.com/miniflare/-/miniflare-2.11.0.tgz#36c575e1e75451c416f136d188b744896becc352"
566 | integrity sha512-QA18I1VQXdCo4nBtPJUcUDxW8c9xbc5ex5F61jwhkGVOISSnYdEheolESmjr8MYk28xwi0XD1ozS4rLaTONd+w==
567 | dependencies:
568 | "@miniflare/cache" "2.11.0"
569 | "@miniflare/cli-parser" "2.11.0"
570 | "@miniflare/core" "2.11.0"
571 | "@miniflare/d1" "2.11.0"
572 | "@miniflare/durable-objects" "2.11.0"
573 | "@miniflare/html-rewriter" "2.11.0"
574 | "@miniflare/http-server" "2.11.0"
575 | "@miniflare/kv" "2.11.0"
576 | "@miniflare/queues" "2.11.0"
577 | "@miniflare/r2" "2.11.0"
578 | "@miniflare/runner-vm" "2.11.0"
579 | "@miniflare/scheduler" "2.11.0"
580 | "@miniflare/shared" "2.11.0"
581 | "@miniflare/sites" "2.11.0"
582 | "@miniflare/storage-file" "2.11.0"
583 | "@miniflare/storage-memory" "2.11.0"
584 | "@miniflare/web-sockets" "2.11.0"
585 | kleur "^4.1.4"
586 | semiver "^1.1.0"
587 | source-map-support "^0.5.20"
588 | undici "5.9.1"
589 |
590 | mustache@^4.2.0:
591 | version "4.2.0"
592 | resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64"
593 | integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==
594 |
595 | nanoid@^3.3.3:
596 | version "3.3.4"
597 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
598 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
599 |
600 | node-forge@^1:
601 | version "1.3.1"
602 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
603 | integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
604 |
605 | normalize-path@^3.0.0, normalize-path@~3.0.0:
606 | version "3.0.0"
607 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
608 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
609 |
610 | npm-run-path@^5.1.0:
611 | version "5.1.0"
612 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
613 | integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
614 | dependencies:
615 | path-key "^4.0.0"
616 |
617 | npx-import@^1.1.3:
618 | version "1.1.4"
619 | resolved "https://registry.yarnpkg.com/npx-import/-/npx-import-1.1.4.tgz#0ee9a27484c633255528f7ec2e4c2adeaa1fcda3"
620 | integrity sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==
621 | dependencies:
622 | execa "^6.1.0"
623 | parse-package-name "^1.0.0"
624 | semver "^7.3.7"
625 | validate-npm-package-name "^4.0.0"
626 |
627 | onetime@^6.0.0:
628 | version "6.0.0"
629 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
630 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
631 | dependencies:
632 | mimic-fn "^4.0.0"
633 |
634 | parse-package-name@^1.0.0:
635 | version "1.0.0"
636 | resolved "https://registry.yarnpkg.com/parse-package-name/-/parse-package-name-1.0.0.tgz#1a108757e4ffc6889d5e78bcc4932a97c097a5a7"
637 | integrity sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==
638 |
639 | path-key@^3.1.0:
640 | version "3.1.1"
641 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
642 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
643 |
644 | path-key@^4.0.0:
645 | version "4.0.0"
646 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
647 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
648 |
649 | path-to-regexp@^6.2.0:
650 | version "6.2.1"
651 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5"
652 | integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==
653 |
654 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
655 | version "2.3.1"
656 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
657 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
658 |
659 | readdirp@~3.6.0:
660 | version "3.6.0"
661 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
662 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
663 | dependencies:
664 | picomatch "^2.2.1"
665 |
666 | rollup-plugin-inject@^3.0.0:
667 | version "3.0.2"
668 | resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4"
669 | integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==
670 | dependencies:
671 | estree-walker "^0.6.1"
672 | magic-string "^0.25.3"
673 | rollup-pluginutils "^2.8.1"
674 |
675 | rollup-plugin-node-polyfills@^0.2.1:
676 | version "0.2.1"
677 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd"
678 | integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==
679 | dependencies:
680 | rollup-plugin-inject "^3.0.0"
681 |
682 | rollup-pluginutils@^2.8.1:
683 | version "2.8.2"
684 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
685 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
686 | dependencies:
687 | estree-walker "^0.6.1"
688 |
689 | selfsigned@^2.0.0, selfsigned@^2.0.1:
690 | version "2.1.1"
691 | resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61"
692 | integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==
693 | dependencies:
694 | node-forge "^1"
695 |
696 | semiver@^1.1.0:
697 | version "1.1.0"
698 | resolved "https://registry.yarnpkg.com/semiver/-/semiver-1.1.0.tgz#9c97fb02c21c7ce4fcf1b73e2c7a24324bdddd5f"
699 | integrity sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==
700 |
701 | semver@^7.0.0, semver@^7.3.7:
702 | version "7.3.8"
703 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
704 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
705 | dependencies:
706 | lru-cache "^6.0.0"
707 |
708 | set-cookie-parser@^2.4.8:
709 | version "2.5.1"
710 | resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b"
711 | integrity sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==
712 |
713 | shebang-command@^2.0.0:
714 | version "2.0.0"
715 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
716 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
717 | dependencies:
718 | shebang-regex "^3.0.0"
719 |
720 | shebang-regex@^3.0.0:
721 | version "3.0.0"
722 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
723 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
724 |
725 | signal-exit@^3.0.7:
726 | version "3.0.7"
727 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
728 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
729 |
730 | source-map-support@^0.5.20:
731 | version "0.5.21"
732 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
733 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
734 | dependencies:
735 | buffer-from "^1.0.0"
736 | source-map "^0.6.0"
737 |
738 | source-map@^0.6.0:
739 | version "0.6.1"
740 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
741 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
742 |
743 | source-map@^0.7.4:
744 | version "0.7.4"
745 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
746 | integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
747 |
748 | sourcemap-codec@^1.4.8:
749 | version "1.4.8"
750 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
751 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
752 |
753 | stack-trace@0.0.10:
754 | version "0.0.10"
755 | resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
756 | integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
757 |
758 | streamsearch@^1.1.0:
759 | version "1.1.0"
760 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
761 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
762 |
763 | strip-final-newline@^3.0.0:
764 | version "3.0.0"
765 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
766 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
767 |
768 | to-regex-range@^5.0.1:
769 | version "5.0.1"
770 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
771 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
772 | dependencies:
773 | is-number "^7.0.0"
774 |
775 | undici@5.9.1:
776 | version "5.9.1"
777 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.9.1.tgz#fc9fd85dd488f965f153314a63d9426a11f3360b"
778 | integrity sha512-6fB3a+SNnWEm4CJbgo0/CWR8RGcOCQP68SF4X0mxtYTq2VNN8T88NYrWVBAeSX+zb7bny2dx2iYhP3XHi00omg==
779 |
780 | urlpattern-polyfill@^4.0.3:
781 | version "4.0.3"
782 | resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-4.0.3.tgz#c1fa7a73eb4e6c6a1ffb41b24cf31974f7392d3b"
783 | integrity sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==
784 |
785 | validate-npm-package-name@^4.0.0:
786 | version "4.0.0"
787 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747"
788 | integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==
789 | dependencies:
790 | builtins "^5.0.0"
791 |
792 | which@^2.0.1:
793 | version "2.0.2"
794 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
795 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
796 | dependencies:
797 | isexe "^2.0.0"
798 |
799 | wrangler@^2.9.0:
800 | version "2.9.0"
801 | resolved "https://registry.yarnpkg.com/wrangler/-/wrangler-2.9.0.tgz#65fb2f19b4d8ce0a45be52c6dd81dd1eb9112906"
802 | integrity sha512-5nyyR4bXKG/Rwz0dH+nOx4SWvJWmTZVSbceLyTV+ZOH1sd2vvPnnW14NUzTNEjY3XaT93XH+28mc5+UNSYsFHw==
803 | dependencies:
804 | "@cloudflare/kv-asset-handler" "^0.2.0"
805 | "@esbuild-plugins/node-globals-polyfill" "^0.1.1"
806 | "@esbuild-plugins/node-modules-polyfill" "^0.1.4"
807 | "@miniflare/core" "2.11.0"
808 | "@miniflare/d1" "2.11.0"
809 | "@miniflare/durable-objects" "2.11.0"
810 | blake3-wasm "^2.1.5"
811 | chokidar "^3.5.3"
812 | esbuild "0.14.51"
813 | miniflare "2.11.0"
814 | nanoid "^3.3.3"
815 | path-to-regexp "^6.2.0"
816 | selfsigned "^2.0.1"
817 | source-map "^0.7.4"
818 | xxhash-wasm "^1.0.1"
819 | optionalDependencies:
820 | fsevents "~2.3.2"
821 |
822 | ws@^8.2.2:
823 | version "8.12.0"
824 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8"
825 | integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==
826 |
827 | xxhash-wasm@^1.0.1:
828 | version "1.0.2"
829 | resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz#ecc0f813219b727af4d5f3958ca6becee2f2f1ff"
830 | integrity sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==
831 |
832 | yallist@^4.0.0:
833 | version "4.0.0"
834 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
835 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
836 |
837 | youch@^2.2.2:
838 | version "2.2.2"
839 | resolved "https://registry.yarnpkg.com/youch/-/youch-2.2.2.tgz#cb87a359a5c524ebd35eb07ca3a1521dbc7e1a3e"
840 | integrity sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==
841 | dependencies:
842 | "@types/stack-trace" "0.0.29"
843 | cookie "^0.4.1"
844 | mustache "^4.2.0"
845 | stack-trace "0.0.10"
846 |
--------------------------------------------------------------------------------