├── src
├── index.ts
├── lib
│ ├── openai
│ │ ├── index.ts
│ │ ├── node.ts
│ │ └── edge.ts
│ ├── streaming
│ │ ├── index.ts
│ │ ├── transforms.ts
│ │ └── streams.ts
│ ├── index.ts
│ ├── pinned.ts
│ ├── backoff.ts
│ ├── errors.ts
│ └── types.ts
└── globs
│ └── shared.ts
├── node.d.ts
├── typedoc.json
├── node.js
├── test
├── env.ts
├── snapshots
│ ├── streams.test.ts.snap
│ └── streams.test.ts.md
└── streams.test.ts
├── node.cjs
├── .gitignore
├── example
├── .eslintrc.json
├── public
│ ├── favicon.ico
│ ├── vercel.svg
│ ├── thirteen.svg
│ └── next.svg
├── next.config.js
├── src
│ ├── pages
│ │ ├── _app.tsx
│ │ ├── _document.tsx
│ │ ├── api
│ │ │ └── hello.ts
│ │ └── index.tsx
│ └── styles
│ │ ├── globals.css
│ │ └── Home.module.css
├── .gitignore
├── package.json
├── tsconfig.json
├── README.md
└── yarn.lock
├── ava.config.mjs
├── tsconfig.json
├── LICENSE
├── .eslintrc
├── .github
└── workflows
│ ├── ci.yml
│ ├── release.prod.yml
│ └── release.canary.yml
├── package.json
└── README.md
/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./lib";
2 |
--------------------------------------------------------------------------------
/node.d.ts:
--------------------------------------------------------------------------------
1 | export * from "./dist/lib/openai/node";
--------------------------------------------------------------------------------
/src/lib/openai/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./edge";
--------------------------------------------------------------------------------
/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "out": "./public/docs"
3 | }
--------------------------------------------------------------------------------
/node.js:
--------------------------------------------------------------------------------
1 | export * from "./dist/lib/openai/node.js";
--------------------------------------------------------------------------------
/test/env.ts:
--------------------------------------------------------------------------------
1 | import { config } from "dotenv";
2 | config();
--------------------------------------------------------------------------------
/node.cjs:
--------------------------------------------------------------------------------
1 | module.exports = require("./dist/lib/openai/node.js");
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | node_modules
3 | dist
4 | .DS_Store
5 |
6 | public/docs
--------------------------------------------------------------------------------
/example/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/src/lib/streaming/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./streams";
2 | export * from "./transforms";
--------------------------------------------------------------------------------
/example/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpellcraftAI/openai-streams/HEAD/example/public/favicon.ico
--------------------------------------------------------------------------------
/src/lib/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./openai";
2 | export * from "./types";
3 | export * from "./streaming";
4 | export * from "./errors";
--------------------------------------------------------------------------------
/test/snapshots/streams.test.ts.snap:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpellcraftAI/openai-streams/HEAD/test/snapshots/streams.test.ts.snap
--------------------------------------------------------------------------------
/example/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | }
5 |
6 | module.exports = nextConfig
7 |
--------------------------------------------------------------------------------
/src/globs/shared.ts:
--------------------------------------------------------------------------------
1 | export const RUNTIME = globalThis.process?.versions?.node ? "node" : "edge";
2 | export const ENCODER = new TextEncoder();
3 | export const DECODER = new TextDecoder();
--------------------------------------------------------------------------------
/src/lib/pinned.ts:
--------------------------------------------------------------------------------
1 | export type {
2 | CreateChatCompletionRequest,
3 | CreateCompletionRequest,
4 | CreateEditRequest,
5 | CreateEmbeddingRequest,
6 | CreateFineTuneRequest,
7 | CreateImageRequest,
8 | } from "openai";
--------------------------------------------------------------------------------
/example/src/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import "@/styles/globals.css";
2 | import type { AppProps } from "next/app";
3 |
4 | export default function App({ Component, pageProps }: AppProps) {
5 | return ;
6 | }
7 |
--------------------------------------------------------------------------------
/ava.config.mjs:
--------------------------------------------------------------------------------
1 | export const avaConfig = {
2 | "files": [
3 | "test/**/*.test.ts"
4 | ],
5 | "extensions": {
6 | "ts": "module"
7 | },
8 | "nodeArguments": [
9 | "--no-warnings",
10 | "--loader=@tsmodule/tsmodule/loader"
11 | ]
12 | };
13 |
14 | export default avaConfig;
--------------------------------------------------------------------------------
/example/src/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import { Html, Head, Main, NextScript } from "next/document";
2 |
3 | export default function Document() {
4 | return (
5 |
6 |
8 |
9 |
10 |
11 |
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/example/src/pages/api/hello.ts:
--------------------------------------------------------------------------------
1 | import { OpenAI } from "openai-streams";
2 |
3 | export default async function handler() {
4 | const stream = await OpenAI(
5 | "completions",
6 | {
7 | model: "text-davinci-003",
8 | prompt: "Write a sentence.\n\n",
9 | max_tokens: 100
10 | }
11 | );
12 |
13 | return new Response(stream);
14 | }
15 |
16 | export const config = {
17 | runtime: "edge"
18 | };
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/example/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@next/font": "13.1.6",
13 | "@types/node": "18.14.0",
14 | "@types/react": "18.0.28",
15 | "@types/react-dom": "18.0.11",
16 | "eslint": "8.34.0",
17 | "eslint-config-next": "13.1.6",
18 | "next": "13.1.6",
19 | "openai-streams": "^1.0.19",
20 | "react": "18.2.0",
21 | "react-dom": "18.2.0",
22 | "typescript": "4.9.5"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/test/snapshots/streams.test.ts.md:
--------------------------------------------------------------------------------
1 | # Snapshot report for `test/streams.test.ts`
2 |
3 | The actual snapshot is saved in `streams.test.ts.snap`.
4 |
5 | Generated by [AVA](https://avajs.dev).
6 |
7 | ## mode = 'tokens': error handling
8 |
9 | > Tokens mode should throw for MAX_TOKENS.
10 |
11 | `{␊
12 | "type": "MAX_TOKENS",␊
13 | "message": "Maximum number of tokens reached."␊
14 | }`
15 |
16 | ## ChatGPT error propagation
17 |
18 | > Snapshot 1
19 |
20 | Error (OpenAIError) {
21 | type: 'INVALID_API_KEY',
22 | message: 'Incorrect API key provided. You can find your API key at https://platform.openai.com/account/api-keys.',
23 | }
24 |
--------------------------------------------------------------------------------
/example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "incremental": true,
17 | "baseUrl": ".",
18 | "paths": {
19 | "@/*": ["./src/*"]
20 | }
21 | },
22 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
23 | "exclude": ["node_modules"]
24 | }
25 |
--------------------------------------------------------------------------------
/src/lib/openai/node.ts:
--------------------------------------------------------------------------------
1 | import { Readable } from "stream";
2 | import { yieldStream } from "yield-stream";
3 | import { OpenAINodeClient } from "../types";
4 | import { OpenAI as OpenAIEdge } from "./edge";
5 |
6 | /**
7 | * A Node.js client for OpenAI's API, using NodeJS.Readable.
8 | *
9 | * Create a new completion stream. Stream of strings by default, set `mode:
10 | * 'raw'` for the raw stream of JSON objects.
11 | *
12 | * @note Use `openai-streams/edge` for Edge Runtime or Browser.
13 | */
14 | export const OpenAI: OpenAINodeClient = async (
15 | endpoint,
16 | args,
17 | options,
18 | ) => {
19 | const stream = await OpenAIEdge(endpoint, args, options);
20 | const nodeStream = Readable.from(yieldStream(stream));
21 |
22 | return nodeStream;
23 | };
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": [
3 | "*env.d.ts",
4 | "src/**/*"
5 | ],
6 | "exclude": [
7 | "node_modules",
8 | "test/**"
9 | ],
10 | "compilerOptions": {
11 | "moduleResolution": "Node",
12 | "target": "ESNext",
13 | "module": "ESNext",
14 | "lib": [
15 | "ESNext",
16 | "DOM"
17 | ],
18 | "jsx": "preserve",
19 | "rootDir": "src",
20 | "outDir": "dist",
21 | "allowJs": true,
22 | "importHelpers": true,
23 | "esModuleInterop": true,
24 | "allowSyntheticDefaultImports": true,
25 | "strict": true,
26 | "noUnusedLocals": true,
27 | "noUnusedParameters": true,
28 | "noImplicitReturns": true,
29 | "noFallthroughCasesInSwitch": true,
30 | "skipLibCheck": true,
31 | "resolveJsonModule": true,
32 | "declaration": true,
33 | "sourceMap": true,
34 | "checkJs": true,
35 | "noEmit": false,
36 | "forceConsistentCasingInFileNames": true,
37 | "isolatedModules": true,
38 | "incremental": false
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Permission is hereby granted, free of charge, to any person obtaining a copy of
2 | this software and associated documentation files (the "Software"), to deal in
3 | the Software without restriction, including without limitation the rights to
4 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
5 | the Software, and to permit persons to whom the Software is furnished to do so,
6 | subject to the following conditions:
7 |
8 | The above copyright notice and this permission notice shall be included in all
9 | copies or substantial portions of the Software.
10 |
11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
13 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
15 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/example/public/thirteen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "plugin:@typescript-eslint/recommended"
4 | ],
5 | "parser": "@typescript-eslint/parser",
6 | "plugins": ["@typescript-eslint"],
7 | "rules": {
8 |
9 | "no-console": "error",
10 | "no-trailing-spaces": "error",
11 | "max-len": [1, 80, 2, {
12 | "ignorePattern": "^import\\s.+\\sfrom\\s.+;$",
13 | "ignoreUrls": true,
14 | "ignoreStrings": true,
15 | "ignoreTemplateLiterals": true,
16 | "ignoreRegExpLiterals": true
17 | }],
18 |
19 | "@typescript-eslint/type-annotation-spacing": ["error"],
20 |
21 | "@typescript-eslint/ban-ts-comment": [
22 | "error",
23 | {
24 | "ts-nocheck": "allow-with-description",
25 | "ts-ignore": "allow-with-description"
26 | }
27 | ],
28 |
29 | "indent": "off",
30 | "@typescript-eslint/indent": ["error", 2],
31 |
32 | "semi": "off",
33 | "@typescript-eslint/semi": ["error", "always"],
34 |
35 | "quotes": "off",
36 | "@typescript-eslint/quotes": ["error", "double"],
37 |
38 | "object-curly-spacing": "off",
39 | "@typescript-eslint/object-curly-spacing": ["error", "always"]
40 | }
41 | }
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: Test changes
2 |
3 | on:
4 | - push
5 | - pull_request_target
6 |
7 | env:
8 | GITHUB_TOKEN: ${{ secrets.OVERRIDE_GITHUB_TOKEN }}
9 | OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
10 |
11 | jobs:
12 | test:
13 | name: Node ${{ matrix.nodejs }} on ${{ matrix.os }}
14 | runs-on: ${{ matrix.os }}
15 | timeout-minutes: 10
16 | strategy:
17 | matrix:
18 | nodejs: [
19 | 18,
20 | # 16,
21 | # "lts/*"
22 | ]
23 | os: [
24 | ubuntu-latest,
25 | macos-latest,
26 | # windows-latest,
27 | ]
28 | steps:
29 |
30 | - name: Use Git checkout with submodules
31 | uses: actions/checkout@v3
32 | with:
33 | submodules: recursive
34 | token: ${{ secrets.OVERRIDE_GITHUB_TOKEN }}
35 |
36 | - name: Use PNPM
37 | uses: pnpm/action-setup@v2
38 | with:
39 | version: latest
40 |
41 | - name: Use Node.js ${{ matrix.node-version }}
42 | uses: actions/setup-node@v3
43 | with:
44 | cache: pnpm
45 | node-version: ${{ matrix.node-version }}
46 |
47 | - name: Install
48 | run: pnpm i
49 |
50 | - name: Test
51 | run: pnpm test
--------------------------------------------------------------------------------
/example/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lib/backoff.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 | import type NodeFetch from "node-fetch";
3 | import type { RequestInfo as NodeFetchRequestInfo, RequestInit as NodeFetchRequestInit } from "node-fetch";
4 |
5 | type Fetch = typeof NodeFetch | typeof fetch;
6 |
7 | export interface BackoffOptions {
8 | maxRetries: number;
9 | delay: number;
10 | }
11 |
12 | export const fetchWithBackoff = async (
13 | input: RequestInfo & NodeFetchRequestInfo,
14 | init?: RequestInit & NodeFetchRequestInit,
15 | fetch: Fetch = globalThis.fetch,
16 | { delay, maxRetries }: BackoffOptions = {
17 | delay: 500,
18 | maxRetries: 7
19 | }
20 | ) => {
21 | if (!fetch) {
22 | throw new Error("No fetch implementation found.");
23 | }
24 |
25 | for (let i = 0; i <= maxRetries; i++) {
26 | try {
27 | const response = await fetch(input, init);
28 |
29 | if (!response.ok) {
30 | const errorData = await response.json();
31 | if (errorData.type === "RATE_LIMIT_REACHED") {
32 | throw new Error("RATE_LIMIT_REACHED");
33 | }
34 | }
35 |
36 | return response;
37 | } catch (error: any) {
38 | if (
39 | error.message === "RATE_LIMIT_REACHED" &&
40 | i < maxRetries
41 | ) {
42 | console.log("Rate limit reached. Retrying in " + delay + "ms");
43 | await new Promise((resolve) => setTimeout(resolve, delay));
44 |
45 | delay *= 2;
46 | } else {
47 | throw error;
48 | }
49 | }
50 | }
51 |
52 | throw new Error("Max retries reached.");
53 | };
--------------------------------------------------------------------------------
/src/lib/errors.ts:
--------------------------------------------------------------------------------
1 | export const OpenAIErrors = {
2 | "NO_API_KEY": "No API key provided. Please set the OPENAI_API_KEY environment variable or pass the { apiKey } option.",
3 | "MAX_TOKENS": "Maximum number of tokens reached.",
4 | "UNKNOWN": "An unknown error occurred.",
5 | "INVALID_API_KEY": "Incorrect API key provided. You can find your API key at https://platform.openai.com/account/api-keys.",
6 | "INVALID_MODEL": "The model does not exist",
7 | "RATE_LIMIT_REACHED": "You are sending requests too quickly. Pace your requests. Read the Rate limit guide.",
8 | "EXCEEDED_QUOTA": "You have hit your maximum monthly spend (hard limit) which you can view in the account billing section. Apply for a quota increase.",
9 | "ENGINE_OVERLOAD": "Our servers are experiencing high traffic. Please retry your requests after a brief wait.",
10 | "SERVER_ERROR": "Issue on our servers. Retry your request after a brief wait and contact us if the issue persists. Check the status page.",
11 | } as const;
12 |
13 | export type OpenAIErrorType = keyof typeof OpenAIErrors;
14 | export type OpenAIErrorMessage = typeof OpenAIErrors[OpenAIErrorType];
15 |
16 | export class OpenAIError extends Error {
17 | type: OpenAIErrorType;
18 | message: OpenAIErrorMessage;
19 |
20 | constructor(
21 | type: OpenAIErrorType,
22 | ) {
23 | const message = OpenAIErrors[type];
24 |
25 | super(message);
26 | this.message = message;
27 | this.type = type;
28 | }
29 |
30 | toJSON() {
31 | return {
32 | type: this.type,
33 | message: this.message,
34 | };
35 | }
36 | }
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | # or
12 | pnpm dev
13 | ```
14 |
15 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
16 |
17 | You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
18 |
19 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
20 |
21 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
22 |
23 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
24 |
25 | ## Learn More
26 |
27 | To learn more about Next.js, take a look at the following resources:
28 |
29 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
30 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
31 |
32 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
33 |
34 | ## Deploy on Vercel
35 |
36 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
37 |
38 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
39 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "Spellcraft Inc. ",
3 | "name": "openai-streams",
4 | "description": "Tools for working with OpenAI streams in Node.js and TypeScript.",
5 | "homepage": "https://github.com/SpellcraftAI/openai-streams",
6 | "version": "6.1.0",
7 | "license": "MIT",
8 | "platform": "node",
9 | "engines": {
10 | "node": ">=14"
11 | },
12 | "types": "dist/index.d.ts",
13 | "files": [
14 | "dist",
15 | "./node.*"
16 | ],
17 | "exports": {
18 | "./package.json": "./package.json",
19 | "./node": {
20 | "import": "./node.js",
21 | "require": "./node.cjs"
22 | },
23 | ".": {
24 | "import": "./dist/index.js",
25 | "require": "./dist/index.cjs"
26 | },
27 | "./*": {
28 | "import": "./dist/*/index.js",
29 | "require": "./dist/*/index.cjs"
30 | }
31 | },
32 | "scripts": {
33 | "dev": "tsmodule dev",
34 | "export-docs": "pnpm typedoc src",
35 | "export": "tsmodule build",
36 | "cjs": "tsmodule build -b -f cjs",
37 | "build": "pnpm export && pnpm export-docs",
38 | "test": "ava",
39 | "prepublishOnly": "pnpm test",
40 | "lint": "eslint src --fix"
41 | },
42 | "devDependencies": {
43 | "@tsmodule/tsmodule": "^44.5.0",
44 | "@types/node": "^20.2.1",
45 | "@typescript-eslint/eslint-plugin": "^5.59.6",
46 | "@typescript-eslint/parser": "^5.59.6",
47 | "ava": "^5.2.0",
48 | "dotenv": "^16.0.3",
49 | "eslint": "^8.41.0",
50 | "node-fetch": "^3.3.1",
51 | "openai": "^3.3.0",
52 | "typedoc": "^0.24.7",
53 | "typescript": "^5.0.4"
54 | },
55 | "dependencies": {
56 | "eventsource-parser": "^1.0.0",
57 | "yield-stream": "^3.0.0"
58 | },
59 | "keywords": [
60 | "openai",
61 | "typescript",
62 | "streams",
63 | "gpt-3",
64 | "gpt-4"
65 | ],
66 | "release-it": {
67 | "git": {
68 | "commitMessage": "release: v${version}",
69 | "tagAnnotation": "v${version}"
70 | },
71 | "github": {
72 | "release": true,
73 | "releaseName": "v${version}"
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/.github/workflows/release.prod.yml:
--------------------------------------------------------------------------------
1 | name: Release (production)
2 |
3 | on:
4 | workflow_dispatch: {}
5 |
6 | pull_request_target:
7 | types:
8 | - closed
9 |
10 | branches:
11 | - master
12 |
13 | env:
14 | GITHUB_TOKEN: ${{ secrets.OVERRIDE_GITHUB_TOKEN }}
15 | OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
16 |
17 | jobs:
18 | Release:
19 | if: github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true
20 |
21 | name: Node.js v${{ matrix.nodejs }} (${{ matrix.os }})
22 | runs-on: ${{ matrix.os }}
23 | timeout-minutes: 10
24 |
25 | strategy:
26 | matrix:
27 | nodejs: [18]
28 | os: [ubuntu-latest]
29 |
30 | steps:
31 | - uses: actions/checkout@v2
32 | - uses: actions/setup-node@v3
33 | with:
34 | node-version: ${{ matrix.nodejs }}
35 |
36 | - name: Authenticate with private NPM package
37 | run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
38 |
39 | - name: git config
40 | run: |
41 | git config user.name "${GITHUB_ACTOR}"
42 | git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
43 |
44 | - name: Use Git checkout with submodules
45 | uses: actions/checkout@v3
46 | with:
47 | submodules: recursive
48 | token: ${{ secrets.OVERRIDE_GITHUB_TOKEN }}
49 |
50 | - name: Use PNPM
51 | uses: pnpm/action-setup@v2
52 | with:
53 | version: latest
54 |
55 | - name: Use Node.js ${{ matrix.node-version }}
56 | uses: actions/setup-node@v3
57 | with:
58 | cache: pnpm
59 | node-version: ${{ matrix.node-version }}
60 |
61 | - name: Install
62 | run: pnpm i
63 |
64 | - name: Configure Git
65 | run: |
66 | git config user.name "${GITHUB_ACTOR}"
67 | git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
68 |
69 | - name: Build (ESM)
70 | run: pnpm build
71 |
72 | - name: Test & Release (ESM)
73 | run: npx release-it minor --ci -VV
74 |
75 | - name: Build (CJS)
76 | run: pnpm cjs
77 |
78 | - name: Test & Release (CJS)
79 | run: npm version prerelease --no-git-tag-version && npm publish --tag cjs
80 |
--------------------------------------------------------------------------------
/.github/workflows/release.canary.yml:
--------------------------------------------------------------------------------
1 | name: Release (canary)
2 |
3 | env:
4 | GITHUB_TOKEN: ${{ secrets.OVERRIDE_GITHUB_TOKEN }}
5 | OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
6 |
7 | on:
8 | workflow_dispatch: {}
9 |
10 | pull_request_target:
11 | types:
12 | - closed
13 |
14 | branches:
15 | - canary
16 |
17 | jobs:
18 | Release:
19 | if: github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true
20 |
21 | name: Node.js v${{ matrix.nodejs }} (${{ matrix.os }})
22 | runs-on: ${{ matrix.os }}
23 | timeout-minutes: 10
24 |
25 | strategy:
26 | matrix:
27 | nodejs: [18]
28 | os: [ubuntu-latest]
29 |
30 | steps:
31 | - uses: actions/checkout@v2
32 | - uses: actions/setup-node@v3
33 | with:
34 | node-version: ${{ matrix.nodejs }}
35 |
36 | - name: Authenticate with private NPM package
37 | run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
38 |
39 | - name: git config
40 | run: |
41 | git config user.name "${GITHUB_ACTOR}"
42 | git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
43 |
44 | - name: Use Git checkout with submodules
45 | uses: actions/checkout@v3
46 | with:
47 | submodules: recursive
48 | token: ${{ secrets.OVERRIDE_GITHUB_TOKEN }}
49 |
50 | - name: Use PNPM
51 | uses: pnpm/action-setup@v2
52 | with:
53 | version: latest
54 |
55 | - name: Use Node.js ${{ matrix.node-version }}
56 | uses: actions/setup-node@v3
57 | with:
58 | cache: pnpm
59 | node-version: ${{ matrix.node-version }}
60 |
61 | - name: Install
62 | run: pnpm i
63 |
64 | - name: Configure Git
65 | run: |
66 | git config user.name "${GITHUB_ACTOR}"
67 | git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
68 |
69 | - name: Build (ESM)
70 | run: pnpm build
71 |
72 | - name: Test & Release (ESM)
73 | run: npx release-it --preRelease=canary --ci -VV
74 |
75 | - name: Build (CJS)
76 | run: pnpm cjs
77 |
78 | - name: Test & Release (CJS)
79 | run: npx release-it --no-git --preRelease=cjs --github.release --ci --VV
80 |
--------------------------------------------------------------------------------
/src/lib/streaming/transforms.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 | import { Transform } from "yield-stream";
3 | import { ENCODER, DECODER } from "../../globs/shared";
4 | import { OpenAIError } from "../errors";
5 |
6 | /**
7 | * Parse the first text choice from an OpenAI API response. It may be stored on
8 | * result.choices[0].text or now, result.choices[0].message for Chat.
9 | */
10 | export const getTokensFromResponse = (response: any) => {
11 | // console.log(JSON.stringify(response, null, 2));
12 | const firstResponse = response?.choices?.[0];
13 | if (!firstResponse) {
14 | console.error("No choices received from OpenAI");
15 | throw new OpenAIError("UNKNOWN");
16 | }
17 |
18 | const text = firstResponse?.text ?? firstResponse?.message;
19 | if (typeof text !== "string") {
20 | console.error("No text received from OpenAI choice");
21 | throw new OpenAIError("UNKNOWN");
22 | }
23 |
24 | return text;
25 | };
26 |
27 | /**
28 | * A transformer that receives chunks of parsed server sent events from OpenAI
29 | * and yields the delta of the first choice.
30 | */
31 | export const ChatParser: Transform = async function* (chunk) {
32 | const decoded = DECODER.decode(chunk);
33 | const response = JSON.parse(decoded);
34 | const firstResult = response?.choices?.[0];
35 | const { delta } = firstResult ?? {};
36 |
37 | if (typeof delta !== "object") {
38 | console.error("Received invalid delta from OpenAI in ChatParser.");
39 | throw new OpenAIError("UNKNOWN");
40 | }
41 |
42 | const { content } = delta;
43 | if (content) {
44 | yield ENCODER.encode(content);
45 | }
46 | };
47 |
48 | /**
49 | * A transformer that receives chunks of parsed server sent events from OpenAI
50 | * and yields the text of the first choice.
51 | */
52 | export const TokenParser: Transform = async function* (chunk) {
53 | const decoded = DECODER.decode(chunk);
54 | const response = JSON.parse(decoded);
55 | const tokens = getTokensFromResponse(response);
56 |
57 | yield ENCODER.encode(tokens);
58 | };
59 |
60 | /**
61 | * A transformer that receives chunks of parsed server sent events from OpenAI
62 | * and yields the JSON of the first choice's logprobs.
63 | */
64 | export const LogprobsParser: Transform = async function* (chunk) {
65 | const ENCODER = new TextEncoder();
66 | const DECODER = new TextDecoder();
67 |
68 | const decoded = DECODER.decode(chunk);
69 | const message = JSON.parse(decoded);
70 |
71 | const { logprobs } = message?.choices?.[0];
72 | if (!logprobs) {
73 | return;
74 | }
75 |
76 | yield ENCODER.encode(JSON.stringify(logprobs));
77 | };
--------------------------------------------------------------------------------
/example/src/styles/globals.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --max-width: 1100px;
3 | --border-radius: 12px;
4 | --font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono',
5 | 'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro',
6 | 'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace;
7 |
8 | --foreground-rgb: 0, 0, 0;
9 | --background-start-rgb: 214, 219, 220;
10 | --background-end-rgb: 255, 255, 255;
11 |
12 | --primary-glow: conic-gradient(
13 | from 180deg at 50% 50%,
14 | #16abff33 0deg,
15 | #0885ff33 55deg,
16 | #54d6ff33 120deg,
17 | #0071ff33 160deg,
18 | transparent 360deg
19 | );
20 | --secondary-glow: radial-gradient(
21 | rgba(255, 255, 255, 1),
22 | rgba(255, 255, 255, 0)
23 | );
24 |
25 | --tile-start-rgb: 239, 245, 249;
26 | --tile-end-rgb: 228, 232, 233;
27 | --tile-border: conic-gradient(
28 | #00000080,
29 | #00000040,
30 | #00000030,
31 | #00000020,
32 | #00000010,
33 | #00000010,
34 | #00000080
35 | );
36 |
37 | --callout-rgb: 238, 240, 241;
38 | --callout-border-rgb: 172, 175, 176;
39 | --card-rgb: 180, 185, 188;
40 | --card-border-rgb: 131, 134, 135;
41 | }
42 |
43 | @media (prefers-color-scheme: dark) {
44 | :root {
45 | --foreground-rgb: 255, 255, 255;
46 | --background-start-rgb: 0, 0, 0;
47 | --background-end-rgb: 0, 0, 0;
48 |
49 | --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0));
50 | --secondary-glow: linear-gradient(
51 | to bottom right,
52 | rgba(1, 65, 255, 0),
53 | rgba(1, 65, 255, 0),
54 | rgba(1, 65, 255, 0.3)
55 | );
56 |
57 | --tile-start-rgb: 2, 13, 46;
58 | --tile-end-rgb: 2, 5, 19;
59 | --tile-border: conic-gradient(
60 | #ffffff80,
61 | #ffffff40,
62 | #ffffff30,
63 | #ffffff20,
64 | #ffffff10,
65 | #ffffff10,
66 | #ffffff80
67 | );
68 |
69 | --callout-rgb: 20, 20, 20;
70 | --callout-border-rgb: 108, 108, 108;
71 | --card-rgb: 100, 100, 100;
72 | --card-border-rgb: 200, 200, 200;
73 | }
74 | }
75 |
76 | * {
77 | box-sizing: border-box;
78 | padding: 0;
79 | margin: 0;
80 | }
81 |
82 | html,
83 | body {
84 | max-width: 100vw;
85 | overflow-x: hidden;
86 | }
87 |
88 | body {
89 | color: rgb(var(--foreground-rgb));
90 | background: linear-gradient(
91 | to bottom,
92 | transparent,
93 | rgb(var(--background-end-rgb))
94 | )
95 | rgb(var(--background-start-rgb));
96 | }
97 |
98 | a {
99 | color: inherit;
100 | text-decoration: none;
101 | }
102 |
103 | @media (prefers-color-scheme: dark) {
104 | html {
105 | color-scheme: dark;
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/src/lib/types.ts:
--------------------------------------------------------------------------------
1 | import type {
2 | CreateChatCompletionRequest,
3 | CreateCompletionRequest,
4 | CreateEditRequest,
5 | CreateEmbeddingRequest,
6 | CreateFineTuneRequest,
7 | CreateImageRequest,
8 | } from "./pinned";
9 |
10 | import { OpenAIStreamOptions } from "./streaming";
11 |
12 | import nodeFetch from "node-fetch";
13 |
14 | export const OpenAIAPIEndpoints = {
15 | chat: "chat/completions",
16 | completions: "completions",
17 | edits: "edits",
18 | embeddings: "embeddings",
19 | images: "images",
20 | "fine-tunes": "fine-tunes",
21 | } as const;
22 |
23 | export type OpenAIAPIEndpoint = keyof typeof OpenAIAPIEndpoints;
24 |
25 | export type OpenAICreateArgs =
26 | T extends "completions"
27 | ? Omit
28 | : T extends "edits"
29 | ? CreateEditRequest
30 | : T extends "embeddings"
31 | ? CreateEmbeddingRequest
32 | : T extends "images"
33 | ? CreateImageRequest
34 | : T extends "fine-tunes"
35 | ? CreateFineTuneRequest
36 | : T extends "chat"
37 | ? CreateChatCompletionRequest
38 | : never;
39 |
40 | export interface OpenAIOptions extends OpenAIStreamOptions {
41 | /**
42 | * By default, the API base is https://api.openai.com/v1, corresponding
43 | * to OpenAIs API. You can override this to use a different provider or proxy.
44 | */
45 | apiBase?: string;
46 | /**
47 | * By default, the API key is read from the OPENAI_API_KEY environment
48 | * variable. You can override this by passing a different key here.
49 | */
50 | apiKey?: string;
51 | /**
52 | * Additional headers to pass to the API. This is useful is you want to
53 | * pass additional parameters to a proxy service, for instance.
54 | */
55 | apiHeaders?: Record;
56 | /**
57 | * An optional AbortController, which can be used to abort the request
58 | * mid-flight.
59 | */
60 | controller?: AbortController;
61 | /**
62 | * An optional custom fetch implementation, which will be used to replace the
63 | * default fetch/node-fetch call used for making API requests in edge/dom and
64 | * node environments respectively.
65 | */
66 | fetch?: typeof fetch | typeof nodeFetch;
67 | }
68 |
69 | /**
70 | * The OpenAI API client for Edge runtime.
71 | */
72 | export type OpenAIEdgeClient = (
73 | endpoint: T,
74 | args: OpenAICreateArgs,
75 | options?: OpenAIOptions
76 | ) => Promise>;
77 |
78 | export type OpenAINodeClient = (
79 | endpoint: T,
80 | args: OpenAICreateArgs,
81 | options?: OpenAIOptions
82 | ) => Promise;
83 |
84 | export * from "./pinned";
85 |
--------------------------------------------------------------------------------
/src/lib/openai/edge.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 | import { streamArray } from "yield-stream";
3 |
4 | import { OpenAIAPIEndpoints, OpenAIEdgeClient } from "../types";
5 | import { ENCODER } from "../../globs/shared";
6 | import { OpenAIError } from "../errors";
7 | import { fetchWithBackoff } from "../backoff";
8 | import {
9 | ChatStream,
10 | EventStream,
11 | getTokensFromResponse,
12 | TokenStream,
13 | } from "../streaming";
14 |
15 | /**
16 | * OpenAI Edge client.
17 | *
18 | * Create a new completion stream. Stream of strings by default, set `mode:
19 | * 'raw'` for the raw stream of JSON objects.
20 | */
21 | export const OpenAI: OpenAIEdgeClient = async (
22 | endpoint,
23 | args,
24 | {
25 | mode = "tokens",
26 | apiBase = "https://api.openai.com/v1",
27 | apiKey = process.env.OPENAI_API_KEY,
28 | apiHeaders = {},
29 | controller,
30 | onDone,
31 | onParse,
32 | fetch
33 | } = {}
34 | ) => {
35 | if (!apiKey) {
36 | throw new OpenAIError("NO_API_KEY");
37 | }
38 |
39 | const shouldStream = endpoint === "completions" || endpoint === "chat";
40 | const path = OpenAIAPIEndpoints[endpoint];
41 | const response = await fetchWithBackoff(`${apiBase}/${path}`, {
42 | method: "POST",
43 | body: JSON.stringify({
44 | ...args,
45 | stream: shouldStream ? true : undefined,
46 | }),
47 | headers: {
48 | Authorization: `Bearer ${apiKey}`,
49 | "Content-Type": "application/json",
50 | Accept: "application/json",
51 | ...apiHeaders,
52 | },
53 | signal: controller?.signal,
54 | }, fetch);
55 |
56 | switch (response.status) {
57 | case 401:
58 | throw new OpenAIError("INVALID_API_KEY");
59 | case 404:
60 | throw new OpenAIError("INVALID_MODEL");
61 | case 429:
62 | throw new OpenAIError("RATE_LIMIT_REACHED");
63 | case 500:
64 | throw new OpenAIError("SERVER_ERROR");
65 | default:
66 | if (!response.body) {
67 | throw new OpenAIError("UNKNOWN");
68 | }
69 | }
70 |
71 | let outputStream: ReadableStream;
72 | const options = { mode, onDone, onParse };
73 |
74 | if (shouldStream) {
75 | switch (mode) {
76 | case "raw":
77 | outputStream = EventStream(response.body, options);
78 | break;
79 |
80 | case "tokens":
81 | switch (endpoint) {
82 | case "chat":
83 | outputStream = ChatStream(response.body, options);
84 | break;
85 |
86 | default:
87 | outputStream = TokenStream(response.body, options);
88 | break;
89 | }
90 | break;
91 |
92 | default:
93 | console.error(`Unknown mode: ${mode} for streaming response.`);
94 | throw new OpenAIError("UNKNOWN");
95 | }
96 | } else {
97 | /**
98 | * Load the response in one shot.
99 | */
100 | const stringResult = await response.text();
101 |
102 | switch (mode) {
103 | case "tokens":
104 | const json = JSON.parse(stringResult);
105 | const tokens = getTokensFromResponse(json);
106 |
107 | if (typeof tokens !== "string") {
108 | console.error(
109 | "No text choices received from OpenAI: " + stringResult
110 | );
111 | outputStream = streamArray([]);
112 | break;
113 | }
114 |
115 | const encoded = ENCODER.encode(tokens);
116 | outputStream = streamArray([encoded]);
117 | break;
118 | case "raw":
119 | const encodedJson = ENCODER.encode(stringResult);
120 | outputStream = streamArray([encodedJson]);
121 | break;
122 | default:
123 | console.error(`Unknown mode: ${mode} for non-streaming response.`);
124 | throw new OpenAIError("UNKNOWN");
125 | }
126 | }
127 |
128 | return outputStream;
129 | };
130 |
--------------------------------------------------------------------------------
/example/src/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import Head from "next/head";
2 | import Image from "next/image";
3 | import { Inter } from "@next/font/google";
4 | import styles from "@/styles/Home.module.css";
5 |
6 | const inter = Inter({ subsets: ["latin"] });
7 |
8 | export default function Home() {
9 | return (
10 | <>
11 |
12 | Create Next App
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Get started by editing
21 | src/pages/index.tsx
22 |
23 |
40 |
41 |
42 |
61 |
62 |
120 |
121 | >
122 | );
123 | }
124 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OpenAI Streams
2 |
3 | [**GitHub**](https://github.com/SpellcraftAI/openai-streams) |
4 | [**NPM**](https://npmjs.com/package/openai-streams) |
5 | [**Docs**](https://openai-streams.vercel.app)
6 |
7 | > Now with ChatGPT API support! See [**Use with ChatGPT
8 | > API**](#use-with-chatgpt-api). (Whisper coming soon!)
9 |
10 | This library returns OpenAI API responses as streams only. Non-stream endpoints
11 | like `edits` etc. are simply a stream with only one chunk update.
12 |
13 | - Prioritizes streams, so you can display a completion as it arrives.
14 | - Auto-loads `OPENAI_API_KEY` from `process.env`.
15 | - One single function with inferred parameter type based on the endpoint you
16 | provide.
17 |
18 | Uses `ReadableStream` by default for browser, Edge Runtime, and Node 18+, with
19 | a `NodeJS.Readable` version available at `openai-streams/node`.
20 |
21 | ### Installation
22 |
23 | ```bash
24 | yarn add openai-streams
25 | # -or-
26 | npm i --save openai-streams
27 | ```
28 |
29 | ### Usage
30 |
31 | ```ts
32 | await OpenAI(
33 | /** 'completions', 'chat', etc. */
34 | ENDPOINT,
35 | /** max_tokens, temperature, messages, etc. */
36 | PARAMS,
37 | /** apiBase, apiKey, mode, controller, etc */
38 | OPTIONS
39 | );
40 | ```
41 |
42 | 1. **Set the `OPENAI_API_KEY` env variable** (or pass the `{ apiKey }` option).
43 |
44 | The library will throw if it cannot find an API key. Your program will load
45 | this at runtime from `process.env.OPENAI_API_KEY` by default, but you may
46 | override this with the `{ apiKey }` option.
47 |
48 | **IMPORTANT:** For security, you should only load this from a `process.env`
49 | variable.
50 |
51 | ```ts
52 | await OpenAI(
53 | "completions",
54 | {
55 | /* endpoint params */
56 | },
57 | { apiKey: process.env.MY_SECRET_API_KEY }
58 | );
59 | ```
60 |
61 | 2. **Call the API via `await OpenAI(endpoint, params, options?)`.**
62 |
63 | The `params` type will be inferred based on the `endpoint` you provide, i.e.
64 | for the `"edits"` endpoint, `import('openai').CreateEditRequest` will be
65 | enforced.
66 |
67 | Example with `raw` streaming mode:
68 |
69 | ```ts
70 | await OpenAI(
71 | "chat",
72 | {
73 | messages: [
74 | /* ... */
75 | ],
76 | },
77 | { mode: "raw" }
78 | );
79 | ```
80 |
81 | #### Edge/Browser: Consuming streams in Next.js Edge functions
82 |
83 | This will also work in the browser, but you'll need users to paste their OpenAI
84 | key and pass it in via the `{ apiKey }` option.
85 |
86 | ```ts
87 | import { OpenAI } from "openai-streams";
88 |
89 | export default async function handler() {
90 | const stream = await OpenAI("completions", {
91 | model: "text-davinci-003",
92 | prompt: "Write a happy sentence.\n\n",
93 | max_tokens: 100,
94 | });
95 |
96 | return new Response(stream);
97 | }
98 |
99 | export const config = {
100 | runtime: "edge",
101 | };
102 | ```
103 |
104 | #### Node: Consuming streams in Next.js API Route (Node)
105 |
106 | If you cannot use an Edge runtime or want to consume Node.js streams for another
107 | reason, use `openai-streams/node`:
108 |
109 | ```ts
110 | import type { NextApiRequest, NextApiResponse } from "next";
111 | import { OpenAI } from "openai-streams/node";
112 |
113 | export default async function test(_: NextApiRequest, res: NextApiResponse) {
114 | const stream = await OpenAI("completions", {
115 | model: "text-davinci-003",
116 | prompt: "Write a happy sentence.\n\n",
117 | max_tokens: 25,
118 | });
119 |
120 | stream.pipe(res);
121 | }
122 | ```
123 |
124 | See the example in
125 | [`example/src/pages/api/hello.ts`](https://github.com/SpellcraftAI/openai-streams/blob/master/example/src/pages/api/hello.ts).
126 |
127 |
128 | #### Use with ChatGPT API
129 |
130 | By default, with `mode = "tokens"`, you will receive just the message deltas.
131 | For full events, use `mode = "raw"`.
132 |
133 | See: https://platform.openai.com/docs/guides/chat/introduction
134 |
135 | ```ts
136 | const stream = await OpenAI("chat", {
137 | model: "gpt-3.5-turbo",
138 | messages: [
139 | {
140 | role: "system",
141 | content: "You are a helpful assistant that translates English to French.",
142 | },
143 | {
144 | role: "user",
145 | content: 'Translate the following English text to French: "Hello world!"',
146 | },
147 | ],
148 | });
149 | ```
150 |
151 | In `tokens` mode, you will just receive the response chunks, which look like this
152 | (separated with newlines for illustration):
153 |
154 | ```
155 | Hello
156 | !
157 | How
158 | can
159 | I
160 | assist
161 | you
162 | today
163 | ?
164 | ```
165 |
166 | Use `mode = "raw"` for access to raw events.
167 |
168 | ### Notes
169 |
170 | 1. Internally, streams are often manipulated using generators via `for await
171 | (const chunk of yieldStream(stream)) { ... }`. We recommend following this
172 | pattern if you find it intuitive.
173 |
--------------------------------------------------------------------------------
/src/lib/streaming/streams.ts:
--------------------------------------------------------------------------------
1 | import { ENCODER, DECODER } from "../../globs/shared";
2 | import { ChatParser, TokenParser } from "./transforms";
3 |
4 | import { createParser } from "eventsource-parser";
5 | import { Transform, pipeline, yieldStream } from "yield-stream";
6 | import { yieldStream as yieldStreamNode } from "yield-stream/node";
7 | import { OpenAIError } from "../errors";
8 |
9 | export type StreamMode = "raw" | "tokens";
10 |
11 | export interface OpenAIStreamOptions {
12 | /**
13 | * Whether to return tokens or raw events.
14 | */
15 | mode?: StreamMode;
16 |
17 | /**
18 | * A function to run at the end of a stream. This is useful if you want
19 | * to do something with the stream after it's done, like log token usage.
20 | */
21 | onDone?: () => void | Promise;
22 | /**
23 | * A function that runs for each token. This is useful if you want
24 | * to sum tokens used as they're returned.
25 | */
26 | onParse?: (token: string) => void | Promise;
27 | }
28 |
29 | export type OpenAIStream = (
30 | stream: NodeJS.ReadableStream | ReadableStream,
31 | options: OpenAIStreamOptions
32 | ) => ReadableStream;
33 |
34 | /**
35 | * A `ReadableStream` of server sent events from the given OpenAI API stream.
36 | *
37 | * @note This can't be done via a generator while using `createParser` because
38 | * there is no way to yield from within the callback.
39 | */
40 | export const EventStream: OpenAIStream = (
41 | stream,
42 | { mode = "tokens", onDone }
43 | ) => {
44 | return new ReadableStream({
45 | async start(controller) {
46 | const parser = createParser(async (event) => {
47 | if (event.type === "event") {
48 | const { data } = event;
49 | /**
50 | * Break if event stream finished.
51 | */
52 | if (data === "[DONE]") {
53 | const controllerIsClosed = controller.desiredSize === null;
54 | if (!controllerIsClosed) {
55 | controller.close();
56 | }
57 |
58 | await onDone?.();
59 | return;
60 | }
61 | /**
62 | * Verify we have a valid JSON object and then enqueue it.
63 | */
64 | try {
65 | const parsed = JSON.parse(data);
66 | controller.enqueue(ENCODER.encode(data));
67 |
68 | /**
69 | * In `tokens` mode, if the user runs out of tokens and the stream
70 | * does not complete, we will throw a MAX_TOKENS error. In `raw`
71 | * mode, we leave it up to the user to handle this.
72 | *
73 | * This requires iterating over result.choices[] and throwing an
74 | * error if any of them have `{ finish_reason: "length" }`.
75 | */
76 | if (mode === "tokens" && parsed?.choices) {
77 | const { choices } = parsed;
78 | for (const choice of choices) {
79 | if (choice?.finish_reason === "length") {
80 | throw new OpenAIError("MAX_TOKENS");
81 | }
82 | }
83 | }
84 | } catch (e) {
85 | controller.error(e);
86 | }
87 | }
88 | });
89 |
90 | // Check if the stream is a NodeJS stream or a browser stream.
91 | // @ts-ignore - TS doesn't know about `pipe` on streams.
92 | const isNodeJsStream = typeof stream.pipe === "function";
93 |
94 | /**
95 | * Feed the parser with decoded chunks from the raw stream.
96 | */
97 | for await (const chunk of isNodeJsStream
98 | ? yieldStreamNode(stream as NodeJS.ReadableStream)
99 | : yieldStream(stream as ReadableStream)
100 | ) {
101 | const decoded = DECODER.decode(chunk);
102 |
103 | try {
104 | const parsed = JSON.parse(decoded);
105 |
106 | if (parsed.hasOwnProperty("error"))
107 | controller.error(new Error(parsed.error.message));
108 | } catch (e) {}
109 |
110 | parser.feed(decoded);
111 | }
112 | },
113 | });
114 | };
115 |
116 | /**
117 | * Creates a handler that decodes the given stream into a string,
118 | * then pipes that string into the provided callback.
119 | */
120 | const CallbackHandler = ({ onParse }: OpenAIStreamOptions) => {
121 | const handler: Transform = async function* (chunk) {
122 | const decoded = DECODER.decode(chunk);
123 | onParse?.(decoded);
124 | if (decoded) {
125 | yield ENCODER.encode(decoded);
126 | }
127 | };
128 |
129 | return handler;
130 | };
131 |
132 | /**
133 | * A `ReadableStream` of parsed tokens from the given OpenAI API stream.
134 | */
135 | export const TokenStream: OpenAIStream = (
136 | stream,
137 | options = { mode: "tokens" }
138 | ) => {
139 | return pipeline(
140 | EventStream(stream, options),
141 | TokenParser,
142 | CallbackHandler(options)
143 | );
144 | };
145 |
146 | /**
147 | * A `ReadableStream` of parsed deltas from the given ChatGPT stream.
148 | */
149 | export const ChatStream: OpenAIStream = (
150 | stream,
151 | options = { mode: "tokens" }
152 | ) => {
153 | return pipeline(
154 | EventStream(stream, options),
155 | ChatParser,
156 | CallbackHandler(options)
157 | );
158 | };
--------------------------------------------------------------------------------
/example/src/styles/Home.module.css:
--------------------------------------------------------------------------------
1 | .main {
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: space-between;
5 | align-items: center;
6 | padding: 6rem;
7 | min-height: 100vh;
8 | }
9 |
10 | .description {
11 | display: inherit;
12 | justify-content: inherit;
13 | align-items: inherit;
14 | font-size: 0.85rem;
15 | max-width: var(--max-width);
16 | width: 100%;
17 | z-index: 2;
18 | font-family: var(--font-mono);
19 | }
20 |
21 | .description a {
22 | display: flex;
23 | justify-content: center;
24 | align-items: center;
25 | gap: 0.5rem;
26 | }
27 |
28 | .description p {
29 | position: relative;
30 | margin: 0;
31 | padding: 1rem;
32 | background-color: rgba(var(--callout-rgb), 0.5);
33 | border: 1px solid rgba(var(--callout-border-rgb), 0.3);
34 | border-radius: var(--border-radius);
35 | }
36 |
37 | .code {
38 | font-weight: 700;
39 | font-family: var(--font-mono);
40 | }
41 |
42 | .grid {
43 | display: grid;
44 | grid-template-columns: repeat(4, minmax(25%, auto));
45 | width: var(--max-width);
46 | max-width: 100%;
47 | }
48 |
49 | .card {
50 | padding: 1rem 1.2rem;
51 | border-radius: var(--border-radius);
52 | background: rgba(var(--card-rgb), 0);
53 | border: 1px solid rgba(var(--card-border-rgb), 0);
54 | transition: background 200ms, border 200ms;
55 | }
56 |
57 | .card span {
58 | display: inline-block;
59 | transition: transform 200ms;
60 | }
61 |
62 | .card h2 {
63 | font-weight: 600;
64 | margin-bottom: 0.7rem;
65 | }
66 |
67 | .card p {
68 | margin: 0;
69 | opacity: 0.6;
70 | font-size: 0.9rem;
71 | line-height: 1.5;
72 | max-width: 30ch;
73 | }
74 |
75 | .center {
76 | display: flex;
77 | justify-content: center;
78 | align-items: center;
79 | position: relative;
80 | padding: 4rem 0;
81 | }
82 |
83 | .center::before {
84 | background: var(--secondary-glow);
85 | border-radius: 50%;
86 | width: 480px;
87 | height: 360px;
88 | margin-left: -400px;
89 | }
90 |
91 | .center::after {
92 | background: var(--primary-glow);
93 | width: 240px;
94 | height: 180px;
95 | z-index: -1;
96 | }
97 |
98 | .center::before,
99 | .center::after {
100 | content: '';
101 | left: 50%;
102 | position: absolute;
103 | filter: blur(45px);
104 | transform: translateZ(0);
105 | }
106 |
107 | .logo,
108 | .thirteen {
109 | position: relative;
110 | }
111 |
112 | .thirteen {
113 | display: flex;
114 | justify-content: center;
115 | align-items: center;
116 | width: 75px;
117 | height: 75px;
118 | padding: 25px 10px;
119 | margin-left: 16px;
120 | transform: translateZ(0);
121 | border-radius: var(--border-radius);
122 | overflow: hidden;
123 | box-shadow: 0px 2px 8px -1px #0000001a;
124 | }
125 |
126 | .thirteen::before,
127 | .thirteen::after {
128 | content: '';
129 | position: absolute;
130 | z-index: -1;
131 | }
132 |
133 | /* Conic Gradient Animation */
134 | .thirteen::before {
135 | animation: 6s rotate linear infinite;
136 | width: 200%;
137 | height: 200%;
138 | background: var(--tile-border);
139 | }
140 |
141 | /* Inner Square */
142 | .thirteen::after {
143 | inset: 0;
144 | padding: 1px;
145 | border-radius: var(--border-radius);
146 | background: linear-gradient(
147 | to bottom right,
148 | rgba(var(--tile-start-rgb), 1),
149 | rgba(var(--tile-end-rgb), 1)
150 | );
151 | background-clip: content-box;
152 | }
153 |
154 | /* Enable hover only on non-touch devices */
155 | @media (hover: hover) and (pointer: fine) {
156 | .card:hover {
157 | background: rgba(var(--card-rgb), 0.1);
158 | border: 1px solid rgba(var(--card-border-rgb), 0.15);
159 | }
160 |
161 | .card:hover span {
162 | transform: translateX(4px);
163 | }
164 | }
165 |
166 | @media (prefers-reduced-motion) {
167 | .thirteen::before {
168 | animation: none;
169 | }
170 |
171 | .card:hover span {
172 | transform: none;
173 | }
174 | }
175 |
176 | /* Mobile */
177 | @media (max-width: 700px) {
178 | .content {
179 | padding: 4rem;
180 | }
181 |
182 | .grid {
183 | grid-template-columns: 1fr;
184 | margin-bottom: 120px;
185 | max-width: 320px;
186 | text-align: center;
187 | }
188 |
189 | .card {
190 | padding: 1rem 2.5rem;
191 | }
192 |
193 | .card h2 {
194 | margin-bottom: 0.5rem;
195 | }
196 |
197 | .center {
198 | padding: 8rem 0 6rem;
199 | }
200 |
201 | .center::before {
202 | transform: none;
203 | height: 300px;
204 | }
205 |
206 | .description {
207 | font-size: 0.8rem;
208 | }
209 |
210 | .description a {
211 | padding: 1rem;
212 | }
213 |
214 | .description p,
215 | .description div {
216 | display: flex;
217 | justify-content: center;
218 | position: fixed;
219 | width: 100%;
220 | }
221 |
222 | .description p {
223 | align-items: center;
224 | inset: 0 0 auto;
225 | padding: 2rem 1rem 1.4rem;
226 | border-radius: 0;
227 | border: none;
228 | border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
229 | background: linear-gradient(
230 | to bottom,
231 | rgba(var(--background-start-rgb), 1),
232 | rgba(var(--callout-rgb), 0.5)
233 | );
234 | background-clip: padding-box;
235 | backdrop-filter: blur(24px);
236 | }
237 |
238 | .description div {
239 | align-items: flex-end;
240 | pointer-events: none;
241 | inset: auto 0 0;
242 | padding: 2rem;
243 | height: 200px;
244 | background: linear-gradient(
245 | to bottom,
246 | transparent 0%,
247 | rgb(var(--background-end-rgb)) 40%
248 | );
249 | z-index: 1;
250 | }
251 | }
252 |
253 | /* Tablet and Smaller Desktop */
254 | @media (min-width: 701px) and (max-width: 1120px) {
255 | .grid {
256 | grid-template-columns: repeat(2, 50%);
257 | }
258 | }
259 |
260 | @media (prefers-color-scheme: dark) {
261 | .vercelLogo {
262 | filter: invert(1);
263 | }
264 |
265 | .logo,
266 | .thirteen img {
267 | filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70);
268 | }
269 | }
270 |
271 | @keyframes rotate {
272 | from {
273 | transform: rotate(360deg);
274 | }
275 | to {
276 | transform: rotate(0deg);
277 | }
278 | }
279 |
--------------------------------------------------------------------------------
/test/streams.test.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 | import "./env";
3 | import test from "ava";
4 |
5 | import { OpenAI } from "../src";
6 | import { yieldStream } from "yield-stream";
7 | import { DECODER } from "../src/globs/shared";
8 | import nodeFetch from "node-fetch";
9 |
10 | test.serial("'completions' endpoint", async (t) => {
11 | const stream = await OpenAI("completions", {
12 | model: "text-davinci-003",
13 | prompt: "Write a sentence.",
14 | max_tokens: 50,
15 | });
16 |
17 | /**
18 | * Write each chunk to the screen as one string.
19 | */
20 | const chunks: string[] = [];
21 | for await (const chunk of yieldStream(stream)) {
22 | chunks.push(DECODER.decode(chunk));
23 | process.stdout.write(chunks.join("").trim());
24 | }
25 |
26 | t.pass();
27 | });
28 |
29 | test.serial("'edits' endpoint", async (t) => {
30 | const stream = await OpenAI("edits", {
31 | model: "text-davinci-edit-001",
32 | input: "helo wrld",
33 | instruction: "Fix spelling mistakes.",
34 | });
35 |
36 | /**
37 | * Write each chunk to the screen as one string.
38 | */
39 | const chunks: string[] = [];
40 | for await (const chunk of yieldStream(stream)) {
41 | chunks.push(DECODER.decode(chunk));
42 | process.stdout.write(chunks.join("").trim());
43 | }
44 |
45 | t.pass();
46 | });
47 |
48 | test.serial("mode = 'raw': error handling", async (t) => {
49 | const tokenStream = await OpenAI(
50 | "completions",
51 | {
52 | model: "text-davinci-003",
53 | prompt: "Write a long sentence.",
54 | max_tokens: 1,
55 | },
56 | { mode: "raw" }
57 | );
58 |
59 | const DECODER = new TextDecoder();
60 | for await (const serialized of yieldStream(tokenStream)) {
61 | const string = DECODER.decode(serialized);
62 | const json = JSON.parse(string);
63 | console.table(json.choices);
64 | }
65 |
66 | t.pass("Raw mode did not throw when user ran out of tokens.");
67 | });
68 |
69 | test.serial("mode = 'tokens': error handling", async (t) => {
70 | try {
71 | const tokenStream = await OpenAI(
72 | "completions",
73 | {
74 | model: "text-davinci-003",
75 | prompt: "Write a short sentence.",
76 | max_tokens: 5,
77 | },
78 | { mode: "tokens" }
79 | );
80 |
81 | const DECODER = new TextDecoder();
82 | for await (const serialized of yieldStream(tokenStream)) {
83 | const string = DECODER.decode(serialized);
84 | console.log(string.trim());
85 | }
86 |
87 | t.fail("Tokens mode did not throw when user ran out of tokens.");
88 | } catch (error) {
89 | t.snapshot(
90 | JSON.stringify(error, null, 2),
91 | "Tokens mode should throw for MAX_TOKENS."
92 | );
93 | }
94 | });
95 |
96 | test.serial("ChatGPT support", async (t) => {
97 | const stream = await OpenAI("chat", {
98 | model: "gpt-3.5-turbo",
99 | messages: [
100 | { role: "system", content: "You are a helpful assistant." },
101 | { role: "user", content: "This is a test message, say hello!" },
102 | ],
103 | });
104 |
105 | const DECODER = new TextDecoder();
106 | for await (const serialized of yieldStream(stream)) {
107 | const string = DECODER.decode(serialized);
108 | console.log(string);
109 | }
110 |
111 | t.pass();
112 | });
113 |
114 | test.serial("API base support", async (t) => {
115 | const stream = await OpenAI(
116 | "chat",
117 | {
118 | model: "gpt-3.5-turbo",
119 | messages: [
120 | { role: "system", content: "You are a helpful assistant." },
121 | { role: "user", content: "This is a test message, say hello!" },
122 | ],
123 | },
124 | {
125 | apiBase: "https://oai.hconeai.com/v1",
126 | }
127 | );
128 |
129 | const DECODER = new TextDecoder();
130 | for await (const serialized of yieldStream(stream)) {
131 | const string = DECODER.decode(serialized);
132 | console.log(string);
133 | }
134 |
135 | t.pass();
136 | });
137 |
138 | const openaiOrganization = process.env.OPENAI_ORGANIZATION;
139 | if (openaiOrganization === undefined) {
140 | console.log(
141 | "Skipping 'API headers support' test because $OPENAI_ORGANIZATION is not set."
142 | );
143 | } else {
144 | test.serial("API headers support", async (t) => {
145 | const stream = await OpenAI(
146 | "chat",
147 | {
148 | model: "gpt-3.5-turbo",
149 | messages: [
150 | { role: "system", content: "You are a helpful assistant." },
151 | { role: "user", content: "This is a test message, say hello!" },
152 | ],
153 | },
154 | {
155 | apiBase: "https://oai.hconeai.com/v1",
156 | apiHeaders: {
157 | "OpenAI-Organization": openaiOrganization,
158 | },
159 | }
160 | );
161 |
162 | const DECODER = new TextDecoder();
163 | for await (const serialized of yieldStream(stream)) {
164 | const string = DECODER.decode(serialized);
165 | console.log(string);
166 | }
167 |
168 | t.pass();
169 | });
170 | }
171 |
172 | test.serial("ChatGPT error propagation", async (t) => {
173 | try {
174 | const stream = await OpenAI(
175 | "chat",
176 | {
177 | model: "gpt-3.5-turbo",
178 | messages: [
179 | {
180 | role: "system",
181 | content:
182 | "You are a helpful assistant that translates English to French.",
183 | },
184 | {
185 | role: "user",
186 | content:
187 | "Translate the following English text to French: \"Hello world!\"",
188 | },
189 | ],
190 | },
191 | { apiKey: "THIS_IS_A_FAKE_KEY" }
192 | );
193 |
194 | const DECODER = new TextDecoder();
195 | for await (const serialized of yieldStream(stream)) {
196 | const string = DECODER.decode(serialized);
197 | console.log(string);
198 | }
199 | } catch (e) {
200 | t.snapshot(e);
201 | }
202 | });
203 |
204 | test.serial("cancelling streams", async (t) => {
205 | const controller = new AbortController();
206 |
207 | const stream = await OpenAI(
208 | "completions",
209 | {
210 | model: "text-davinci-003",
211 | prompt: "Write two sentences.",
212 | max_tokens: 50,
213 | },
214 | {
215 | controller,
216 | }
217 | );
218 |
219 | /**
220 | * Write each chunk to the screen as one string.
221 | */
222 | let i = 0;
223 | const chunks: string[] = [];
224 |
225 | try {
226 | for await (const chunk of yieldStream(stream)) {
227 | i++;
228 | chunks.push(DECODER.decode(chunk));
229 | process.stdout.write(JSON.stringify(chunks));
230 |
231 | if (i >= 5) {
232 | controller.abort();
233 | }
234 | }
235 | } catch (e) {
236 | t.is(e.name, "AbortError", "Stream should have been aborted.");
237 | }
238 |
239 | t.is(i, 5, "Stream should have been cancelled after 5 chunks.");
240 | });
241 |
242 | test.serial("should work with custom fetch", async (t) => {
243 | let didUseMock = false;
244 |
245 | const mockFetch: typeof nodeFetch = (...params) => {
246 | didUseMock = true;
247 | return nodeFetch(...params);
248 | };
249 |
250 | const stream = await OpenAI("chat", {
251 | model: "gpt-3.5-turbo",
252 | messages: [
253 | { role: "system", content: "You are a helpful assistant." },
254 | { role: "user", content: "This is a test message, say hello!" },
255 | ],
256 | }, { fetch: mockFetch });
257 |
258 | const DECODER = new TextDecoder();
259 | for await (const serialized of yieldStream(stream)) {
260 | const string = DECODER.decode(serialized);
261 | console.log(string);
262 | }
263 |
264 | t.true(didUseMock, "Did not use custom fetch.");
265 | });
266 |
--------------------------------------------------------------------------------
/example/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/runtime@^7.20.7":
6 | version "7.20.13"
7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b"
8 | integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==
9 | dependencies:
10 | regenerator-runtime "^0.13.11"
11 |
12 | "@eslint/eslintrc@^1.4.1":
13 | version "1.4.1"
14 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e"
15 | integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==
16 | dependencies:
17 | ajv "^6.12.4"
18 | debug "^4.3.2"
19 | espree "^9.4.0"
20 | globals "^13.19.0"
21 | ignore "^5.2.0"
22 | import-fresh "^3.2.1"
23 | js-yaml "^4.1.0"
24 | minimatch "^3.1.2"
25 | strip-json-comments "^3.1.1"
26 |
27 | "@humanwhocodes/config-array@^0.11.8":
28 | version "0.11.8"
29 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
30 | integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
31 | dependencies:
32 | "@humanwhocodes/object-schema" "^1.2.1"
33 | debug "^4.1.1"
34 | minimatch "^3.0.5"
35 |
36 | "@humanwhocodes/module-importer@^1.0.1":
37 | version "1.0.1"
38 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
39 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
40 |
41 | "@humanwhocodes/object-schema@^1.2.1":
42 | version "1.2.1"
43 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
44 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
45 |
46 | "@next/env@13.1.6":
47 | version "13.1.6"
48 | resolved "https://registry.yarnpkg.com/@next/env/-/env-13.1.6.tgz#c4925609f16142ded1a5cb833359ab17359b7a93"
49 | integrity sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg==
50 |
51 | "@next/eslint-plugin-next@13.1.6":
52 | version "13.1.6"
53 | resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.6.tgz#ad8be22dd3d8aee9a9bd9a2507e2c55a2f7ebdd9"
54 | integrity sha512-o7cauUYsXjzSJkay8wKjpKJf2uLzlggCsGUkPu3lP09Pv97jYlekTC20KJrjQKmSv5DXV0R/uks2ZXhqjNkqAw==
55 | dependencies:
56 | glob "7.1.7"
57 |
58 | "@next/font@13.1.6":
59 | version "13.1.6"
60 | resolved "https://registry.yarnpkg.com/@next/font/-/font-13.1.6.tgz#2bf99e3321ec9b4d65781c0d0ebff072e8752e1a"
61 | integrity sha512-AITjmeb1RgX1HKMCiA39ztx2mxeAyxl4ljv2UoSBUGAbFFMg8MO7YAvjHCgFhD39hL7YTbFjol04e/BPBH5RzQ==
62 |
63 | "@next/swc-android-arm-eabi@13.1.6":
64 | version "13.1.6"
65 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz#d766dfc10e27814d947b20f052067c239913dbcc"
66 | integrity sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==
67 |
68 | "@next/swc-android-arm64@13.1.6":
69 | version "13.1.6"
70 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz#f37a98d5f18927d8c9970d750d516ac779465176"
71 | integrity sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==
72 |
73 | "@next/swc-darwin-arm64@13.1.6":
74 | version "13.1.6"
75 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz#ec1b90fd9bf809d8b81004c5182e254dced4ad96"
76 | integrity sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==
77 |
78 | "@next/swc-darwin-x64@13.1.6":
79 | version "13.1.6"
80 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz#e869ac75d16995eee733a7d1550322d9051c1eb4"
81 | integrity sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==
82 |
83 | "@next/swc-freebsd-x64@13.1.6":
84 | version "13.1.6"
85 | resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz#84a7b2e423a2904afc2edca21c2f1ba6b53fa4c1"
86 | integrity sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==
87 |
88 | "@next/swc-linux-arm-gnueabihf@13.1.6":
89 | version "13.1.6"
90 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz#980eed1f655ff8a72187d8a6ef9e73ac39d20d23"
91 | integrity sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==
92 |
93 | "@next/swc-linux-arm64-gnu@13.1.6":
94 | version "13.1.6"
95 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz#87a71db21cded3f7c63d1d19079845c59813c53d"
96 | integrity sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==
97 |
98 | "@next/swc-linux-arm64-musl@13.1.6":
99 | version "13.1.6"
100 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz#c5aac8619331b9fd030603bbe2b36052011e11de"
101 | integrity sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==
102 |
103 | "@next/swc-linux-x64-gnu@13.1.6":
104 | version "13.1.6"
105 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz#9513d36d540bbfea575576746736054c31aacdea"
106 | integrity sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==
107 |
108 | "@next/swc-linux-x64-musl@13.1.6":
109 | version "13.1.6"
110 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz#d61fc6884899f5957251f4ce3f522e34a2c479b7"
111 | integrity sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==
112 |
113 | "@next/swc-win32-arm64-msvc@13.1.6":
114 | version "13.1.6"
115 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz#fac2077a8ae9768e31444c9ae90807e64117cda7"
116 | integrity sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==
117 |
118 | "@next/swc-win32-ia32-msvc@13.1.6":
119 | version "13.1.6"
120 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz#498bc11c91b4c482a625bf4b978f98ae91111e46"
121 | integrity sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==
122 |
123 | "@next/swc-win32-x64-msvc@13.1.6":
124 | version "13.1.6"
125 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz#17ed919c723426b7d0ce1cd73d40ce3dcd342089"
126 | integrity sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==
127 |
128 | "@nodelib/fs.scandir@2.1.5":
129 | version "2.1.5"
130 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
131 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
132 | dependencies:
133 | "@nodelib/fs.stat" "2.0.5"
134 | run-parallel "^1.1.9"
135 |
136 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
137 | version "2.0.5"
138 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
139 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
140 |
141 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
142 | version "1.2.8"
143 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
144 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
145 | dependencies:
146 | "@nodelib/fs.scandir" "2.1.5"
147 | fastq "^1.6.0"
148 |
149 | "@pkgr/utils@^2.3.1":
150 | version "2.3.1"
151 | resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03"
152 | integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==
153 | dependencies:
154 | cross-spawn "^7.0.3"
155 | is-glob "^4.0.3"
156 | open "^8.4.0"
157 | picocolors "^1.0.0"
158 | tiny-glob "^0.2.9"
159 | tslib "^2.4.0"
160 |
161 | "@rushstack/eslint-patch@^1.1.3":
162 | version "1.2.0"
163 | resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
164 | integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==
165 |
166 | "@swc/helpers@0.4.14":
167 | version "0.4.14"
168 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
169 | integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==
170 | dependencies:
171 | tslib "^2.4.0"
172 |
173 | "@types/json5@^0.0.29":
174 | version "0.0.29"
175 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
176 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
177 |
178 | "@types/node@18.14.0":
179 | version "18.14.0"
180 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.0.tgz#94c47b9217bbac49d4a67a967fdcdeed89ebb7d0"
181 | integrity sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==
182 |
183 | "@types/prop-types@*":
184 | version "15.7.5"
185 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
186 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
187 |
188 | "@types/react-dom@18.0.11":
189 | version "18.0.11"
190 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33"
191 | integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==
192 | dependencies:
193 | "@types/react" "*"
194 |
195 | "@types/react@*", "@types/react@18.0.28":
196 | version "18.0.28"
197 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065"
198 | integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==
199 | dependencies:
200 | "@types/prop-types" "*"
201 | "@types/scheduler" "*"
202 | csstype "^3.0.2"
203 |
204 | "@types/scheduler@*":
205 | version "0.16.2"
206 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
207 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
208 |
209 | "@typescript-eslint/parser@^5.42.0":
210 | version "5.52.0"
211 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.52.0.tgz#73c136df6c0133f1d7870de7131ccf356f5be5a4"
212 | integrity sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==
213 | dependencies:
214 | "@typescript-eslint/scope-manager" "5.52.0"
215 | "@typescript-eslint/types" "5.52.0"
216 | "@typescript-eslint/typescript-estree" "5.52.0"
217 | debug "^4.3.4"
218 |
219 | "@typescript-eslint/scope-manager@5.52.0":
220 | version "5.52.0"
221 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz#a993d89a0556ea16811db48eabd7c5b72dcb83d1"
222 | integrity sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==
223 | dependencies:
224 | "@typescript-eslint/types" "5.52.0"
225 | "@typescript-eslint/visitor-keys" "5.52.0"
226 |
227 | "@typescript-eslint/types@5.52.0":
228 | version "5.52.0"
229 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.52.0.tgz#19e9abc6afb5bd37a1a9bea877a1a836c0b3241b"
230 | integrity sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==
231 |
232 | "@typescript-eslint/typescript-estree@5.52.0":
233 | version "5.52.0"
234 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz#6408cb3c2ccc01c03c278cb201cf07e73347dfca"
235 | integrity sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==
236 | dependencies:
237 | "@typescript-eslint/types" "5.52.0"
238 | "@typescript-eslint/visitor-keys" "5.52.0"
239 | debug "^4.3.4"
240 | globby "^11.1.0"
241 | is-glob "^4.0.3"
242 | semver "^7.3.7"
243 | tsutils "^3.21.0"
244 |
245 | "@typescript-eslint/visitor-keys@5.52.0":
246 | version "5.52.0"
247 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz#e38c971259f44f80cfe49d97dbffa38e3e75030f"
248 | integrity sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==
249 | dependencies:
250 | "@typescript-eslint/types" "5.52.0"
251 | eslint-visitor-keys "^3.3.0"
252 |
253 | acorn-jsx@^5.3.2:
254 | version "5.3.2"
255 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
256 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
257 |
258 | acorn@^8.8.0:
259 | version "8.8.2"
260 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
261 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
262 |
263 | ajv@^6.10.0, ajv@^6.12.4:
264 | version "6.12.6"
265 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
266 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
267 | dependencies:
268 | fast-deep-equal "^3.1.1"
269 | fast-json-stable-stringify "^2.0.0"
270 | json-schema-traverse "^0.4.1"
271 | uri-js "^4.2.2"
272 |
273 | ansi-regex@^5.0.1:
274 | version "5.0.1"
275 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
276 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
277 |
278 | ansi-styles@^4.1.0:
279 | version "4.3.0"
280 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
281 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
282 | dependencies:
283 | color-convert "^2.0.1"
284 |
285 | argparse@^2.0.1:
286 | version "2.0.1"
287 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
288 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
289 |
290 | aria-query@^5.1.3:
291 | version "5.1.3"
292 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
293 | integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
294 | dependencies:
295 | deep-equal "^2.0.5"
296 |
297 | array-includes@^3.1.5, array-includes@^3.1.6:
298 | version "3.1.6"
299 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
300 | integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
301 | dependencies:
302 | call-bind "^1.0.2"
303 | define-properties "^1.1.4"
304 | es-abstract "^1.20.4"
305 | get-intrinsic "^1.1.3"
306 | is-string "^1.0.7"
307 |
308 | array-union@^2.1.0:
309 | version "2.1.0"
310 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
311 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
312 |
313 | array.prototype.flat@^1.3.1:
314 | version "1.3.1"
315 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2"
316 | integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==
317 | dependencies:
318 | call-bind "^1.0.2"
319 | define-properties "^1.1.4"
320 | es-abstract "^1.20.4"
321 | es-shim-unscopables "^1.0.0"
322 |
323 | array.prototype.flatmap@^1.3.1:
324 | version "1.3.1"
325 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183"
326 | integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==
327 | dependencies:
328 | call-bind "^1.0.2"
329 | define-properties "^1.1.4"
330 | es-abstract "^1.20.4"
331 | es-shim-unscopables "^1.0.0"
332 |
333 | array.prototype.tosorted@^1.1.1:
334 | version "1.1.1"
335 | resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532"
336 | integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==
337 | dependencies:
338 | call-bind "^1.0.2"
339 | define-properties "^1.1.4"
340 | es-abstract "^1.20.4"
341 | es-shim-unscopables "^1.0.0"
342 | get-intrinsic "^1.1.3"
343 |
344 | ast-types-flow@^0.0.7:
345 | version "0.0.7"
346 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
347 | integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==
348 |
349 | available-typed-arrays@^1.0.5:
350 | version "1.0.5"
351 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
352 | integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
353 |
354 | axe-core@^4.6.2:
355 | version "4.6.3"
356 | resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece"
357 | integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==
358 |
359 | axobject-query@^3.1.1:
360 | version "3.1.1"
361 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
362 | integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==
363 | dependencies:
364 | deep-equal "^2.0.5"
365 |
366 | balanced-match@^1.0.0:
367 | version "1.0.2"
368 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
369 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
370 |
371 | brace-expansion@^1.1.7:
372 | version "1.1.11"
373 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
374 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
375 | dependencies:
376 | balanced-match "^1.0.0"
377 | concat-map "0.0.1"
378 |
379 | braces@^3.0.2:
380 | version "3.0.2"
381 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
382 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
383 | dependencies:
384 | fill-range "^7.0.1"
385 |
386 | call-bind@^1.0.0, call-bind@^1.0.2:
387 | version "1.0.2"
388 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
389 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
390 | dependencies:
391 | function-bind "^1.1.1"
392 | get-intrinsic "^1.0.2"
393 |
394 | callsites@^3.0.0:
395 | version "3.1.0"
396 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
397 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
398 |
399 | caniuse-lite@^1.0.30001406:
400 | version "1.0.30001456"
401 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz#734ec1dbfa4f3abe6e435b78ecf40d68e8c32ce4"
402 | integrity sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==
403 |
404 | chalk@^4.0.0:
405 | version "4.1.2"
406 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
407 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
408 | dependencies:
409 | ansi-styles "^4.1.0"
410 | supports-color "^7.1.0"
411 |
412 | client-only@0.0.1:
413 | version "0.0.1"
414 | resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
415 | integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
416 |
417 | color-convert@^2.0.1:
418 | version "2.0.1"
419 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
420 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
421 | dependencies:
422 | color-name "~1.1.4"
423 |
424 | color-name@~1.1.4:
425 | version "1.1.4"
426 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
427 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
428 |
429 | concat-map@0.0.1:
430 | version "0.0.1"
431 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
432 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
433 |
434 | cross-spawn@^7.0.2, cross-spawn@^7.0.3:
435 | version "7.0.3"
436 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
437 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
438 | dependencies:
439 | path-key "^3.1.0"
440 | shebang-command "^2.0.0"
441 | which "^2.0.1"
442 |
443 | csstype@^3.0.2:
444 | version "3.1.1"
445 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
446 | integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
447 |
448 | damerau-levenshtein@^1.0.8:
449 | version "1.0.8"
450 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
451 | integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
452 |
453 | debug@^3.2.7:
454 | version "3.2.7"
455 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
456 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
457 | dependencies:
458 | ms "^2.1.1"
459 |
460 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
461 | version "4.3.4"
462 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
463 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
464 | dependencies:
465 | ms "2.1.2"
466 |
467 | deep-equal@^2.0.5:
468 | version "2.2.0"
469 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6"
470 | integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==
471 | dependencies:
472 | call-bind "^1.0.2"
473 | es-get-iterator "^1.1.2"
474 | get-intrinsic "^1.1.3"
475 | is-arguments "^1.1.1"
476 | is-array-buffer "^3.0.1"
477 | is-date-object "^1.0.5"
478 | is-regex "^1.1.4"
479 | is-shared-array-buffer "^1.0.2"
480 | isarray "^2.0.5"
481 | object-is "^1.1.5"
482 | object-keys "^1.1.1"
483 | object.assign "^4.1.4"
484 | regexp.prototype.flags "^1.4.3"
485 | side-channel "^1.0.4"
486 | which-boxed-primitive "^1.0.2"
487 | which-collection "^1.0.1"
488 | which-typed-array "^1.1.9"
489 |
490 | deep-is@^0.1.3:
491 | version "0.1.4"
492 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
493 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
494 |
495 | define-lazy-prop@^2.0.0:
496 | version "2.0.0"
497 | resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
498 | integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
499 |
500 | define-properties@^1.1.3, define-properties@^1.1.4:
501 | version "1.2.0"
502 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
503 | integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
504 | dependencies:
505 | has-property-descriptors "^1.0.0"
506 | object-keys "^1.1.1"
507 |
508 | dir-glob@^3.0.1:
509 | version "3.0.1"
510 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
511 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
512 | dependencies:
513 | path-type "^4.0.0"
514 |
515 | doctrine@^2.1.0:
516 | version "2.1.0"
517 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
518 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
519 | dependencies:
520 | esutils "^2.0.2"
521 |
522 | doctrine@^3.0.0:
523 | version "3.0.0"
524 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
525 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
526 | dependencies:
527 | esutils "^2.0.2"
528 |
529 | dotenv@^16.0.3:
530 | version "16.0.3"
531 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
532 | integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
533 |
534 | emoji-regex@^9.2.2:
535 | version "9.2.2"
536 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
537 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
538 |
539 | enhanced-resolve@^5.10.0:
540 | version "5.12.0"
541 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
542 | integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
543 | dependencies:
544 | graceful-fs "^4.2.4"
545 | tapable "^2.2.0"
546 |
547 | es-abstract@^1.19.0, es-abstract@^1.20.4:
548 | version "1.21.1"
549 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6"
550 | integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==
551 | dependencies:
552 | available-typed-arrays "^1.0.5"
553 | call-bind "^1.0.2"
554 | es-set-tostringtag "^2.0.1"
555 | es-to-primitive "^1.2.1"
556 | function-bind "^1.1.1"
557 | function.prototype.name "^1.1.5"
558 | get-intrinsic "^1.1.3"
559 | get-symbol-description "^1.0.0"
560 | globalthis "^1.0.3"
561 | gopd "^1.0.1"
562 | has "^1.0.3"
563 | has-property-descriptors "^1.0.0"
564 | has-proto "^1.0.1"
565 | has-symbols "^1.0.3"
566 | internal-slot "^1.0.4"
567 | is-array-buffer "^3.0.1"
568 | is-callable "^1.2.7"
569 | is-negative-zero "^2.0.2"
570 | is-regex "^1.1.4"
571 | is-shared-array-buffer "^1.0.2"
572 | is-string "^1.0.7"
573 | is-typed-array "^1.1.10"
574 | is-weakref "^1.0.2"
575 | object-inspect "^1.12.2"
576 | object-keys "^1.1.1"
577 | object.assign "^4.1.4"
578 | regexp.prototype.flags "^1.4.3"
579 | safe-regex-test "^1.0.0"
580 | string.prototype.trimend "^1.0.6"
581 | string.prototype.trimstart "^1.0.6"
582 | typed-array-length "^1.0.4"
583 | unbox-primitive "^1.0.2"
584 | which-typed-array "^1.1.9"
585 |
586 | es-get-iterator@^1.1.2:
587 | version "1.1.3"
588 | resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
589 | integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
590 | dependencies:
591 | call-bind "^1.0.2"
592 | get-intrinsic "^1.1.3"
593 | has-symbols "^1.0.3"
594 | is-arguments "^1.1.1"
595 | is-map "^2.0.2"
596 | is-set "^2.0.2"
597 | is-string "^1.0.7"
598 | isarray "^2.0.5"
599 | stop-iteration-iterator "^1.0.0"
600 |
601 | es-set-tostringtag@^2.0.1:
602 | version "2.0.1"
603 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
604 | integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==
605 | dependencies:
606 | get-intrinsic "^1.1.3"
607 | has "^1.0.3"
608 | has-tostringtag "^1.0.0"
609 |
610 | es-shim-unscopables@^1.0.0:
611 | version "1.0.0"
612 | resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241"
613 | integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==
614 | dependencies:
615 | has "^1.0.3"
616 |
617 | es-to-primitive@^1.2.1:
618 | version "1.2.1"
619 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
620 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
621 | dependencies:
622 | is-callable "^1.1.4"
623 | is-date-object "^1.0.1"
624 | is-symbol "^1.0.2"
625 |
626 | escape-string-regexp@^4.0.0:
627 | version "4.0.0"
628 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
629 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
630 |
631 | eslint-config-next@13.1.6:
632 | version "13.1.6"
633 | resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.1.6.tgz#ab6894fe5b80080f1e9b9306d1c4b0003230620e"
634 | integrity sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==
635 | dependencies:
636 | "@next/eslint-plugin-next" "13.1.6"
637 | "@rushstack/eslint-patch" "^1.1.3"
638 | "@typescript-eslint/parser" "^5.42.0"
639 | eslint-import-resolver-node "^0.3.6"
640 | eslint-import-resolver-typescript "^3.5.2"
641 | eslint-plugin-import "^2.26.0"
642 | eslint-plugin-jsx-a11y "^6.5.1"
643 | eslint-plugin-react "^7.31.7"
644 | eslint-plugin-react-hooks "^4.5.0"
645 |
646 | eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7:
647 | version "0.3.7"
648 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7"
649 | integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==
650 | dependencies:
651 | debug "^3.2.7"
652 | is-core-module "^2.11.0"
653 | resolve "^1.22.1"
654 |
655 | eslint-import-resolver-typescript@^3.5.2:
656 | version "3.5.3"
657 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz#db5ed9e906651b7a59dd84870aaef0e78c663a05"
658 | integrity sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==
659 | dependencies:
660 | debug "^4.3.4"
661 | enhanced-resolve "^5.10.0"
662 | get-tsconfig "^4.2.0"
663 | globby "^13.1.2"
664 | is-core-module "^2.10.0"
665 | is-glob "^4.0.3"
666 | synckit "^0.8.4"
667 |
668 | eslint-module-utils@^2.7.4:
669 | version "2.7.4"
670 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974"
671 | integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==
672 | dependencies:
673 | debug "^3.2.7"
674 |
675 | eslint-plugin-import@^2.26.0:
676 | version "2.27.5"
677 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
678 | integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==
679 | dependencies:
680 | array-includes "^3.1.6"
681 | array.prototype.flat "^1.3.1"
682 | array.prototype.flatmap "^1.3.1"
683 | debug "^3.2.7"
684 | doctrine "^2.1.0"
685 | eslint-import-resolver-node "^0.3.7"
686 | eslint-module-utils "^2.7.4"
687 | has "^1.0.3"
688 | is-core-module "^2.11.0"
689 | is-glob "^4.0.3"
690 | minimatch "^3.1.2"
691 | object.values "^1.1.6"
692 | resolve "^1.22.1"
693 | semver "^6.3.0"
694 | tsconfig-paths "^3.14.1"
695 |
696 | eslint-plugin-jsx-a11y@^6.5.1:
697 | version "6.7.1"
698 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976"
699 | integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==
700 | dependencies:
701 | "@babel/runtime" "^7.20.7"
702 | aria-query "^5.1.3"
703 | array-includes "^3.1.6"
704 | array.prototype.flatmap "^1.3.1"
705 | ast-types-flow "^0.0.7"
706 | axe-core "^4.6.2"
707 | axobject-query "^3.1.1"
708 | damerau-levenshtein "^1.0.8"
709 | emoji-regex "^9.2.2"
710 | has "^1.0.3"
711 | jsx-ast-utils "^3.3.3"
712 | language-tags "=1.0.5"
713 | minimatch "^3.1.2"
714 | object.entries "^1.1.6"
715 | object.fromentries "^2.0.6"
716 | semver "^6.3.0"
717 |
718 | eslint-plugin-react-hooks@^4.5.0:
719 | version "4.6.0"
720 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
721 | integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
722 |
723 | eslint-plugin-react@^7.31.7:
724 | version "7.32.2"
725 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10"
726 | integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==
727 | dependencies:
728 | array-includes "^3.1.6"
729 | array.prototype.flatmap "^1.3.1"
730 | array.prototype.tosorted "^1.1.1"
731 | doctrine "^2.1.0"
732 | estraverse "^5.3.0"
733 | jsx-ast-utils "^2.4.1 || ^3.0.0"
734 | minimatch "^3.1.2"
735 | object.entries "^1.1.6"
736 | object.fromentries "^2.0.6"
737 | object.hasown "^1.1.2"
738 | object.values "^1.1.6"
739 | prop-types "^15.8.1"
740 | resolve "^2.0.0-next.4"
741 | semver "^6.3.0"
742 | string.prototype.matchall "^4.0.8"
743 |
744 | eslint-scope@^7.1.1:
745 | version "7.1.1"
746 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
747 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
748 | dependencies:
749 | esrecurse "^4.3.0"
750 | estraverse "^5.2.0"
751 |
752 | eslint-utils@^3.0.0:
753 | version "3.0.0"
754 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
755 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
756 | dependencies:
757 | eslint-visitor-keys "^2.0.0"
758 |
759 | eslint-visitor-keys@^2.0.0:
760 | version "2.1.0"
761 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
762 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
763 |
764 | eslint-visitor-keys@^3.3.0:
765 | version "3.3.0"
766 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
767 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
768 |
769 | eslint@8.34.0:
770 | version "8.34.0"
771 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.34.0.tgz#fe0ab0ef478104c1f9ebc5537e303d25a8fb22d6"
772 | integrity sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==
773 | dependencies:
774 | "@eslint/eslintrc" "^1.4.1"
775 | "@humanwhocodes/config-array" "^0.11.8"
776 | "@humanwhocodes/module-importer" "^1.0.1"
777 | "@nodelib/fs.walk" "^1.2.8"
778 | ajv "^6.10.0"
779 | chalk "^4.0.0"
780 | cross-spawn "^7.0.2"
781 | debug "^4.3.2"
782 | doctrine "^3.0.0"
783 | escape-string-regexp "^4.0.0"
784 | eslint-scope "^7.1.1"
785 | eslint-utils "^3.0.0"
786 | eslint-visitor-keys "^3.3.0"
787 | espree "^9.4.0"
788 | esquery "^1.4.0"
789 | esutils "^2.0.2"
790 | fast-deep-equal "^3.1.3"
791 | file-entry-cache "^6.0.1"
792 | find-up "^5.0.0"
793 | glob-parent "^6.0.2"
794 | globals "^13.19.0"
795 | grapheme-splitter "^1.0.4"
796 | ignore "^5.2.0"
797 | import-fresh "^3.0.0"
798 | imurmurhash "^0.1.4"
799 | is-glob "^4.0.0"
800 | is-path-inside "^3.0.3"
801 | js-sdsl "^4.1.4"
802 | js-yaml "^4.1.0"
803 | json-stable-stringify-without-jsonify "^1.0.1"
804 | levn "^0.4.1"
805 | lodash.merge "^4.6.2"
806 | minimatch "^3.1.2"
807 | natural-compare "^1.4.0"
808 | optionator "^0.9.1"
809 | regexpp "^3.2.0"
810 | strip-ansi "^6.0.1"
811 | strip-json-comments "^3.1.0"
812 | text-table "^0.2.0"
813 |
814 | espree@^9.4.0:
815 | version "9.4.1"
816 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd"
817 | integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
818 | dependencies:
819 | acorn "^8.8.0"
820 | acorn-jsx "^5.3.2"
821 | eslint-visitor-keys "^3.3.0"
822 |
823 | esquery@^1.4.0:
824 | version "1.4.2"
825 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1"
826 | integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==
827 | dependencies:
828 | estraverse "^5.1.0"
829 |
830 | esrecurse@^4.3.0:
831 | version "4.3.0"
832 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
833 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
834 | dependencies:
835 | estraverse "^5.2.0"
836 |
837 | estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
838 | version "5.3.0"
839 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
840 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
841 |
842 | esutils@^2.0.2:
843 | version "2.0.3"
844 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
845 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
846 |
847 | eventsource-parser@^0.1.0:
848 | version "0.1.0"
849 | resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-0.1.0.tgz#4a6b84751ca8e704040e6f7f50e7d77344fa1b7c"
850 | integrity sha512-M9QjFtEIkwytUarnx113HGmgtk52LSn3jNAtnWKi3V+b9rqSfQeVdLsaD5AG/O4IrGQwmAAHBIsqbmURPTd2rA==
851 |
852 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
853 | version "3.1.3"
854 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
855 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
856 |
857 | fast-glob@^3.2.11, fast-glob@^3.2.9:
858 | version "3.2.12"
859 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
860 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
861 | dependencies:
862 | "@nodelib/fs.stat" "^2.0.2"
863 | "@nodelib/fs.walk" "^1.2.3"
864 | glob-parent "^5.1.2"
865 | merge2 "^1.3.0"
866 | micromatch "^4.0.4"
867 |
868 | fast-json-stable-stringify@^2.0.0:
869 | version "2.1.0"
870 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
871 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
872 |
873 | fast-levenshtein@^2.0.6:
874 | version "2.0.6"
875 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
876 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
877 |
878 | fastq@^1.6.0:
879 | version "1.15.0"
880 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
881 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
882 | dependencies:
883 | reusify "^1.0.4"
884 |
885 | file-entry-cache@^6.0.1:
886 | version "6.0.1"
887 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
888 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
889 | dependencies:
890 | flat-cache "^3.0.4"
891 |
892 | fill-range@^7.0.1:
893 | version "7.0.1"
894 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
895 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
896 | dependencies:
897 | to-regex-range "^5.0.1"
898 |
899 | find-up@^5.0.0:
900 | version "5.0.0"
901 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
902 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
903 | dependencies:
904 | locate-path "^6.0.0"
905 | path-exists "^4.0.0"
906 |
907 | flat-cache@^3.0.4:
908 | version "3.0.4"
909 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
910 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
911 | dependencies:
912 | flatted "^3.1.0"
913 | rimraf "^3.0.2"
914 |
915 | flatted@^3.1.0:
916 | version "3.2.7"
917 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
918 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
919 |
920 | for-each@^0.3.3:
921 | version "0.3.3"
922 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
923 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
924 | dependencies:
925 | is-callable "^1.1.3"
926 |
927 | fs.realpath@^1.0.0:
928 | version "1.0.0"
929 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
930 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
931 |
932 | function-bind@^1.1.1:
933 | version "1.1.1"
934 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
935 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
936 |
937 | function.prototype.name@^1.1.5:
938 | version "1.1.5"
939 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
940 | integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
941 | dependencies:
942 | call-bind "^1.0.2"
943 | define-properties "^1.1.3"
944 | es-abstract "^1.19.0"
945 | functions-have-names "^1.2.2"
946 |
947 | functions-have-names@^1.2.2:
948 | version "1.2.3"
949 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
950 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
951 |
952 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
953 | version "1.2.0"
954 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
955 | integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
956 | dependencies:
957 | function-bind "^1.1.1"
958 | has "^1.0.3"
959 | has-symbols "^1.0.3"
960 |
961 | get-symbol-description@^1.0.0:
962 | version "1.0.0"
963 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
964 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
965 | dependencies:
966 | call-bind "^1.0.2"
967 | get-intrinsic "^1.1.1"
968 |
969 | get-tsconfig@^4.2.0:
970 | version "4.4.0"
971 | resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.4.0.tgz#64eee64596668a81b8fce18403f94f245ee0d4e5"
972 | integrity sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==
973 |
974 | glob-parent@^5.1.2:
975 | version "5.1.2"
976 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
977 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
978 | dependencies:
979 | is-glob "^4.0.1"
980 |
981 | glob-parent@^6.0.2:
982 | version "6.0.2"
983 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
984 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
985 | dependencies:
986 | is-glob "^4.0.3"
987 |
988 | glob@7.1.7:
989 | version "7.1.7"
990 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
991 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
992 | dependencies:
993 | fs.realpath "^1.0.0"
994 | inflight "^1.0.4"
995 | inherits "2"
996 | minimatch "^3.0.4"
997 | once "^1.3.0"
998 | path-is-absolute "^1.0.0"
999 |
1000 | glob@^7.1.3:
1001 | version "7.2.3"
1002 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
1003 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1004 | dependencies:
1005 | fs.realpath "^1.0.0"
1006 | inflight "^1.0.4"
1007 | inherits "2"
1008 | minimatch "^3.1.1"
1009 | once "^1.3.0"
1010 | path-is-absolute "^1.0.0"
1011 |
1012 | globals@^13.19.0:
1013 | version "13.20.0"
1014 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
1015 | integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
1016 | dependencies:
1017 | type-fest "^0.20.2"
1018 |
1019 | globalthis@^1.0.3:
1020 | version "1.0.3"
1021 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
1022 | integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
1023 | dependencies:
1024 | define-properties "^1.1.3"
1025 |
1026 | globalyzer@0.1.0:
1027 | version "0.1.0"
1028 | resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
1029 | integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==
1030 |
1031 | globby@^11.1.0:
1032 | version "11.1.0"
1033 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
1034 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
1035 | dependencies:
1036 | array-union "^2.1.0"
1037 | dir-glob "^3.0.1"
1038 | fast-glob "^3.2.9"
1039 | ignore "^5.2.0"
1040 | merge2 "^1.4.1"
1041 | slash "^3.0.0"
1042 |
1043 | globby@^13.1.2:
1044 | version "13.1.3"
1045 | resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff"
1046 | integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==
1047 | dependencies:
1048 | dir-glob "^3.0.1"
1049 | fast-glob "^3.2.11"
1050 | ignore "^5.2.0"
1051 | merge2 "^1.4.1"
1052 | slash "^4.0.0"
1053 |
1054 | globrex@^0.1.2:
1055 | version "0.1.2"
1056 | resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
1057 | integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
1058 |
1059 | gopd@^1.0.1:
1060 | version "1.0.1"
1061 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
1062 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
1063 | dependencies:
1064 | get-intrinsic "^1.1.3"
1065 |
1066 | graceful-fs@^4.2.4:
1067 | version "4.2.10"
1068 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
1069 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
1070 |
1071 | grapheme-splitter@^1.0.4:
1072 | version "1.0.4"
1073 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
1074 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
1075 |
1076 | has-bigints@^1.0.1, has-bigints@^1.0.2:
1077 | version "1.0.2"
1078 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
1079 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
1080 |
1081 | has-flag@^4.0.0:
1082 | version "4.0.0"
1083 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1084 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1085 |
1086 | has-property-descriptors@^1.0.0:
1087 | version "1.0.0"
1088 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
1089 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
1090 | dependencies:
1091 | get-intrinsic "^1.1.1"
1092 |
1093 | has-proto@^1.0.1:
1094 | version "1.0.1"
1095 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
1096 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
1097 |
1098 | has-symbols@^1.0.2, has-symbols@^1.0.3:
1099 | version "1.0.3"
1100 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
1101 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
1102 |
1103 | has-tostringtag@^1.0.0:
1104 | version "1.0.0"
1105 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
1106 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
1107 | dependencies:
1108 | has-symbols "^1.0.2"
1109 |
1110 | has@^1.0.3:
1111 | version "1.0.3"
1112 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1113 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1114 | dependencies:
1115 | function-bind "^1.1.1"
1116 |
1117 | ignore@^5.2.0:
1118 | version "5.2.4"
1119 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
1120 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
1121 |
1122 | import-fresh@^3.0.0, import-fresh@^3.2.1:
1123 | version "3.3.0"
1124 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
1125 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
1126 | dependencies:
1127 | parent-module "^1.0.0"
1128 | resolve-from "^4.0.0"
1129 |
1130 | imurmurhash@^0.1.4:
1131 | version "0.1.4"
1132 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1133 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
1134 |
1135 | inflight@^1.0.4:
1136 | version "1.0.6"
1137 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1138 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
1139 | dependencies:
1140 | once "^1.3.0"
1141 | wrappy "1"
1142 |
1143 | inherits@2:
1144 | version "2.0.4"
1145 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1146 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1147 |
1148 | internal-slot@^1.0.3, internal-slot@^1.0.4:
1149 | version "1.0.5"
1150 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
1151 | integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
1152 | dependencies:
1153 | get-intrinsic "^1.2.0"
1154 | has "^1.0.3"
1155 | side-channel "^1.0.4"
1156 |
1157 | is-arguments@^1.1.1:
1158 | version "1.1.1"
1159 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
1160 | integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
1161 | dependencies:
1162 | call-bind "^1.0.2"
1163 | has-tostringtag "^1.0.0"
1164 |
1165 | is-array-buffer@^3.0.1:
1166 | version "3.0.1"
1167 | resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a"
1168 | integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==
1169 | dependencies:
1170 | call-bind "^1.0.2"
1171 | get-intrinsic "^1.1.3"
1172 | is-typed-array "^1.1.10"
1173 |
1174 | is-bigint@^1.0.1:
1175 | version "1.0.4"
1176 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
1177 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
1178 | dependencies:
1179 | has-bigints "^1.0.1"
1180 |
1181 | is-boolean-object@^1.1.0:
1182 | version "1.1.2"
1183 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
1184 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
1185 | dependencies:
1186 | call-bind "^1.0.2"
1187 | has-tostringtag "^1.0.0"
1188 |
1189 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
1190 | version "1.2.7"
1191 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
1192 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
1193 |
1194 | is-core-module@^2.10.0, is-core-module@^2.11.0, is-core-module@^2.9.0:
1195 | version "2.11.0"
1196 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
1197 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
1198 | dependencies:
1199 | has "^1.0.3"
1200 |
1201 | is-date-object@^1.0.1, is-date-object@^1.0.5:
1202 | version "1.0.5"
1203 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
1204 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
1205 | dependencies:
1206 | has-tostringtag "^1.0.0"
1207 |
1208 | is-docker@^2.0.0, is-docker@^2.1.1:
1209 | version "2.2.1"
1210 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
1211 | integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
1212 |
1213 | is-extglob@^2.1.1:
1214 | version "2.1.1"
1215 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1216 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1217 |
1218 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
1219 | version "4.0.3"
1220 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1221 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1222 | dependencies:
1223 | is-extglob "^2.1.1"
1224 |
1225 | is-map@^2.0.1, is-map@^2.0.2:
1226 | version "2.0.2"
1227 | resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
1228 | integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
1229 |
1230 | is-negative-zero@^2.0.2:
1231 | version "2.0.2"
1232 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
1233 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
1234 |
1235 | is-number-object@^1.0.4:
1236 | version "1.0.7"
1237 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
1238 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
1239 | dependencies:
1240 | has-tostringtag "^1.0.0"
1241 |
1242 | is-number@^7.0.0:
1243 | version "7.0.0"
1244 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1245 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1246 |
1247 | is-path-inside@^3.0.3:
1248 | version "3.0.3"
1249 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
1250 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
1251 |
1252 | is-regex@^1.1.4:
1253 | version "1.1.4"
1254 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
1255 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
1256 | dependencies:
1257 | call-bind "^1.0.2"
1258 | has-tostringtag "^1.0.0"
1259 |
1260 | is-set@^2.0.1, is-set@^2.0.2:
1261 | version "2.0.2"
1262 | resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
1263 | integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
1264 |
1265 | is-shared-array-buffer@^1.0.2:
1266 | version "1.0.2"
1267 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
1268 | integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
1269 | dependencies:
1270 | call-bind "^1.0.2"
1271 |
1272 | is-string@^1.0.5, is-string@^1.0.7:
1273 | version "1.0.7"
1274 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
1275 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
1276 | dependencies:
1277 | has-tostringtag "^1.0.0"
1278 |
1279 | is-symbol@^1.0.2, is-symbol@^1.0.3:
1280 | version "1.0.4"
1281 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
1282 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
1283 | dependencies:
1284 | has-symbols "^1.0.2"
1285 |
1286 | is-typed-array@^1.1.10, is-typed-array@^1.1.9:
1287 | version "1.1.10"
1288 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
1289 | integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==
1290 | dependencies:
1291 | available-typed-arrays "^1.0.5"
1292 | call-bind "^1.0.2"
1293 | for-each "^0.3.3"
1294 | gopd "^1.0.1"
1295 | has-tostringtag "^1.0.0"
1296 |
1297 | is-weakmap@^2.0.1:
1298 | version "2.0.1"
1299 | resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
1300 | integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
1301 |
1302 | is-weakref@^1.0.2:
1303 | version "1.0.2"
1304 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
1305 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
1306 | dependencies:
1307 | call-bind "^1.0.2"
1308 |
1309 | is-weakset@^2.0.1:
1310 | version "2.0.2"
1311 | resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d"
1312 | integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==
1313 | dependencies:
1314 | call-bind "^1.0.2"
1315 | get-intrinsic "^1.1.1"
1316 |
1317 | is-wsl@^2.2.0:
1318 | version "2.2.0"
1319 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
1320 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
1321 | dependencies:
1322 | is-docker "^2.0.0"
1323 |
1324 | isarray@^2.0.5:
1325 | version "2.0.5"
1326 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
1327 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
1328 |
1329 | isexe@^2.0.0:
1330 | version "2.0.0"
1331 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1332 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1333 |
1334 | js-sdsl@^4.1.4:
1335 | version "4.3.0"
1336 | resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711"
1337 | integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==
1338 |
1339 | "js-tokens@^3.0.0 || ^4.0.0":
1340 | version "4.0.0"
1341 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1342 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1343 |
1344 | js-yaml@^4.1.0:
1345 | version "4.1.0"
1346 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1347 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1348 | dependencies:
1349 | argparse "^2.0.1"
1350 |
1351 | json-schema-traverse@^0.4.1:
1352 | version "0.4.1"
1353 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1354 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1355 |
1356 | json-stable-stringify-without-jsonify@^1.0.1:
1357 | version "1.0.1"
1358 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1359 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
1360 |
1361 | json5@^1.0.1:
1362 | version "1.0.2"
1363 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
1364 | integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
1365 | dependencies:
1366 | minimist "^1.2.0"
1367 |
1368 | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3:
1369 | version "3.3.3"
1370 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea"
1371 | integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==
1372 | dependencies:
1373 | array-includes "^3.1.5"
1374 | object.assign "^4.1.3"
1375 |
1376 | language-subtag-registry@~0.3.2:
1377 | version "0.3.22"
1378 | resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d"
1379 | integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==
1380 |
1381 | language-tags@=1.0.5:
1382 | version "1.0.5"
1383 | resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
1384 | integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==
1385 | dependencies:
1386 | language-subtag-registry "~0.3.2"
1387 |
1388 | levn@^0.4.1:
1389 | version "0.4.1"
1390 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
1391 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
1392 | dependencies:
1393 | prelude-ls "^1.2.1"
1394 | type-check "~0.4.0"
1395 |
1396 | locate-path@^6.0.0:
1397 | version "6.0.0"
1398 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1399 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1400 | dependencies:
1401 | p-locate "^5.0.0"
1402 |
1403 | lodash.merge@^4.6.2:
1404 | version "4.6.2"
1405 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
1406 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1407 |
1408 | loose-envify@^1.1.0, loose-envify@^1.4.0:
1409 | version "1.4.0"
1410 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1411 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
1412 | dependencies:
1413 | js-tokens "^3.0.0 || ^4.0.0"
1414 |
1415 | lru-cache@^6.0.0:
1416 | version "6.0.0"
1417 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1418 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1419 | dependencies:
1420 | yallist "^4.0.0"
1421 |
1422 | merge2@^1.3.0, merge2@^1.4.1:
1423 | version "1.4.1"
1424 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
1425 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1426 |
1427 | micromatch@^4.0.4:
1428 | version "4.0.5"
1429 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
1430 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
1431 | dependencies:
1432 | braces "^3.0.2"
1433 | picomatch "^2.3.1"
1434 |
1435 | minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
1436 | version "3.1.2"
1437 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1438 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1439 | dependencies:
1440 | brace-expansion "^1.1.7"
1441 |
1442 | minimist@^1.2.0, minimist@^1.2.6:
1443 | version "1.2.8"
1444 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
1445 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
1446 |
1447 | ms@2.1.2:
1448 | version "2.1.2"
1449 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1450 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1451 |
1452 | ms@^2.1.1:
1453 | version "2.1.3"
1454 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1455 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1456 |
1457 | nanoid@^3.3.4:
1458 | version "3.3.4"
1459 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
1460 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
1461 |
1462 | natural-compare@^1.4.0:
1463 | version "1.4.0"
1464 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1465 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
1466 |
1467 | next@13.1.6:
1468 | version "13.1.6"
1469 | resolved "https://registry.yarnpkg.com/next/-/next-13.1.6.tgz#054babe20b601f21f682f197063c9b0b32f1a27c"
1470 | integrity sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==
1471 | dependencies:
1472 | "@next/env" "13.1.6"
1473 | "@swc/helpers" "0.4.14"
1474 | caniuse-lite "^1.0.30001406"
1475 | postcss "8.4.14"
1476 | styled-jsx "5.1.1"
1477 | optionalDependencies:
1478 | "@next/swc-android-arm-eabi" "13.1.6"
1479 | "@next/swc-android-arm64" "13.1.6"
1480 | "@next/swc-darwin-arm64" "13.1.6"
1481 | "@next/swc-darwin-x64" "13.1.6"
1482 | "@next/swc-freebsd-x64" "13.1.6"
1483 | "@next/swc-linux-arm-gnueabihf" "13.1.6"
1484 | "@next/swc-linux-arm64-gnu" "13.1.6"
1485 | "@next/swc-linux-arm64-musl" "13.1.6"
1486 | "@next/swc-linux-x64-gnu" "13.1.6"
1487 | "@next/swc-linux-x64-musl" "13.1.6"
1488 | "@next/swc-win32-arm64-msvc" "13.1.6"
1489 | "@next/swc-win32-ia32-msvc" "13.1.6"
1490 | "@next/swc-win32-x64-msvc" "13.1.6"
1491 |
1492 | object-assign@^4.1.1:
1493 | version "4.1.1"
1494 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1495 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
1496 |
1497 | object-inspect@^1.12.2, object-inspect@^1.9.0:
1498 | version "1.12.3"
1499 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
1500 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
1501 |
1502 | object-is@^1.1.5:
1503 | version "1.1.5"
1504 | resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
1505 | integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
1506 | dependencies:
1507 | call-bind "^1.0.2"
1508 | define-properties "^1.1.3"
1509 |
1510 | object-keys@^1.1.1:
1511 | version "1.1.1"
1512 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1513 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1514 |
1515 | object.assign@^4.1.3, object.assign@^4.1.4:
1516 | version "4.1.4"
1517 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
1518 | integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
1519 | dependencies:
1520 | call-bind "^1.0.2"
1521 | define-properties "^1.1.4"
1522 | has-symbols "^1.0.3"
1523 | object-keys "^1.1.1"
1524 |
1525 | object.entries@^1.1.6:
1526 | version "1.1.6"
1527 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23"
1528 | integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==
1529 | dependencies:
1530 | call-bind "^1.0.2"
1531 | define-properties "^1.1.4"
1532 | es-abstract "^1.20.4"
1533 |
1534 | object.fromentries@^2.0.6:
1535 | version "2.0.6"
1536 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73"
1537 | integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==
1538 | dependencies:
1539 | call-bind "^1.0.2"
1540 | define-properties "^1.1.4"
1541 | es-abstract "^1.20.4"
1542 |
1543 | object.hasown@^1.1.2:
1544 | version "1.1.2"
1545 | resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92"
1546 | integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==
1547 | dependencies:
1548 | define-properties "^1.1.4"
1549 | es-abstract "^1.20.4"
1550 |
1551 | object.values@^1.1.6:
1552 | version "1.1.6"
1553 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
1554 | integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
1555 | dependencies:
1556 | call-bind "^1.0.2"
1557 | define-properties "^1.1.4"
1558 | es-abstract "^1.20.4"
1559 |
1560 | once@^1.3.0:
1561 | version "1.4.0"
1562 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1563 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1564 | dependencies:
1565 | wrappy "1"
1566 |
1567 | open@^8.4.0:
1568 | version "8.4.1"
1569 | resolved "https://registry.yarnpkg.com/open/-/open-8.4.1.tgz#2ab3754c07f5d1f99a7a8d6a82737c95e3101cff"
1570 | integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==
1571 | dependencies:
1572 | define-lazy-prop "^2.0.0"
1573 | is-docker "^2.1.1"
1574 | is-wsl "^2.2.0"
1575 |
1576 | openai-streams@^1.0.19:
1577 | version "1.0.19"
1578 | resolved "https://registry.yarnpkg.com/openai-streams/-/openai-streams-1.0.19.tgz#04247fdb83a6102b9518db0eff48912f1bea2632"
1579 | integrity sha512-Gc6fAxbJwqpj+Rm0Ueg4zQGrXlkaziUci6QrfrIki/HC50HrlNlPy6CuUvDfepuOOCC5m1CGNPpiX9wrcr9X+g==
1580 | dependencies:
1581 | dotenv "^16.0.3"
1582 | eventsource-parser "^0.1.0"
1583 | yield-stream "^2.0.4"
1584 |
1585 | optionator@^0.9.1:
1586 | version "0.9.1"
1587 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
1588 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
1589 | dependencies:
1590 | deep-is "^0.1.3"
1591 | fast-levenshtein "^2.0.6"
1592 | levn "^0.4.1"
1593 | prelude-ls "^1.2.1"
1594 | type-check "^0.4.0"
1595 | word-wrap "^1.2.3"
1596 |
1597 | p-limit@^3.0.2:
1598 | version "3.1.0"
1599 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1600 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1601 | dependencies:
1602 | yocto-queue "^0.1.0"
1603 |
1604 | p-locate@^5.0.0:
1605 | version "5.0.0"
1606 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1607 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1608 | dependencies:
1609 | p-limit "^3.0.2"
1610 |
1611 | parent-module@^1.0.0:
1612 | version "1.0.1"
1613 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1614 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1615 | dependencies:
1616 | callsites "^3.0.0"
1617 |
1618 | path-exists@^4.0.0:
1619 | version "4.0.0"
1620 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1621 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1622 |
1623 | path-is-absolute@^1.0.0:
1624 | version "1.0.1"
1625 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1626 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1627 |
1628 | path-key@^3.1.0:
1629 | version "3.1.1"
1630 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1631 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1632 |
1633 | path-parse@^1.0.7:
1634 | version "1.0.7"
1635 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1636 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1637 |
1638 | path-type@^4.0.0:
1639 | version "4.0.0"
1640 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
1641 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1642 |
1643 | picocolors@^1.0.0:
1644 | version "1.0.0"
1645 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1646 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1647 |
1648 | picomatch@^2.3.1:
1649 | version "2.3.1"
1650 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1651 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1652 |
1653 | postcss@8.4.14:
1654 | version "8.4.14"
1655 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
1656 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
1657 | dependencies:
1658 | nanoid "^3.3.4"
1659 | picocolors "^1.0.0"
1660 | source-map-js "^1.0.2"
1661 |
1662 | prelude-ls@^1.2.1:
1663 | version "1.2.1"
1664 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1665 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1666 |
1667 | prop-types@^15.8.1:
1668 | version "15.8.1"
1669 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
1670 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
1671 | dependencies:
1672 | loose-envify "^1.4.0"
1673 | object-assign "^4.1.1"
1674 | react-is "^16.13.1"
1675 |
1676 | punycode@^2.1.0:
1677 | version "2.3.0"
1678 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
1679 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
1680 |
1681 | queue-microtask@^1.2.2:
1682 | version "1.2.3"
1683 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1684 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1685 |
1686 | react-dom@18.2.0:
1687 | version "18.2.0"
1688 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
1689 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
1690 | dependencies:
1691 | loose-envify "^1.1.0"
1692 | scheduler "^0.23.0"
1693 |
1694 | react-is@^16.13.1:
1695 | version "16.13.1"
1696 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
1697 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
1698 |
1699 | react@18.2.0:
1700 | version "18.2.0"
1701 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
1702 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
1703 | dependencies:
1704 | loose-envify "^1.1.0"
1705 |
1706 | regenerator-runtime@^0.13.11:
1707 | version "0.13.11"
1708 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
1709 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
1710 |
1711 | regexp.prototype.flags@^1.4.3:
1712 | version "1.4.3"
1713 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
1714 | integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
1715 | dependencies:
1716 | call-bind "^1.0.2"
1717 | define-properties "^1.1.3"
1718 | functions-have-names "^1.2.2"
1719 |
1720 | regexpp@^3.2.0:
1721 | version "3.2.0"
1722 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
1723 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
1724 |
1725 | resolve-from@^4.0.0:
1726 | version "4.0.0"
1727 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1728 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1729 |
1730 | resolve@^1.22.1:
1731 | version "1.22.1"
1732 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
1733 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
1734 | dependencies:
1735 | is-core-module "^2.9.0"
1736 | path-parse "^1.0.7"
1737 | supports-preserve-symlinks-flag "^1.0.0"
1738 |
1739 | resolve@^2.0.0-next.4:
1740 | version "2.0.0-next.4"
1741 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660"
1742 | integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==
1743 | dependencies:
1744 | is-core-module "^2.9.0"
1745 | path-parse "^1.0.7"
1746 | supports-preserve-symlinks-flag "^1.0.0"
1747 |
1748 | reusify@^1.0.4:
1749 | version "1.0.4"
1750 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1751 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1752 |
1753 | rimraf@^3.0.2:
1754 | version "3.0.2"
1755 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1756 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1757 | dependencies:
1758 | glob "^7.1.3"
1759 |
1760 | run-parallel@^1.1.9:
1761 | version "1.2.0"
1762 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1763 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1764 | dependencies:
1765 | queue-microtask "^1.2.2"
1766 |
1767 | safe-regex-test@^1.0.0:
1768 | version "1.0.0"
1769 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
1770 | integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
1771 | dependencies:
1772 | call-bind "^1.0.2"
1773 | get-intrinsic "^1.1.3"
1774 | is-regex "^1.1.4"
1775 |
1776 | scheduler@^0.23.0:
1777 | version "0.23.0"
1778 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
1779 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
1780 | dependencies:
1781 | loose-envify "^1.1.0"
1782 |
1783 | semver@^6.3.0:
1784 | version "6.3.0"
1785 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1786 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1787 |
1788 | semver@^7.3.7:
1789 | version "7.3.8"
1790 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
1791 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
1792 | dependencies:
1793 | lru-cache "^6.0.0"
1794 |
1795 | shebang-command@^2.0.0:
1796 | version "2.0.0"
1797 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1798 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1799 | dependencies:
1800 | shebang-regex "^3.0.0"
1801 |
1802 | shebang-regex@^3.0.0:
1803 | version "3.0.0"
1804 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1805 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1806 |
1807 | shim-streams@^0.0.2:
1808 | version "0.0.2"
1809 | resolved "https://registry.yarnpkg.com/shim-streams/-/shim-streams-0.0.2.tgz#816a9faf9bc158cbc57b5593f2d4c3c9087b02e6"
1810 | integrity sha512-9Otb+FCl13XxRp1nVddtsCbwvB7AEMTjzc3/fixowyzvSVoCzu/VEstblB2SdIDbd61u5D/zpS5u9fGzDdOoZg==
1811 |
1812 | side-channel@^1.0.4:
1813 | version "1.0.4"
1814 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
1815 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
1816 | dependencies:
1817 | call-bind "^1.0.0"
1818 | get-intrinsic "^1.0.2"
1819 | object-inspect "^1.9.0"
1820 |
1821 | slash@^3.0.0:
1822 | version "3.0.0"
1823 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1824 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1825 |
1826 | slash@^4.0.0:
1827 | version "4.0.0"
1828 | resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
1829 | integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
1830 |
1831 | source-map-js@^1.0.2:
1832 | version "1.0.2"
1833 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1834 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1835 |
1836 | stop-iteration-iterator@^1.0.0:
1837 | version "1.0.0"
1838 | resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
1839 | integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
1840 | dependencies:
1841 | internal-slot "^1.0.4"
1842 |
1843 | string.prototype.matchall@^4.0.8:
1844 | version "4.0.8"
1845 | resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
1846 | integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==
1847 | dependencies:
1848 | call-bind "^1.0.2"
1849 | define-properties "^1.1.4"
1850 | es-abstract "^1.20.4"
1851 | get-intrinsic "^1.1.3"
1852 | has-symbols "^1.0.3"
1853 | internal-slot "^1.0.3"
1854 | regexp.prototype.flags "^1.4.3"
1855 | side-channel "^1.0.4"
1856 |
1857 | string.prototype.trimend@^1.0.6:
1858 | version "1.0.6"
1859 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
1860 | integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
1861 | dependencies:
1862 | call-bind "^1.0.2"
1863 | define-properties "^1.1.4"
1864 | es-abstract "^1.20.4"
1865 |
1866 | string.prototype.trimstart@^1.0.6:
1867 | version "1.0.6"
1868 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
1869 | integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
1870 | dependencies:
1871 | call-bind "^1.0.2"
1872 | define-properties "^1.1.4"
1873 | es-abstract "^1.20.4"
1874 |
1875 | strip-ansi@^6.0.1:
1876 | version "6.0.1"
1877 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1878 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1879 | dependencies:
1880 | ansi-regex "^5.0.1"
1881 |
1882 | strip-bom@^3.0.0:
1883 | version "3.0.0"
1884 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
1885 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
1886 |
1887 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
1888 | version "3.1.1"
1889 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1890 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1891 |
1892 | styled-jsx@5.1.1:
1893 | version "5.1.1"
1894 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f"
1895 | integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==
1896 | dependencies:
1897 | client-only "0.0.1"
1898 |
1899 | supports-color@^7.1.0:
1900 | version "7.2.0"
1901 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1902 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1903 | dependencies:
1904 | has-flag "^4.0.0"
1905 |
1906 | supports-preserve-symlinks-flag@^1.0.0:
1907 | version "1.0.0"
1908 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1909 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1910 |
1911 | synckit@^0.8.4:
1912 | version "0.8.5"
1913 | resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3"
1914 | integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==
1915 | dependencies:
1916 | "@pkgr/utils" "^2.3.1"
1917 | tslib "^2.5.0"
1918 |
1919 | tapable@^2.2.0:
1920 | version "2.2.1"
1921 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
1922 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
1923 |
1924 | text-table@^0.2.0:
1925 | version "0.2.0"
1926 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1927 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
1928 |
1929 | tiny-glob@^0.2.9:
1930 | version "0.2.9"
1931 | resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2"
1932 | integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==
1933 | dependencies:
1934 | globalyzer "0.1.0"
1935 | globrex "^0.1.2"
1936 |
1937 | to-regex-range@^5.0.1:
1938 | version "5.0.1"
1939 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1940 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1941 | dependencies:
1942 | is-number "^7.0.0"
1943 |
1944 | tsconfig-paths@^3.14.1:
1945 | version "3.14.1"
1946 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
1947 | integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
1948 | dependencies:
1949 | "@types/json5" "^0.0.29"
1950 | json5 "^1.0.1"
1951 | minimist "^1.2.6"
1952 | strip-bom "^3.0.0"
1953 |
1954 | tslib@^1.8.1:
1955 | version "1.14.1"
1956 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
1957 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
1958 |
1959 | tslib@^2.4.0, tslib@^2.5.0:
1960 | version "2.5.0"
1961 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
1962 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
1963 |
1964 | tsutils@^3.21.0:
1965 | version "3.21.0"
1966 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
1967 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
1968 | dependencies:
1969 | tslib "^1.8.1"
1970 |
1971 | type-check@^0.4.0, type-check@~0.4.0:
1972 | version "0.4.0"
1973 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1974 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1975 | dependencies:
1976 | prelude-ls "^1.2.1"
1977 |
1978 | type-fest@^0.20.2:
1979 | version "0.20.2"
1980 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
1981 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1982 |
1983 | typed-array-length@^1.0.4:
1984 | version "1.0.4"
1985 | resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
1986 | integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
1987 | dependencies:
1988 | call-bind "^1.0.2"
1989 | for-each "^0.3.3"
1990 | is-typed-array "^1.1.9"
1991 |
1992 | typescript@4.9.5:
1993 | version "4.9.5"
1994 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
1995 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
1996 |
1997 | unbox-primitive@^1.0.2:
1998 | version "1.0.2"
1999 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
2000 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
2001 | dependencies:
2002 | call-bind "^1.0.2"
2003 | has-bigints "^1.0.2"
2004 | has-symbols "^1.0.3"
2005 | which-boxed-primitive "^1.0.2"
2006 |
2007 | uri-js@^4.2.2:
2008 | version "4.4.1"
2009 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2010 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2011 | dependencies:
2012 | punycode "^2.1.0"
2013 |
2014 | web-streams-polyfill@^3.2.1:
2015 | version "3.2.1"
2016 | resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"
2017 | integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==
2018 |
2019 | which-boxed-primitive@^1.0.2:
2020 | version "1.0.2"
2021 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
2022 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
2023 | dependencies:
2024 | is-bigint "^1.0.1"
2025 | is-boolean-object "^1.1.0"
2026 | is-number-object "^1.0.4"
2027 | is-string "^1.0.5"
2028 | is-symbol "^1.0.3"
2029 |
2030 | which-collection@^1.0.1:
2031 | version "1.0.1"
2032 | resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
2033 | integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
2034 | dependencies:
2035 | is-map "^2.0.1"
2036 | is-set "^2.0.1"
2037 | is-weakmap "^2.0.1"
2038 | is-weakset "^2.0.1"
2039 |
2040 | which-typed-array@^1.1.9:
2041 | version "1.1.9"
2042 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
2043 | integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
2044 | dependencies:
2045 | available-typed-arrays "^1.0.5"
2046 | call-bind "^1.0.2"
2047 | for-each "^0.3.3"
2048 | gopd "^1.0.1"
2049 | has-tostringtag "^1.0.0"
2050 | is-typed-array "^1.1.10"
2051 |
2052 | which@^2.0.1:
2053 | version "2.0.2"
2054 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2055 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2056 | dependencies:
2057 | isexe "^2.0.0"
2058 |
2059 | word-wrap@^1.2.3:
2060 | version "1.2.3"
2061 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
2062 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
2063 |
2064 | wrappy@1:
2065 | version "1.0.2"
2066 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2067 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
2068 |
2069 | yallist@^4.0.0:
2070 | version "4.0.0"
2071 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
2072 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
2073 |
2074 | yield-stream@^2.0.4:
2075 | version "2.0.4"
2076 | resolved "https://registry.yarnpkg.com/yield-stream/-/yield-stream-2.0.4.tgz#d8e4dd620114214abf63a308a2b42586d9b3b4ad"
2077 | integrity sha512-v+E/99dPqq4tveNPIdpOBfrVji//9BOSHOtfW58/zf8aIceevtIdHCTS4YqywQfVdW9wglV2P0oJtlx+jG/ZKw==
2078 | dependencies:
2079 | shim-streams "^0.0.2"
2080 | web-streams-polyfill "^3.2.1"
2081 |
2082 | yocto-queue@^0.1.0:
2083 | version "0.1.0"
2084 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2085 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2086 |
--------------------------------------------------------------------------------