├── .svelte-kit ├── generated │ ├── client │ │ ├── matchers.js │ │ ├── nodes │ │ │ ├── 2.js │ │ │ ├── 1.js │ │ │ ├── 0.js │ │ │ └── 3.js │ │ └── app.js │ ├── root.svelte │ └── server │ │ └── internal.js ├── types │ ├── route_meta_data.json │ └── src │ │ └── routes │ │ ├── room │ │ ├── $types.d.ts │ │ └── [slug] │ │ │ └── $types.d.ts │ │ └── $types.d.ts ├── non-ambient.d.ts ├── tsconfig.json └── ambient.d.ts ├── static ├── favicon.png ├── noisee.png └── theme.css ├── src ├── routes │ ├── room │ │ └── [slug] │ │ │ ├── +page.js │ │ │ └── +page.svelte │ └── +page.svelte ├── icons │ ├── Previous.svelte │ ├── User.svelte │ ├── Settings.svelte │ ├── Power.svelte │ └── Close.svelte ├── lib │ ├── store.ts │ ├── device-media.ts │ ├── effects.ts │ └── partykit.ts ├── app.d.ts ├── components │ ├── DeviceList.svelte │ └── Settings.svelte └── app.html ├── partykit ├── public │ ├── favicon.ico │ ├── index.html │ └── normalize.css ├── partykit.json ├── package.json ├── src │ ├── styles.css │ ├── client.ts │ └── server.ts ├── README.md ├── .gitignore ├── tsconfig.json └── package-lock.json ├── vite.config.ts ├── .gitignore ├── svelte.config.js ├── tsconfig.json ├── README.md └── package.json /.svelte-kit/generated/client/matchers.js: -------------------------------------------------------------------------------- 1 | export const matchers = {}; -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/learnwithjason/noisee/HEAD/static/favicon.png -------------------------------------------------------------------------------- /static/noisee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/learnwithjason/noisee/HEAD/static/noisee.png -------------------------------------------------------------------------------- /src/routes/room/[slug]/+page.js: -------------------------------------------------------------------------------- 1 | export async function load({ params }) { 2 | return params 3 | } -------------------------------------------------------------------------------- /partykit/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/learnwithjason/noisee/HEAD/partykit/public/favicon.ico -------------------------------------------------------------------------------- /.svelte-kit/generated/client/nodes/2.js: -------------------------------------------------------------------------------- 1 | export { default as component } from "../../../../src/routes/+page.svelte"; -------------------------------------------------------------------------------- /.svelte-kit/types/route_meta_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "/": [], 3 | "/room/[slug]": [ 4 | "src/routes/room/[slug]/+page.js" 5 | ] 6 | } -------------------------------------------------------------------------------- /.svelte-kit/generated/client/nodes/1.js: -------------------------------------------------------------------------------- 1 | export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/error.svelte"; -------------------------------------------------------------------------------- /.svelte-kit/generated/client/nodes/0.js: -------------------------------------------------------------------------------- 1 | export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/layout.svelte"; -------------------------------------------------------------------------------- /src/icons/Previous.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | -------------------------------------------------------------------------------- /.svelte-kit/generated/client/nodes/3.js: -------------------------------------------------------------------------------- 1 | import * as universal from "../../../../src/routes/room/[slug]/+page.js"; 2 | export { universal }; 3 | export { default as component } from "../../../../src/routes/room/[slug]/+page.svelte"; -------------------------------------------------------------------------------- /src/lib/store.ts: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store' 2 | 3 | export const deviceID = writable('default') 4 | export const gradient = writable('radial') 5 | 6 | export const connections = writable(0) 7 | export const partyers = writable([]) 8 | -------------------------------------------------------------------------------- /partykit/partykit.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://www.partykit.io/schema.json", 3 | "name": "partykit", 4 | "main": "src/server.ts", 5 | "compatibilityDate": "2024-01-15", 6 | "serve": { 7 | "path": "public", 8 | "build": "src/client.ts" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | # generated types 5 | .astro/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # logs 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /src/icons/User.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /partykit/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "partykit", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "partykit dev", 7 | "deploy": "partykit deploy" 8 | }, 9 | "dependencies": { 10 | "partysocket": "0.0.20" 11 | }, 12 | "devDependencies": { 13 | "partykit": "0.0.72", 14 | "typescript": "^5.3.3" 15 | } 16 | } -------------------------------------------------------------------------------- /src/icons/Settings.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/device-media.ts: -------------------------------------------------------------------------------- 1 | export async function listAudioDevices() { 2 | const devices = await navigator.mediaDevices.enumerateDevices() 3 | 4 | return devices 5 | .filter(device => device.kind === 'audioinput') 6 | .map(device => { 7 | return { 8 | id: device.deviceId, 9 | name: device.label.slice(0, device.label.indexOf(' (')) , 10 | } 11 | }) 12 | } -------------------------------------------------------------------------------- /src/icons/Power.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | preprocess: vitePreprocess(), 7 | 8 | kit: { 9 | adapter: adapter(), 10 | alias: { 11 | '$components': 'src/components', 12 | '$icons': 'src/icons', 13 | } 14 | } 15 | }; 16 | 17 | export default config; 18 | -------------------------------------------------------------------------------- /.svelte-kit/generated/client/app.js: -------------------------------------------------------------------------------- 1 | export { matchers } from './matchers.js'; 2 | 3 | export const nodes = [ 4 | () => import('./nodes/0'), 5 | () => import('./nodes/1'), 6 | () => import('./nodes/2'), 7 | () => import('./nodes/3') 8 | ]; 9 | 10 | export const server_loads = []; 11 | 12 | export const dictionary = { 13 | "/": [2], 14 | "/room/[slug]": [3] 15 | }; 16 | 17 | export const hooks = { 18 | handleError: (({ error }) => { console.error(error) }), 19 | 20 | reroute: (() => {}) 21 | }; 22 | 23 | export { default as root } from '../root.svelte'; -------------------------------------------------------------------------------- /partykit/src/styles.css: -------------------------------------------------------------------------------- 1 | /* 2 | We've already included normalize.css. 3 | 4 | But we'd like a modern looking boilerplate. 5 | Clean type, sans-serif, and a nice color palette. 6 | 7 | */ 8 | 9 | body { 10 | font-family: sans-serif; 11 | font-size: 16px; 12 | line-height: 1.5; 13 | color: #333; 14 | } 15 | 16 | h1, 17 | h2, 18 | h3, 19 | h4, 20 | h5, 21 | h6 { 22 | font-family: sans-serif; 23 | font-weight: 600; 24 | line-height: 1.25; 25 | margin-top: 0; 26 | margin-bottom: 0.5rem; 27 | } 28 | 29 | #app { 30 | padding: 1rem; 31 | } 32 | -------------------------------------------------------------------------------- /src/components/DeviceList.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if devices.length} 9 | 14 | {/if} 15 | {#if !devices.length} 16 |

No device connected.

17 |

👉 JAM!

18 | {/if} 19 | 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "bundler" 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // 16 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 17 | // from the referenced tsconfig.json - TypeScript does not merge them in 18 | } 19 | -------------------------------------------------------------------------------- /src/icons/Close.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /static/theme.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --text-1: black; 3 | --text-2: var(--gray-10); 4 | --surface-1: white; 5 | --link: deeppink; 6 | --visited: deeppink; 7 | --scrollthumb-color: white; 8 | scrollbar-color: white black; 9 | 10 | @media (prefers-color-scheme: dark) { 11 | --text-1: white; 12 | --text-2: var(--gray-3); 13 | --surface-1: black; 14 | --link: hotpink; 15 | --scrollthumb-color: black; 16 | scrollbar-color: black white; 17 | } 18 | } 19 | 20 | button { 21 | background: var(--text-1); 22 | color: var(--surface-1); 23 | font-size: var(--font-size-4); 24 | padding-inline: var(--size-7); 25 | padding-block: var(--size-5); 26 | } 27 | 28 | select { 29 | background: var(--text-1); 30 | color: var(--surface-1); 31 | } -------------------------------------------------------------------------------- /.svelte-kit/non-ambient.d.ts: -------------------------------------------------------------------------------- 1 | 2 | // this file is generated — do not edit it 3 | 4 | 5 | declare module "svelte/elements" { 6 | export interface HTMLAttributes { 7 | 'data-sveltekit-keepfocus'?: true | '' | 'off' | undefined | null; 8 | 'data-sveltekit-noscroll'?: true | '' | 'off' | undefined | null; 9 | 'data-sveltekit-preload-code'?: 10 | | true 11 | | '' 12 | | 'eager' 13 | | 'viewport' 14 | | 'hover' 15 | | 'tap' 16 | | 'off' 17 | | undefined 18 | | null; 19 | 'data-sveltekit-preload-data'?: true | '' | 'hover' | 'tap' | 'off' | undefined | null; 20 | 'data-sveltekit-reload'?: true | '' | 'off' | undefined | null; 21 | 'data-sveltekit-replacestate'?: true | '' | 'off' | undefined | null; 22 | } 23 | } 24 | 25 | export {}; 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![noisee](https://github.com/learnwithjason/noisee/assets/1134620/45bef29f-bf1f-4fee-8f80-f792be9993f2) 2 | 3 | # See noise with friends 4 | rad gradients + [partykit](https://www.partykit.io/) + [mic input](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/mediaDevices) 5 | 6 |
7 | 8 | > Kicked off with [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). 9 | 10 | ## Local dev 11 | 12 | ```bash 13 | npm run dev 14 | 15 | # or start the server and open the app in a new browser tab 16 | npm run dev -- --open 17 | ``` 18 | 19 | ## Building 20 | 21 | To create a production version of your app: 22 | 23 | ```bash 24 | npm run build 25 | ``` 26 | 27 | You can preview the production build with `npm run preview`. 28 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Noisee - see noise with friends 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | %sveltekit.head% 18 | 19 | 20 |
%sveltekit.body%
21 | 22 | 23 | -------------------------------------------------------------------------------- /partykit/README.md: -------------------------------------------------------------------------------- 1 | ## 🎈 partykit 2 | 3 | Welcome to the party, pal! 4 | 5 | This is a [Partykit](https://partykit.io) project, which lets you create real-time collaborative applications with minimal coding effort. 6 | 7 | [`server.ts`](./src/server.ts) is the server-side code, which is responsible for handling WebSocket events and HTTP requests. [`client.ts`](./src/client.ts) is the client-side code, which connects to the server and listens for events. 8 | 9 | You can start developing by running `npm run dev` and opening [http://localhost:1999](http://localhost:1999) in your browser. When you're ready, you can deploy your application on to the PartyKit cloud with `npm run deploy`. 10 | 11 | Refer to our docs for more information: https://github.com/partykit/partykit/blob/main/README.md. For more help, reach out to us on [Discord](https://discord.gg/g5uqHQJc3z), [GitHub](https://github.com/partykit/partykit), or [Twitter](https://twitter.com/partykit_io). 12 | -------------------------------------------------------------------------------- /partykit/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | PartyKit: Everything's better with friends! 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

🎈 Welcome to PartyKit!

26 |
27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /.svelte-kit/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "$components": [ 5 | "../src/components" 6 | ], 7 | "$components/*": [ 8 | "../src/components/*" 9 | ], 10 | "$icons": [ 11 | "../src/icons" 12 | ], 13 | "$icons/*": [ 14 | "../src/icons/*" 15 | ], 16 | "$lib": [ 17 | "../src/lib" 18 | ], 19 | "$lib/*": [ 20 | "../src/lib/*" 21 | ] 22 | }, 23 | "rootDirs": [ 24 | "..", 25 | "./types" 26 | ], 27 | "verbatimModuleSyntax": true, 28 | "isolatedModules": true, 29 | "lib": [ 30 | "esnext", 31 | "DOM", 32 | "DOM.Iterable" 33 | ], 34 | "moduleResolution": "bundler", 35 | "module": "esnext", 36 | "noEmit": true, 37 | "target": "esnext" 38 | }, 39 | "include": [ 40 | "ambient.d.ts", 41 | "non-ambient.d.ts", 42 | "./types/**/$types.d.ts", 43 | "../vite.config.js", 44 | "../vite.config.ts", 45 | "../src/**/*.js", 46 | "../src/**/*.ts", 47 | "../src/**/*.svelte", 48 | "../tests/**/*.js", 49 | "../tests/**/*.ts", 50 | "../tests/**/*.svelte" 51 | ], 52 | "exclude": [ 53 | "../node_modules/**" 54 | ] 55 | } -------------------------------------------------------------------------------- /.svelte-kit/types/src/routes/room/$types.d.ts: -------------------------------------------------------------------------------- 1 | import type * as Kit from '@sveltejs/kit'; 2 | 3 | type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; 4 | // @ts-ignore 5 | type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; 6 | type RouteParams = { }; 7 | type RouteId = '/room'; 8 | type MaybeWithVoid = {} extends T ? T | void : T; 9 | export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; 10 | type OutputDataShape = MaybeWithVoid> & Partial> & Record> 11 | type EnsureDefined = T extends null | undefined ? {} : T; 12 | type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; 13 | export type Snapshot = Kit.Snapshot; 14 | type PageParentData = EnsureDefined; 15 | 16 | export type PageServerData = null; 17 | export type PageData = Expand; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 10 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 11 | "lint": "prettier --check . && eslint .", 12 | "format": "prettier --write ." 13 | }, 14 | "devDependencies": { 15 | "@sveltejs/adapter-auto": "^3.0.0", 16 | "@sveltejs/kit": "^2.0.0", 17 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 18 | "@types/eslint": "8.56.0", 19 | "@typescript-eslint/eslint-plugin": "^6.0.0", 20 | "@typescript-eslint/parser": "^6.0.0", 21 | "eslint": "^8.56.0", 22 | "eslint-config-prettier": "^9.1.0", 23 | "eslint-plugin-svelte": "^2.35.1", 24 | "prettier": "^3.1.1", 25 | "prettier-plugin-svelte": "^3.1.2", 26 | "svelte": "^4.2.7", 27 | "svelte-check": "^3.6.0", 28 | "tslib": "^2.4.1", 29 | "typescript": "^5.0.0", 30 | "vite": "^5.0.3" 31 | }, 32 | "type": "module", 33 | "dependencies": { 34 | "open-props": "^1.6.17", 35 | "partykit": "^0.0.72", 36 | "partysocket": "^0.0.20" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /.svelte-kit/types/src/routes/$types.d.ts: -------------------------------------------------------------------------------- 1 | import type * as Kit from '@sveltejs/kit'; 2 | 3 | type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; 4 | // @ts-ignore 5 | type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; 6 | type RouteParams = { }; 7 | type RouteId = '/'; 8 | type MaybeWithVoid = {} extends T ? T | void : T; 9 | export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; 10 | type OutputDataShape = MaybeWithVoid> & Partial> & Record> 11 | type EnsureDefined = T extends null | undefined ? {} : T; 12 | type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; 13 | export type Snapshot = Kit.Snapshot; 14 | type PageParentData = EnsureDefined; 15 | type LayoutRouteId = RouteId | "/" | "/room/[slug]" | null 16 | type LayoutParams = RouteParams & { slug?: string } 17 | type LayoutParentData = EnsureDefined<{}>; 18 | 19 | export type PageServerData = null; 20 | export type PageData = Expand; 21 | export type LayoutServerData = null; 22 | export type LayoutData = Expand; -------------------------------------------------------------------------------- /partykit/src/client.ts: -------------------------------------------------------------------------------- 1 | import "./styles.css"; 2 | 3 | import PartySocket from "partysocket"; 4 | 5 | declare const PARTYKIT_HOST: string; 6 | 7 | let pingInterval: ReturnType; 8 | 9 | // Let's append all the messages we get into this DOM element 10 | const output = document.getElementById("app") as HTMLDivElement; 11 | 12 | // Helper function to add a new line to the DOM 13 | function add(text: string) { 14 | output.appendChild(document.createTextNode(text)); 15 | output.appendChild(document.createElement("br")); 16 | } 17 | 18 | // A PartySocket is like a WebSocket, except it's a bit more magical. 19 | // It handles reconnection logic, buffering messages while it's offline, and more. 20 | const conn = new PartySocket({ 21 | host: PARTYKIT_HOST, 22 | room: "my-new-room", 23 | }); 24 | 25 | // You can even start sending messages before the connection is open! 26 | conn.addEventListener("message", (event) => { 27 | add(`Received -> ${event.data}`); 28 | }); 29 | 30 | // Let's listen for when the connection opens 31 | // And send a ping every 2 seconds right after 32 | conn.addEventListener("open", () => { 33 | add("Connected!"); 34 | // add("Sending a ping every 2 seconds..."); 35 | // TODO: make this more interesting / nice 36 | // clearInterval(pingInterval); 37 | // pingInterval = setInterval(() => { 38 | // conn.send("ping"); 39 | // }, 1000); 40 | }); 41 | -------------------------------------------------------------------------------- /partykit/src/server.ts: -------------------------------------------------------------------------------- 1 | import type * as Party from "partykit/server"; 2 | 3 | export default class Server implements Party.Server { 4 | constructor(readonly room: Party.Room) { 5 | this.rooms = {} 6 | } 7 | 8 | emitEvent(name: String, message: Object) { 9 | this.room.broadcast(JSON.stringify({ 10 | event: name, 11 | data: message 12 | })) 13 | } 14 | 15 | onConnect(conn: Party.Connection, ctx: Party.ConnectionContext) { 16 | console.log(`Connected to ${this.room.id}`) 17 | console.log(this.rooms) 18 | 19 | let room = this.rooms[this.room.id] 20 | 21 | if (!room) { 22 | room = [] 23 | this.rooms[this.room.id] = room 24 | } 25 | 26 | room.push(conn.id) 27 | 28 | this.emitEvent('COUNT', { 29 | connections: room.length, 30 | partyers: room, 31 | }) 32 | } 33 | 34 | onClose(conn: Party.Connection, ctx: Party.ConnectionContext) { 35 | console.log(`Disconnected to ${this.room.id}`) 36 | const room = this.rooms[this.room.id] 37 | 38 | const index = room.indexOf(conn.id); 39 | if (index !== -1) 40 | room.splice(index, 1) 41 | 42 | this.emitEvent('COUNT', { 43 | connections: room.length, 44 | partyers: room, 45 | }) 46 | } 47 | 48 | onMessage(message: string, sender: Party.Connection) { 49 | const payload = JSON.parse(message) 50 | 51 | this.emitEvent(payload.event, { 52 | senderID: sender.id, 53 | ...payload.data, 54 | }) 55 | } 56 | } 57 | 58 | Server satisfies Party.Worker; 59 | -------------------------------------------------------------------------------- /.svelte-kit/generated/root.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 42 | 43 | {#if constructors[1]} 44 | 45 | 46 | 47 | {:else} 48 | 49 | {/if} 50 | 51 | {#if mounted} 52 |
53 | {#if navigated} 54 | {title} 55 | {/if} 56 |
57 | {/if} -------------------------------------------------------------------------------- /.svelte-kit/types/src/routes/room/[slug]/$types.d.ts: -------------------------------------------------------------------------------- 1 | import type * as Kit from '@sveltejs/kit'; 2 | 3 | type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; 4 | // @ts-ignore 5 | type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; 6 | type RouteParams = { slug: string }; 7 | type RouteId = '/room/[slug]'; 8 | type MaybeWithVoid = {} extends T ? T | void : T; 9 | export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; 10 | type OutputDataShape = MaybeWithVoid> & Partial> & Record> 11 | type EnsureDefined = T extends null | undefined ? {} : T; 12 | type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; 13 | export type Snapshot = Kit.Snapshot; 14 | type PageParentData = EnsureDefined; 15 | 16 | export type EntryGenerator = () => Promise> | Array; 17 | export type PageServerData = null; 18 | export type PageLoad = OutputDataShape> = Kit.Load; 19 | export type PageLoadEvent = Parameters[0]; 20 | export type PageData = Expand>>> & OptionalUnion>>>>>; -------------------------------------------------------------------------------- /src/lib/effects.ts: -------------------------------------------------------------------------------- 1 | export function linear(prefix = '') { 2 | return [ 3 | `linear-gradient( 4 | to top right, 5 | white min(var(--${prefix}frequency-high, 0%), 100%), 6 | #0000 calc(min(var(--${prefix}frequency-high, 0%), 100%) + 1px) 7 | )`, 8 | `linear-gradient( 9 | to bottom left, 10 | white min(var(--${prefix}frequency-low, 0%), 100%), 11 | #0000 calc(min(var(--${prefix}frequency-low, 0%), 100%) + 1px) 12 | )`, 13 | `linear-gradient( 14 | to top left, 15 | white min(var(--${prefix}frequency-low, 0%), 100%), 16 | #0000 calc(min(var(--${prefix}frequency-low, 0%), 100%) + 1px) 17 | )`, 18 | `linear-gradient( 19 | to bottom right, 20 | white min(var(--${prefix}frequency-low, 0%), 100%), 21 | #0000 calc(min(var(--${prefix}frequency-low, 0%), 100%) + 1px) 22 | )` 23 | ] 24 | } 25 | 26 | export function radial(prefix = '') { 27 | return [` 28 | radial-gradient( 29 | circle at center, 30 | white min(var(--${prefix}frequency-low, 0%), 100%), 31 | #0000 calc(min(var(--${prefix}frequency-low, 0%), 100%) + 1px) 32 | )`,` 33 | radial-gradient( 34 | circle at center, 35 | white min(var(--${prefix}frequency-high, 0%), 100%), 36 | #0000 calc(min(var(--${prefix}frequency-high, 0%), 100%) + 1px) 37 | )`,` 38 | radial-gradient( 39 | circle at top right, 40 | white min(var(--${prefix}frequency-low, 0%), 100%), 41 | #0000 calc(min(var(--${prefix}frequency-low, 0%), 100%) + 1px) 42 | )`,` 43 | radial-gradient( 44 | circle at bottom left, 45 | white min(var(--${prefix}frequency-high, 0%), 100%), 46 | #0000 calc(min(var(--${prefix}frequency-high, 0%), 100%) + 1px) 47 | )` 48 | ] 49 | } 50 | 51 | export function conic(prefix = '') { 52 | return [` 53 | conic-gradient( 54 | from 130deg at top left, 55 | white 0 min(var(--${prefix}frequency-low, 0%), 100%), 56 | #0000 0 57 | )`,` 58 | conic-gradient( 59 | from 320deg at bottom right, 60 | white min(var(--${prefix}frequency-low, 0%), 100%), 61 | #0000 0 62 | )` 63 | ] 64 | } -------------------------------------------------------------------------------- /src/lib/partykit.ts: -------------------------------------------------------------------------------- 1 | import PartySocket from 'partysocket' 2 | 3 | import {connections, partyers} from '$lib/store.ts' 4 | import * as effects from '$lib/effects.ts' 5 | 6 | let conn 7 | 8 | export function emitEvent(name: String, message: Object) { 9 | conn && conn.send(JSON.stringify({ 10 | event: name, 11 | data: message, 12 | })) 13 | } 14 | 15 | export async function startParty(roomNumber) { 16 | conn = new PartySocket({ 17 | // host: 'http://localhost:1999/', 18 | host: 'https://partykit.argyleink.partykit.dev', 19 | room: roomNumber, 20 | }) 21 | 22 | conn.addEventListener('message', (event) => { 23 | const payload = JSON.parse(event.data) 24 | 25 | if (payload.data.senderID === conn.id) 26 | return 27 | 28 | switch(payload.event) { 29 | case 'COUNT': 30 | connections.set(payload.data.connections) 31 | partyers.update(value => { 32 | // each local partyer not in the remote list, remove 33 | value = value.filter(v => 34 | payload.data.partyers.includes(v)) 35 | 36 | // each remote partyer not in the local list, add 37 | payload.data.partyers.forEach(partyer => { 38 | if (value.find(p => p.id === partyer)) 39 | return 40 | 41 | value.push({ 42 | id: partyer, 43 | gradient: 'radial', 44 | }) 45 | }) 46 | 47 | return value 48 | }) 49 | break 50 | case 'AUDIO': 51 | partyers.update(value => { 52 | value.forEach((partyer, i) => { 53 | if (partyer.id !== payload.data.senderID) return 54 | 55 | partyer.low = payload.data.low 56 | partyer.high = payload.data.high 57 | 58 | document.firstElementChild.style 59 | .setProperty( 60 | `--partyer-${i}-frequency-low`, 61 | payload.data.low +`%` 62 | ) 63 | document.firstElementChild.style 64 | .setProperty( 65 | `--partyer-${i}-frequency-high`, 66 | payload.data.high +`%` 67 | ) 68 | }) 69 | 70 | return value 71 | }) 72 | break 73 | case 'GRADIENT': 74 | partyers.update(value => { 75 | value 76 | .forEach((partyer, i) => { 77 | if (partyer.id !== payload.data.senderID) return 78 | 79 | partyer.gradient = payload.data.type 80 | 81 | document.firstElementChild.style 82 | .setProperty('--partyer-'+i, effects[payload.data.type]('partyer-'+i+'-')) 83 | }) 84 | 85 | return value 86 | }) 87 | break 88 | } 89 | }) 90 | 91 | return conn 92 | } 93 | -------------------------------------------------------------------------------- /partykit/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | 3 | logs 4 | _.log 5 | npm-debug.log_ 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | 13 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 14 | 15 | # Runtime data 16 | 17 | pids 18 | _.pid 19 | _.seed 20 | \*.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | 24 | lib-cov 25 | 26 | # Coverage directory used by tools like istanbul 27 | 28 | coverage 29 | \*.lcov 30 | 31 | # nyc test coverage 32 | 33 | .nyc_output 34 | 35 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 36 | 37 | .grunt 38 | 39 | # Bower dependency directory (https://bower.io/) 40 | 41 | bower_components 42 | 43 | # node-waf configuration 44 | 45 | .lock-wscript 46 | 47 | # Compiled binary addons (https://nodejs.org/api/addons.html) 48 | 49 | build/Release 50 | 51 | # Dependency directories 52 | 53 | node_modules/ 54 | jspm_packages/ 55 | 56 | # Snowpack dependency directory (https://snowpack.dev/) 57 | 58 | web_modules/ 59 | 60 | # TypeScript cache 61 | 62 | \*.tsbuildinfo 63 | 64 | # Optional npm cache directory 65 | 66 | .npm 67 | 68 | # Optional eslint cache 69 | 70 | .eslintcache 71 | 72 | # Optional stylelint cache 73 | 74 | .stylelintcache 75 | 76 | # Microbundle cache 77 | 78 | .rpt2_cache/ 79 | .rts2_cache_cjs/ 80 | .rts2_cache_es/ 81 | .rts2_cache_umd/ 82 | 83 | # Optional REPL history 84 | 85 | .node_repl_history 86 | 87 | # Output of 'npm pack' 88 | 89 | \*.tgz 90 | 91 | # Yarn Integrity file 92 | 93 | .yarn-integrity 94 | 95 | # dotenv environment variable files 96 | 97 | .env 98 | .env.development.local 99 | .env.test.local 100 | .env.production.local 101 | .env.local 102 | 103 | # parcel-bundler cache (https://parceljs.org/) 104 | 105 | .cache 106 | .parcel-cache 107 | 108 | # Next.js build output 109 | 110 | .next 111 | out 112 | 113 | # Nuxt.js build / generate output 114 | 115 | .nuxt 116 | dist 117 | 118 | # Gatsby files 119 | 120 | .cache/ 121 | 122 | # Comment in the public line in if your project uses Gatsby and not Next.js 123 | 124 | # https://nextjs.org/blog/next-9-1#public-directory-support 125 | 126 | # public 127 | 128 | # vuepress build output 129 | 130 | .vuepress/dist 131 | 132 | # vuepress v2.x temp and cache directory 133 | 134 | .temp 135 | .cache 136 | 137 | # Docusaurus cache and generated files 138 | 139 | .docusaurus 140 | 141 | # Serverless directories 142 | 143 | .serverless/ 144 | 145 | # FuseBox cache 146 | 147 | .fusebox/ 148 | 149 | # DynamoDB Local files 150 | 151 | .dynamodb/ 152 | 153 | # TernJS port file 154 | 155 | .tern-port 156 | 157 | # Stores VSCode versions used for testing VSCode extensions 158 | 159 | .vscode-test 160 | 161 | # yarn v2 162 | 163 | .yarn/cache 164 | .yarn/unplugged 165 | .yarn/build-state.yml 166 | .yarn/install-state.gz 167 | .pnp.\* 168 | 169 | .partykit 170 | .DS_Store 171 | -------------------------------------------------------------------------------- /.svelte-kit/generated/server/internal.js: -------------------------------------------------------------------------------- 1 | 2 | import root from '../root.svelte'; 3 | import { set_building, set_prerendering } from '__sveltekit/environment'; 4 | import { set_assets } from '__sveltekit/paths'; 5 | import { set_private_env, set_public_env, set_safe_public_env } from '../../../node_modules/@sveltejs/kit/src/runtime/shared-server.js'; 6 | 7 | export const options = { 8 | app_dir: "_app", 9 | app_template_contains_nonce: false, 10 | csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}}, 11 | csrf_check_origin: true, 12 | embedded: false, 13 | env_public_prefix: 'PUBLIC_', 14 | env_private_prefix: '', 15 | hooks: null, // added lazily, via `get_hooks` 16 | preload_strategy: "modulepreload", 17 | root, 18 | service_worker: false, 19 | templates: { 20 | app: ({ head, body, assets, nonce, env }) => "\n\n \n \n Noisee - see noise with friends\n \n \n \n \n \n \n \n \n " + head + "\n \n \n
" + body + "
\n \n\n", 21 | error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t
\n\t\t\t" + status + "\n\t\t\t
\n\t\t\t\t

" + message + "

\n\t\t\t
\n\t\t
\n\t\n\n" 22 | }, 23 | version_hash: "n03ofp" 24 | }; 25 | 26 | export async function get_hooks() { 27 | return { 28 | 29 | 30 | }; 31 | } 32 | 33 | export { set_assets, set_building, set_prerendering, set_private_env, set_public_env, set_safe_public_env }; 34 | -------------------------------------------------------------------------------- /src/components/Settings.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 46 | 47 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 |
14 |

15 | N 16 | o 17 | i 18 | s 19 | e 20 | e 21 |

22 |

SEE NOISE w/ FRIENDS

23 |
24 | 25 |
26 |

start or join a room

27 |
28 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 | [MOTION WARNING] 47 |
48 |
49 | 50 | -------------------------------------------------------------------------------- /partykit/public/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in iOS. 9 | */ 10 | 11 | html { 12 | line-height: 1.15; /* 1 */ 13 | -webkit-text-size-adjust: 100%; /* 2 */ 14 | } 15 | 16 | /* Sections 17 | ========================================================================== */ 18 | 19 | /** 20 | * Remove the margin in all browsers. 21 | */ 22 | 23 | body { 24 | margin: 0; 25 | } 26 | 27 | /** 28 | * Render the `main` element consistently in IE. 29 | */ 30 | 31 | main { 32 | display: block; 33 | } 34 | 35 | /** 36 | * Correct the font size and margin on `h1` elements within `section` and 37 | * `article` contexts in Chrome, Firefox, and Safari. 38 | */ 39 | 40 | h1 { 41 | font-size: 2em; 42 | margin: 0.67em 0; 43 | } 44 | 45 | /* Grouping content 46 | ========================================================================== */ 47 | 48 | /** 49 | * 1. Add the correct box sizing in Firefox. 50 | * 2. Show the overflow in Edge and IE. 51 | */ 52 | 53 | hr { 54 | box-sizing: content-box; /* 1 */ 55 | height: 0; /* 1 */ 56 | overflow: visible; /* 2 */ 57 | } 58 | 59 | /** 60 | * 1. Correct the inheritance and scaling of font size in all browsers. 61 | * 2. Correct the odd `em` font sizing in all browsers. 62 | */ 63 | 64 | pre { 65 | font-family: monospace, monospace; /* 1 */ 66 | font-size: 1em; /* 2 */ 67 | } 68 | 69 | /* Text-level semantics 70 | ========================================================================== */ 71 | 72 | /** 73 | * Remove the gray background on active links in IE 10. 74 | */ 75 | 76 | a { 77 | background-color: transparent; 78 | } 79 | 80 | /** 81 | * 1. Remove the bottom border in Chrome 57- 82 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 83 | */ 84 | 85 | abbr[title] { 86 | border-bottom: none; /* 1 */ 87 | text-decoration: underline; /* 2 */ 88 | text-decoration: underline dotted; /* 2 */ 89 | } 90 | 91 | /** 92 | * Add the correct font weight in Chrome, Edge, and Safari. 93 | */ 94 | 95 | b, 96 | strong { 97 | font-weight: bolder; 98 | } 99 | 100 | /** 101 | * 1. Correct the inheritance and scaling of font size in all browsers. 102 | * 2. Correct the odd `em` font sizing in all browsers. 103 | */ 104 | 105 | code, 106 | kbd, 107 | samp { 108 | font-family: monospace, monospace; /* 1 */ 109 | font-size: 1em; /* 2 */ 110 | } 111 | 112 | /** 113 | * Add the correct font size in all browsers. 114 | */ 115 | 116 | small { 117 | font-size: 80%; 118 | } 119 | 120 | /** 121 | * Prevent `sub` and `sup` elements from affecting the line height in 122 | * all browsers. 123 | */ 124 | 125 | sub, 126 | sup { 127 | font-size: 75%; 128 | line-height: 0; 129 | position: relative; 130 | vertical-align: baseline; 131 | } 132 | 133 | sub { 134 | bottom: -0.25em; 135 | } 136 | 137 | sup { 138 | top: -0.5em; 139 | } 140 | 141 | /* Embedded content 142 | ========================================================================== */ 143 | 144 | /** 145 | * Remove the border on images inside links in IE 10. 146 | */ 147 | 148 | img { 149 | border-style: none; 150 | } 151 | 152 | /* Forms 153 | ========================================================================== */ 154 | 155 | /** 156 | * 1. Change the font styles in all browsers. 157 | * 2. Remove the margin in Firefox and Safari. 158 | */ 159 | 160 | button, 161 | input, 162 | optgroup, 163 | select, 164 | textarea { 165 | font-family: inherit; /* 1 */ 166 | font-size: 100%; /* 1 */ 167 | line-height: 1.15; /* 1 */ 168 | margin: 0; /* 2 */ 169 | } 170 | 171 | /** 172 | * Show the overflow in IE. 173 | * 1. Show the overflow in Edge. 174 | */ 175 | 176 | button, 177 | input { 178 | /* 1 */ 179 | overflow: visible; 180 | } 181 | 182 | /** 183 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 184 | * 1. Remove the inheritance of text transform in Firefox. 185 | */ 186 | 187 | button, 188 | select { 189 | /* 1 */ 190 | text-transform: none; 191 | } 192 | 193 | /** 194 | * Correct the inability to style clickable types in iOS and Safari. 195 | */ 196 | 197 | button, 198 | [type="button"], 199 | [type="reset"], 200 | [type="submit"] { 201 | -webkit-appearance: button; 202 | } 203 | 204 | /** 205 | * Remove the inner border and padding in Firefox. 206 | */ 207 | 208 | button::-moz-focus-inner, 209 | [type="button"]::-moz-focus-inner, 210 | [type="reset"]::-moz-focus-inner, 211 | [type="submit"]::-moz-focus-inner { 212 | border-style: none; 213 | padding: 0; 214 | } 215 | 216 | /** 217 | * Restore the focus styles unset by the previous rule. 218 | */ 219 | 220 | button:-moz-focusring, 221 | [type="button"]:-moz-focusring, 222 | [type="reset"]:-moz-focusring, 223 | [type="submit"]:-moz-focusring { 224 | outline: 1px dotted ButtonText; 225 | } 226 | 227 | /** 228 | * Correct the padding in Firefox. 229 | */ 230 | 231 | fieldset { 232 | padding: 0.35em 0.75em 0.625em; 233 | } 234 | 235 | /** 236 | * 1. Correct the text wrapping in Edge and IE. 237 | * 2. Correct the color inheritance from `fieldset` elements in IE. 238 | * 3. Remove the padding so developers are not caught out when they zero out 239 | * `fieldset` elements in all browsers. 240 | */ 241 | 242 | legend { 243 | box-sizing: border-box; /* 1 */ 244 | color: inherit; /* 2 */ 245 | display: table; /* 1 */ 246 | max-width: 100%; /* 1 */ 247 | padding: 0; /* 3 */ 248 | white-space: normal; /* 1 */ 249 | } 250 | 251 | /** 252 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 253 | */ 254 | 255 | progress { 256 | vertical-align: baseline; 257 | } 258 | 259 | /** 260 | * Remove the default vertical scrollbar in IE 10+. 261 | */ 262 | 263 | textarea { 264 | overflow: auto; 265 | } 266 | 267 | /** 268 | * 1. Add the correct box sizing in IE 10. 269 | * 2. Remove the padding in IE 10. 270 | */ 271 | 272 | [type="checkbox"], 273 | [type="radio"] { 274 | box-sizing: border-box; /* 1 */ 275 | padding: 0; /* 2 */ 276 | } 277 | 278 | /** 279 | * Correct the cursor style of increment and decrement buttons in Chrome. 280 | */ 281 | 282 | [type="number"]::-webkit-inner-spin-button, 283 | [type="number"]::-webkit-outer-spin-button { 284 | height: auto; 285 | } 286 | 287 | /** 288 | * 1. Correct the odd appearance in Chrome and Safari. 289 | * 2. Correct the outline style in Safari. 290 | */ 291 | 292 | [type="search"] { 293 | -webkit-appearance: textfield; /* 1 */ 294 | outline-offset: -2px; /* 2 */ 295 | } 296 | 297 | /** 298 | * Remove the inner padding in Chrome and Safari on macOS. 299 | */ 300 | 301 | [type="search"]::-webkit-search-decoration { 302 | -webkit-appearance: none; 303 | } 304 | 305 | /** 306 | * 1. Correct the inability to style clickable types in iOS and Safari. 307 | * 2. Change font properties to `inherit` in Safari. 308 | */ 309 | 310 | ::-webkit-file-upload-button { 311 | -webkit-appearance: button; /* 1 */ 312 | font: inherit; /* 2 */ 313 | } 314 | 315 | /* Interactive 316 | ========================================================================== */ 317 | 318 | /* 319 | * Add the correct display in Edge, IE 10+, and Firefox. 320 | */ 321 | 322 | details { 323 | display: block; 324 | } 325 | 326 | /* 327 | * Add the correct display in all browsers. 328 | */ 329 | 330 | summary { 331 | display: list-item; 332 | } 333 | 334 | /* Misc 335 | ========================================================================== */ 336 | 337 | /** 338 | * Add the correct display in IE 10+. 339 | */ 340 | 341 | template { 342 | display: none; 343 | } 344 | 345 | /** 346 | * Add the correct display in IE 10. 347 | */ 348 | 349 | [hidden] { 350 | display: none; 351 | } 352 | -------------------------------------------------------------------------------- /.svelte-kit/ambient.d.ts: -------------------------------------------------------------------------------- 1 | 2 | // this file is generated — do not edit it 3 | 4 | 5 | /// 6 | 7 | /** 8 | * Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured). 9 | * 10 | * _Unlike_ [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination. 11 | * 12 | * ```ts 13 | * import { API_KEY } from '$env/static/private'; 14 | * ``` 15 | * 16 | * Note that all environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed: 17 | * 18 | * ``` 19 | * MY_FEATURE_FLAG="" 20 | * ``` 21 | * 22 | * You can override `.env` values from the command line like so: 23 | * 24 | * ```bash 25 | * MY_FEATURE_FLAG="enabled" npm run dev 26 | * ``` 27 | */ 28 | declare module '$env/static/private' { 29 | export const MANPATH: string; 30 | export const TERM_PROGRAM: string; 31 | export const NODE: string; 32 | export const INIT_CWD: string; 33 | export const TERM: string; 34 | export const SHELL: string; 35 | export const HOMEBREW_REPOSITORY: string; 36 | export const TMPDIR: string; 37 | export const npm_config_global_prefix: string; 38 | export const TERM_PROGRAM_VERSION: string; 39 | export const COLOR: string; 40 | export const TERM_SESSION_ID: string; 41 | export const npm_config_noproxy: string; 42 | export const npm_config_local_prefix: string; 43 | export const ZSH: string; 44 | export const USER: string; 45 | export const LS_COLORS: string; 46 | export const npm_config_globalconfig: string; 47 | export const SSH_AUTH_SOCK: string; 48 | export const __CF_USER_TEXT_ENCODING: string; 49 | export const npm_execpath: string; 50 | export const PAGER: string; 51 | export const LSCOLORS: string; 52 | export const PATH: string; 53 | export const npm_package_json: string; 54 | export const _: string; 55 | export const LaunchInstanceID: string; 56 | export const npm_config_userconfig: string; 57 | export const npm_config_init_module: string; 58 | export const __CFBundleIdentifier: string; 59 | export const npm_command: string; 60 | export const PWD: string; 61 | export const npm_lifecycle_event: string; 62 | export const EDITOR: string; 63 | export const npm_package_name: string; 64 | export const LANG: string; 65 | export const npm_config_npm_version: string; 66 | export const XPC_FLAGS: string; 67 | export const npm_config_node_gyp: string; 68 | export const npm_package_version: string; 69 | export const XPC_SERVICE_NAME: string; 70 | export const HOME: string; 71 | export const SHLVL: string; 72 | export const HOMEBREW_PREFIX: string; 73 | export const PROMPT: string; 74 | export const npm_config_cache: string; 75 | export const LESS: string; 76 | export const LOGNAME: string; 77 | export const npm_lifecycle_script: string; 78 | export const npm_config_user_agent: string; 79 | export const INFOPATH: string; 80 | export const HOMEBREW_CELLAR: string; 81 | export const SECURITYSESSIONID: string; 82 | export const npm_node_execpath: string; 83 | export const npm_config_prefix: string; 84 | export const NODE_ENV: string; 85 | } 86 | 87 | /** 88 | * Similar to [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. 89 | * 90 | * Values are replaced statically at build time. 91 | * 92 | * ```ts 93 | * import { PUBLIC_BASE_URL } from '$env/static/public'; 94 | * ``` 95 | */ 96 | declare module '$env/static/public' { 97 | 98 | } 99 | 100 | /** 101 | * This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://kit.svelte.dev/docs/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured). 102 | * 103 | * This module cannot be imported into client-side code. 104 | * 105 | * Dynamic environment variables cannot be used during prerendering. 106 | * 107 | * ```ts 108 | * import { env } from '$env/dynamic/private'; 109 | * console.log(env.DEPLOYMENT_SPECIFIC_VARIABLE); 110 | * ``` 111 | * 112 | * > In `dev`, `$env/dynamic` always includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter. 113 | */ 114 | declare module '$env/dynamic/private' { 115 | export const env: { 116 | MANPATH: string; 117 | TERM_PROGRAM: string; 118 | NODE: string; 119 | INIT_CWD: string; 120 | TERM: string; 121 | SHELL: string; 122 | HOMEBREW_REPOSITORY: string; 123 | TMPDIR: string; 124 | npm_config_global_prefix: string; 125 | TERM_PROGRAM_VERSION: string; 126 | COLOR: string; 127 | TERM_SESSION_ID: string; 128 | npm_config_noproxy: string; 129 | npm_config_local_prefix: string; 130 | ZSH: string; 131 | USER: string; 132 | LS_COLORS: string; 133 | npm_config_globalconfig: string; 134 | SSH_AUTH_SOCK: string; 135 | __CF_USER_TEXT_ENCODING: string; 136 | npm_execpath: string; 137 | PAGER: string; 138 | LSCOLORS: string; 139 | PATH: string; 140 | npm_package_json: string; 141 | _: string; 142 | LaunchInstanceID: string; 143 | npm_config_userconfig: string; 144 | npm_config_init_module: string; 145 | __CFBundleIdentifier: string; 146 | npm_command: string; 147 | PWD: string; 148 | npm_lifecycle_event: string; 149 | EDITOR: string; 150 | npm_package_name: string; 151 | LANG: string; 152 | npm_config_npm_version: string; 153 | XPC_FLAGS: string; 154 | npm_config_node_gyp: string; 155 | npm_package_version: string; 156 | XPC_SERVICE_NAME: string; 157 | HOME: string; 158 | SHLVL: string; 159 | HOMEBREW_PREFIX: string; 160 | PROMPT: string; 161 | npm_config_cache: string; 162 | LESS: string; 163 | LOGNAME: string; 164 | npm_lifecycle_script: string; 165 | npm_config_user_agent: string; 166 | INFOPATH: string; 167 | HOMEBREW_CELLAR: string; 168 | SECURITYSESSIONID: string; 169 | npm_node_execpath: string; 170 | npm_config_prefix: string; 171 | NODE_ENV: string; 172 | [key: `PUBLIC_${string}`]: undefined; 173 | [key: `${string}`]: string | undefined; 174 | } 175 | } 176 | 177 | /** 178 | * Similar to [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. 179 | * 180 | * Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests — when possible, use `$env/static/public` instead. 181 | * 182 | * Dynamic environment variables cannot be used during prerendering. 183 | * 184 | * ```ts 185 | * import { env } from '$env/dynamic/public'; 186 | * console.log(env.PUBLIC_DEPLOYMENT_SPECIFIC_VARIABLE); 187 | * ``` 188 | */ 189 | declare module '$env/dynamic/public' { 190 | export const env: { 191 | [key: `PUBLIC_${string}`]: string | undefined; 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /src/routes/room/[slug]/+page.svelte: -------------------------------------------------------------------------------- 1 | 155 | 156 |
157 | 191 | 192 |
193 | {#if !device} 194 | 200 | {/if} 201 |
202 | 203 | 204 | 205 | {#if device} 206 | LIVE 207 | {/if} 208 | 209 |
210 | 211 | -------------------------------------------------------------------------------- /partykit/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 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": "es2020" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "ES2020" /* Specify what module code is generated. */, 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | "moduleResolution": "Node" /* Specify how TypeScript looks up a file from a given module specifier. */, 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 42 | "resolveJsonModule": true /* Enable importing .json files. */, 43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 45 | 46 | /* JavaScript Support */ 47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 50 | 51 | /* Emit */ 52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 57 | // "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. */ 58 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 59 | // "removeComments": true, /* Disable emitting comments. */ 60 | "noEmit": true /* Disable emitting files from a compilation. */, 61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 | 76 | /* Interop Constraints */ 77 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 | "verbatimModuleSyntax": true /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */, 79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 80 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 82 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 83 | 84 | /* Type Checking */ 85 | "strict": true /* Enable all strict type-checking options. */, 86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 93 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 94 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 95 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 98 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 99 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 100 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 101 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 104 | 105 | /* Completeness */ 106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /partykit/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "partykit", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "partykit", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "partysocket": "0.0.20" 12 | }, 13 | "devDependencies": { 14 | "partykit": "0.0.72", 15 | "typescript": "^5.3.3" 16 | } 17 | }, 18 | "node_modules/@cloudflare/workerd-darwin-64": { 19 | "version": "1.20231218.0", 20 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20231218.0.tgz", 21 | "integrity": "sha512-547gOmTIVmRdDy7HNAGJUPELa+fSDm2Y0OCxqAtQOz0GLTDu1vX61xYmsb2rn91+v3xW6eMttEIpbYokKjtfJA==", 22 | "cpu": [ 23 | "x64" 24 | ], 25 | "dev": true, 26 | "optional": true, 27 | "os": [ 28 | "darwin" 29 | ], 30 | "engines": { 31 | "node": ">=16" 32 | } 33 | }, 34 | "node_modules/@cloudflare/workerd-darwin-arm64": { 35 | "version": "1.20231218.0", 36 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20231218.0.tgz", 37 | "integrity": "sha512-b39qrU1bKolCfmKFDAnX4vXcqzISkEUVE/V8sMBsFzxrIpNAbcUHBZAQPYmS/OHIGB94KjOVokvDi7J6UNurPw==", 38 | "cpu": [ 39 | "arm64" 40 | ], 41 | "dev": true, 42 | "optional": true, 43 | "os": [ 44 | "darwin" 45 | ], 46 | "engines": { 47 | "node": ">=16" 48 | } 49 | }, 50 | "node_modules/@cloudflare/workerd-linux-64": { 51 | "version": "1.20231218.0", 52 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20231218.0.tgz", 53 | "integrity": "sha512-dMUF1wA+0mybm6hHNOCgY/WMNMwomPPs4I7vvYCgwHSkch0Q2Wb7TnxQZSt8d1PK/myibaBwadrlIxpjxmpz3w==", 54 | "cpu": [ 55 | "x64" 56 | ], 57 | "dev": true, 58 | "optional": true, 59 | "os": [ 60 | "linux" 61 | ], 62 | "engines": { 63 | "node": ">=16" 64 | } 65 | }, 66 | "node_modules/@cloudflare/workerd-linux-arm64": { 67 | "version": "1.20231218.0", 68 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20231218.0.tgz", 69 | "integrity": "sha512-2s5uc8IHt0QmWyKxAr1Fy+4b8Xy0b/oUtlPnm5MrKi2gDRlZzR7JvxENPJCpCnYENydS8lzvkMiAFECPBccmyQ==", 70 | "cpu": [ 71 | "arm64" 72 | ], 73 | "dev": true, 74 | "optional": true, 75 | "os": [ 76 | "linux" 77 | ], 78 | "engines": { 79 | "node": ">=16" 80 | } 81 | }, 82 | "node_modules/@cloudflare/workerd-windows-64": { 83 | "version": "1.20231218.0", 84 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20231218.0.tgz", 85 | "integrity": "sha512-oN5hz6TXUDB5YKUN5N3QWAv6cYz9JjTZ9g16HVyoegVFEL6/zXU3tV19MBX2IvlE11ab/mRogEv9KXVIrHfKmA==", 86 | "cpu": [ 87 | "x64" 88 | ], 89 | "dev": true, 90 | "optional": true, 91 | "os": [ 92 | "win32" 93 | ], 94 | "engines": { 95 | "node": ">=16" 96 | } 97 | }, 98 | "node_modules/@cloudflare/workers-types": { 99 | "version": "4.20231218.0", 100 | "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20231218.0.tgz", 101 | "integrity": "sha512-Vs1FKjfUjXYGbCsXzkl+ITp0Iyb6QiW6+vTERTNThC+v96T0IvPVAioH4tT20rXwoxAfxh380mAaxYtTrJUNVg==", 102 | "dev": true 103 | }, 104 | "node_modules/@cspotcode/source-map-support": { 105 | "version": "0.8.1", 106 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 107 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 108 | "dev": true, 109 | "dependencies": { 110 | "@jridgewell/trace-mapping": "0.3.9" 111 | }, 112 | "engines": { 113 | "node": ">=12" 114 | } 115 | }, 116 | "node_modules/@esbuild/aix-ppc64": { 117 | "version": "0.19.11", 118 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", 119 | "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", 120 | "cpu": [ 121 | "ppc64" 122 | ], 123 | "dev": true, 124 | "optional": true, 125 | "os": [ 126 | "aix" 127 | ], 128 | "engines": { 129 | "node": ">=12" 130 | } 131 | }, 132 | "node_modules/@esbuild/android-arm": { 133 | "version": "0.19.11", 134 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", 135 | "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", 136 | "cpu": [ 137 | "arm" 138 | ], 139 | "dev": true, 140 | "optional": true, 141 | "os": [ 142 | "android" 143 | ], 144 | "engines": { 145 | "node": ">=12" 146 | } 147 | }, 148 | "node_modules/@esbuild/android-arm64": { 149 | "version": "0.19.11", 150 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", 151 | "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", 152 | "cpu": [ 153 | "arm64" 154 | ], 155 | "dev": true, 156 | "optional": true, 157 | "os": [ 158 | "android" 159 | ], 160 | "engines": { 161 | "node": ">=12" 162 | } 163 | }, 164 | "node_modules/@esbuild/android-x64": { 165 | "version": "0.19.11", 166 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", 167 | "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", 168 | "cpu": [ 169 | "x64" 170 | ], 171 | "dev": true, 172 | "optional": true, 173 | "os": [ 174 | "android" 175 | ], 176 | "engines": { 177 | "node": ">=12" 178 | } 179 | }, 180 | "node_modules/@esbuild/darwin-arm64": { 181 | "version": "0.19.11", 182 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", 183 | "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", 184 | "cpu": [ 185 | "arm64" 186 | ], 187 | "dev": true, 188 | "optional": true, 189 | "os": [ 190 | "darwin" 191 | ], 192 | "engines": { 193 | "node": ">=12" 194 | } 195 | }, 196 | "node_modules/@esbuild/darwin-x64": { 197 | "version": "0.19.11", 198 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", 199 | "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", 200 | "cpu": [ 201 | "x64" 202 | ], 203 | "dev": true, 204 | "optional": true, 205 | "os": [ 206 | "darwin" 207 | ], 208 | "engines": { 209 | "node": ">=12" 210 | } 211 | }, 212 | "node_modules/@esbuild/freebsd-arm64": { 213 | "version": "0.19.11", 214 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", 215 | "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", 216 | "cpu": [ 217 | "arm64" 218 | ], 219 | "dev": true, 220 | "optional": true, 221 | "os": [ 222 | "freebsd" 223 | ], 224 | "engines": { 225 | "node": ">=12" 226 | } 227 | }, 228 | "node_modules/@esbuild/freebsd-x64": { 229 | "version": "0.19.11", 230 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", 231 | "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", 232 | "cpu": [ 233 | "x64" 234 | ], 235 | "dev": true, 236 | "optional": true, 237 | "os": [ 238 | "freebsd" 239 | ], 240 | "engines": { 241 | "node": ">=12" 242 | } 243 | }, 244 | "node_modules/@esbuild/linux-arm": { 245 | "version": "0.19.11", 246 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", 247 | "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", 248 | "cpu": [ 249 | "arm" 250 | ], 251 | "dev": true, 252 | "optional": true, 253 | "os": [ 254 | "linux" 255 | ], 256 | "engines": { 257 | "node": ">=12" 258 | } 259 | }, 260 | "node_modules/@esbuild/linux-arm64": { 261 | "version": "0.19.11", 262 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", 263 | "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", 264 | "cpu": [ 265 | "arm64" 266 | ], 267 | "dev": true, 268 | "optional": true, 269 | "os": [ 270 | "linux" 271 | ], 272 | "engines": { 273 | "node": ">=12" 274 | } 275 | }, 276 | "node_modules/@esbuild/linux-ia32": { 277 | "version": "0.19.11", 278 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", 279 | "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", 280 | "cpu": [ 281 | "ia32" 282 | ], 283 | "dev": true, 284 | "optional": true, 285 | "os": [ 286 | "linux" 287 | ], 288 | "engines": { 289 | "node": ">=12" 290 | } 291 | }, 292 | "node_modules/@esbuild/linux-loong64": { 293 | "version": "0.19.11", 294 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", 295 | "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", 296 | "cpu": [ 297 | "loong64" 298 | ], 299 | "dev": true, 300 | "optional": true, 301 | "os": [ 302 | "linux" 303 | ], 304 | "engines": { 305 | "node": ">=12" 306 | } 307 | }, 308 | "node_modules/@esbuild/linux-mips64el": { 309 | "version": "0.19.11", 310 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", 311 | "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", 312 | "cpu": [ 313 | "mips64el" 314 | ], 315 | "dev": true, 316 | "optional": true, 317 | "os": [ 318 | "linux" 319 | ], 320 | "engines": { 321 | "node": ">=12" 322 | } 323 | }, 324 | "node_modules/@esbuild/linux-ppc64": { 325 | "version": "0.19.11", 326 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", 327 | "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", 328 | "cpu": [ 329 | "ppc64" 330 | ], 331 | "dev": true, 332 | "optional": true, 333 | "os": [ 334 | "linux" 335 | ], 336 | "engines": { 337 | "node": ">=12" 338 | } 339 | }, 340 | "node_modules/@esbuild/linux-riscv64": { 341 | "version": "0.19.11", 342 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", 343 | "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", 344 | "cpu": [ 345 | "riscv64" 346 | ], 347 | "dev": true, 348 | "optional": true, 349 | "os": [ 350 | "linux" 351 | ], 352 | "engines": { 353 | "node": ">=12" 354 | } 355 | }, 356 | "node_modules/@esbuild/linux-s390x": { 357 | "version": "0.19.11", 358 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", 359 | "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", 360 | "cpu": [ 361 | "s390x" 362 | ], 363 | "dev": true, 364 | "optional": true, 365 | "os": [ 366 | "linux" 367 | ], 368 | "engines": { 369 | "node": ">=12" 370 | } 371 | }, 372 | "node_modules/@esbuild/linux-x64": { 373 | "version": "0.19.11", 374 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", 375 | "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", 376 | "cpu": [ 377 | "x64" 378 | ], 379 | "dev": true, 380 | "optional": true, 381 | "os": [ 382 | "linux" 383 | ], 384 | "engines": { 385 | "node": ">=12" 386 | } 387 | }, 388 | "node_modules/@esbuild/netbsd-x64": { 389 | "version": "0.19.11", 390 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", 391 | "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", 392 | "cpu": [ 393 | "x64" 394 | ], 395 | "dev": true, 396 | "optional": true, 397 | "os": [ 398 | "netbsd" 399 | ], 400 | "engines": { 401 | "node": ">=12" 402 | } 403 | }, 404 | "node_modules/@esbuild/openbsd-x64": { 405 | "version": "0.19.11", 406 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", 407 | "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", 408 | "cpu": [ 409 | "x64" 410 | ], 411 | "dev": true, 412 | "optional": true, 413 | "os": [ 414 | "openbsd" 415 | ], 416 | "engines": { 417 | "node": ">=12" 418 | } 419 | }, 420 | "node_modules/@esbuild/sunos-x64": { 421 | "version": "0.19.11", 422 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", 423 | "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", 424 | "cpu": [ 425 | "x64" 426 | ], 427 | "dev": true, 428 | "optional": true, 429 | "os": [ 430 | "sunos" 431 | ], 432 | "engines": { 433 | "node": ">=12" 434 | } 435 | }, 436 | "node_modules/@esbuild/win32-arm64": { 437 | "version": "0.19.11", 438 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", 439 | "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", 440 | "cpu": [ 441 | "arm64" 442 | ], 443 | "dev": true, 444 | "optional": true, 445 | "os": [ 446 | "win32" 447 | ], 448 | "engines": { 449 | "node": ">=12" 450 | } 451 | }, 452 | "node_modules/@esbuild/win32-ia32": { 453 | "version": "0.19.11", 454 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", 455 | "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", 456 | "cpu": [ 457 | "ia32" 458 | ], 459 | "dev": true, 460 | "optional": true, 461 | "os": [ 462 | "win32" 463 | ], 464 | "engines": { 465 | "node": ">=12" 466 | } 467 | }, 468 | "node_modules/@esbuild/win32-x64": { 469 | "version": "0.19.11", 470 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", 471 | "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", 472 | "cpu": [ 473 | "x64" 474 | ], 475 | "dev": true, 476 | "optional": true, 477 | "os": [ 478 | "win32" 479 | ], 480 | "engines": { 481 | "node": ">=12" 482 | } 483 | }, 484 | "node_modules/@fastify/busboy": { 485 | "version": "2.1.0", 486 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", 487 | "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", 488 | "dev": true, 489 | "engines": { 490 | "node": ">=14" 491 | } 492 | }, 493 | "node_modules/@jridgewell/resolve-uri": { 494 | "version": "3.1.1", 495 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 496 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 497 | "dev": true, 498 | "engines": { 499 | "node": ">=6.0.0" 500 | } 501 | }, 502 | "node_modules/@jridgewell/sourcemap-codec": { 503 | "version": "1.4.15", 504 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 505 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 506 | "dev": true 507 | }, 508 | "node_modules/@jridgewell/trace-mapping": { 509 | "version": "0.3.9", 510 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 511 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 512 | "dev": true, 513 | "dependencies": { 514 | "@jridgewell/resolve-uri": "^3.0.3", 515 | "@jridgewell/sourcemap-codec": "^1.4.10" 516 | } 517 | }, 518 | "node_modules/acorn": { 519 | "version": "8.11.3", 520 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 521 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 522 | "dev": true, 523 | "bin": { 524 | "acorn": "bin/acorn" 525 | }, 526 | "engines": { 527 | "node": ">=0.4.0" 528 | } 529 | }, 530 | "node_modules/acorn-walk": { 531 | "version": "8.3.2", 532 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", 533 | "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", 534 | "dev": true, 535 | "engines": { 536 | "node": ">=0.4.0" 537 | } 538 | }, 539 | "node_modules/as-table": { 540 | "version": "1.0.55", 541 | "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", 542 | "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", 543 | "dev": true, 544 | "dependencies": { 545 | "printable-characters": "^1.0.42" 546 | } 547 | }, 548 | "node_modules/capnp-ts": { 549 | "version": "0.7.0", 550 | "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", 551 | "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", 552 | "dev": true, 553 | "dependencies": { 554 | "debug": "^4.3.1", 555 | "tslib": "^2.2.0" 556 | } 557 | }, 558 | "node_modules/clipboardy": { 559 | "version": "4.0.0", 560 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", 561 | "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", 562 | "dev": true, 563 | "dependencies": { 564 | "execa": "^8.0.1", 565 | "is-wsl": "^3.1.0", 566 | "is64bit": "^2.0.0" 567 | }, 568 | "engines": { 569 | "node": ">=18" 570 | }, 571 | "funding": { 572 | "url": "https://github.com/sponsors/sindresorhus" 573 | } 574 | }, 575 | "node_modules/cookie": { 576 | "version": "0.5.0", 577 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 578 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 579 | "dev": true, 580 | "engines": { 581 | "node": ">= 0.6" 582 | } 583 | }, 584 | "node_modules/cross-spawn": { 585 | "version": "7.0.3", 586 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 587 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 588 | "dev": true, 589 | "dependencies": { 590 | "path-key": "^3.1.0", 591 | "shebang-command": "^2.0.0", 592 | "which": "^2.0.1" 593 | }, 594 | "engines": { 595 | "node": ">= 8" 596 | } 597 | }, 598 | "node_modules/data-uri-to-buffer": { 599 | "version": "2.0.2", 600 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", 601 | "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", 602 | "dev": true 603 | }, 604 | "node_modules/debug": { 605 | "version": "4.3.4", 606 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 607 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 608 | "dev": true, 609 | "dependencies": { 610 | "ms": "2.1.2" 611 | }, 612 | "engines": { 613 | "node": ">=6.0" 614 | }, 615 | "peerDependenciesMeta": { 616 | "supports-color": { 617 | "optional": true 618 | } 619 | } 620 | }, 621 | "node_modules/esbuild": { 622 | "version": "0.19.11", 623 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", 624 | "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", 625 | "dev": true, 626 | "hasInstallScript": true, 627 | "bin": { 628 | "esbuild": "bin/esbuild" 629 | }, 630 | "engines": { 631 | "node": ">=12" 632 | }, 633 | "optionalDependencies": { 634 | "@esbuild/aix-ppc64": "0.19.11", 635 | "@esbuild/android-arm": "0.19.11", 636 | "@esbuild/android-arm64": "0.19.11", 637 | "@esbuild/android-x64": "0.19.11", 638 | "@esbuild/darwin-arm64": "0.19.11", 639 | "@esbuild/darwin-x64": "0.19.11", 640 | "@esbuild/freebsd-arm64": "0.19.11", 641 | "@esbuild/freebsd-x64": "0.19.11", 642 | "@esbuild/linux-arm": "0.19.11", 643 | "@esbuild/linux-arm64": "0.19.11", 644 | "@esbuild/linux-ia32": "0.19.11", 645 | "@esbuild/linux-loong64": "0.19.11", 646 | "@esbuild/linux-mips64el": "0.19.11", 647 | "@esbuild/linux-ppc64": "0.19.11", 648 | "@esbuild/linux-riscv64": "0.19.11", 649 | "@esbuild/linux-s390x": "0.19.11", 650 | "@esbuild/linux-x64": "0.19.11", 651 | "@esbuild/netbsd-x64": "0.19.11", 652 | "@esbuild/openbsd-x64": "0.19.11", 653 | "@esbuild/sunos-x64": "0.19.11", 654 | "@esbuild/win32-arm64": "0.19.11", 655 | "@esbuild/win32-ia32": "0.19.11", 656 | "@esbuild/win32-x64": "0.19.11" 657 | } 658 | }, 659 | "node_modules/event-target-shim": { 660 | "version": "6.0.2", 661 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz", 662 | "integrity": "sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==", 663 | "engines": { 664 | "node": ">=10.13.0" 665 | }, 666 | "funding": { 667 | "url": "https://github.com/sponsors/mysticatea" 668 | } 669 | }, 670 | "node_modules/execa": { 671 | "version": "8.0.1", 672 | "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", 673 | "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", 674 | "dev": true, 675 | "dependencies": { 676 | "cross-spawn": "^7.0.3", 677 | "get-stream": "^8.0.1", 678 | "human-signals": "^5.0.0", 679 | "is-stream": "^3.0.0", 680 | "merge-stream": "^2.0.0", 681 | "npm-run-path": "^5.1.0", 682 | "onetime": "^6.0.0", 683 | "signal-exit": "^4.1.0", 684 | "strip-final-newline": "^3.0.0" 685 | }, 686 | "engines": { 687 | "node": ">=16.17" 688 | }, 689 | "funding": { 690 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 691 | } 692 | }, 693 | "node_modules/exit-hook": { 694 | "version": "2.2.1", 695 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", 696 | "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", 697 | "dev": true, 698 | "engines": { 699 | "node": ">=6" 700 | }, 701 | "funding": { 702 | "url": "https://github.com/sponsors/sindresorhus" 703 | } 704 | }, 705 | "node_modules/fsevents": { 706 | "version": "2.3.3", 707 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 708 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 709 | "dev": true, 710 | "hasInstallScript": true, 711 | "optional": true, 712 | "os": [ 713 | "darwin" 714 | ], 715 | "engines": { 716 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 717 | } 718 | }, 719 | "node_modules/get-source": { 720 | "version": "2.0.12", 721 | "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", 722 | "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", 723 | "dev": true, 724 | "dependencies": { 725 | "data-uri-to-buffer": "^2.0.0", 726 | "source-map": "^0.6.1" 727 | } 728 | }, 729 | "node_modules/get-stream": { 730 | "version": "8.0.1", 731 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", 732 | "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", 733 | "dev": true, 734 | "engines": { 735 | "node": ">=16" 736 | }, 737 | "funding": { 738 | "url": "https://github.com/sponsors/sindresorhus" 739 | } 740 | }, 741 | "node_modules/glob-to-regexp": { 742 | "version": "0.4.1", 743 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 744 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 745 | "dev": true 746 | }, 747 | "node_modules/human-signals": { 748 | "version": "5.0.0", 749 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", 750 | "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", 751 | "dev": true, 752 | "engines": { 753 | "node": ">=16.17.0" 754 | } 755 | }, 756 | "node_modules/is-docker": { 757 | "version": "3.0.0", 758 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", 759 | "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", 760 | "dev": true, 761 | "bin": { 762 | "is-docker": "cli.js" 763 | }, 764 | "engines": { 765 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 766 | }, 767 | "funding": { 768 | "url": "https://github.com/sponsors/sindresorhus" 769 | } 770 | }, 771 | "node_modules/is-inside-container": { 772 | "version": "1.0.0", 773 | "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", 774 | "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", 775 | "dev": true, 776 | "dependencies": { 777 | "is-docker": "^3.0.0" 778 | }, 779 | "bin": { 780 | "is-inside-container": "cli.js" 781 | }, 782 | "engines": { 783 | "node": ">=14.16" 784 | }, 785 | "funding": { 786 | "url": "https://github.com/sponsors/sindresorhus" 787 | } 788 | }, 789 | "node_modules/is-stream": { 790 | "version": "3.0.0", 791 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 792 | "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 793 | "dev": true, 794 | "engines": { 795 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 796 | }, 797 | "funding": { 798 | "url": "https://github.com/sponsors/sindresorhus" 799 | } 800 | }, 801 | "node_modules/is-wsl": { 802 | "version": "3.1.0", 803 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", 804 | "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", 805 | "dev": true, 806 | "dependencies": { 807 | "is-inside-container": "^1.0.0" 808 | }, 809 | "engines": { 810 | "node": ">=16" 811 | }, 812 | "funding": { 813 | "url": "https://github.com/sponsors/sindresorhus" 814 | } 815 | }, 816 | "node_modules/is64bit": { 817 | "version": "2.0.0", 818 | "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", 819 | "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", 820 | "dev": true, 821 | "dependencies": { 822 | "system-architecture": "^0.1.0" 823 | }, 824 | "engines": { 825 | "node": ">=18" 826 | }, 827 | "funding": { 828 | "url": "https://github.com/sponsors/sindresorhus" 829 | } 830 | }, 831 | "node_modules/isexe": { 832 | "version": "2.0.0", 833 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 834 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 835 | "dev": true 836 | }, 837 | "node_modules/merge-stream": { 838 | "version": "2.0.0", 839 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 840 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 841 | "dev": true 842 | }, 843 | "node_modules/mimic-fn": { 844 | "version": "4.0.0", 845 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", 846 | "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 847 | "dev": true, 848 | "engines": { 849 | "node": ">=12" 850 | }, 851 | "funding": { 852 | "url": "https://github.com/sponsors/sindresorhus" 853 | } 854 | }, 855 | "node_modules/miniflare": { 856 | "version": "3.20231218.1", 857 | "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20231218.1.tgz", 858 | "integrity": "sha512-rl/wADgaRLpbl7EMobwbAt6BgVqkOoWsVQJAliIIUCRzC0s0xg7ZVeoV+DuQD4ffN4RySXsPnP97hp7ksc7ylA==", 859 | "dev": true, 860 | "dependencies": { 861 | "@cspotcode/source-map-support": "0.8.1", 862 | "acorn": "^8.8.0", 863 | "acorn-walk": "^8.2.0", 864 | "capnp-ts": "^0.7.0", 865 | "exit-hook": "^2.2.1", 866 | "glob-to-regexp": "^0.4.1", 867 | "stoppable": "^1.1.0", 868 | "undici": "^5.22.1", 869 | "workerd": "1.20231218.0", 870 | "ws": "^8.11.0", 871 | "youch": "^3.2.2", 872 | "zod": "^3.20.6" 873 | }, 874 | "bin": { 875 | "miniflare": "bootstrap.js" 876 | }, 877 | "engines": { 878 | "node": ">=16.13" 879 | } 880 | }, 881 | "node_modules/ms": { 882 | "version": "2.1.2", 883 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 884 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 885 | "dev": true 886 | }, 887 | "node_modules/mustache": { 888 | "version": "4.2.0", 889 | "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", 890 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", 891 | "dev": true, 892 | "bin": { 893 | "mustache": "bin/mustache" 894 | } 895 | }, 896 | "node_modules/npm-run-path": { 897 | "version": "5.2.0", 898 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", 899 | "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", 900 | "dev": true, 901 | "dependencies": { 902 | "path-key": "^4.0.0" 903 | }, 904 | "engines": { 905 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 906 | }, 907 | "funding": { 908 | "url": "https://github.com/sponsors/sindresorhus" 909 | } 910 | }, 911 | "node_modules/npm-run-path/node_modules/path-key": { 912 | "version": "4.0.0", 913 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", 914 | "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", 915 | "dev": true, 916 | "engines": { 917 | "node": ">=12" 918 | }, 919 | "funding": { 920 | "url": "https://github.com/sponsors/sindresorhus" 921 | } 922 | }, 923 | "node_modules/onetime": { 924 | "version": "6.0.0", 925 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", 926 | "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", 927 | "dev": true, 928 | "dependencies": { 929 | "mimic-fn": "^4.0.0" 930 | }, 931 | "engines": { 932 | "node": ">=12" 933 | }, 934 | "funding": { 935 | "url": "https://github.com/sponsors/sindresorhus" 936 | } 937 | }, 938 | "node_modules/partykit": { 939 | "version": "0.0.72", 940 | "resolved": "https://registry.npmjs.org/partykit/-/partykit-0.0.72.tgz", 941 | "integrity": "sha512-IMpRImUHyPl9HI1pFkL6SgrgWasvhRziK5Kse3LYPOo3u675GXYgeYJW0kpy5WSpSxdziKgohP6g3VA9RVtQdA==", 942 | "dev": true, 943 | "dependencies": { 944 | "@cloudflare/workers-types": "4.20231218.0", 945 | "clipboardy": "4.0.0", 946 | "esbuild": "0.19.11", 947 | "miniflare": "3.20231218.1", 948 | "yoga-wasm-web": "0.3.3" 949 | }, 950 | "bin": { 951 | "partykit": "dist/bin.mjs" 952 | }, 953 | "optionalDependencies": { 954 | "fsevents": "2.3.3" 955 | } 956 | }, 957 | "node_modules/partysocket": { 958 | "version": "0.0.20", 959 | "resolved": "https://registry.npmjs.org/partysocket/-/partysocket-0.0.20.tgz", 960 | "integrity": "sha512-jg9I+K+SheolEQZ1AOf55Q6KxCvfYPl+/pL7RIwh8SY6ZPa7VGPESfySKN7kMvR22yPfSEROtSH6bhdbaWPQZg==", 961 | "dependencies": { 962 | "event-target-shim": "^6.0.2" 963 | } 964 | }, 965 | "node_modules/path-key": { 966 | "version": "3.1.1", 967 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 968 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 969 | "dev": true, 970 | "engines": { 971 | "node": ">=8" 972 | } 973 | }, 974 | "node_modules/printable-characters": { 975 | "version": "1.0.42", 976 | "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", 977 | "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", 978 | "dev": true 979 | }, 980 | "node_modules/shebang-command": { 981 | "version": "2.0.0", 982 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 983 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 984 | "dev": true, 985 | "dependencies": { 986 | "shebang-regex": "^3.0.0" 987 | }, 988 | "engines": { 989 | "node": ">=8" 990 | } 991 | }, 992 | "node_modules/shebang-regex": { 993 | "version": "3.0.0", 994 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 995 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 996 | "dev": true, 997 | "engines": { 998 | "node": ">=8" 999 | } 1000 | }, 1001 | "node_modules/signal-exit": { 1002 | "version": "4.1.0", 1003 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1004 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1005 | "dev": true, 1006 | "engines": { 1007 | "node": ">=14" 1008 | }, 1009 | "funding": { 1010 | "url": "https://github.com/sponsors/isaacs" 1011 | } 1012 | }, 1013 | "node_modules/source-map": { 1014 | "version": "0.6.1", 1015 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1016 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1017 | "dev": true, 1018 | "engines": { 1019 | "node": ">=0.10.0" 1020 | } 1021 | }, 1022 | "node_modules/stacktracey": { 1023 | "version": "2.1.8", 1024 | "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", 1025 | "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", 1026 | "dev": true, 1027 | "dependencies": { 1028 | "as-table": "^1.0.36", 1029 | "get-source": "^2.0.12" 1030 | } 1031 | }, 1032 | "node_modules/stoppable": { 1033 | "version": "1.1.0", 1034 | "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", 1035 | "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", 1036 | "dev": true, 1037 | "engines": { 1038 | "node": ">=4", 1039 | "npm": ">=6" 1040 | } 1041 | }, 1042 | "node_modules/strip-final-newline": { 1043 | "version": "3.0.0", 1044 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", 1045 | "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", 1046 | "dev": true, 1047 | "engines": { 1048 | "node": ">=12" 1049 | }, 1050 | "funding": { 1051 | "url": "https://github.com/sponsors/sindresorhus" 1052 | } 1053 | }, 1054 | "node_modules/system-architecture": { 1055 | "version": "0.1.0", 1056 | "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", 1057 | "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", 1058 | "dev": true, 1059 | "engines": { 1060 | "node": ">=18" 1061 | }, 1062 | "funding": { 1063 | "url": "https://github.com/sponsors/sindresorhus" 1064 | } 1065 | }, 1066 | "node_modules/tslib": { 1067 | "version": "2.6.2", 1068 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 1069 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 1070 | "dev": true 1071 | }, 1072 | "node_modules/typescript": { 1073 | "version": "5.3.3", 1074 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 1075 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 1076 | "dev": true, 1077 | "bin": { 1078 | "tsc": "bin/tsc", 1079 | "tsserver": "bin/tsserver" 1080 | }, 1081 | "engines": { 1082 | "node": ">=14.17" 1083 | } 1084 | }, 1085 | "node_modules/undici": { 1086 | "version": "5.28.2", 1087 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", 1088 | "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", 1089 | "dev": true, 1090 | "dependencies": { 1091 | "@fastify/busboy": "^2.0.0" 1092 | }, 1093 | "engines": { 1094 | "node": ">=14.0" 1095 | } 1096 | }, 1097 | "node_modules/which": { 1098 | "version": "2.0.2", 1099 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1100 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1101 | "dev": true, 1102 | "dependencies": { 1103 | "isexe": "^2.0.0" 1104 | }, 1105 | "bin": { 1106 | "node-which": "bin/node-which" 1107 | }, 1108 | "engines": { 1109 | "node": ">= 8" 1110 | } 1111 | }, 1112 | "node_modules/workerd": { 1113 | "version": "1.20231218.0", 1114 | "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20231218.0.tgz", 1115 | "integrity": "sha512-AGIsDvqCrcwhoA9kb1hxOhVAe53/xJeaGZxL4FbYI9FvO17DZwrnqGq+6eqItJ6Cfw1ZLmf3BM+QdMWaL2bFWQ==", 1116 | "dev": true, 1117 | "hasInstallScript": true, 1118 | "bin": { 1119 | "workerd": "bin/workerd" 1120 | }, 1121 | "engines": { 1122 | "node": ">=16" 1123 | }, 1124 | "optionalDependencies": { 1125 | "@cloudflare/workerd-darwin-64": "1.20231218.0", 1126 | "@cloudflare/workerd-darwin-arm64": "1.20231218.0", 1127 | "@cloudflare/workerd-linux-64": "1.20231218.0", 1128 | "@cloudflare/workerd-linux-arm64": "1.20231218.0", 1129 | "@cloudflare/workerd-windows-64": "1.20231218.0" 1130 | } 1131 | }, 1132 | "node_modules/ws": { 1133 | "version": "8.16.0", 1134 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", 1135 | "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", 1136 | "dev": true, 1137 | "engines": { 1138 | "node": ">=10.0.0" 1139 | }, 1140 | "peerDependencies": { 1141 | "bufferutil": "^4.0.1", 1142 | "utf-8-validate": ">=5.0.2" 1143 | }, 1144 | "peerDependenciesMeta": { 1145 | "bufferutil": { 1146 | "optional": true 1147 | }, 1148 | "utf-8-validate": { 1149 | "optional": true 1150 | } 1151 | } 1152 | }, 1153 | "node_modules/yoga-wasm-web": { 1154 | "version": "0.3.3", 1155 | "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", 1156 | "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==", 1157 | "dev": true 1158 | }, 1159 | "node_modules/youch": { 1160 | "version": "3.3.3", 1161 | "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.3.tgz", 1162 | "integrity": "sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==", 1163 | "dev": true, 1164 | "dependencies": { 1165 | "cookie": "^0.5.0", 1166 | "mustache": "^4.2.0", 1167 | "stacktracey": "^2.1.8" 1168 | } 1169 | }, 1170 | "node_modules/zod": { 1171 | "version": "3.22.4", 1172 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", 1173 | "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", 1174 | "dev": true, 1175 | "funding": { 1176 | "url": "https://github.com/sponsors/colinhacks" 1177 | } 1178 | } 1179 | } 1180 | } 1181 | --------------------------------------------------------------------------------