├── .github
├── FUNDING.yml
└── workflows
│ ├── ci.yml
│ └── release.yml
├── pnpm-workspace.yaml
├── examples
└── react-with-vite-on-cloudflare
│ ├── src
│ ├── components
│ │ ├── Page
│ │ │ ├── index.tsx
│ │ │ └── Page.tsx
│ │ ├── Task
│ │ │ ├── index.tsx
│ │ │ └── Task.tsx
│ │ ├── Button
│ │ │ ├── index.tsx
│ │ │ └── Button.tsx
│ │ └── FormField
│ │ │ ├── index.tsx
│ │ │ ├── FormField.tsx
│ │ │ └── InputTextField.tsx
│ ├── index.css
│ ├── model
│ │ ├── session.ts
│ │ ├── task.ts
│ │ └── github.ts
│ ├── vite-env.d.ts
│ ├── main.tsx
│ ├── trpcUtil.ts
│ ├── router
│ │ ├── AuthGuard.tsx
│ │ └── index.tsx
│ ├── App.tsx
│ ├── pages
│ │ ├── Auth.tsx
│ │ ├── Home.tsx
│ │ ├── AddTask.tsx
│ │ └── Login.tsx
│ └── hooks
│ │ └── useForm.ts
│ ├── postcss.config.cjs
│ ├── tsconfig.node.json
│ ├── vite.config.ts
│ ├── tailwind.config.cjs
│ ├── functions
│ └── api
│ │ ├── oauth
│ │ ├── github.ts
│ │ └── auth.ts
│ │ └── [[trpc]].ts
│ ├── wrangler.toml
│ ├── .gitignore
│ ├── index.html
│ ├── .eslintrc.cjs
│ ├── README.md
│ ├── tsconfig.json
│ ├── schema.sql
│ ├── package.json
│ └── public
│ └── vite.svg
├── .gitignore
├── vite.config.ts
├── tsconfig.json
├── .changeset
├── config.json
└── README.md
├── packages
└── pages-plugin-trpc
│ ├── index.d.ts
│ ├── package.json
│ ├── CHANGELOG.md
│ └── functions
│ ├── [[path]].test.ts
│ └── [[path]].ts
├── package.json
├── README.md
└── pnpm-lock.yaml
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: toyamarinyon
2 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
3 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/Page/index.tsx:
--------------------------------------------------------------------------------
1 | export * from "./Page";
2 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/Task/index.tsx:
--------------------------------------------------------------------------------
1 | export * from "./Task";
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | examples/dist
3 | node_modules
4 | memo
5 | *.log
6 | *.sqlite3
7 | .wrangler
8 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/Button/index.tsx:
--------------------------------------------------------------------------------
1 | export * from "./Button";
2 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/FormField/index.tsx:
--------------------------------------------------------------------------------
1 | export * from "./InputTextField";
2 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config";
2 |
3 | export default defineConfig({
4 | test: {
5 | dir: "functions",
6 | },
7 | });
8 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/model/session.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | export const sessionScheme = z.object({
4 | id: z.string(),
5 | });
6 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "module": "CommonJS",
5 | "lib": ["ES2020"],
6 | "types": ["@cloudflare/workers-types"],
7 | "strict": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "esnext",
5 | "moduleResolution": "node"
6 | },
7 | "include": ["vite.config.ts"]
8 | }
9 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | interface ImportMetaEnv {
4 | readonly CF_PAGES_URL: string?;
5 | }
6 |
7 | interface ImportMeta {
8 | readonly env: ImportMetaEnv;
9 | }
10 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [require("@tailwindcss/forms")],
8 | };
9 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/functions/api/oauth/github.ts:
--------------------------------------------------------------------------------
1 | declare global {
2 | const CLIENT_ID: string;
3 | const CLIENT_SECRET: string;
4 | }
5 |
6 | export const onRequestGet: PagesFunction = async ({ request, env }) => {
7 | console.log(JSON.stringify(env, null, 2))
8 | return new Response("hello");
9 | };
10 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 | import "./index.css";
5 |
6 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
7 |
8 |
9 |
10 | );
11 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/wrangler.toml:
--------------------------------------------------------------------------------
1 | name = "react-with-vite-on-cloudflare"
2 | compatibility_date = "2022-12-26"
3 |
4 | [[ d1_databases ]]
5 | binding = "DB" # i.e. available in your Worker on env.DB
6 | database_name = "example001"
7 | database_id = "eb5a523d-6956-4e7f-942a-7a8d3b946856" # Replace with your ID from `wrangler d1 create`
8 |
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
3 | "changelog":["@changesets/changelog-github", { "repo": "toyamarinyon/cloudflare-pages-plugin-trpc" }],
4 | "commit": false,
5 | "fixed": [],
6 | "linked": [],
7 | "access": "public",
8 | "baseBranch": "main",
9 | "updateInternalDependencies": "patch",
10 | "ignore": []
11 | }
12 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | .dev.vars
15 | wrangler.prod.toml
16 |
17 | # Editor directories and files
18 | .vscode/*
19 | !.vscode/extensions.json
20 | .idea
21 | .DS_Store
22 | *.suo
23 | *.ntvs*
24 | *.njsproj
25 | *.sln
26 | *.sw?
27 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + React + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/model/task.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | export const taskScheme = z.object({
4 | id: z.number(),
5 | title: z.string(),
6 | description: z.string(),
7 | completion_datetime: z.number().optional(),
8 | });
9 | export type Task = z.infer;
10 | export const createTaskScheme = taskScheme.omit({
11 | id: true,
12 | completion_datetime: true,
13 | });
14 | export type CreateTaskPayload = z.infer;
15 |
--------------------------------------------------------------------------------
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/trpcUtil.ts:
--------------------------------------------------------------------------------
1 | // utils/trpc.ts
2 | import {
3 | createTRPCProxyClient,
4 | createTRPCReact,
5 | httpBatchLink,
6 | } from "@trpc/react-query";
7 | import type { AppRouter } from "../functions/api/[[trpc]]";
8 |
9 | export const trpc = createTRPCReact();
10 | export const links = [
11 | httpBatchLink({
12 | url: `${window.location.protocol}//${window.location.host}/api/trpc`,
13 | }),
14 | ];
15 | export const trpcClient = createTRPCProxyClient({
16 | links,
17 | });
18 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import("eslint").Linter.Config} */
2 | const config = {
3 | extends: [
4 | "eslint:recommended",
5 | "plugin:@typescript-eslint/recommended",
6 | "plugin:react-hooks/recommended",
7 | ],
8 | parser: "@typescript-eslint/parser",
9 | plugins: ["@typescript-eslint"],
10 | rules: {
11 | "@typescript-eslint/no-unused-vars": [
12 | "error",
13 | {
14 | argsIgnorePattern: "^_",
15 | varsIgnorePattern: "^_",
16 | },
17 | ],
18 | },
19 | root: true,
20 | };
21 | module.exports = config;
22 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/router/AuthGuard.tsx:
--------------------------------------------------------------------------------
1 | import { trpc } from "../trpcUtil";
2 | import { useRouter } from "../router";
3 | import { ReactNode, useEffect } from "react";
4 |
5 | export const AuthGuard = ({
6 | children,
7 | }: {
8 | children: ReactNode;
9 | }): JSX.Element => {
10 | const { router } = useRouter();
11 | const { isLoading, data } = trpc.auth.currentUser.useQuery();
12 | useEffect(() => {
13 | if (!isLoading && data?.currentUser == null) {
14 | router.push("/login");
15 | }
16 | }, [isLoading, data?.currentUser, router]);
17 | if (isLoading || data?.currentUser == null) {
18 | return <>>;
19 | }
20 | return <>{children}>;
21 | };
22 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2 | import { useState } from "react";
3 | import { Router } from "./router";
4 | import { links, trpc } from "./trpcUtil";
5 |
6 | export function App() {
7 | const [queryClient] = useState(() => new QueryClient());
8 | const [trpcClient] = useState(() =>
9 | trpc.createClient({
10 | links,
11 | })
12 | );
13 | return (
14 |
15 |
16 |
17 |
18 |
19 | );
20 | }
21 |
22 | export default App;
23 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/README.md:
--------------------------------------------------------------------------------
1 | # React with Vite on Cloudflare Pages
2 |
3 | # Getting started
4 |
5 | ## Install and authenticate
6 |
7 | ```bash
8 | # npm
9 | npm install -g wrangler
10 |
11 | # yarn
12 | yarn global add wrangler
13 | ```
14 |
15 | ## Set up Project
16 | ```bash
17 | # Clone the template
18 | npx digit toyamarinyon/cloudflare-pages-plugin-trpc/examples/react-with-vite-on-cloudflare
19 |
20 | cd react-with-vite-on-cloudflare
21 |
22 | # Install dependencies
23 | npm install
24 | ```
25 |
26 | ## Create your database
27 | ```bash
28 | wrangler d1 create DB
29 | ```
30 |
31 | ## Create table
32 | wrangler d1 execute DB --local --file=./schema.query
33 |
34 | ## Run
35 | npm run dev
36 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx",
18 | "types": ["@cloudflare/workers-types"]
19 | },
20 | "include": ["src", "functions"],
21 | "references": [{ "path": "./tsconfig.node.json" }]
22 | }
23 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/FormField/FormField.tsx:
--------------------------------------------------------------------------------
1 | import { ZodIssue } from "zod";
2 |
3 | export interface FormFieldProps {
4 | name: string;
5 | label: string;
6 | children: React.ReactNode;
7 | helperText?: string;
8 | error?: ZodIssue;
9 | }
10 | export const FormField = ({
11 | name,
12 | label,
13 | children,
14 | error,
15 | }: FormFieldProps): JSX.Element => {
16 | return (
17 |
18 |
21 |
{children}
22 | {error &&
{error.message}
}
23 |
24 | );
25 | };
26 |
--------------------------------------------------------------------------------
/packages/pages-plugin-trpc/index.d.ts:
--------------------------------------------------------------------------------
1 | import type { FetchHandlerRequestOptions } from "@trpc/server/adapters/fetch";
2 | import type { AnyRouter, inferRouterContext } from "@trpc/server";
3 |
4 | export type FetchCreateContextWithCloudflareEnvFnOptions = {
5 | req: Request;
6 | env: Env;
7 | };
8 |
9 | type FetchCreateContextWithCloudflareEnvFn = (
10 | opts: FetchCreateContextWithCloudflareEnvFnOptions
11 | ) => inferRouterContext | Promise>;
12 |
13 | export type PluginArgs = Omit<
14 | FetchHandlerRequestOptions,
15 | "req" | "createContext"
16 | > & {
17 | createContext?: FetchCreateContextWithCloudflareEnvFn;
18 | };
19 |
20 | export default function tRPCPagesPluginFunction(
21 | args: PluginArgs
22 | ): PagesFunction;
23 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "page-plugin-trpc-monorepo",
3 | "private": true,
4 | "description": "This plugin allows developers to create tRPC server on Cloudflare Page Function rapidly.",
5 | "license": "MIT",
6 | "bugs": {
7 | "url": "https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/issues"
8 | },
9 | "homepage": "https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc",
10 | "repository": {
11 | "type": "git",
12 | "url": "git+https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc.git"
13 | },
14 | "dependencies": {
15 | "@changesets/changelog-github": "^0.4.8",
16 | "@changesets/cli": "^2.26.0"
17 | },
18 | "scripts": {
19 | "build": "pnpm -r build",
20 | "test": "pnpm -r test",
21 | "version": "changeset version",
22 | "release": "pnpm build && changeset publish"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/packages/pages-plugin-trpc/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cloudflare-pages-plugin-trpc",
3 | "version": "0.3.2",
4 | "description": "Cloudflare page plugin for tRPC",
5 | "main": "dist/index.js",
6 | "types": "index.d.ts",
7 | "files": [
8 | "dist/index.js",
9 | "index.d.ts",
10 | "tsconfig.json"
11 | ],
12 | "scripts": {
13 | "test": "vitest",
14 | "build": "npx wrangler pages functions build --plugin --outfile=dist/index.js",
15 | "prepare": "npm run build"
16 | },
17 | "author": "@toyamarinyon",
18 | "license": "MIT",
19 | "devDependencies": {
20 | "@cloudflare/workers-types": "^3.19.0",
21 | "@trpc/server": "10.16.0",
22 | "esbuild": "^0.14.54",
23 | "vitest": "^0.15.2",
24 | "wrangler": "^2.12.2",
25 | "zod": "^3.21.4"
26 | },
27 | "peerDependencies": {
28 | "@trpc/server": "10.16.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/schema.sql:
--------------------------------------------------------------------------------
1 | DROP TABLE IF EXISTS tasks;
2 | DROP TABLE IF EXISTS sessions;
3 | DROP TABLE IF EXISTS users;
4 |
5 | CREATE TABLE tasks (
6 | id INTEGER PRIMARY KEY AUTOINCREMENT,
7 | user_id INTEGER NOT NULL,
8 | title TEXT,
9 | description TEXT,
10 | completion_datetime DATETIME,
11 | FOREIGN KEY (user_id) REFERENCES users(id)
12 | );
13 | DROP INDEX IF EXISTS idx_tasks_user_id;
14 | CREATE INDEX idx_tasks_user_id ON tasks(user_id);
15 |
16 |
17 | CREATE TABLE users (
18 | id INTEGER PRIMARY KEY AUTOINCREMENT,
19 | github_user_id INTEGER NOT NULL,
20 | github_oauth_token TEXT NOT NULL
21 | );
22 | DROP INDEX IF EXISTS idx_users_github_user_id;
23 | CREATE UNIQUE INDEX idx_users_github_user_id ON users(github_user_id);
24 |
25 | CREATE TABLE sessions (
26 | id CHAR(64) PRIMARY KEY,
27 | user_id INTEGER NOT NULL,
28 | FOREIGN KEY (user_id) REFERENCES users(id)
29 | );
30 | DROP INDEX IF EXISTS idx_sessions_user_id;
31 | CREATE INDEX idx_sessions_user_id ON sessions(user_id);
32 |
--------------------------------------------------------------------------------
/packages/pages-plugin-trpc/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # cloudflare-pages-plugin-trpc
2 |
3 | ## 0.3.2
4 |
5 | ### Patch Changes
6 |
7 | - [#18](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/pull/18) [`c8c6fe1`](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/commit/c8c6fe1c871ffa622e583e1bb7705d6743561579) Thanks [@toyamarinyon](https://github.com/toyamarinyon)! - support trpc 10.16.0
8 |
9 | ## 0.3.1
10 |
11 | ### Patch Changes
12 |
13 | - [#16](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/pull/16) [`228e606`](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/commit/228e606abc995d12da898d4f18546deb9470439b) Thanks [@toyamarinyon](https://github.com/toyamarinyon)! - supports trpc v10.15.0
14 |
15 | ## 0.3.0
16 |
17 | ### Minor Changes
18 |
19 | - [#14](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/pull/14) [`2b6cedb`](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/commit/2b6cedbfa83f448ddd531246109775d30f65d882) Thanks [@toyamarinyon](https://github.com/toyamarinyon)! - Monorepo
20 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/pages/Auth.tsx:
--------------------------------------------------------------------------------
1 | import { useQueryClient } from "@tanstack/react-query";
2 | import { useEffect } from "react";
3 | import { z } from "zod";
4 | import { useRouter, useSearchParam } from "../router";
5 | import { trpc } from "../trpcUtil";
6 |
7 | export const Auth = (): JSX.Element => {
8 | const { router } = useRouter();
9 |
10 | const searchParam = useSearchParam(z.object({ code: z.string() }));
11 | const { mutate } = trpc.auth.login.useMutation();
12 | const queryClient = useQueryClient();
13 |
14 | useEffect(() => {
15 | if (!searchParam.success) {
16 | return;
17 | }
18 | mutate(
19 | {
20 | oauthToken: searchParam.data.code,
21 | },
22 | {
23 | onSuccess: () => {
24 | queryClient
25 | .invalidateQueries(trpc.auth.currentUser.getQueryKey())
26 | .then(() => {
27 | router.push("/");
28 | });
29 | },
30 | }
31 | );
32 | }, [mutate, router, searchParam, queryClient]);
33 |
34 | return <>>;
35 | };
36 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | on:
2 | - push
3 | - pull_request
4 |
5 | jobs:
6 | test:
7 | runs-on: ubuntu-latest
8 |
9 | steps:
10 | - name: Checkout
11 | uses: actions/checkout@v3
12 |
13 | - name: Install Node.js
14 | uses: actions/setup-node@v3
15 | with:
16 | node-version: 18
17 |
18 | - uses: pnpm/action-setup@v2
19 | name: Install pnpm
20 | id: pnpm-install
21 | with:
22 | version: 7
23 | run_install: false
24 |
25 | - name: Get pnpm store directory
26 | id: pnpm-cache
27 | shell: bash
28 | run: |
29 | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
30 |
31 | - uses: actions/cache@v3
32 | name: Setup pnpm cache
33 | with:
34 | path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
35 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
36 | restore-keys: |
37 | ${{ runner.os }}-pnpm-store-
38 |
39 | - name: Install dependencies
40 | run: pnpm install
41 | - run: pnpm test
42 | - run: pnpm build
43 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/Page/Page.tsx:
--------------------------------------------------------------------------------
1 | import { HeartIcon } from "@heroicons/react/solid";
2 | import { ReactNode } from "react";
3 |
4 | interface Props {
5 | title: string;
6 | children: ReactNode;
7 | }
8 | export const Page = ({ title, children }: Props): JSX.Element => {
9 | return (
10 |
11 |
26 |
27 | {title}
28 | {children}
29 |
30 |
31 | );
32 | };
33 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/pages/Home.tsx:
--------------------------------------------------------------------------------
1 | import { trpc } from "../trpcUtil";
2 | import { PlusIcon } from "@heroicons/react/solid";
3 | import { Link } from "../router";
4 | import { Page } from "../components/Page";
5 | import { Task } from "../components/Task";
6 |
7 | export const Home = (): JSX.Element => {
8 | const postQuery = trpc.tasks.list.useQuery();
9 | if (postQuery.isInitialLoading) {
10 | return Loading...
;
11 | }
12 | return (
13 |
14 | {postQuery.isFetching ? (
15 | loading...
16 | ) : postQuery.data?.tasks == null || postQuery.data.tasks.length === 0 ? (
17 | <>>
18 | ) : (
19 |
20 | {postQuery.data.tasks.map((task) => (
21 | -
22 |
23 |
24 | ))}
25 |
26 | )}
27 |
31 |
32 | Add task
33 |
34 |
35 | );
36 | };
37 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/Task/Task.tsx:
--------------------------------------------------------------------------------
1 | import { CheckIcon } from "@heroicons/react/outline";
2 | import { useQueryClient } from "@tanstack/react-query";
3 | import { useCallback } from "react";
4 | import { Task as TaskModel } from "../../model/task";
5 | import { trpc } from "../../trpcUtil";
6 |
7 | type Props = TaskModel;
8 | export const Task = ({ title, description, id }: Props): JSX.Element => {
9 | const { mutateAsync } = trpc.tasks.complete.useMutation();
10 | const queryClient = useQueryClient();
11 | const completeTask = useCallback(async () => {
12 | await mutateAsync(
13 | { id },
14 | {
15 | onSuccess: () => {
16 | queryClient.invalidateQueries(trpc.tasks.list.getQueryKey());
17 | },
18 | }
19 | );
20 | }, [id, mutateAsync, queryClient]);
21 | return (
22 |
23 |
29 |
30 |
{title}
31 |
{description}
32 |
33 |
34 | );
35 | };
36 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/hooks/useForm.ts:
--------------------------------------------------------------------------------
1 | import { ChangeEventHandler, useCallback, useState } from "react";
2 | import { z, AnyZodObject } from "zod";
3 |
4 | export const useForm = (scheme: Z) => {
5 | type Scheme = z.infer;
6 | const [values, setValues] = useState({});
7 | const [errors, setErrors] = useState();
8 | const register = useCallback(
9 | (key: keyof Scheme) => {
10 | const onChange: ChangeEventHandler<
11 | HTMLInputElement | HTMLTextAreaElement
12 | > = (e) => {
13 | setValues((prev) => ({ ...prev, [key]: e.target.value }));
14 | };
15 | const value = values?.[key] ?? "";
16 | const error = errors?.issues.find((issue) =>
17 | issue.path.find((path) => path === key)
18 | );
19 | return { onChange, value, name: key, error };
20 | },
21 | [values, errors]
22 | );
23 | const handleSubmit = useCallback(
24 | (submitHandler: (value: Scheme) => Promise) =>
25 | async (e: React.FormEvent) => {
26 | e.preventDefault();
27 | const result = scheme.safeParse(values);
28 | if (result.success) {
29 | await submitHandler(result.data);
30 | } else {
31 | setErrors(result.error);
32 | }
33 | },
34 | [values, scheme]
35 | );
36 | return { register, handleSubmit, errors };
37 | };
38 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/pages/AddTask.tsx:
--------------------------------------------------------------------------------
1 | import { useCallback } from "react";
2 | import { Button } from "../components/Button";
3 | import { InputTextField } from "../components/FormField";
4 | import { Page } from "../components/Page";
5 | import { useForm } from "../hooks/useForm";
6 | import { trpc } from "../trpcUtil";
7 | import { CreateTaskPayload, createTaskScheme } from "../model/task";
8 | import { useRouter } from "../router";
9 |
10 | export const AddTask = (): JSX.Element => {
11 | const { router } = useRouter();
12 | const { mutateAsync, isLoading } = trpc.tasks.create.useMutation();
13 | const { register, handleSubmit } = useForm(createTaskScheme);
14 | const submit = useCallback(
15 | async (data: CreateTaskPayload) => {
16 | await mutateAsync(data);
17 | router.push("/")
18 |
19 | },
20 | [mutateAsync, router]
21 | );
22 |
23 | return (
24 |
25 |
38 |
39 | );
40 | };
41 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-with-vite-on-cloudflare",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "npx wrangler pages dev --local --persist --d1=DB --compatibility-date=2022-12-26 -- npm run dev:vite",
8 | "dev:vite": "vite dev",
9 | "build": "tsc && vite build"
10 | },
11 | "dependencies": {
12 | "@heroicons/react": "^1.0.6",
13 | "@tanstack/react-query": "^4.20.4",
14 | "@trpc/client": "10.7.0",
15 | "@trpc/react-query": "10.7.0",
16 | "@trpc/server": "10.7.0",
17 | "classnames": "^2.3.2",
18 | "history": "^5.3.0",
19 | "react": "^18.2.0",
20 | "react-dom": "^18.2.0",
21 | "react-ux-form": "^1.1.5",
22 | "webcrypt-session": "^0.5.1",
23 | "zod": "^3.20.2"
24 | },
25 | "devDependencies": {
26 | "@cloudflare/workers-types": "^4.20221111.1",
27 | "@tailwindcss/forms": "^0.5.3",
28 | "@types/react": "^18.0.26",
29 | "@types/react-dom": "^18.0.9",
30 | "@typescript-eslint/eslint-plugin": "^5.47.1",
31 | "@typescript-eslint/parser": "^5.47.1",
32 | "@vitejs/plugin-react": "^3.0.0",
33 | "autoprefixer": "^10.4.13",
34 | "cloudflare-pages-plugin-trpc": "0.2.1",
35 | "eslint": "^8.30.0",
36 | "eslint-plugin-react-hooks": "^4.6.0",
37 | "postcss": "^8.4.20",
38 | "tailwindcss": "^3.2.4",
39 | "typescript": "^4.9.4",
40 | "vite": "^4.0.0",
41 | "wrangler": "^2.6.2"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/model/github.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | /**
4 | * @see https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#get-the-authenticated-user
5 | */
6 | export const userScheme = z.object({
7 | login: z.string(),
8 | id: z.number(),
9 | avatar_url: z.string(),
10 | });
11 |
12 | export const getUser = async (accessToken: string) => {
13 | const response = await fetch("https://api.github.com/user", {
14 | headers: {
15 | "content-type": "application/json",
16 | "user-agent": "cloudflare-worker",
17 | accept: "application/json",
18 | Authorization: `Bearer ${accessToken}`,
19 | },
20 | });
21 | return userScheme.parse(await response.json());
22 | };
23 |
24 | export const accessTokenScheme = z.object({
25 | access_token: z.string(),
26 | token_type: z.string(),
27 | scope: z.string(),
28 | });
29 | export const getAccessToken = async ({
30 | code,
31 | clientId,
32 | clientSecret,
33 | }: {
34 | code: string;
35 | clientId: string;
36 | clientSecret: string;
37 | }) => {
38 | const response = await fetch("https://github.com/login/oauth/access_token", {
39 | method: "POST",
40 | headers: {
41 | "content-type": "application/json",
42 | "user-agent": "cloudflare-worker",
43 | accept: "application/json",
44 | },
45 | body: JSON.stringify({
46 | client_id: clientId,
47 | client_secret: clientSecret,
48 | code,
49 | }),
50 | });
51 | return accessTokenScheme.parse(await response.json()).access_token;
52 | };
53 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/Button/Button.tsx:
--------------------------------------------------------------------------------
1 | import cn from "classnames";
2 | import { ButtonHTMLAttributes, ReactNode } from "react";
3 |
4 | const Loader = (): JSX.Element => {
5 | return (
6 |
26 | );
27 | };
28 |
29 | type Props = {
30 | children: ReactNode;
31 | fullWidth?: boolean;
32 | loading?: boolean;
33 | } & Pick, "type" | "disabled">;
34 | export const Button = (props: Props): JSX.Element => {
35 | return (
36 |
54 | );
55 | };
56 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | concurrency: ${{ github.workflow }}-${{ github.ref }}
9 |
10 | jobs:
11 | release:
12 | name: Release
13 | if: ${{ (github.ref_name == 'main' || github.head_ref == 'next') && github.repository_owner == 'toyamarinyon' }}
14 | runs-on: ubuntu-latest
15 | steps:
16 | - name: Checkout Repo
17 | uses: actions/checkout@v3
18 | env:
19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
20 |
21 | - name: Setup PNPM
22 | uses: pnpm/action-setup@v2.2.1
23 | with:
24 | version: 7
25 | run_install: false
26 |
27 | - name: Setup Node
28 | uses: actions/setup-node@v3
29 | with:
30 | node-version: 18
31 | cache: 'pnpm'
32 |
33 | - name: Install Dependencies
34 | run: pnpm install
35 |
36 | - name: Create Release Pull Request or Publish to npm
37 | id: changesets
38 | uses: changesets/action@v1
39 | with:
40 | # Note: pnpm install after versioning is necessary to refresh lockfile
41 | version: pnpm run version
42 | publish: pnpm run release
43 | commit: '[ci] release'
44 | title: '[ci] release'
45 | env:
46 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
48 |
49 | # - name: Send a Slack notification if a publish happens
50 | # if: steps.changesets.outputs.published == 'true'
51 | # # You can do something when a publish happens.
52 | # run: my-slack-bot send-notification --message "A new version of ${GITHUB_REPOSITORY} was published!"
53 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/components/FormField/InputTextField.tsx:
--------------------------------------------------------------------------------
1 | import { ChangeEventHandler, useCallback } from "react";
2 | import { ZodIssue } from "zod";
3 | import { FormField, FormFieldProps } from "./FormField";
4 |
5 | type Props = Omit & {
6 | multiline?: boolean;
7 | value: string;
8 | placeholder?: string;
9 | onChange?: ChangeEventHandler;
10 | error?: ZodIssue
11 | };
12 |
13 | export const InputTextField = ({ multiline, ...props }: Props): JSX.Element => {
14 | const { name, label, onChange, error } = props;
15 | const handleChange = useCallback(
16 | (e: React.ChangeEvent) => {
17 | onChange?.(e);
18 | },
19 | [onChange]
20 | );
21 | return (
22 |
23 | {/*
24 | http://
25 | */}
26 | {multiline ? (
27 |
35 | ) : (
36 |
44 | )}
45 |
46 | );
47 | };
48 |
--------------------------------------------------------------------------------
/packages/pages-plugin-trpc/functions/[[path]].test.ts:
--------------------------------------------------------------------------------
1 | import { expect, test } from "vitest";
2 | import { initTRPC, inferAsyncReturnType } from "@trpc/server";
3 | import { z } from "zod";
4 | import { onRequest } from "./[[path]]";
5 | import { FetchCreateContextFnOptions } from "@trpc/server/adapters/fetch";
6 |
7 | const createContext = function (opts: FetchCreateContextFnOptions) {
8 | return {};
9 | };
10 | export type Context = inferAsyncReturnType;
11 |
12 | const t = initTRPC.context().create();
13 |
14 | export const router = t.router;
15 | export const middleware = t.middleware;
16 | export const publicProcedure = t.procedure;
17 | const appRouter = router({
18 | hello: publicProcedure.input(z.string().nullish()).query(({ input }) => {
19 | return `hello ${input ?? "world"}`;
20 | }),
21 | });
22 |
23 | const requestHandlerMock = {
24 | waitUntil: () => Promise.resolve(),
25 | functionPath: "[[path]]",
26 | next: async () => new Response(undefined),
27 | env: {
28 | ASSETS: { fetch: async () => new Response(undefined) },
29 | },
30 | params: {},
31 | data: {},
32 | };
33 | test("be able to response", async () => {
34 | const response = await onRequest({
35 | ...requestHandlerMock,
36 | request: new Request("http://localhost:8989/api/trpc/hello"),
37 | pluginArgs: {
38 | router: appRouter,
39 | endpoint: "/api/trpc",
40 | },
41 | });
42 | expect(response.status).toBe(200);
43 | });
44 | test("be able to response if args include createContext", async () => {
45 | const response = await onRequest({
46 | ...requestHandlerMock,
47 | request: new Request("http://localhost:8989/api/trpc/hello"),
48 | pluginArgs: {
49 | router: appRouter,
50 | endpoint: "/api/trpc",
51 | createContext,
52 | },
53 | });
54 | expect(response.status).toBe(200);
55 | });
56 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/pages/Login.tsx:
--------------------------------------------------------------------------------
1 | export const Login = (): JSX.Element => (
2 |
3 |
4 |
5 | Hello, developer.
6 |
7 | This is the todo app on the Edge with Cloudflare D1 and tRPC.
8 |
9 |
10 |
11 |
34 |
35 | );
36 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/functions/api/oauth/auth.ts:
--------------------------------------------------------------------------------
1 | import { createWebCryptSession } from "webcrypt-session";
2 | import { z } from "zod";
3 | import { getAccessToken, getUser } from "../../../src/model/github";
4 | import { sessionScheme } from "../../../src/model/session";
5 | import { Env } from "../[[trpc]]";
6 |
7 | export const onRequestGet = async ({
8 | request,
9 | env,
10 | }: EventContext>) => {
11 | const unsafeParams = Object.fromEntries(
12 | new URL(request.url).searchParams.entries()
13 | );
14 | const params = z.object({ code: z.string() }).parse(unsafeParams);
15 | const accessToken = await getAccessToken({
16 | code: params.code,
17 | clientId: env.GITHUB_OAUTH_CLIENT_ID,
18 | clientSecret: env.GITHUB_OAUTH_CLIENT_SECRET,
19 | });
20 | const githubUser = await getUser(accessToken);
21 | const user = await env.DB.prepare(
22 | "SELECT id FROM users WHERE github_user_id = ?"
23 | )
24 | .bind(githubUser.id)
25 | .all<{ id: number }>();
26 |
27 | /**
28 | * @todo use const
29 | */
30 | let dbUserId = user?.results?.[0]?.id;
31 | if (dbUserId == null) {
32 | await env.DB.prepare(
33 | "INSERT INTO users (github_user_id, github_oauth_token) VALUES (?, ?)"
34 | )
35 | .bind(githubUser.id, accessToken)
36 | .run();
37 | const { id } = await env.DB.prepare(
38 | "SELECT last_insert_rowid() as id"
39 | ).first<{ id: number }>();
40 | dbUserId = id;
41 | } else {
42 | await env.DB.prepare("UPDATE users SET github_oauth_token = ? WHERE id = ?")
43 | .bind(accessToken, dbUserId)
44 | .run();
45 | }
46 | const sessionId = crypto.randomUUID();
47 | await env.DB.prepare("INSERT INTO sessions (id, user_id) VALUES (?, ?)")
48 | .bind(sessionId, dbUserId)
49 | .run();
50 |
51 | const session = await createWebCryptSession(sessionScheme, request, {
52 | password: env.SESSION_SECRET,
53 | });
54 | await session.save({ id: sessionId });
55 | const url = new URL(request.url);
56 | const sessionValue = session.toHeaderValue() ?? "";
57 | return new Response(
58 | ``,
59 | {
60 | headers: {
61 | "Content-Type": "text/html; charset=UTF-8",
62 | "Set-Cookie": `${sessionValue}; Secure; HttpOnly; SameSite=Lax; Path=/;`,
63 | },
64 | }
65 | );
66 | };
67 |
--------------------------------------------------------------------------------
/packages/pages-plugin-trpc/functions/[[path]].ts:
--------------------------------------------------------------------------------
1 | import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
2 | import type { PluginArgs } from "..";
3 |
4 | interface ResponseHeaderFn {
5 | responseHeader: () => [key: string, value: string];
6 | }
7 |
8 | function hasResponseHeader(
9 | object: unknown
10 | ): object is Record & ResponseHeaderFn {
11 | return (
12 | typeof object === "object" &&
13 | object !== null &&
14 | "responseHeader" in object &&
15 | typeof (object as Record).responseHeader === "function"
16 | );
17 | }
18 |
19 | type tRPCPagesPluginFunction<
20 | Env = unknown,
21 | Params extends string = any,
22 | Data extends Record = Record
23 | > = PagesPluginFunction>;
24 |
25 | export const onRequest: tRPCPagesPluginFunction = async ({
26 | pluginArgs,
27 | ...event
28 | }) => {
29 | const { createContext, ...options } = pluginArgs;
30 | return fetchRequestHandler({
31 | ...options,
32 | endpoint: pluginArgs.endpoint,
33 | createContext: async ({ req }) =>
34 | createContext && (await createContext({ req, env: event.env })),
35 | req: event.request,
36 | responseMeta: (ops) => {
37 | const meta = pluginArgs.responseMeta?.(ops) ?? {};
38 | const headers = meta?.headers ?? {};
39 |
40 | /**
41 | * Follows are for the `webcrypt-session/trpc`
42 | *
43 | * The `webcrypt-session/trpc` needs to set the cookie to response header but tRPC is
44 | * not aware of the cookie, so it must be set manually using the responseMeta option,
45 | * which is messy.
46 | *
47 | * Therefore, we have prepared a hidden function called `responseHeader` in the context
48 | * provided by `webcrypt-session/trpc`, which returns the cookie header.
49 | *
50 | * Then, if responseHeader exists in context, call it and set returns to header. It
51 | * allows session management using only getWebCryptSession provided by webcrypt-session/trpc.
52 | *
53 | * Of corse it is not only for the `webcrypt-session/trpc` but for any other plugin that.
54 | */
55 | for (const [_, value] of Object.entries(ops.ctx ?? {})) {
56 | if (hasResponseHeader(value)) {
57 | const [headerKey, headerValue] = value.responseHeader();
58 | headers[headerKey] = headerValue;
59 | }
60 | }
61 | return { ...meta, headers };
62 | },
63 | });
64 | };
65 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/src/router/index.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | AnchorHTMLAttributes,
3 | createContext,
4 | DetailedHTMLProps,
5 | MouseEventHandler,
6 | useCallback,
7 | useEffect,
8 | useContext,
9 | useMemo,
10 | useState,
11 | } from "react";
12 | import { BrowserHistory, createBrowserHistory } from "history";
13 | import { Home } from "../pages/Home";
14 | import { AddTask } from "../pages/AddTask";
15 | import { Login } from "../pages/Login";
16 | import { AuthGuard } from "./AuthGuard";
17 | import { Auth } from "../pages/Auth";
18 | import { AnyZodObject, SafeParseReturnType } from "zod";
19 | interface Router {
20 | history: BrowserHistory;
21 | }
22 | const RouterContext = createContext({} as Router);
23 |
24 | type LinkProps = Omit<
25 | DetailedHTMLProps, HTMLAnchorElement>,
26 | "href" | "onClick"
27 | > & {
28 | to: string;
29 | };
30 | export const Link = ({ to, children, ...props }: LinkProps) => {
31 | const { router } = useRouter();
32 | const handleClick = useCallback>(
33 | (event) => {
34 | event.preventDefault();
35 | router.push(to);
36 | },
37 | [router, to]
38 | );
39 | return (
40 |
41 | {children}
42 |
43 | );
44 | };
45 |
46 | export const useRouter = () => {
47 | const router = useContext(RouterContext);
48 | return { router: router.history };
49 | };
50 |
51 | export function useSearchParam(scheme: T) {
52 | const router = useContext(RouterContext);
53 | const searchParam = useMemo<
54 | SafeParseReturnType
55 | >(() => {
56 | const searchParams = Object.fromEntries(
57 | new URLSearchParams(router.history.location.search).entries()
58 | );
59 | return scheme.safeParse(searchParams);
60 | }, [router.history.location.search, scheme]);
61 | return searchParam;
62 | }
63 |
64 | export const Router = (): JSX.Element => {
65 | const history = useMemo(() => createBrowserHistory(), []);
66 | const [pathname, setPathname] = useState(history.location.pathname);
67 |
68 | useEffect(() => {
69 | const cleanup = history.listen(({ location }) => {
70 | setPathname(location.pathname);
71 | });
72 | return () => {
73 | cleanup();
74 | };
75 | }, [history]);
76 | return (
77 |
78 | {pathname === "/" && (
79 |
80 |
81 |
82 | )}
83 | {pathname === "/tasks/new" && (
84 |
85 |
86 |
87 | )}
88 | {pathname === "/login" && }
89 | {pathname === "/auth" && }
90 |
91 | );
92 | };
93 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # tRPC Pages Plugin
2 |
3 | This plugin allows developers to create tRPC server on Cloudflare Page Function rapidly.
4 |
5 | You can see demo site on [https://cloudflare-pages-plugin-trpc.pages.dev](https://cloudflare-pages-plugin-trpc.pages.dev/).
6 |
7 | # How to use
8 |
9 | If you have any tRPC router, just set it into this plugin!
10 |
11 | For example, you have router as like as below:
12 |
13 | ```ts
14 | // router.ts
15 | import { initTRPC } from "@trpc/server";
16 |
17 | const t = initTRPC.create();
18 |
19 | const appRouter = t.router({
20 | hello: t.procedure.query(() => "world"),
21 | });
22 |
23 | export type AppRouter = typeof appRouter;
24 | ```
25 |
26 | You can deploy it to Cloudflare Pages Function right now.
27 |
28 | ```ts
29 | import { router } from "./router.ts";
30 | import tRPCPlugin from "cloudflare-pages-plugin";
31 |
32 | // That's it!
33 | export const onRequest: PagesFunction = tRPCPlugin({ router });
34 | ```
35 |
36 | More practical code deployed to the [demo site](https://cloudflare-pages-plugin-trpc.pages.dev) can be found in the [/examples](https://github.com/toyamarinyon/cloudflare-pages-plugin-trpc/tree/main/examples) folder.
37 |
38 | ## Interact with resources on the Workers platform
39 |
40 | Cloudflare has provided bindings to allow your Workers to interact with resources on the Workers' platform.
41 |
42 | And this plugin allows you to interact with any resources on the Workers platform from the tRPC context with only writing a bit of code.
43 |
44 | For example, if you write the below code, then you can use Cloudflare D1 from the tRPC context:
45 |
46 | ```ts
47 | import { initTRPC } from "@trpc/server";
48 | import { z } from "zod";
49 | import tRPCPlugin, {
50 | FetchCreateContextWithCloudflareEnvFnOptions,
51 | } from "cloudflare-pages-plugin-trpc";
52 |
53 | // Define binding to allow your worker to interact with Cloudflare D1.
54 | export interface Env {
55 | DB: D1Database;
56 | }
57 |
58 | // Use the `FetchCreateContextWithCloudflareEnvFnOptions` type to function parameter to createContext, and it can expose Cloudflare Env to tRPC's context.
59 | const createContext = async ({
60 | req,
61 | env,
62 | }: FetchCreateContextWithCloudflareEnvFnOptions) => {
63 | return {
64 | db: env.DB,
65 | };
66 | };
67 |
68 | // After that, it is enough to write it in the same way as for a normal tRPC
69 | type Context = inferAsyncReturnType;
70 | const t = initTRPC.context().create();
71 |
72 | const posts = t.router({
73 | create: t.procedure
74 | .input(z.object({ title: z.string(), body: z.string() }))
75 | .mutation(async ({ input, ctx }) => {
76 | // You can use Cloudflare D1 from the tRPC context!!
77 | const result = await ctx.env.DB.prepare(
78 | "INSERT INTO posts (title, body) VALUES (?, ?)"
79 | )
80 | .bind(input.title, input.body)
81 | .run();
82 |
83 | if (!result.success) {
84 | throw new Error(result.error);
85 | }
86 | }),
87 | list: t.procedure.query(async ({ ctx }) => {
88 | const { results: posts } = await ctx.env.DB.prepare(
89 | "SELECT * FROM posts"
90 | ).all();
91 | return {
92 | posts,
93 | };
94 | }),
95 | });
96 |
97 | const appRouter = t.router({
98 | posts,
99 | });
100 |
101 | export const onRequest: PagesFunction = tRPCPlugin({
102 | router: appRouter,
103 | endpoint: "/api/trpc",
104 | });
105 | ```
106 |
107 | # What is tRPC ?
108 |
109 | tRPC is library that allows End-to-end typesafe APIs made easy. There are many resource to explain tRPC concept, history and what it try to resolve, but I highly recommend that you try to [quick demo](https://sat0shi.dev/posts/trpc-hands-on) first.
110 |
111 | Of course, you can see tRPC document on [trpc.io](https://trpc.io/).
112 |
113 | # Why this plugin provide as individual package ?
114 |
115 | I've sometimes contributed tRPC, so I also created a [pull request](https://github.com/trpc/trpc/pull/1882) that this plugin into tRPC package, and I discussed @KATT who creator of tRPC and @sachinraja who maintainer of tRPC, and result, it's prefer to provide as individual package.
116 |
117 | So, I'll continue to actively follow and maintain tRPC updates.
118 |
119 | # Road map
120 |
121 | ## High
122 |
123 | - Write documents
124 |
125 | - deploy guide
126 |
127 | ## Middle
128 |
129 | - Testing
130 |
131 | I'm considering how test it.
132 |
--------------------------------------------------------------------------------
/examples/react-with-vite-on-cloudflare/functions/api/[[trpc]].ts:
--------------------------------------------------------------------------------
1 | import { inferAsyncReturnType, initTRPC } from "@trpc/server";
2 | import tRPCPlugin, {
3 | FetchCreateContextWithCloudflareEnvFnOptions,
4 | } from "cloudflare-pages-plugin-trpc";
5 | import { getWebCryptSession } from "webcrypt-session/adapters/trpc";
6 | import { z } from "zod";
7 | import { getAccessToken, getUser } from "../../src/model/github";
8 | import { sessionScheme } from "../../src/model/session";
9 | import { createTaskScheme, Task, taskScheme } from "../../src/model/task";
10 |
11 | export interface Env {
12 | DB: D1Database;
13 | GITHUB_OAUTH_CLIENT_ID: string;
14 | GITHUB_OAUTH_CLIENT_SECRET: string;
15 | SESSION_SECRET: string;
16 | }
17 | const createContext = async ({
18 | req,
19 | env,
20 | }: FetchCreateContextWithCloudflareEnvFnOptions) => {
21 | const session = await getWebCryptSession(sessionScheme, req, {
22 | password: env.SESSION_SECRET,
23 | });
24 | return {
25 | session,
26 | db: env.DB,
27 | github: {
28 | clientId: env.GITHUB_OAUTH_CLIENT_ID,
29 | clientSecret: env.GITHUB_OAUTH_CLIENT_SECRET,
30 | },
31 | };
32 | };
33 | type Context = inferAsyncReturnType;
34 | const t = initTRPC.context().create();
35 |
36 | const tasksRouter = t.router({
37 | create: t.procedure
38 | .input(createTaskScheme)
39 | .mutation(async ({ input, ctx }) => {
40 | const result = await ctx.db
41 | .prepare(
42 | "INSERT INTO tasks (title, description, user_id) SELECT ?, ?, user_id FROM sessions WHERE id = ?"
43 | )
44 | .bind(input.title, input.description, ctx.session.id)
45 | .run();
46 |
47 | if (!result.success) {
48 | throw new Error(result.error);
49 | }
50 | }),
51 | complete: t.procedure
52 | .input(taskScheme.pick({ id: true }))
53 | .mutation(async ({ input, ctx }) => {
54 | const result = await ctx.db
55 | .prepare("UPDATE tasks SET completion_datetime = ? WHERE id = ?")
56 | .bind(new Date().valueOf(), input.id)
57 | .run();
58 |
59 | if (!result.success) {
60 | throw new Error(result.error);
61 | }
62 | }),
63 | list: t.procedure.query(async ({ ctx }) => {
64 | const { results: tasks } = await ctx.db
65 | .prepare(
66 | "SELECT tasks.* FROM tasks INNER JOIN sessions ON sessions.user_id = tasks.user_id WHERE sessions.id = ? AND completion_datetime IS NULL"
67 | )
68 | .bind(ctx.session.id)
69 | .all();
70 | return {
71 | tasks,
72 | };
73 | }),
74 | });
75 |
76 | const authenticationRouter = t.router({
77 | currentUser: t.procedure.query(async ({ ctx }) => {
78 | if (ctx.session.id == null) {
79 | return { currentUser: null };
80 | }
81 | const session = await ctx.db
82 | .prepare("SELECT id, user_id FROM sessions WHERE id = ?")
83 | .bind(ctx.session.id)
84 | .first<{ id: number; user_id: number }>();
85 | if (session == null) {
86 | return { currentUser: null };
87 | }
88 |
89 | const user = await ctx.db
90 | .prepare("SELECT * FROM users WHERE id = ?")
91 | .bind(session.user_id)
92 | .first<{ github_oauth_token: string }>();
93 |
94 | /**
95 | * @todo if expired, refresh token
96 | */
97 | const githubUser = await getUser(user.github_oauth_token);
98 |
99 | return { currentUser: githubUser };
100 | }),
101 | login: t.procedure
102 | .input(z.object({ oauthToken: z.string() }))
103 | .mutation(async ({ ctx, input }) => {
104 | try {
105 | const accessToken = await getAccessToken({
106 | code: input.oauthToken,
107 | clientId: ctx.github.clientId,
108 | clientSecret: ctx.github.clientSecret,
109 | });
110 | const githubUser = await getUser(accessToken);
111 | const user = await ctx.db
112 | .prepare("SELECT id FROM users WHERE github_user_id = ?")
113 | .bind(githubUser.id)
114 | .all<{ id: number }>();
115 |
116 | /**
117 | * @todo use const
118 | */
119 | let dbUserId = user?.results?.[0]?.id;
120 | if (dbUserId == null) {
121 | await ctx.db
122 | .prepare(
123 | "INSERT INTO users (github_user_id, github_oauth_token) VALUES (?, ?)"
124 | )
125 | .bind(githubUser.id, accessToken)
126 | .run();
127 | const { id } = await ctx.db
128 | .prepare("SELECT last_insert_rowid() as id")
129 | .first<{ id: number }>();
130 | dbUserId = id;
131 | } else {
132 | await ctx.db
133 | .prepare("UPDATE users SET github_oauth_token = ? WHERE id = ?")
134 | .bind(accessToken, dbUserId)
135 | .run();
136 | }
137 | const sessionId = crypto.randomUUID();
138 | await ctx.db
139 | .prepare("INSERT INTO sessions (id, user_id) VALUES (?, ?)")
140 | .bind(sessionId, dbUserId)
141 | .run();
142 | await ctx.session.save({
143 | id: sessionId,
144 | });
145 | } catch (e) {
146 | console.log(e);
147 | console.log(JSON.stringify(e, null, 2));
148 | }
149 | }),
150 | });
151 |
152 | const appRouter = t.router({
153 | tasks: tasksRouter,
154 | auth: authenticationRouter,
155 | });
156 |
157 | export type AppRouter = typeof appRouter;
158 |
159 | export const onRequest: PagesFunction = tRPCPlugin({
160 | router: appRouter,
161 | endpoint: "/api/trpc",
162 | createContext,
163 | });
164 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | importers:
4 |
5 | .:
6 | specifiers:
7 | '@changesets/changelog-github': ^0.4.8
8 | '@changesets/cli': ^2.26.0
9 | dependencies:
10 | '@changesets/changelog-github': 0.4.8
11 | '@changesets/cli': 2.26.0
12 |
13 | packages/pages-plugin-trpc:
14 | specifiers:
15 | '@cloudflare/workers-types': ^3.19.0
16 | '@trpc/server': 10.16.0
17 | esbuild: ^0.14.54
18 | vitest: ^0.15.2
19 | wrangler: ^2.12.2
20 | zod: ^3.21.4
21 | devDependencies:
22 | '@cloudflare/workers-types': 3.19.0
23 | '@trpc/server': 10.16.0
24 | esbuild: 0.14.54
25 | vitest: 0.15.2
26 | wrangler: 2.12.2
27 | zod: 3.21.4
28 |
29 | packages:
30 |
31 | /@babel/code-frame/7.18.6:
32 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
33 | engines: {node: '>=6.9.0'}
34 | dependencies:
35 | '@babel/highlight': 7.18.6
36 | dev: false
37 |
38 | /@babel/helper-validator-identifier/7.19.1:
39 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
40 | engines: {node: '>=6.9.0'}
41 | dev: false
42 |
43 | /@babel/highlight/7.18.6:
44 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
45 | engines: {node: '>=6.9.0'}
46 | dependencies:
47 | '@babel/helper-validator-identifier': 7.19.1
48 | chalk: 2.4.2
49 | js-tokens: 4.0.0
50 | dev: false
51 |
52 | /@babel/runtime/7.21.0:
53 | resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==}
54 | engines: {node: '>=6.9.0'}
55 | dependencies:
56 | regenerator-runtime: 0.13.11
57 | dev: false
58 |
59 | /@changesets/apply-release-plan/6.1.3:
60 | resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==}
61 | dependencies:
62 | '@babel/runtime': 7.21.0
63 | '@changesets/config': 2.3.0
64 | '@changesets/get-version-range-type': 0.3.2
65 | '@changesets/git': 2.0.0
66 | '@changesets/types': 5.2.1
67 | '@manypkg/get-packages': 1.1.3
68 | detect-indent: 6.1.0
69 | fs-extra: 7.0.1
70 | lodash.startcase: 4.4.0
71 | outdent: 0.5.0
72 | prettier: 2.8.4
73 | resolve-from: 5.0.0
74 | semver: 5.7.1
75 | dev: false
76 |
77 | /@changesets/assemble-release-plan/5.2.3:
78 | resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==}
79 | dependencies:
80 | '@babel/runtime': 7.21.0
81 | '@changesets/errors': 0.1.4
82 | '@changesets/get-dependents-graph': 1.3.5
83 | '@changesets/types': 5.2.1
84 | '@manypkg/get-packages': 1.1.3
85 | semver: 5.7.1
86 | dev: false
87 |
88 | /@changesets/changelog-git/0.1.14:
89 | resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==}
90 | dependencies:
91 | '@changesets/types': 5.2.1
92 | dev: false
93 |
94 | /@changesets/changelog-github/0.4.8:
95 | resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==}
96 | dependencies:
97 | '@changesets/get-github-info': 0.5.2
98 | '@changesets/types': 5.2.1
99 | dotenv: 8.6.0
100 | transitivePeerDependencies:
101 | - encoding
102 | dev: false
103 |
104 | /@changesets/cli/2.26.0:
105 | resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==}
106 | hasBin: true
107 | dependencies:
108 | '@babel/runtime': 7.21.0
109 | '@changesets/apply-release-plan': 6.1.3
110 | '@changesets/assemble-release-plan': 5.2.3
111 | '@changesets/changelog-git': 0.1.14
112 | '@changesets/config': 2.3.0
113 | '@changesets/errors': 0.1.4
114 | '@changesets/get-dependents-graph': 1.3.5
115 | '@changesets/get-release-plan': 3.0.16
116 | '@changesets/git': 2.0.0
117 | '@changesets/logger': 0.0.5
118 | '@changesets/pre': 1.0.14
119 | '@changesets/read': 0.5.9
120 | '@changesets/types': 5.2.1
121 | '@changesets/write': 0.2.3
122 | '@manypkg/get-packages': 1.1.3
123 | '@types/is-ci': 3.0.0
124 | '@types/semver': 6.2.3
125 | ansi-colors: 4.1.3
126 | chalk: 2.4.2
127 | enquirer: 2.3.6
128 | external-editor: 3.1.0
129 | fs-extra: 7.0.1
130 | human-id: 1.0.2
131 | is-ci: 3.0.1
132 | meow: 6.1.1
133 | outdent: 0.5.0
134 | p-limit: 2.3.0
135 | preferred-pm: 3.0.3
136 | resolve-from: 5.0.0
137 | semver: 5.7.1
138 | spawndamnit: 2.0.0
139 | term-size: 2.2.1
140 | tty-table: 4.1.6
141 | dev: false
142 |
143 | /@changesets/config/2.3.0:
144 | resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==}
145 | dependencies:
146 | '@changesets/errors': 0.1.4
147 | '@changesets/get-dependents-graph': 1.3.5
148 | '@changesets/logger': 0.0.5
149 | '@changesets/types': 5.2.1
150 | '@manypkg/get-packages': 1.1.3
151 | fs-extra: 7.0.1
152 | micromatch: 4.0.5
153 | dev: false
154 |
155 | /@changesets/errors/0.1.4:
156 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==}
157 | dependencies:
158 | extendable-error: 0.1.7
159 | dev: false
160 |
161 | /@changesets/get-dependents-graph/1.3.5:
162 | resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==}
163 | dependencies:
164 | '@changesets/types': 5.2.1
165 | '@manypkg/get-packages': 1.1.3
166 | chalk: 2.4.2
167 | fs-extra: 7.0.1
168 | semver: 5.7.1
169 | dev: false
170 |
171 | /@changesets/get-github-info/0.5.2:
172 | resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==}
173 | dependencies:
174 | dataloader: 1.4.0
175 | node-fetch: 2.6.9
176 | transitivePeerDependencies:
177 | - encoding
178 | dev: false
179 |
180 | /@changesets/get-release-plan/3.0.16:
181 | resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==}
182 | dependencies:
183 | '@babel/runtime': 7.21.0
184 | '@changesets/assemble-release-plan': 5.2.3
185 | '@changesets/config': 2.3.0
186 | '@changesets/pre': 1.0.14
187 | '@changesets/read': 0.5.9
188 | '@changesets/types': 5.2.1
189 | '@manypkg/get-packages': 1.1.3
190 | dev: false
191 |
192 | /@changesets/get-version-range-type/0.3.2:
193 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==}
194 | dev: false
195 |
196 | /@changesets/git/2.0.0:
197 | resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==}
198 | dependencies:
199 | '@babel/runtime': 7.21.0
200 | '@changesets/errors': 0.1.4
201 | '@changesets/types': 5.2.1
202 | '@manypkg/get-packages': 1.1.3
203 | is-subdir: 1.2.0
204 | micromatch: 4.0.5
205 | spawndamnit: 2.0.0
206 | dev: false
207 |
208 | /@changesets/logger/0.0.5:
209 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==}
210 | dependencies:
211 | chalk: 2.4.2
212 | dev: false
213 |
214 | /@changesets/parse/0.3.16:
215 | resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==}
216 | dependencies:
217 | '@changesets/types': 5.2.1
218 | js-yaml: 3.14.1
219 | dev: false
220 |
221 | /@changesets/pre/1.0.14:
222 | resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==}
223 | dependencies:
224 | '@babel/runtime': 7.21.0
225 | '@changesets/errors': 0.1.4
226 | '@changesets/types': 5.2.1
227 | '@manypkg/get-packages': 1.1.3
228 | fs-extra: 7.0.1
229 | dev: false
230 |
231 | /@changesets/read/0.5.9:
232 | resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==}
233 | dependencies:
234 | '@babel/runtime': 7.21.0
235 | '@changesets/git': 2.0.0
236 | '@changesets/logger': 0.0.5
237 | '@changesets/parse': 0.3.16
238 | '@changesets/types': 5.2.1
239 | chalk: 2.4.2
240 | fs-extra: 7.0.1
241 | p-filter: 2.1.0
242 | dev: false
243 |
244 | /@changesets/types/4.1.0:
245 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
246 | dev: false
247 |
248 | /@changesets/types/5.2.1:
249 | resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==}
250 | dev: false
251 |
252 | /@changesets/write/0.2.3:
253 | resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==}
254 | dependencies:
255 | '@babel/runtime': 7.21.0
256 | '@changesets/types': 5.2.1
257 | fs-extra: 7.0.1
258 | human-id: 1.0.2
259 | prettier: 2.8.4
260 | dev: false
261 |
262 | /@cloudflare/kv-asset-handler/0.2.0:
263 | resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==}
264 | dependencies:
265 | mime: 3.0.0
266 | dev: true
267 |
268 | /@cloudflare/workers-types/3.19.0:
269 | resolution: {integrity: sha512-0FRcsz7Ea3jT+gc5gKPIYciykm1bbAaTpygdzpCwGt0RL+V83zWnYN30NWDW4rIHj/FHtz+MIuBKS61C8l7AzQ==}
270 | dev: true
271 |
272 | /@esbuild-plugins/node-globals-polyfill/0.1.1_esbuild@0.16.3:
273 | resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==}
274 | peerDependencies:
275 | esbuild: '*'
276 | dependencies:
277 | esbuild: 0.16.3
278 | dev: true
279 |
280 | /@esbuild-plugins/node-modules-polyfill/0.1.4_esbuild@0.16.3:
281 | resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==}
282 | peerDependencies:
283 | esbuild: '*'
284 | dependencies:
285 | esbuild: 0.16.3
286 | escape-string-regexp: 4.0.0
287 | rollup-plugin-node-polyfills: 0.2.1
288 | dev: true
289 |
290 | /@esbuild/android-arm/0.16.3:
291 | resolution: {integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==}
292 | engines: {node: '>=12'}
293 | cpu: [arm]
294 | os: [android]
295 | requiresBuild: true
296 | dev: true
297 | optional: true
298 |
299 | /@esbuild/android-arm64/0.16.3:
300 | resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==}
301 | engines: {node: '>=12'}
302 | cpu: [arm64]
303 | os: [android]
304 | requiresBuild: true
305 | dev: true
306 | optional: true
307 |
308 | /@esbuild/android-x64/0.16.3:
309 | resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==}
310 | engines: {node: '>=12'}
311 | cpu: [x64]
312 | os: [android]
313 | requiresBuild: true
314 | dev: true
315 | optional: true
316 |
317 | /@esbuild/darwin-arm64/0.16.3:
318 | resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==}
319 | engines: {node: '>=12'}
320 | cpu: [arm64]
321 | os: [darwin]
322 | requiresBuild: true
323 | dev: true
324 | optional: true
325 |
326 | /@esbuild/darwin-x64/0.16.3:
327 | resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==}
328 | engines: {node: '>=12'}
329 | cpu: [x64]
330 | os: [darwin]
331 | requiresBuild: true
332 | dev: true
333 | optional: true
334 |
335 | /@esbuild/freebsd-arm64/0.16.3:
336 | resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==}
337 | engines: {node: '>=12'}
338 | cpu: [arm64]
339 | os: [freebsd]
340 | requiresBuild: true
341 | dev: true
342 | optional: true
343 |
344 | /@esbuild/freebsd-x64/0.16.3:
345 | resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==}
346 | engines: {node: '>=12'}
347 | cpu: [x64]
348 | os: [freebsd]
349 | requiresBuild: true
350 | dev: true
351 | optional: true
352 |
353 | /@esbuild/linux-arm/0.16.3:
354 | resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==}
355 | engines: {node: '>=12'}
356 | cpu: [arm]
357 | os: [linux]
358 | requiresBuild: true
359 | dev: true
360 | optional: true
361 |
362 | /@esbuild/linux-arm64/0.16.3:
363 | resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==}
364 | engines: {node: '>=12'}
365 | cpu: [arm64]
366 | os: [linux]
367 | requiresBuild: true
368 | dev: true
369 | optional: true
370 |
371 | /@esbuild/linux-ia32/0.16.3:
372 | resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==}
373 | engines: {node: '>=12'}
374 | cpu: [ia32]
375 | os: [linux]
376 | requiresBuild: true
377 | dev: true
378 | optional: true
379 |
380 | /@esbuild/linux-loong64/0.14.54:
381 | resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==}
382 | engines: {node: '>=12'}
383 | cpu: [loong64]
384 | os: [linux]
385 | requiresBuild: true
386 | dev: true
387 | optional: true
388 |
389 | /@esbuild/linux-loong64/0.16.3:
390 | resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==}
391 | engines: {node: '>=12'}
392 | cpu: [loong64]
393 | os: [linux]
394 | requiresBuild: true
395 | dev: true
396 | optional: true
397 |
398 | /@esbuild/linux-mips64el/0.16.3:
399 | resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==}
400 | engines: {node: '>=12'}
401 | cpu: [mips64el]
402 | os: [linux]
403 | requiresBuild: true
404 | dev: true
405 | optional: true
406 |
407 | /@esbuild/linux-ppc64/0.16.3:
408 | resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==}
409 | engines: {node: '>=12'}
410 | cpu: [ppc64]
411 | os: [linux]
412 | requiresBuild: true
413 | dev: true
414 | optional: true
415 |
416 | /@esbuild/linux-riscv64/0.16.3:
417 | resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==}
418 | engines: {node: '>=12'}
419 | cpu: [riscv64]
420 | os: [linux]
421 | requiresBuild: true
422 | dev: true
423 | optional: true
424 |
425 | /@esbuild/linux-s390x/0.16.3:
426 | resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==}
427 | engines: {node: '>=12'}
428 | cpu: [s390x]
429 | os: [linux]
430 | requiresBuild: true
431 | dev: true
432 | optional: true
433 |
434 | /@esbuild/linux-x64/0.16.3:
435 | resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==}
436 | engines: {node: '>=12'}
437 | cpu: [x64]
438 | os: [linux]
439 | requiresBuild: true
440 | dev: true
441 | optional: true
442 |
443 | /@esbuild/netbsd-x64/0.16.3:
444 | resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==}
445 | engines: {node: '>=12'}
446 | cpu: [x64]
447 | os: [netbsd]
448 | requiresBuild: true
449 | dev: true
450 | optional: true
451 |
452 | /@esbuild/openbsd-x64/0.16.3:
453 | resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==}
454 | engines: {node: '>=12'}
455 | cpu: [x64]
456 | os: [openbsd]
457 | requiresBuild: true
458 | dev: true
459 | optional: true
460 |
461 | /@esbuild/sunos-x64/0.16.3:
462 | resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==}
463 | engines: {node: '>=12'}
464 | cpu: [x64]
465 | os: [sunos]
466 | requiresBuild: true
467 | dev: true
468 | optional: true
469 |
470 | /@esbuild/win32-arm64/0.16.3:
471 | resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==}
472 | engines: {node: '>=12'}
473 | cpu: [arm64]
474 | os: [win32]
475 | requiresBuild: true
476 | dev: true
477 | optional: true
478 |
479 | /@esbuild/win32-ia32/0.16.3:
480 | resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==}
481 | engines: {node: '>=12'}
482 | cpu: [ia32]
483 | os: [win32]
484 | requiresBuild: true
485 | dev: true
486 | optional: true
487 |
488 | /@esbuild/win32-x64/0.16.3:
489 | resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==}
490 | engines: {node: '>=12'}
491 | cpu: [x64]
492 | os: [win32]
493 | requiresBuild: true
494 | dev: true
495 | optional: true
496 |
497 | /@iarna/toml/2.2.5:
498 | resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
499 | dev: true
500 |
501 | /@manypkg/find-root/1.1.0:
502 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
503 | dependencies:
504 | '@babel/runtime': 7.21.0
505 | '@types/node': 12.20.55
506 | find-up: 4.1.0
507 | fs-extra: 8.1.0
508 | dev: false
509 |
510 | /@manypkg/get-packages/1.1.3:
511 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
512 | dependencies:
513 | '@babel/runtime': 7.21.0
514 | '@changesets/types': 4.1.0
515 | '@manypkg/find-root': 1.1.0
516 | fs-extra: 8.1.0
517 | globby: 11.1.0
518 | read-yaml-file: 1.1.0
519 | dev: false
520 |
521 | /@miniflare/cache/2.12.1:
522 | resolution: {integrity: sha512-6Pj5avy53qULTa13gWxGTDBuwX0yAzr4Zkzb0ZBh40bcbHp4vRkOk7PvHBoxV0M76JxQDHotGaW+ik510z5Xrg==}
523 | engines: {node: '>=16.13'}
524 | dependencies:
525 | '@miniflare/core': 2.12.1
526 | '@miniflare/shared': 2.12.1
527 | http-cache-semantics: 4.1.1
528 | undici: 5.20.0
529 | dev: true
530 |
531 | /@miniflare/cli-parser/2.12.1:
532 | resolution: {integrity: sha512-iCh4wEyQow8Dha+zpKhjCCXEp6QWbsvE18H5CgeUFT1pX4B+akYIHzdn47Cr5zpuYyjenoL78bAz0IIHIeyeWw==}
533 | engines: {node: '>=16.13'}
534 | dependencies:
535 | '@miniflare/shared': 2.12.1
536 | kleur: 4.1.5
537 | dev: true
538 |
539 | /@miniflare/core/2.12.1:
540 | resolution: {integrity: sha512-729xXL6uoMgtja5J7B2WdWAjFfxb74Pk2QqM3VqkWqY3XNlKWI7+ofvb8S6kI6uFEPGj4ma263uYkEAgsvzBWg==}
541 | engines: {node: '>=16.13'}
542 | dependencies:
543 | '@iarna/toml': 2.2.5
544 | '@miniflare/queues': 2.12.1
545 | '@miniflare/shared': 2.12.1
546 | '@miniflare/watcher': 2.12.1
547 | busboy: 1.6.0
548 | dotenv: 10.0.0
549 | kleur: 4.1.5
550 | set-cookie-parser: 2.5.1
551 | undici: 5.20.0
552 | urlpattern-polyfill: 4.0.3
553 | dev: true
554 |
555 | /@miniflare/d1/2.12.1:
556 | resolution: {integrity: sha512-2ldT7xEC7KxoaEJ7nCY9/AB/xwPjbm3mrmpiIspT0b5OgS640Pe9EU4c5bSmzGoUbLvwF+jb+LhLE1QaEbWkBw==}
557 | engines: {node: '>=16.7'}
558 | dependencies:
559 | '@miniflare/core': 2.12.1
560 | '@miniflare/shared': 2.12.1
561 | dev: true
562 |
563 | /@miniflare/durable-objects/2.12.1:
564 | resolution: {integrity: sha512-/n9WIxvHavVUgT+Nf280wNOcmJQBG+eZuqOlORWW9RmXXbAzqzS2Mk2lmRDCzbq3xTXAcsndx6cdarQLNRUzBg==}
565 | engines: {node: '>=16.13'}
566 | dependencies:
567 | '@miniflare/core': 2.12.1
568 | '@miniflare/shared': 2.12.1
569 | '@miniflare/storage-memory': 2.12.1
570 | undici: 5.20.0
571 | dev: true
572 |
573 | /@miniflare/html-rewriter/2.12.1:
574 | resolution: {integrity: sha512-yezYzGRBxy7d/oomAUEftdnL4fq6YIek82LtQlXgzcdcbBDnkYADj8WqGV41tAI+V2+rjrFEc1RuCXx/I1yISw==}
575 | engines: {node: '>=16.13'}
576 | dependencies:
577 | '@miniflare/core': 2.12.1
578 | '@miniflare/shared': 2.12.1
579 | html-rewriter-wasm: 0.4.1
580 | undici: 5.20.0
581 | dev: true
582 |
583 | /@miniflare/http-server/2.12.1:
584 | resolution: {integrity: sha512-nC6POgDKFHxnyXbKCdR9FGZSsu5frXQUETvSVcoETd5RP+Iws0xZ+XkzVMqiiIZk3ifUC9LzdGUOD0J2PlhHJw==}
585 | engines: {node: '>=16.13'}
586 | dependencies:
587 | '@miniflare/core': 2.12.1
588 | '@miniflare/shared': 2.12.1
589 | '@miniflare/web-sockets': 2.12.1
590 | kleur: 4.1.5
591 | selfsigned: 2.1.1
592 | undici: 5.20.0
593 | ws: 8.13.0
594 | youch: 2.2.2
595 | transitivePeerDependencies:
596 | - bufferutil
597 | - utf-8-validate
598 | dev: true
599 |
600 | /@miniflare/kv/2.12.1:
601 | resolution: {integrity: sha512-8h8wLDMEaWaKAqYTwrckOcNjAz52bzDyLmU4t/lh1/AQOE9eSg/T+H6xQCv0fPGrWPeHmG8iXaFI1JQ+CtkcHw==}
602 | engines: {node: '>=16.13'}
603 | dependencies:
604 | '@miniflare/shared': 2.12.1
605 | dev: true
606 |
607 | /@miniflare/queues/2.12.1:
608 | resolution: {integrity: sha512-L/YJkWWvg1RS3sCB5DLZOsf/kAmkwhvshpl+LmGQT7z/PYXlplbBmuhPwVBXaHqZdYE7063XfTzgAIhVPoo72Q==}
609 | engines: {node: '>=16.7'}
610 | dependencies:
611 | '@miniflare/shared': 2.12.1
612 | dev: true
613 |
614 | /@miniflare/r2/2.12.1:
615 | resolution: {integrity: sha512-xp8fSSap6o5xSAWp9BtOGgZ4tuf5iHTqrfbAH66LF151j8y69eQtQJ5pxpSvrDJok/F1VOLGc4ihSLmUqxyXhw==}
616 | engines: {node: '>=16.13'}
617 | dependencies:
618 | '@miniflare/shared': 2.12.1
619 | undici: 5.20.0
620 | dev: true
621 |
622 | /@miniflare/runner-vm/2.12.1:
623 | resolution: {integrity: sha512-pGY/aoQzbvyXOGR6/d3hv5/QsyUXGGbOxAyXdvjlz8h7ZiKOX4dBRS5TUAPS0kb/ofUWCyoYJi8dCVwRGdTYRw==}
624 | engines: {node: '>=16.13'}
625 | dependencies:
626 | '@miniflare/shared': 2.12.1
627 | dev: true
628 |
629 | /@miniflare/scheduler/2.12.1:
630 | resolution: {integrity: sha512-AbOP8YpWNqR/t7zMuTmn6q27USCDBQaYaULRVaNNfCsxMTXAUjYfM85iFvnV9mshw+K0HIEU4zR4Xjd2FeJubg==}
631 | engines: {node: '>=16.13'}
632 | dependencies:
633 | '@miniflare/core': 2.12.1
634 | '@miniflare/shared': 2.12.1
635 | cron-schedule: 3.0.6
636 | dev: true
637 |
638 | /@miniflare/shared/2.12.1:
639 | resolution: {integrity: sha512-N8sHNM5vcvjvO+znQ7Mbqf0FChRlWxy/svUpQf1GGpii9aTXzOTWB+WkFvJrJNx44SUReEGxUAzxpdeWnHahmA==}
640 | engines: {node: '>=16.13'}
641 | dependencies:
642 | '@types/better-sqlite3': 7.6.3
643 | kleur: 4.1.5
644 | npx-import: 1.1.4
645 | picomatch: 2.3.1
646 | dev: true
647 |
648 | /@miniflare/sites/2.12.1:
649 | resolution: {integrity: sha512-LW4r82cfGJvmJFwoBdXfsRcdDggVf8ppjMZGU3zk7xo+u5yD1uHzO2Arf3XbKNiOp7f9WyC/mXxs4zxF605iLA==}
650 | engines: {node: '>=16.13'}
651 | dependencies:
652 | '@miniflare/kv': 2.12.1
653 | '@miniflare/shared': 2.12.1
654 | '@miniflare/storage-file': 2.12.1
655 | dev: true
656 |
657 | /@miniflare/storage-file/2.12.1:
658 | resolution: {integrity: sha512-eq5wzBwxQC5GVxBfji9svb9FRdSOlA8D8DTgzL29DDjuOYtG9j8ydOlo0J7/2MB/Gq0HYFUHYWHhrklzzwdKQQ==}
659 | engines: {node: '>=16.13'}
660 | dependencies:
661 | '@miniflare/shared': 2.12.1
662 | '@miniflare/storage-memory': 2.12.1
663 | dev: true
664 |
665 | /@miniflare/storage-memory/2.12.1:
666 | resolution: {integrity: sha512-E9jbrX0L9N7YIHXj2G4td1EKboVLBdHkwh7RvKEZBwOhxDze5h+jMOou57NIbfC5kLOZPOC1fGXjzpp7xUUE6w==}
667 | engines: {node: '>=16.13'}
668 | dependencies:
669 | '@miniflare/shared': 2.12.1
670 | dev: true
671 |
672 | /@miniflare/watcher/2.12.1:
673 | resolution: {integrity: sha512-3IG/6g38id5ppbZHB/gMfEvoIEFYdmTTLRsHaPNyWIk/r3LMhHLluVsMcs+Lr/fphkPk6Diou4cBLD2GeeoP7A==}
674 | engines: {node: '>=16.13'}
675 | dependencies:
676 | '@miniflare/shared': 2.12.1
677 | dev: true
678 |
679 | /@miniflare/web-sockets/2.12.1:
680 | resolution: {integrity: sha512-Z+zqZqhVdrbmTQf+ETP5H1TPdXC2tUiYPiHRLWTHUks6VVkuwnUtIKxNPBEBXjCjKYYEm8VLclUAt+0yTucLWA==}
681 | engines: {node: '>=16.13'}
682 | dependencies:
683 | '@miniflare/core': 2.12.1
684 | '@miniflare/shared': 2.12.1
685 | undici: 5.20.0
686 | ws: 8.13.0
687 | transitivePeerDependencies:
688 | - bufferutil
689 | - utf-8-validate
690 | dev: true
691 |
692 | /@nodelib/fs.scandir/2.1.5:
693 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
694 | engines: {node: '>= 8'}
695 | dependencies:
696 | '@nodelib/fs.stat': 2.0.5
697 | run-parallel: 1.2.0
698 | dev: false
699 |
700 | /@nodelib/fs.stat/2.0.5:
701 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
702 | engines: {node: '>= 8'}
703 | dev: false
704 |
705 | /@nodelib/fs.walk/1.2.8:
706 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
707 | engines: {node: '>= 8'}
708 | dependencies:
709 | '@nodelib/fs.scandir': 2.1.5
710 | fastq: 1.15.0
711 | dev: false
712 |
713 | /@trpc/server/10.16.0:
714 | resolution: {integrity: sha512-lCUq7AB7vcgrNbaN+xP/AN62OjKDgrRyG7fTDPv5K633ut7KJ3m57qs60VRBOgp9vow6elAg51pKFFDtPHbTRA==}
715 | dev: true
716 |
717 | /@types/better-sqlite3/7.6.3:
718 | resolution: {integrity: sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==}
719 | dependencies:
720 | '@types/node': 18.15.0
721 | dev: true
722 |
723 | /@types/chai-subset/1.3.3:
724 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==}
725 | dependencies:
726 | '@types/chai': 4.3.4
727 | dev: true
728 |
729 | /@types/chai/4.3.4:
730 | resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==}
731 | dev: true
732 |
733 | /@types/is-ci/3.0.0:
734 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==}
735 | dependencies:
736 | ci-info: 3.8.0
737 | dev: false
738 |
739 | /@types/minimist/1.2.2:
740 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
741 | dev: false
742 |
743 | /@types/node/12.20.55:
744 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
745 | dev: false
746 |
747 | /@types/node/18.15.0:
748 | resolution: {integrity: sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==}
749 | dev: true
750 |
751 | /@types/normalize-package-data/2.4.1:
752 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
753 | dev: false
754 |
755 | /@types/semver/6.2.3:
756 | resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==}
757 | dev: false
758 |
759 | /@types/stack-trace/0.0.29:
760 | resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==}
761 | dev: true
762 |
763 | /ansi-colors/4.1.3:
764 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
765 | engines: {node: '>=6'}
766 | dev: false
767 |
768 | /ansi-regex/5.0.1:
769 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
770 | engines: {node: '>=8'}
771 | dev: false
772 |
773 | /ansi-styles/3.2.1:
774 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
775 | engines: {node: '>=4'}
776 | dependencies:
777 | color-convert: 1.9.3
778 | dev: false
779 |
780 | /ansi-styles/4.3.0:
781 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
782 | engines: {node: '>=8'}
783 | dependencies:
784 | color-convert: 2.0.1
785 | dev: false
786 |
787 | /anymatch/3.1.3:
788 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
789 | engines: {node: '>= 8'}
790 | dependencies:
791 | normalize-path: 3.0.0
792 | picomatch: 2.3.1
793 | dev: true
794 |
795 | /argparse/1.0.10:
796 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
797 | dependencies:
798 | sprintf-js: 1.0.3
799 | dev: false
800 |
801 | /array-union/2.1.0:
802 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
803 | engines: {node: '>=8'}
804 | dev: false
805 |
806 | /array.prototype.flat/1.3.1:
807 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
808 | engines: {node: '>= 0.4'}
809 | dependencies:
810 | call-bind: 1.0.2
811 | define-properties: 1.2.0
812 | es-abstract: 1.21.1
813 | es-shim-unscopables: 1.0.0
814 | dev: false
815 |
816 | /arrify/1.0.1:
817 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
818 | engines: {node: '>=0.10.0'}
819 | dev: false
820 |
821 | /assertion-error/1.1.0:
822 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
823 | dev: true
824 |
825 | /available-typed-arrays/1.0.5:
826 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
827 | engines: {node: '>= 0.4'}
828 | dev: false
829 |
830 | /better-path-resolve/1.0.0:
831 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
832 | engines: {node: '>=4'}
833 | dependencies:
834 | is-windows: 1.0.2
835 | dev: false
836 |
837 | /binary-extensions/2.2.0:
838 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
839 | engines: {node: '>=8'}
840 | dev: true
841 |
842 | /blake3-wasm/2.1.5:
843 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
844 | dev: true
845 |
846 | /braces/3.0.2:
847 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
848 | engines: {node: '>=8'}
849 | dependencies:
850 | fill-range: 7.0.1
851 |
852 | /breakword/1.0.5:
853 | resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==}
854 | dependencies:
855 | wcwidth: 1.0.1
856 | dev: false
857 |
858 | /buffer-from/1.1.2:
859 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
860 | dev: true
861 |
862 | /builtins/5.0.1:
863 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
864 | dependencies:
865 | semver: 7.3.8
866 | dev: true
867 |
868 | /busboy/1.6.0:
869 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
870 | engines: {node: '>=10.16.0'}
871 | dependencies:
872 | streamsearch: 1.1.0
873 | dev: true
874 |
875 | /call-bind/1.0.2:
876 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
877 | dependencies:
878 | function-bind: 1.1.1
879 | get-intrinsic: 1.2.0
880 | dev: false
881 |
882 | /camelcase-keys/6.2.2:
883 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
884 | engines: {node: '>=8'}
885 | dependencies:
886 | camelcase: 5.3.1
887 | map-obj: 4.3.0
888 | quick-lru: 4.0.1
889 | dev: false
890 |
891 | /camelcase/5.3.1:
892 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
893 | engines: {node: '>=6'}
894 | dev: false
895 |
896 | /chai/4.3.7:
897 | resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==}
898 | engines: {node: '>=4'}
899 | dependencies:
900 | assertion-error: 1.1.0
901 | check-error: 1.0.2
902 | deep-eql: 4.1.3
903 | get-func-name: 2.0.0
904 | loupe: 2.3.6
905 | pathval: 1.1.1
906 | type-detect: 4.0.8
907 | dev: true
908 |
909 | /chalk/2.4.2:
910 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
911 | engines: {node: '>=4'}
912 | dependencies:
913 | ansi-styles: 3.2.1
914 | escape-string-regexp: 1.0.5
915 | supports-color: 5.5.0
916 | dev: false
917 |
918 | /chalk/4.1.2:
919 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
920 | engines: {node: '>=10'}
921 | dependencies:
922 | ansi-styles: 4.3.0
923 | supports-color: 7.2.0
924 | dev: false
925 |
926 | /chardet/0.7.0:
927 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
928 | dev: false
929 |
930 | /check-error/1.0.2:
931 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
932 | dev: true
933 |
934 | /chokidar/3.5.3:
935 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
936 | engines: {node: '>= 8.10.0'}
937 | dependencies:
938 | anymatch: 3.1.3
939 | braces: 3.0.2
940 | glob-parent: 5.1.2
941 | is-binary-path: 2.1.0
942 | is-glob: 4.0.3
943 | normalize-path: 3.0.0
944 | readdirp: 3.6.0
945 | optionalDependencies:
946 | fsevents: 2.3.2
947 | dev: true
948 |
949 | /ci-info/3.8.0:
950 | resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
951 | engines: {node: '>=8'}
952 | dev: false
953 |
954 | /cliui/6.0.0:
955 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
956 | dependencies:
957 | string-width: 4.2.3
958 | strip-ansi: 6.0.1
959 | wrap-ansi: 6.2.0
960 | dev: false
961 |
962 | /cliui/8.0.1:
963 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
964 | engines: {node: '>=12'}
965 | dependencies:
966 | string-width: 4.2.3
967 | strip-ansi: 6.0.1
968 | wrap-ansi: 7.0.0
969 | dev: false
970 |
971 | /clone/1.0.4:
972 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
973 | engines: {node: '>=0.8'}
974 | dev: false
975 |
976 | /color-convert/1.9.3:
977 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
978 | dependencies:
979 | color-name: 1.1.3
980 | dev: false
981 |
982 | /color-convert/2.0.1:
983 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
984 | engines: {node: '>=7.0.0'}
985 | dependencies:
986 | color-name: 1.1.4
987 | dev: false
988 |
989 | /color-name/1.1.3:
990 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
991 | dev: false
992 |
993 | /color-name/1.1.4:
994 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
995 | dev: false
996 |
997 | /cookie/0.4.2:
998 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
999 | engines: {node: '>= 0.6'}
1000 | dev: true
1001 |
1002 | /cron-schedule/3.0.6:
1003 | resolution: {integrity: sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==}
1004 | dev: true
1005 |
1006 | /cross-spawn/5.1.0:
1007 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
1008 | dependencies:
1009 | lru-cache: 4.1.5
1010 | shebang-command: 1.2.0
1011 | which: 1.3.1
1012 | dev: false
1013 |
1014 | /cross-spawn/7.0.3:
1015 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1016 | engines: {node: '>= 8'}
1017 | dependencies:
1018 | path-key: 3.1.1
1019 | shebang-command: 2.0.0
1020 | which: 2.0.2
1021 | dev: true
1022 |
1023 | /csv-generate/3.4.3:
1024 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
1025 | dev: false
1026 |
1027 | /csv-parse/4.16.3:
1028 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==}
1029 | dev: false
1030 |
1031 | /csv-stringify/5.6.5:
1032 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==}
1033 | dev: false
1034 |
1035 | /csv/5.5.3:
1036 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==}
1037 | engines: {node: '>= 0.1.90'}
1038 | dependencies:
1039 | csv-generate: 3.4.3
1040 | csv-parse: 4.16.3
1041 | csv-stringify: 5.6.5
1042 | stream-transform: 2.1.3
1043 | dev: false
1044 |
1045 | /dataloader/1.4.0:
1046 | resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==}
1047 | dev: false
1048 |
1049 | /debug/4.3.4:
1050 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1051 | engines: {node: '>=6.0'}
1052 | peerDependencies:
1053 | supports-color: '*'
1054 | peerDependenciesMeta:
1055 | supports-color:
1056 | optional: true
1057 | dependencies:
1058 | ms: 2.1.2
1059 | dev: true
1060 |
1061 | /decamelize-keys/1.1.1:
1062 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
1063 | engines: {node: '>=0.10.0'}
1064 | dependencies:
1065 | decamelize: 1.2.0
1066 | map-obj: 1.0.1
1067 | dev: false
1068 |
1069 | /decamelize/1.2.0:
1070 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
1071 | engines: {node: '>=0.10.0'}
1072 | dev: false
1073 |
1074 | /deep-eql/4.1.3:
1075 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
1076 | engines: {node: '>=6'}
1077 | dependencies:
1078 | type-detect: 4.0.8
1079 | dev: true
1080 |
1081 | /defaults/1.0.4:
1082 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
1083 | dependencies:
1084 | clone: 1.0.4
1085 | dev: false
1086 |
1087 | /define-properties/1.2.0:
1088 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
1089 | engines: {node: '>= 0.4'}
1090 | dependencies:
1091 | has-property-descriptors: 1.0.0
1092 | object-keys: 1.1.1
1093 | dev: false
1094 |
1095 | /detect-indent/6.1.0:
1096 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
1097 | engines: {node: '>=8'}
1098 | dev: false
1099 |
1100 | /dir-glob/3.0.1:
1101 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1102 | engines: {node: '>=8'}
1103 | dependencies:
1104 | path-type: 4.0.0
1105 | dev: false
1106 |
1107 | /dotenv/10.0.0:
1108 | resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==}
1109 | engines: {node: '>=10'}
1110 | dev: true
1111 |
1112 | /dotenv/8.6.0:
1113 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
1114 | engines: {node: '>=10'}
1115 | dev: false
1116 |
1117 | /emoji-regex/8.0.0:
1118 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1119 | dev: false
1120 |
1121 | /enquirer/2.3.6:
1122 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
1123 | engines: {node: '>=8.6'}
1124 | dependencies:
1125 | ansi-colors: 4.1.3
1126 | dev: false
1127 |
1128 | /error-ex/1.3.2:
1129 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1130 | dependencies:
1131 | is-arrayish: 0.2.1
1132 | dev: false
1133 |
1134 | /es-abstract/1.21.1:
1135 | resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==}
1136 | engines: {node: '>= 0.4'}
1137 | dependencies:
1138 | available-typed-arrays: 1.0.5
1139 | call-bind: 1.0.2
1140 | es-set-tostringtag: 2.0.1
1141 | es-to-primitive: 1.2.1
1142 | function-bind: 1.1.1
1143 | function.prototype.name: 1.1.5
1144 | get-intrinsic: 1.2.0
1145 | get-symbol-description: 1.0.0
1146 | globalthis: 1.0.3
1147 | gopd: 1.0.1
1148 | has: 1.0.3
1149 | has-property-descriptors: 1.0.0
1150 | has-proto: 1.0.1
1151 | has-symbols: 1.0.3
1152 | internal-slot: 1.0.5
1153 | is-array-buffer: 3.0.2
1154 | is-callable: 1.2.7
1155 | is-negative-zero: 2.0.2
1156 | is-regex: 1.1.4
1157 | is-shared-array-buffer: 1.0.2
1158 | is-string: 1.0.7
1159 | is-typed-array: 1.1.10
1160 | is-weakref: 1.0.2
1161 | object-inspect: 1.12.3
1162 | object-keys: 1.1.1
1163 | object.assign: 4.1.4
1164 | regexp.prototype.flags: 1.4.3
1165 | safe-regex-test: 1.0.0
1166 | string.prototype.trimend: 1.0.6
1167 | string.prototype.trimstart: 1.0.6
1168 | typed-array-length: 1.0.4
1169 | unbox-primitive: 1.0.2
1170 | which-typed-array: 1.1.9
1171 | dev: false
1172 |
1173 | /es-set-tostringtag/2.0.1:
1174 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
1175 | engines: {node: '>= 0.4'}
1176 | dependencies:
1177 | get-intrinsic: 1.2.0
1178 | has: 1.0.3
1179 | has-tostringtag: 1.0.0
1180 | dev: false
1181 |
1182 | /es-shim-unscopables/1.0.0:
1183 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1184 | dependencies:
1185 | has: 1.0.3
1186 | dev: false
1187 |
1188 | /es-to-primitive/1.2.1:
1189 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1190 | engines: {node: '>= 0.4'}
1191 | dependencies:
1192 | is-callable: 1.2.7
1193 | is-date-object: 1.0.5
1194 | is-symbol: 1.0.4
1195 | dev: false
1196 |
1197 | /esbuild-android-64/0.14.54:
1198 | resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
1199 | engines: {node: '>=12'}
1200 | cpu: [x64]
1201 | os: [android]
1202 | requiresBuild: true
1203 | dev: true
1204 | optional: true
1205 |
1206 | /esbuild-android-arm64/0.14.54:
1207 | resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==}
1208 | engines: {node: '>=12'}
1209 | cpu: [arm64]
1210 | os: [android]
1211 | requiresBuild: true
1212 | dev: true
1213 | optional: true
1214 |
1215 | /esbuild-darwin-64/0.14.54:
1216 | resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==}
1217 | engines: {node: '>=12'}
1218 | cpu: [x64]
1219 | os: [darwin]
1220 | requiresBuild: true
1221 | dev: true
1222 | optional: true
1223 |
1224 | /esbuild-darwin-arm64/0.14.54:
1225 | resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==}
1226 | engines: {node: '>=12'}
1227 | cpu: [arm64]
1228 | os: [darwin]
1229 | requiresBuild: true
1230 | dev: true
1231 | optional: true
1232 |
1233 | /esbuild-freebsd-64/0.14.54:
1234 | resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==}
1235 | engines: {node: '>=12'}
1236 | cpu: [x64]
1237 | os: [freebsd]
1238 | requiresBuild: true
1239 | dev: true
1240 | optional: true
1241 |
1242 | /esbuild-freebsd-arm64/0.14.54:
1243 | resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==}
1244 | engines: {node: '>=12'}
1245 | cpu: [arm64]
1246 | os: [freebsd]
1247 | requiresBuild: true
1248 | dev: true
1249 | optional: true
1250 |
1251 | /esbuild-linux-32/0.14.54:
1252 | resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==}
1253 | engines: {node: '>=12'}
1254 | cpu: [ia32]
1255 | os: [linux]
1256 | requiresBuild: true
1257 | dev: true
1258 | optional: true
1259 |
1260 | /esbuild-linux-64/0.14.54:
1261 | resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==}
1262 | engines: {node: '>=12'}
1263 | cpu: [x64]
1264 | os: [linux]
1265 | requiresBuild: true
1266 | dev: true
1267 | optional: true
1268 |
1269 | /esbuild-linux-arm/0.14.54:
1270 | resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==}
1271 | engines: {node: '>=12'}
1272 | cpu: [arm]
1273 | os: [linux]
1274 | requiresBuild: true
1275 | dev: true
1276 | optional: true
1277 |
1278 | /esbuild-linux-arm64/0.14.54:
1279 | resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==}
1280 | engines: {node: '>=12'}
1281 | cpu: [arm64]
1282 | os: [linux]
1283 | requiresBuild: true
1284 | dev: true
1285 | optional: true
1286 |
1287 | /esbuild-linux-mips64le/0.14.54:
1288 | resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==}
1289 | engines: {node: '>=12'}
1290 | cpu: [mips64el]
1291 | os: [linux]
1292 | requiresBuild: true
1293 | dev: true
1294 | optional: true
1295 |
1296 | /esbuild-linux-ppc64le/0.14.54:
1297 | resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==}
1298 | engines: {node: '>=12'}
1299 | cpu: [ppc64]
1300 | os: [linux]
1301 | requiresBuild: true
1302 | dev: true
1303 | optional: true
1304 |
1305 | /esbuild-linux-riscv64/0.14.54:
1306 | resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==}
1307 | engines: {node: '>=12'}
1308 | cpu: [riscv64]
1309 | os: [linux]
1310 | requiresBuild: true
1311 | dev: true
1312 | optional: true
1313 |
1314 | /esbuild-linux-s390x/0.14.54:
1315 | resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==}
1316 | engines: {node: '>=12'}
1317 | cpu: [s390x]
1318 | os: [linux]
1319 | requiresBuild: true
1320 | dev: true
1321 | optional: true
1322 |
1323 | /esbuild-netbsd-64/0.14.54:
1324 | resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==}
1325 | engines: {node: '>=12'}
1326 | cpu: [x64]
1327 | os: [netbsd]
1328 | requiresBuild: true
1329 | dev: true
1330 | optional: true
1331 |
1332 | /esbuild-openbsd-64/0.14.54:
1333 | resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==}
1334 | engines: {node: '>=12'}
1335 | cpu: [x64]
1336 | os: [openbsd]
1337 | requiresBuild: true
1338 | dev: true
1339 | optional: true
1340 |
1341 | /esbuild-sunos-64/0.14.54:
1342 | resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==}
1343 | engines: {node: '>=12'}
1344 | cpu: [x64]
1345 | os: [sunos]
1346 | requiresBuild: true
1347 | dev: true
1348 | optional: true
1349 |
1350 | /esbuild-windows-32/0.14.54:
1351 | resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==}
1352 | engines: {node: '>=12'}
1353 | cpu: [ia32]
1354 | os: [win32]
1355 | requiresBuild: true
1356 | dev: true
1357 | optional: true
1358 |
1359 | /esbuild-windows-64/0.14.54:
1360 | resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==}
1361 | engines: {node: '>=12'}
1362 | cpu: [x64]
1363 | os: [win32]
1364 | requiresBuild: true
1365 | dev: true
1366 | optional: true
1367 |
1368 | /esbuild-windows-arm64/0.14.54:
1369 | resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==}
1370 | engines: {node: '>=12'}
1371 | cpu: [arm64]
1372 | os: [win32]
1373 | requiresBuild: true
1374 | dev: true
1375 | optional: true
1376 |
1377 | /esbuild/0.14.54:
1378 | resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==}
1379 | engines: {node: '>=12'}
1380 | hasBin: true
1381 | requiresBuild: true
1382 | optionalDependencies:
1383 | '@esbuild/linux-loong64': 0.14.54
1384 | esbuild-android-64: 0.14.54
1385 | esbuild-android-arm64: 0.14.54
1386 | esbuild-darwin-64: 0.14.54
1387 | esbuild-darwin-arm64: 0.14.54
1388 | esbuild-freebsd-64: 0.14.54
1389 | esbuild-freebsd-arm64: 0.14.54
1390 | esbuild-linux-32: 0.14.54
1391 | esbuild-linux-64: 0.14.54
1392 | esbuild-linux-arm: 0.14.54
1393 | esbuild-linux-arm64: 0.14.54
1394 | esbuild-linux-mips64le: 0.14.54
1395 | esbuild-linux-ppc64le: 0.14.54
1396 | esbuild-linux-riscv64: 0.14.54
1397 | esbuild-linux-s390x: 0.14.54
1398 | esbuild-netbsd-64: 0.14.54
1399 | esbuild-openbsd-64: 0.14.54
1400 | esbuild-sunos-64: 0.14.54
1401 | esbuild-windows-32: 0.14.54
1402 | esbuild-windows-64: 0.14.54
1403 | esbuild-windows-arm64: 0.14.54
1404 | dev: true
1405 |
1406 | /esbuild/0.16.3:
1407 | resolution: {integrity: sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==}
1408 | engines: {node: '>=12'}
1409 | hasBin: true
1410 | requiresBuild: true
1411 | optionalDependencies:
1412 | '@esbuild/android-arm': 0.16.3
1413 | '@esbuild/android-arm64': 0.16.3
1414 | '@esbuild/android-x64': 0.16.3
1415 | '@esbuild/darwin-arm64': 0.16.3
1416 | '@esbuild/darwin-x64': 0.16.3
1417 | '@esbuild/freebsd-arm64': 0.16.3
1418 | '@esbuild/freebsd-x64': 0.16.3
1419 | '@esbuild/linux-arm': 0.16.3
1420 | '@esbuild/linux-arm64': 0.16.3
1421 | '@esbuild/linux-ia32': 0.16.3
1422 | '@esbuild/linux-loong64': 0.16.3
1423 | '@esbuild/linux-mips64el': 0.16.3
1424 | '@esbuild/linux-ppc64': 0.16.3
1425 | '@esbuild/linux-riscv64': 0.16.3
1426 | '@esbuild/linux-s390x': 0.16.3
1427 | '@esbuild/linux-x64': 0.16.3
1428 | '@esbuild/netbsd-x64': 0.16.3
1429 | '@esbuild/openbsd-x64': 0.16.3
1430 | '@esbuild/sunos-x64': 0.16.3
1431 | '@esbuild/win32-arm64': 0.16.3
1432 | '@esbuild/win32-ia32': 0.16.3
1433 | '@esbuild/win32-x64': 0.16.3
1434 | dev: true
1435 |
1436 | /escalade/3.1.1:
1437 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1438 | engines: {node: '>=6'}
1439 | dev: false
1440 |
1441 | /escape-string-regexp/1.0.5:
1442 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1443 | engines: {node: '>=0.8.0'}
1444 | dev: false
1445 |
1446 | /escape-string-regexp/4.0.0:
1447 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1448 | engines: {node: '>=10'}
1449 | dev: true
1450 |
1451 | /esprima/4.0.1:
1452 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1453 | engines: {node: '>=4'}
1454 | hasBin: true
1455 | dev: false
1456 |
1457 | /estree-walker/0.6.1:
1458 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
1459 | dev: true
1460 |
1461 | /execa/6.1.0:
1462 | resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
1463 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1464 | dependencies:
1465 | cross-spawn: 7.0.3
1466 | get-stream: 6.0.1
1467 | human-signals: 3.0.1
1468 | is-stream: 3.0.0
1469 | merge-stream: 2.0.0
1470 | npm-run-path: 5.1.0
1471 | onetime: 6.0.0
1472 | signal-exit: 3.0.7
1473 | strip-final-newline: 3.0.0
1474 | dev: true
1475 |
1476 | /extendable-error/0.1.7:
1477 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
1478 | dev: false
1479 |
1480 | /external-editor/3.1.0:
1481 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
1482 | engines: {node: '>=4'}
1483 | dependencies:
1484 | chardet: 0.7.0
1485 | iconv-lite: 0.4.24
1486 | tmp: 0.0.33
1487 | dev: false
1488 |
1489 | /fast-glob/3.2.12:
1490 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
1491 | engines: {node: '>=8.6.0'}
1492 | dependencies:
1493 | '@nodelib/fs.stat': 2.0.5
1494 | '@nodelib/fs.walk': 1.2.8
1495 | glob-parent: 5.1.2
1496 | merge2: 1.4.1
1497 | micromatch: 4.0.5
1498 | dev: false
1499 |
1500 | /fastq/1.15.0:
1501 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1502 | dependencies:
1503 | reusify: 1.0.4
1504 | dev: false
1505 |
1506 | /fill-range/7.0.1:
1507 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1508 | engines: {node: '>=8'}
1509 | dependencies:
1510 | to-regex-range: 5.0.1
1511 |
1512 | /find-up/4.1.0:
1513 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1514 | engines: {node: '>=8'}
1515 | dependencies:
1516 | locate-path: 5.0.0
1517 | path-exists: 4.0.0
1518 | dev: false
1519 |
1520 | /find-up/5.0.0:
1521 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1522 | engines: {node: '>=10'}
1523 | dependencies:
1524 | locate-path: 6.0.0
1525 | path-exists: 4.0.0
1526 | dev: false
1527 |
1528 | /find-yarn-workspace-root2/1.2.16:
1529 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
1530 | dependencies:
1531 | micromatch: 4.0.5
1532 | pkg-dir: 4.2.0
1533 | dev: false
1534 |
1535 | /for-each/0.3.3:
1536 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
1537 | dependencies:
1538 | is-callable: 1.2.7
1539 | dev: false
1540 |
1541 | /fs-extra/7.0.1:
1542 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
1543 | engines: {node: '>=6 <7 || >=8'}
1544 | dependencies:
1545 | graceful-fs: 4.2.10
1546 | jsonfile: 4.0.0
1547 | universalify: 0.1.2
1548 | dev: false
1549 |
1550 | /fs-extra/8.1.0:
1551 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
1552 | engines: {node: '>=6 <7 || >=8'}
1553 | dependencies:
1554 | graceful-fs: 4.2.10
1555 | jsonfile: 4.0.0
1556 | universalify: 0.1.2
1557 | dev: false
1558 |
1559 | /fsevents/2.3.2:
1560 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1561 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1562 | os: [darwin]
1563 | requiresBuild: true
1564 | dev: true
1565 | optional: true
1566 |
1567 | /function-bind/1.1.1:
1568 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1569 |
1570 | /function.prototype.name/1.1.5:
1571 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
1572 | engines: {node: '>= 0.4'}
1573 | dependencies:
1574 | call-bind: 1.0.2
1575 | define-properties: 1.2.0
1576 | es-abstract: 1.21.1
1577 | functions-have-names: 1.2.3
1578 | dev: false
1579 |
1580 | /functions-have-names/1.2.3:
1581 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1582 | dev: false
1583 |
1584 | /get-caller-file/2.0.5:
1585 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
1586 | engines: {node: 6.* || 8.* || >= 10.*}
1587 | dev: false
1588 |
1589 | /get-func-name/2.0.0:
1590 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==}
1591 | dev: true
1592 |
1593 | /get-intrinsic/1.2.0:
1594 | resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
1595 | dependencies:
1596 | function-bind: 1.1.1
1597 | has: 1.0.3
1598 | has-symbols: 1.0.3
1599 | dev: false
1600 |
1601 | /get-stream/6.0.1:
1602 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1603 | engines: {node: '>=10'}
1604 | dev: true
1605 |
1606 | /get-symbol-description/1.0.0:
1607 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1608 | engines: {node: '>= 0.4'}
1609 | dependencies:
1610 | call-bind: 1.0.2
1611 | get-intrinsic: 1.2.0
1612 | dev: false
1613 |
1614 | /glob-parent/5.1.2:
1615 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1616 | engines: {node: '>= 6'}
1617 | dependencies:
1618 | is-glob: 4.0.3
1619 |
1620 | /globalthis/1.0.3:
1621 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
1622 | engines: {node: '>= 0.4'}
1623 | dependencies:
1624 | define-properties: 1.2.0
1625 | dev: false
1626 |
1627 | /globby/11.1.0:
1628 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1629 | engines: {node: '>=10'}
1630 | dependencies:
1631 | array-union: 2.1.0
1632 | dir-glob: 3.0.1
1633 | fast-glob: 3.2.12
1634 | ignore: 5.2.4
1635 | merge2: 1.4.1
1636 | slash: 3.0.0
1637 | dev: false
1638 |
1639 | /gopd/1.0.1:
1640 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1641 | dependencies:
1642 | get-intrinsic: 1.2.0
1643 | dev: false
1644 |
1645 | /graceful-fs/4.2.10:
1646 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
1647 | dev: false
1648 |
1649 | /grapheme-splitter/1.0.4:
1650 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
1651 | dev: false
1652 |
1653 | /hard-rejection/2.1.0:
1654 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
1655 | engines: {node: '>=6'}
1656 | dev: false
1657 |
1658 | /has-bigints/1.0.2:
1659 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1660 | dev: false
1661 |
1662 | /has-flag/3.0.0:
1663 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1664 | engines: {node: '>=4'}
1665 | dev: false
1666 |
1667 | /has-flag/4.0.0:
1668 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1669 | engines: {node: '>=8'}
1670 | dev: false
1671 |
1672 | /has-property-descriptors/1.0.0:
1673 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1674 | dependencies:
1675 | get-intrinsic: 1.2.0
1676 | dev: false
1677 |
1678 | /has-proto/1.0.1:
1679 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1680 | engines: {node: '>= 0.4'}
1681 | dev: false
1682 |
1683 | /has-symbols/1.0.3:
1684 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1685 | engines: {node: '>= 0.4'}
1686 | dev: false
1687 |
1688 | /has-tostringtag/1.0.0:
1689 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1690 | engines: {node: '>= 0.4'}
1691 | dependencies:
1692 | has-symbols: 1.0.3
1693 | dev: false
1694 |
1695 | /has/1.0.3:
1696 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1697 | engines: {node: '>= 0.4.0'}
1698 | dependencies:
1699 | function-bind: 1.1.1
1700 |
1701 | /hosted-git-info/2.8.9:
1702 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
1703 | dev: false
1704 |
1705 | /html-rewriter-wasm/0.4.1:
1706 | resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==}
1707 | dev: true
1708 |
1709 | /http-cache-semantics/4.1.1:
1710 | resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
1711 | dev: true
1712 |
1713 | /human-id/1.0.2:
1714 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
1715 | dev: false
1716 |
1717 | /human-signals/3.0.1:
1718 | resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
1719 | engines: {node: '>=12.20.0'}
1720 | dev: true
1721 |
1722 | /iconv-lite/0.4.24:
1723 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1724 | engines: {node: '>=0.10.0'}
1725 | dependencies:
1726 | safer-buffer: 2.1.2
1727 | dev: false
1728 |
1729 | /ignore/5.2.4:
1730 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1731 | engines: {node: '>= 4'}
1732 | dev: false
1733 |
1734 | /indent-string/4.0.0:
1735 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
1736 | engines: {node: '>=8'}
1737 | dev: false
1738 |
1739 | /internal-slot/1.0.5:
1740 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
1741 | engines: {node: '>= 0.4'}
1742 | dependencies:
1743 | get-intrinsic: 1.2.0
1744 | has: 1.0.3
1745 | side-channel: 1.0.4
1746 | dev: false
1747 |
1748 | /is-array-buffer/3.0.2:
1749 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
1750 | dependencies:
1751 | call-bind: 1.0.2
1752 | get-intrinsic: 1.2.0
1753 | is-typed-array: 1.1.10
1754 | dev: false
1755 |
1756 | /is-arrayish/0.2.1:
1757 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1758 | dev: false
1759 |
1760 | /is-bigint/1.0.4:
1761 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1762 | dependencies:
1763 | has-bigints: 1.0.2
1764 | dev: false
1765 |
1766 | /is-binary-path/2.1.0:
1767 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1768 | engines: {node: '>=8'}
1769 | dependencies:
1770 | binary-extensions: 2.2.0
1771 | dev: true
1772 |
1773 | /is-boolean-object/1.1.2:
1774 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1775 | engines: {node: '>= 0.4'}
1776 | dependencies:
1777 | call-bind: 1.0.2
1778 | has-tostringtag: 1.0.0
1779 | dev: false
1780 |
1781 | /is-callable/1.2.7:
1782 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1783 | engines: {node: '>= 0.4'}
1784 | dev: false
1785 |
1786 | /is-ci/3.0.1:
1787 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
1788 | hasBin: true
1789 | dependencies:
1790 | ci-info: 3.8.0
1791 | dev: false
1792 |
1793 | /is-core-module/2.11.0:
1794 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
1795 | dependencies:
1796 | has: 1.0.3
1797 |
1798 | /is-date-object/1.0.5:
1799 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1800 | engines: {node: '>= 0.4'}
1801 | dependencies:
1802 | has-tostringtag: 1.0.0
1803 | dev: false
1804 |
1805 | /is-extglob/2.1.1:
1806 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1807 | engines: {node: '>=0.10.0'}
1808 |
1809 | /is-fullwidth-code-point/3.0.0:
1810 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1811 | engines: {node: '>=8'}
1812 | dev: false
1813 |
1814 | /is-glob/4.0.3:
1815 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1816 | engines: {node: '>=0.10.0'}
1817 | dependencies:
1818 | is-extglob: 2.1.1
1819 |
1820 | /is-negative-zero/2.0.2:
1821 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1822 | engines: {node: '>= 0.4'}
1823 | dev: false
1824 |
1825 | /is-number-object/1.0.7:
1826 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1827 | engines: {node: '>= 0.4'}
1828 | dependencies:
1829 | has-tostringtag: 1.0.0
1830 | dev: false
1831 |
1832 | /is-number/7.0.0:
1833 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1834 | engines: {node: '>=0.12.0'}
1835 |
1836 | /is-plain-obj/1.1.0:
1837 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
1838 | engines: {node: '>=0.10.0'}
1839 | dev: false
1840 |
1841 | /is-regex/1.1.4:
1842 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1843 | engines: {node: '>= 0.4'}
1844 | dependencies:
1845 | call-bind: 1.0.2
1846 | has-tostringtag: 1.0.0
1847 | dev: false
1848 |
1849 | /is-shared-array-buffer/1.0.2:
1850 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1851 | dependencies:
1852 | call-bind: 1.0.2
1853 | dev: false
1854 |
1855 | /is-stream/3.0.0:
1856 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1857 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1858 | dev: true
1859 |
1860 | /is-string/1.0.7:
1861 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1862 | engines: {node: '>= 0.4'}
1863 | dependencies:
1864 | has-tostringtag: 1.0.0
1865 | dev: false
1866 |
1867 | /is-subdir/1.2.0:
1868 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
1869 | engines: {node: '>=4'}
1870 | dependencies:
1871 | better-path-resolve: 1.0.0
1872 | dev: false
1873 |
1874 | /is-symbol/1.0.4:
1875 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1876 | engines: {node: '>= 0.4'}
1877 | dependencies:
1878 | has-symbols: 1.0.3
1879 | dev: false
1880 |
1881 | /is-typed-array/1.1.10:
1882 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
1883 | engines: {node: '>= 0.4'}
1884 | dependencies:
1885 | available-typed-arrays: 1.0.5
1886 | call-bind: 1.0.2
1887 | for-each: 0.3.3
1888 | gopd: 1.0.1
1889 | has-tostringtag: 1.0.0
1890 | dev: false
1891 |
1892 | /is-weakref/1.0.2:
1893 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1894 | dependencies:
1895 | call-bind: 1.0.2
1896 | dev: false
1897 |
1898 | /is-windows/1.0.2:
1899 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
1900 | engines: {node: '>=0.10.0'}
1901 | dev: false
1902 |
1903 | /isexe/2.0.0:
1904 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1905 |
1906 | /js-tokens/4.0.0:
1907 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1908 | dev: false
1909 |
1910 | /js-yaml/3.14.1:
1911 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
1912 | hasBin: true
1913 | dependencies:
1914 | argparse: 1.0.10
1915 | esprima: 4.0.1
1916 | dev: false
1917 |
1918 | /json-parse-even-better-errors/2.3.1:
1919 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1920 | dev: false
1921 |
1922 | /jsonfile/4.0.0:
1923 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1924 | optionalDependencies:
1925 | graceful-fs: 4.2.10
1926 | dev: false
1927 |
1928 | /kind-of/6.0.3:
1929 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
1930 | engines: {node: '>=0.10.0'}
1931 | dev: false
1932 |
1933 | /kleur/4.1.5:
1934 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1935 | engines: {node: '>=6'}
1936 |
1937 | /lines-and-columns/1.2.4:
1938 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1939 | dev: false
1940 |
1941 | /load-yaml-file/0.2.0:
1942 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
1943 | engines: {node: '>=6'}
1944 | dependencies:
1945 | graceful-fs: 4.2.10
1946 | js-yaml: 3.14.1
1947 | pify: 4.0.1
1948 | strip-bom: 3.0.0
1949 | dev: false
1950 |
1951 | /local-pkg/0.4.3:
1952 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
1953 | engines: {node: '>=14'}
1954 | dev: true
1955 |
1956 | /locate-path/5.0.0:
1957 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1958 | engines: {node: '>=8'}
1959 | dependencies:
1960 | p-locate: 4.1.0
1961 | dev: false
1962 |
1963 | /locate-path/6.0.0:
1964 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1965 | engines: {node: '>=10'}
1966 | dependencies:
1967 | p-locate: 5.0.0
1968 | dev: false
1969 |
1970 | /lodash.startcase/4.4.0:
1971 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
1972 | dev: false
1973 |
1974 | /loupe/2.3.6:
1975 | resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
1976 | dependencies:
1977 | get-func-name: 2.0.0
1978 | dev: true
1979 |
1980 | /lru-cache/4.1.5:
1981 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
1982 | dependencies:
1983 | pseudomap: 1.0.2
1984 | yallist: 2.1.2
1985 | dev: false
1986 |
1987 | /lru-cache/6.0.0:
1988 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1989 | engines: {node: '>=10'}
1990 | dependencies:
1991 | yallist: 4.0.0
1992 | dev: true
1993 |
1994 | /magic-string/0.25.9:
1995 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
1996 | dependencies:
1997 | sourcemap-codec: 1.4.8
1998 | dev: true
1999 |
2000 | /map-obj/1.0.1:
2001 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
2002 | engines: {node: '>=0.10.0'}
2003 | dev: false
2004 |
2005 | /map-obj/4.3.0:
2006 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
2007 | engines: {node: '>=8'}
2008 | dev: false
2009 |
2010 | /meow/6.1.1:
2011 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==}
2012 | engines: {node: '>=8'}
2013 | dependencies:
2014 | '@types/minimist': 1.2.2
2015 | camelcase-keys: 6.2.2
2016 | decamelize-keys: 1.1.1
2017 | hard-rejection: 2.1.0
2018 | minimist-options: 4.1.0
2019 | normalize-package-data: 2.5.0
2020 | read-pkg-up: 7.0.1
2021 | redent: 3.0.0
2022 | trim-newlines: 3.0.1
2023 | type-fest: 0.13.1
2024 | yargs-parser: 18.1.3
2025 | dev: false
2026 |
2027 | /merge-stream/2.0.0:
2028 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
2029 | dev: true
2030 |
2031 | /merge2/1.4.1:
2032 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
2033 | engines: {node: '>= 8'}
2034 | dev: false
2035 |
2036 | /micromatch/4.0.5:
2037 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
2038 | engines: {node: '>=8.6'}
2039 | dependencies:
2040 | braces: 3.0.2
2041 | picomatch: 2.3.1
2042 | dev: false
2043 |
2044 | /mime/3.0.0:
2045 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
2046 | engines: {node: '>=10.0.0'}
2047 | hasBin: true
2048 | dev: true
2049 |
2050 | /mimic-fn/4.0.0:
2051 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
2052 | engines: {node: '>=12'}
2053 | dev: true
2054 |
2055 | /min-indent/1.0.1:
2056 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
2057 | engines: {node: '>=4'}
2058 | dev: false
2059 |
2060 | /miniflare/2.12.1:
2061 | resolution: {integrity: sha512-pym6gzg8AQZ1NRChRV1hC4K55N49wndoaDEVRMvZPJrFsmGkNnXkWmlvmZ7SB3BN5UkP5MZwKhLqiJ49Ry8tFA==}
2062 | engines: {node: '>=16.13'}
2063 | hasBin: true
2064 | peerDependencies:
2065 | '@miniflare/storage-redis': 2.12.1
2066 | cron-schedule: ^3.0.4
2067 | ioredis: ^4.27.9
2068 | peerDependenciesMeta:
2069 | '@miniflare/storage-redis':
2070 | optional: true
2071 | cron-schedule:
2072 | optional: true
2073 | ioredis:
2074 | optional: true
2075 | dependencies:
2076 | '@miniflare/cache': 2.12.1
2077 | '@miniflare/cli-parser': 2.12.1
2078 | '@miniflare/core': 2.12.1
2079 | '@miniflare/d1': 2.12.1
2080 | '@miniflare/durable-objects': 2.12.1
2081 | '@miniflare/html-rewriter': 2.12.1
2082 | '@miniflare/http-server': 2.12.1
2083 | '@miniflare/kv': 2.12.1
2084 | '@miniflare/queues': 2.12.1
2085 | '@miniflare/r2': 2.12.1
2086 | '@miniflare/runner-vm': 2.12.1
2087 | '@miniflare/scheduler': 2.12.1
2088 | '@miniflare/shared': 2.12.1
2089 | '@miniflare/sites': 2.12.1
2090 | '@miniflare/storage-file': 2.12.1
2091 | '@miniflare/storage-memory': 2.12.1
2092 | '@miniflare/web-sockets': 2.12.1
2093 | kleur: 4.1.5
2094 | semiver: 1.1.0
2095 | source-map-support: 0.5.21
2096 | undici: 5.20.0
2097 | transitivePeerDependencies:
2098 | - bufferutil
2099 | - utf-8-validate
2100 | dev: true
2101 |
2102 | /minimist-options/4.1.0:
2103 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
2104 | engines: {node: '>= 6'}
2105 | dependencies:
2106 | arrify: 1.0.1
2107 | is-plain-obj: 1.1.0
2108 | kind-of: 6.0.3
2109 | dev: false
2110 |
2111 | /mixme/0.5.5:
2112 | resolution: {integrity: sha512-/6IupbRx32s7jjEwHcycXikJwFD5UujbVNuJFkeKLYje+92OvtuPniF6JhnFm5JCTDUhS+kYK3W/4BWYQYXz7w==}
2113 | engines: {node: '>= 8.0.0'}
2114 | dev: false
2115 |
2116 | /ms/2.1.2:
2117 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2118 | dev: true
2119 |
2120 | /mustache/4.2.0:
2121 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
2122 | hasBin: true
2123 | dev: true
2124 |
2125 | /nanoid/3.3.4:
2126 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
2127 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2128 | hasBin: true
2129 | dev: true
2130 |
2131 | /node-fetch/2.6.9:
2132 | resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==}
2133 | engines: {node: 4.x || >=6.0.0}
2134 | peerDependencies:
2135 | encoding: ^0.1.0
2136 | peerDependenciesMeta:
2137 | encoding:
2138 | optional: true
2139 | dependencies:
2140 | whatwg-url: 5.0.0
2141 | dev: false
2142 |
2143 | /node-forge/1.3.1:
2144 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
2145 | engines: {node: '>= 6.13.0'}
2146 | dev: true
2147 |
2148 | /normalize-package-data/2.5.0:
2149 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
2150 | dependencies:
2151 | hosted-git-info: 2.8.9
2152 | resolve: 1.22.1
2153 | semver: 5.7.1
2154 | validate-npm-package-license: 3.0.4
2155 | dev: false
2156 |
2157 | /normalize-path/3.0.0:
2158 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2159 | engines: {node: '>=0.10.0'}
2160 | dev: true
2161 |
2162 | /npm-run-path/5.1.0:
2163 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
2164 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2165 | dependencies:
2166 | path-key: 4.0.0
2167 | dev: true
2168 |
2169 | /npx-import/1.1.4:
2170 | resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==}
2171 | dependencies:
2172 | execa: 6.1.0
2173 | parse-package-name: 1.0.0
2174 | semver: 7.3.8
2175 | validate-npm-package-name: 4.0.0
2176 | dev: true
2177 |
2178 | /object-inspect/1.12.3:
2179 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
2180 | dev: false
2181 |
2182 | /object-keys/1.1.1:
2183 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
2184 | engines: {node: '>= 0.4'}
2185 | dev: false
2186 |
2187 | /object.assign/4.1.4:
2188 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
2189 | engines: {node: '>= 0.4'}
2190 | dependencies:
2191 | call-bind: 1.0.2
2192 | define-properties: 1.2.0
2193 | has-symbols: 1.0.3
2194 | object-keys: 1.1.1
2195 | dev: false
2196 |
2197 | /onetime/6.0.0:
2198 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
2199 | engines: {node: '>=12'}
2200 | dependencies:
2201 | mimic-fn: 4.0.0
2202 | dev: true
2203 |
2204 | /os-tmpdir/1.0.2:
2205 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
2206 | engines: {node: '>=0.10.0'}
2207 | dev: false
2208 |
2209 | /outdent/0.5.0:
2210 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
2211 | dev: false
2212 |
2213 | /p-filter/2.1.0:
2214 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
2215 | engines: {node: '>=8'}
2216 | dependencies:
2217 | p-map: 2.1.0
2218 | dev: false
2219 |
2220 | /p-limit/2.3.0:
2221 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
2222 | engines: {node: '>=6'}
2223 | dependencies:
2224 | p-try: 2.2.0
2225 | dev: false
2226 |
2227 | /p-limit/3.1.0:
2228 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2229 | engines: {node: '>=10'}
2230 | dependencies:
2231 | yocto-queue: 0.1.0
2232 | dev: false
2233 |
2234 | /p-locate/4.1.0:
2235 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
2236 | engines: {node: '>=8'}
2237 | dependencies:
2238 | p-limit: 2.3.0
2239 | dev: false
2240 |
2241 | /p-locate/5.0.0:
2242 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2243 | engines: {node: '>=10'}
2244 | dependencies:
2245 | p-limit: 3.1.0
2246 | dev: false
2247 |
2248 | /p-map/2.1.0:
2249 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
2250 | engines: {node: '>=6'}
2251 | dev: false
2252 |
2253 | /p-try/2.2.0:
2254 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
2255 | engines: {node: '>=6'}
2256 | dev: false
2257 |
2258 | /parse-json/5.2.0:
2259 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
2260 | engines: {node: '>=8'}
2261 | dependencies:
2262 | '@babel/code-frame': 7.18.6
2263 | error-ex: 1.3.2
2264 | json-parse-even-better-errors: 2.3.1
2265 | lines-and-columns: 1.2.4
2266 | dev: false
2267 |
2268 | /parse-package-name/1.0.0:
2269 | resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==}
2270 | dev: true
2271 |
2272 | /path-exists/4.0.0:
2273 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2274 | engines: {node: '>=8'}
2275 | dev: false
2276 |
2277 | /path-key/3.1.1:
2278 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2279 | engines: {node: '>=8'}
2280 | dev: true
2281 |
2282 | /path-key/4.0.0:
2283 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
2284 | engines: {node: '>=12'}
2285 | dev: true
2286 |
2287 | /path-parse/1.0.7:
2288 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2289 |
2290 | /path-to-regexp/6.2.1:
2291 | resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
2292 | dev: true
2293 |
2294 | /path-type/4.0.0:
2295 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2296 | engines: {node: '>=8'}
2297 | dev: false
2298 |
2299 | /pathval/1.1.1:
2300 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
2301 | dev: true
2302 |
2303 | /picocolors/1.0.0:
2304 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2305 | dev: true
2306 |
2307 | /picomatch/2.3.1:
2308 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2309 | engines: {node: '>=8.6'}
2310 |
2311 | /pify/4.0.1:
2312 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
2313 | engines: {node: '>=6'}
2314 | dev: false
2315 |
2316 | /pkg-dir/4.2.0:
2317 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
2318 | engines: {node: '>=8'}
2319 | dependencies:
2320 | find-up: 4.1.0
2321 | dev: false
2322 |
2323 | /postcss/8.4.21:
2324 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
2325 | engines: {node: ^10 || ^12 || >=14}
2326 | dependencies:
2327 | nanoid: 3.3.4
2328 | picocolors: 1.0.0
2329 | source-map-js: 1.0.2
2330 | dev: true
2331 |
2332 | /preferred-pm/3.0.3:
2333 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==}
2334 | engines: {node: '>=10'}
2335 | dependencies:
2336 | find-up: 5.0.0
2337 | find-yarn-workspace-root2: 1.2.16
2338 | path-exists: 4.0.0
2339 | which-pm: 2.0.0
2340 | dev: false
2341 |
2342 | /prettier/2.8.4:
2343 | resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==}
2344 | engines: {node: '>=10.13.0'}
2345 | hasBin: true
2346 | dev: false
2347 |
2348 | /pseudomap/1.0.2:
2349 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
2350 | dev: false
2351 |
2352 | /queue-microtask/1.2.3:
2353 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2354 | dev: false
2355 |
2356 | /quick-lru/4.0.1:
2357 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
2358 | engines: {node: '>=8'}
2359 | dev: false
2360 |
2361 | /read-pkg-up/7.0.1:
2362 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
2363 | engines: {node: '>=8'}
2364 | dependencies:
2365 | find-up: 4.1.0
2366 | read-pkg: 5.2.0
2367 | type-fest: 0.8.1
2368 | dev: false
2369 |
2370 | /read-pkg/5.2.0:
2371 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
2372 | engines: {node: '>=8'}
2373 | dependencies:
2374 | '@types/normalize-package-data': 2.4.1
2375 | normalize-package-data: 2.5.0
2376 | parse-json: 5.2.0
2377 | type-fest: 0.6.0
2378 | dev: false
2379 |
2380 | /read-yaml-file/1.1.0:
2381 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
2382 | engines: {node: '>=6'}
2383 | dependencies:
2384 | graceful-fs: 4.2.10
2385 | js-yaml: 3.14.1
2386 | pify: 4.0.1
2387 | strip-bom: 3.0.0
2388 | dev: false
2389 |
2390 | /readdirp/3.6.0:
2391 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2392 | engines: {node: '>=8.10.0'}
2393 | dependencies:
2394 | picomatch: 2.3.1
2395 | dev: true
2396 |
2397 | /redent/3.0.0:
2398 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
2399 | engines: {node: '>=8'}
2400 | dependencies:
2401 | indent-string: 4.0.0
2402 | strip-indent: 3.0.0
2403 | dev: false
2404 |
2405 | /regenerator-runtime/0.13.11:
2406 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
2407 | dev: false
2408 |
2409 | /regexp.prototype.flags/1.4.3:
2410 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
2411 | engines: {node: '>= 0.4'}
2412 | dependencies:
2413 | call-bind: 1.0.2
2414 | define-properties: 1.2.0
2415 | functions-have-names: 1.2.3
2416 | dev: false
2417 |
2418 | /require-directory/2.1.1:
2419 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
2420 | engines: {node: '>=0.10.0'}
2421 | dev: false
2422 |
2423 | /require-main-filename/2.0.0:
2424 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
2425 | dev: false
2426 |
2427 | /resolve-from/5.0.0:
2428 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
2429 | engines: {node: '>=8'}
2430 | dev: false
2431 |
2432 | /resolve/1.22.1:
2433 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
2434 | hasBin: true
2435 | dependencies:
2436 | is-core-module: 2.11.0
2437 | path-parse: 1.0.7
2438 | supports-preserve-symlinks-flag: 1.0.0
2439 |
2440 | /reusify/1.0.4:
2441 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2442 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2443 | dev: false
2444 |
2445 | /rollup-plugin-inject/3.0.2:
2446 | resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==}
2447 | deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
2448 | dependencies:
2449 | estree-walker: 0.6.1
2450 | magic-string: 0.25.9
2451 | rollup-pluginutils: 2.8.2
2452 | dev: true
2453 |
2454 | /rollup-plugin-node-polyfills/0.2.1:
2455 | resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==}
2456 | dependencies:
2457 | rollup-plugin-inject: 3.0.2
2458 | dev: true
2459 |
2460 | /rollup-pluginutils/2.8.2:
2461 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
2462 | dependencies:
2463 | estree-walker: 0.6.1
2464 | dev: true
2465 |
2466 | /rollup/2.77.3:
2467 | resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==}
2468 | engines: {node: '>=10.0.0'}
2469 | hasBin: true
2470 | optionalDependencies:
2471 | fsevents: 2.3.2
2472 | dev: true
2473 |
2474 | /run-parallel/1.2.0:
2475 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2476 | dependencies:
2477 | queue-microtask: 1.2.3
2478 | dev: false
2479 |
2480 | /safe-regex-test/1.0.0:
2481 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
2482 | dependencies:
2483 | call-bind: 1.0.2
2484 | get-intrinsic: 1.2.0
2485 | is-regex: 1.1.4
2486 | dev: false
2487 |
2488 | /safer-buffer/2.1.2:
2489 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2490 | dev: false
2491 |
2492 | /selfsigned/2.1.1:
2493 | resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==}
2494 | engines: {node: '>=10'}
2495 | dependencies:
2496 | node-forge: 1.3.1
2497 | dev: true
2498 |
2499 | /semiver/1.1.0:
2500 | resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==}
2501 | engines: {node: '>=6'}
2502 | dev: true
2503 |
2504 | /semver/5.7.1:
2505 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
2506 | hasBin: true
2507 | dev: false
2508 |
2509 | /semver/7.3.8:
2510 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
2511 | engines: {node: '>=10'}
2512 | hasBin: true
2513 | dependencies:
2514 | lru-cache: 6.0.0
2515 | dev: true
2516 |
2517 | /set-blocking/2.0.0:
2518 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
2519 | dev: false
2520 |
2521 | /set-cookie-parser/2.5.1:
2522 | resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==}
2523 | dev: true
2524 |
2525 | /shebang-command/1.2.0:
2526 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
2527 | engines: {node: '>=0.10.0'}
2528 | dependencies:
2529 | shebang-regex: 1.0.0
2530 | dev: false
2531 |
2532 | /shebang-command/2.0.0:
2533 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2534 | engines: {node: '>=8'}
2535 | dependencies:
2536 | shebang-regex: 3.0.0
2537 | dev: true
2538 |
2539 | /shebang-regex/1.0.0:
2540 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
2541 | engines: {node: '>=0.10.0'}
2542 | dev: false
2543 |
2544 | /shebang-regex/3.0.0:
2545 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2546 | engines: {node: '>=8'}
2547 | dev: true
2548 |
2549 | /side-channel/1.0.4:
2550 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2551 | dependencies:
2552 | call-bind: 1.0.2
2553 | get-intrinsic: 1.2.0
2554 | object-inspect: 1.12.3
2555 | dev: false
2556 |
2557 | /signal-exit/3.0.7:
2558 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2559 |
2560 | /slash/3.0.0:
2561 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2562 | engines: {node: '>=8'}
2563 | dev: false
2564 |
2565 | /smartwrap/2.0.2:
2566 | resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
2567 | engines: {node: '>=6'}
2568 | hasBin: true
2569 | dependencies:
2570 | array.prototype.flat: 1.3.1
2571 | breakword: 1.0.5
2572 | grapheme-splitter: 1.0.4
2573 | strip-ansi: 6.0.1
2574 | wcwidth: 1.0.1
2575 | yargs: 15.4.1
2576 | dev: false
2577 |
2578 | /source-map-js/1.0.2:
2579 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2580 | engines: {node: '>=0.10.0'}
2581 | dev: true
2582 |
2583 | /source-map-support/0.5.21:
2584 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
2585 | dependencies:
2586 | buffer-from: 1.1.2
2587 | source-map: 0.6.1
2588 | dev: true
2589 |
2590 | /source-map/0.6.1:
2591 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2592 | engines: {node: '>=0.10.0'}
2593 | dev: true
2594 |
2595 | /source-map/0.7.4:
2596 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
2597 | engines: {node: '>= 8'}
2598 | dev: true
2599 |
2600 | /sourcemap-codec/1.4.8:
2601 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
2602 | deprecated: Please use @jridgewell/sourcemap-codec instead
2603 | dev: true
2604 |
2605 | /spawndamnit/2.0.0:
2606 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
2607 | dependencies:
2608 | cross-spawn: 5.1.0
2609 | signal-exit: 3.0.7
2610 | dev: false
2611 |
2612 | /spdx-correct/3.2.0:
2613 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
2614 | dependencies:
2615 | spdx-expression-parse: 3.0.1
2616 | spdx-license-ids: 3.0.13
2617 | dev: false
2618 |
2619 | /spdx-exceptions/2.3.0:
2620 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
2621 | dev: false
2622 |
2623 | /spdx-expression-parse/3.0.1:
2624 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
2625 | dependencies:
2626 | spdx-exceptions: 2.3.0
2627 | spdx-license-ids: 3.0.13
2628 | dev: false
2629 |
2630 | /spdx-license-ids/3.0.13:
2631 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
2632 | dev: false
2633 |
2634 | /sprintf-js/1.0.3:
2635 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
2636 | dev: false
2637 |
2638 | /stack-trace/0.0.10:
2639 | resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
2640 | dev: true
2641 |
2642 | /stream-transform/2.1.3:
2643 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==}
2644 | dependencies:
2645 | mixme: 0.5.5
2646 | dev: false
2647 |
2648 | /streamsearch/1.1.0:
2649 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
2650 | engines: {node: '>=10.0.0'}
2651 | dev: true
2652 |
2653 | /string-width/4.2.3:
2654 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2655 | engines: {node: '>=8'}
2656 | dependencies:
2657 | emoji-regex: 8.0.0
2658 | is-fullwidth-code-point: 3.0.0
2659 | strip-ansi: 6.0.1
2660 | dev: false
2661 |
2662 | /string.prototype.trimend/1.0.6:
2663 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
2664 | dependencies:
2665 | call-bind: 1.0.2
2666 | define-properties: 1.2.0
2667 | es-abstract: 1.21.1
2668 | dev: false
2669 |
2670 | /string.prototype.trimstart/1.0.6:
2671 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
2672 | dependencies:
2673 | call-bind: 1.0.2
2674 | define-properties: 1.2.0
2675 | es-abstract: 1.21.1
2676 | dev: false
2677 |
2678 | /strip-ansi/6.0.1:
2679 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2680 | engines: {node: '>=8'}
2681 | dependencies:
2682 | ansi-regex: 5.0.1
2683 | dev: false
2684 |
2685 | /strip-bom/3.0.0:
2686 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2687 | engines: {node: '>=4'}
2688 | dev: false
2689 |
2690 | /strip-final-newline/3.0.0:
2691 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
2692 | engines: {node: '>=12'}
2693 | dev: true
2694 |
2695 | /strip-indent/3.0.0:
2696 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
2697 | engines: {node: '>=8'}
2698 | dependencies:
2699 | min-indent: 1.0.1
2700 | dev: false
2701 |
2702 | /supports-color/5.5.0:
2703 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2704 | engines: {node: '>=4'}
2705 | dependencies:
2706 | has-flag: 3.0.0
2707 | dev: false
2708 |
2709 | /supports-color/7.2.0:
2710 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2711 | engines: {node: '>=8'}
2712 | dependencies:
2713 | has-flag: 4.0.0
2714 | dev: false
2715 |
2716 | /supports-preserve-symlinks-flag/1.0.0:
2717 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2718 | engines: {node: '>= 0.4'}
2719 |
2720 | /term-size/2.2.1:
2721 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
2722 | engines: {node: '>=8'}
2723 | dev: false
2724 |
2725 | /tinypool/0.1.3:
2726 | resolution: {integrity: sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==}
2727 | engines: {node: '>=14.0.0'}
2728 | dev: true
2729 |
2730 | /tinyspy/0.3.3:
2731 | resolution: {integrity: sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==}
2732 | engines: {node: '>=14.0.0'}
2733 | dev: true
2734 |
2735 | /tmp/0.0.33:
2736 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
2737 | engines: {node: '>=0.6.0'}
2738 | dependencies:
2739 | os-tmpdir: 1.0.2
2740 | dev: false
2741 |
2742 | /to-regex-range/5.0.1:
2743 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2744 | engines: {node: '>=8.0'}
2745 | dependencies:
2746 | is-number: 7.0.0
2747 |
2748 | /tr46/0.0.3:
2749 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
2750 | dev: false
2751 |
2752 | /trim-newlines/3.0.1:
2753 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
2754 | engines: {node: '>=8'}
2755 | dev: false
2756 |
2757 | /tty-table/4.1.6:
2758 | resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==}
2759 | engines: {node: '>=8.0.0'}
2760 | hasBin: true
2761 | dependencies:
2762 | chalk: 4.1.2
2763 | csv: 5.5.3
2764 | kleur: 4.1.5
2765 | smartwrap: 2.0.2
2766 | strip-ansi: 6.0.1
2767 | wcwidth: 1.0.1
2768 | yargs: 17.7.1
2769 | dev: false
2770 |
2771 | /type-detect/4.0.8:
2772 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
2773 | engines: {node: '>=4'}
2774 | dev: true
2775 |
2776 | /type-fest/0.13.1:
2777 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
2778 | engines: {node: '>=10'}
2779 | dev: false
2780 |
2781 | /type-fest/0.6.0:
2782 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
2783 | engines: {node: '>=8'}
2784 | dev: false
2785 |
2786 | /type-fest/0.8.1:
2787 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
2788 | engines: {node: '>=8'}
2789 | dev: false
2790 |
2791 | /typed-array-length/1.0.4:
2792 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
2793 | dependencies:
2794 | call-bind: 1.0.2
2795 | for-each: 0.3.3
2796 | is-typed-array: 1.1.10
2797 | dev: false
2798 |
2799 | /unbox-primitive/1.0.2:
2800 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2801 | dependencies:
2802 | call-bind: 1.0.2
2803 | has-bigints: 1.0.2
2804 | has-symbols: 1.0.3
2805 | which-boxed-primitive: 1.0.2
2806 | dev: false
2807 |
2808 | /undici/5.20.0:
2809 | resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==}
2810 | engines: {node: '>=12.18'}
2811 | dependencies:
2812 | busboy: 1.6.0
2813 | dev: true
2814 |
2815 | /universalify/0.1.2:
2816 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
2817 | engines: {node: '>= 4.0.0'}
2818 | dev: false
2819 |
2820 | /urlpattern-polyfill/4.0.3:
2821 | resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==}
2822 | dev: true
2823 |
2824 | /validate-npm-package-license/3.0.4:
2825 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
2826 | dependencies:
2827 | spdx-correct: 3.2.0
2828 | spdx-expression-parse: 3.0.1
2829 | dev: false
2830 |
2831 | /validate-npm-package-name/4.0.0:
2832 | resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==}
2833 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
2834 | dependencies:
2835 | builtins: 5.0.1
2836 | dev: true
2837 |
2838 | /vite/2.9.15:
2839 | resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==}
2840 | engines: {node: '>=12.2.0'}
2841 | hasBin: true
2842 | peerDependencies:
2843 | less: '*'
2844 | sass: '*'
2845 | stylus: '*'
2846 | peerDependenciesMeta:
2847 | less:
2848 | optional: true
2849 | sass:
2850 | optional: true
2851 | stylus:
2852 | optional: true
2853 | dependencies:
2854 | esbuild: 0.14.54
2855 | postcss: 8.4.21
2856 | resolve: 1.22.1
2857 | rollup: 2.77.3
2858 | optionalDependencies:
2859 | fsevents: 2.3.2
2860 | dev: true
2861 |
2862 | /vitest/0.15.2:
2863 | resolution: {integrity: sha512-cMabuUqu+nNHafkdN7H8Z20+UZTrrUfqjGwAoLwUwrqFGWBz3gXwxndjbLf6mgSFs9lF/JWjKeNM1CXKwtk26w==}
2864 | engines: {node: '>=v14.16.0'}
2865 | hasBin: true
2866 | peerDependencies:
2867 | '@vitest/ui': '*'
2868 | c8: '*'
2869 | happy-dom: '*'
2870 | jsdom: '*'
2871 | peerDependenciesMeta:
2872 | '@vitest/ui':
2873 | optional: true
2874 | c8:
2875 | optional: true
2876 | happy-dom:
2877 | optional: true
2878 | jsdom:
2879 | optional: true
2880 | dependencies:
2881 | '@types/chai': 4.3.4
2882 | '@types/chai-subset': 1.3.3
2883 | '@types/node': 18.15.0
2884 | chai: 4.3.7
2885 | debug: 4.3.4
2886 | local-pkg: 0.4.3
2887 | tinypool: 0.1.3
2888 | tinyspy: 0.3.3
2889 | vite: 2.9.15
2890 | transitivePeerDependencies:
2891 | - less
2892 | - sass
2893 | - stylus
2894 | - supports-color
2895 | dev: true
2896 |
2897 | /wcwidth/1.0.1:
2898 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
2899 | dependencies:
2900 | defaults: 1.0.4
2901 | dev: false
2902 |
2903 | /webidl-conversions/3.0.1:
2904 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
2905 | dev: false
2906 |
2907 | /whatwg-url/5.0.0:
2908 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
2909 | dependencies:
2910 | tr46: 0.0.3
2911 | webidl-conversions: 3.0.1
2912 | dev: false
2913 |
2914 | /which-boxed-primitive/1.0.2:
2915 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2916 | dependencies:
2917 | is-bigint: 1.0.4
2918 | is-boolean-object: 1.1.2
2919 | is-number-object: 1.0.7
2920 | is-string: 1.0.7
2921 | is-symbol: 1.0.4
2922 | dev: false
2923 |
2924 | /which-module/2.0.0:
2925 | resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==}
2926 | dev: false
2927 |
2928 | /which-pm/2.0.0:
2929 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
2930 | engines: {node: '>=8.15'}
2931 | dependencies:
2932 | load-yaml-file: 0.2.0
2933 | path-exists: 4.0.0
2934 | dev: false
2935 |
2936 | /which-typed-array/1.1.9:
2937 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
2938 | engines: {node: '>= 0.4'}
2939 | dependencies:
2940 | available-typed-arrays: 1.0.5
2941 | call-bind: 1.0.2
2942 | for-each: 0.3.3
2943 | gopd: 1.0.1
2944 | has-tostringtag: 1.0.0
2945 | is-typed-array: 1.1.10
2946 | dev: false
2947 |
2948 | /which/1.3.1:
2949 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
2950 | hasBin: true
2951 | dependencies:
2952 | isexe: 2.0.0
2953 | dev: false
2954 |
2955 | /which/2.0.2:
2956 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2957 | engines: {node: '>= 8'}
2958 | hasBin: true
2959 | dependencies:
2960 | isexe: 2.0.0
2961 | dev: true
2962 |
2963 | /wrangler/2.12.2:
2964 | resolution: {integrity: sha512-pjdZvcjiFD6mI3Nncsw3hBv3rxjMx0n4Mtp+Tsql/hvr0LpOmHKlW/aMeYx/fVUmjEKfWBSULc1vgM02O2UTWQ==}
2965 | engines: {node: '>=16.13.0'}
2966 | hasBin: true
2967 | dependencies:
2968 | '@cloudflare/kv-asset-handler': 0.2.0
2969 | '@esbuild-plugins/node-globals-polyfill': 0.1.1_esbuild@0.16.3
2970 | '@esbuild-plugins/node-modules-polyfill': 0.1.4_esbuild@0.16.3
2971 | '@miniflare/core': 2.12.1
2972 | '@miniflare/d1': 2.12.1
2973 | '@miniflare/durable-objects': 2.12.1
2974 | blake3-wasm: 2.1.5
2975 | chokidar: 3.5.3
2976 | esbuild: 0.16.3
2977 | miniflare: 2.12.1
2978 | nanoid: 3.3.4
2979 | path-to-regexp: 6.2.1
2980 | selfsigned: 2.1.1
2981 | source-map: 0.7.4
2982 | xxhash-wasm: 1.0.2
2983 | optionalDependencies:
2984 | fsevents: 2.3.2
2985 | transitivePeerDependencies:
2986 | - '@miniflare/storage-redis'
2987 | - bufferutil
2988 | - cron-schedule
2989 | - ioredis
2990 | - utf-8-validate
2991 | dev: true
2992 |
2993 | /wrap-ansi/6.2.0:
2994 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
2995 | engines: {node: '>=8'}
2996 | dependencies:
2997 | ansi-styles: 4.3.0
2998 | string-width: 4.2.3
2999 | strip-ansi: 6.0.1
3000 | dev: false
3001 |
3002 | /wrap-ansi/7.0.0:
3003 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
3004 | engines: {node: '>=10'}
3005 | dependencies:
3006 | ansi-styles: 4.3.0
3007 | string-width: 4.2.3
3008 | strip-ansi: 6.0.1
3009 | dev: false
3010 |
3011 | /ws/8.13.0:
3012 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
3013 | engines: {node: '>=10.0.0'}
3014 | peerDependencies:
3015 | bufferutil: ^4.0.1
3016 | utf-8-validate: '>=5.0.2'
3017 | peerDependenciesMeta:
3018 | bufferutil:
3019 | optional: true
3020 | utf-8-validate:
3021 | optional: true
3022 | dev: true
3023 |
3024 | /xxhash-wasm/1.0.2:
3025 | resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==}
3026 | dev: true
3027 |
3028 | /y18n/4.0.3:
3029 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
3030 | dev: false
3031 |
3032 | /y18n/5.0.8:
3033 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
3034 | engines: {node: '>=10'}
3035 | dev: false
3036 |
3037 | /yallist/2.1.2:
3038 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
3039 | dev: false
3040 |
3041 | /yallist/4.0.0:
3042 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
3043 | dev: true
3044 |
3045 | /yargs-parser/18.1.3:
3046 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
3047 | engines: {node: '>=6'}
3048 | dependencies:
3049 | camelcase: 5.3.1
3050 | decamelize: 1.2.0
3051 | dev: false
3052 |
3053 | /yargs-parser/21.1.1:
3054 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
3055 | engines: {node: '>=12'}
3056 | dev: false
3057 |
3058 | /yargs/15.4.1:
3059 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
3060 | engines: {node: '>=8'}
3061 | dependencies:
3062 | cliui: 6.0.0
3063 | decamelize: 1.2.0
3064 | find-up: 4.1.0
3065 | get-caller-file: 2.0.5
3066 | require-directory: 2.1.1
3067 | require-main-filename: 2.0.0
3068 | set-blocking: 2.0.0
3069 | string-width: 4.2.3
3070 | which-module: 2.0.0
3071 | y18n: 4.0.3
3072 | yargs-parser: 18.1.3
3073 | dev: false
3074 |
3075 | /yargs/17.7.1:
3076 | resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
3077 | engines: {node: '>=12'}
3078 | dependencies:
3079 | cliui: 8.0.1
3080 | escalade: 3.1.1
3081 | get-caller-file: 2.0.5
3082 | require-directory: 2.1.1
3083 | string-width: 4.2.3
3084 | y18n: 5.0.8
3085 | yargs-parser: 21.1.1
3086 | dev: false
3087 |
3088 | /yocto-queue/0.1.0:
3089 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
3090 | engines: {node: '>=10'}
3091 | dev: false
3092 |
3093 | /youch/2.2.2:
3094 | resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==}
3095 | dependencies:
3096 | '@types/stack-trace': 0.0.29
3097 | cookie: 0.4.2
3098 | mustache: 4.2.0
3099 | stack-trace: 0.0.10
3100 | dev: true
3101 |
3102 | /zod/3.21.4:
3103 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
3104 | dev: true
3105 |
--------------------------------------------------------------------------------