├── .changeset ├── README.md └── config.json ├── .github └── workflows │ ├── build.yaml │ └── release.yml ├── .gitignore ├── README.md ├── docs ├── autocomplete-paths.png └── error-in-variadic.png ├── package.json ├── packages ├── example-app │ ├── generated │ │ └── static-paths.d.ts │ ├── next-env.d.ts │ ├── package.json │ ├── pages │ │ ├── dynamic │ │ │ └── [userId].tsx │ │ ├── index.tsx │ │ └── splat │ │ │ └── [...rest].tsx │ ├── tests │ │ ├── TypedLink.test.tsx │ │ └── pathFor.test.ts │ └── tsconfig.json └── next-static-paths │ ├── CHANGELOG.md │ ├── README.md │ ├── augment.d.ts │ ├── bin │ └── next-static-paths.js │ ├── cli │ ├── argObject.ts │ ├── command-generate.ts │ ├── filePathToPathname.ts │ ├── helperJsDocs.ts │ └── index.ts │ ├── package.json │ ├── root.d.ts │ ├── scripts │ └── build.ts │ ├── src │ ├── TypedLink.tsx │ ├── index.ts │ └── pathFor.ts │ ├── test │ ├── command.test.ts │ ├── filePathToPathname.test.ts │ └── helperJsDocs.test.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml └── turbo.json /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | 13 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: "build" 2 | 3 | on: 4 | push: 5 | branches: 6 | - "main" 7 | pull_request: 8 | branches: 9 | - "main" 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | strategy: 15 | matrix: 16 | node-version: ["14.x", "16.x"] 17 | steps: 18 | - uses: actions/checkout@v3 19 | - uses: actions/setup-node@v2 20 | with: 21 | node-version: ${{ matrix.node-version }} 22 | - uses: pnpm/action-setup@v2.2.1 23 | with: 24 | version: 6.31.0 25 | - name: Cache pnpm modules 26 | uses: actions/cache@v2 27 | with: 28 | path: ~/.pnpm-store 29 | key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} 30 | restore-keys: | 31 | ${{ runner.os }}- 32 | - run: pnpm install 33 | - run: pnpm run build 34 | - run: pnpm run test 35 | - run: pnpm run lint 36 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | 6 | name: "release" 7 | concurrency: ${{ github.workflow }}-${{ github.ref }} 8 | 9 | jobs: 10 | release: 11 | name: Release 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout Repo 15 | uses: actions/checkout@v2 16 | 17 | - uses: pnpm/action-setup@v2.2.1 18 | with: 19 | version: 6.31.0 20 | 21 | - name: Setup Node.js 16.x 22 | uses: actions/setup-node@v2 23 | with: 24 | node-version: 16.x 25 | cache: pnpm 26 | 27 | - name: Install Dependencies 28 | run: pnpm install 29 | 30 | - name: Create Release Pull Request 31 | uses: changesets/action@v1 32 | with: 33 | version: "pnpm changeset:version" 34 | publish: "pnpm changeset:publish" 35 | env: 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | *.tsbuildinfo 4 | .turbo 5 | .next 6 | *.log 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # This feature is supported natively in [Next.js 13.2](https://nextjs.org/13-2) 2 | 3 | upgrade and have fun! 4 | 5 | --- 6 | 7 | # `next-static-paths` 8 | 9 | Statically prevent HTTP 404 Not Found in your Next.js applications using TypeScript and code generation. 10 | 11 | ## Features 12 | 13 | 💻 A command-line interface to generate static types and custom route helper functions 14 | 15 | 🔗 A `` component which wraps Next.js `` and provides type-safe path matching 16 | 17 | 📝 A `pathFor` helper that enables path generation in a type-safe manner 18 | 19 | ## Usage 20 | 21 | ```sh-session 22 | $ pnpm add next-static-paths 23 | # or 24 | $ yarn add next-static-paths 25 | # or 26 | $ npm install next-static-paths 27 | ``` 28 | 29 | Then, from within your Next.js application root, run the following command: 30 | 31 | ```sh-session 32 | # For pnpm users 33 | $ pnpx next-static-paths 34 | 35 | # For yarn users 36 | $ yarn next-static-paths 37 | 38 | # For npm users 39 | $ npx next-static-paths 40 | ``` 41 | 42 | ## Usage screenshots 43 | 44 | #### Path autocomplete 45 | 46 | ![Path autocomplete](./docs/autocomplete-paths.png) 47 | 48 | #### Dynamic path segment type checking 49 | 50 | ![dynamic path segment type checking](./docs/error-in-variadic.png) 51 | -------------------------------------------------------------------------------- /docs/autocomplete-paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Schniz/next-static-paths/cd0659794f1b826ef27f00e5b84530478d09a994/docs/autocomplete-paths.png -------------------------------------------------------------------------------- /docs/error-in-variadic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Schniz/next-static-paths/cd0659794f1b826ef27f00e5b84530478d09a994/docs/error-in-variadic.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-static-paths-monorepo", 3 | "private": true, 4 | "scripts": { 5 | "build": "FORCE_COLOR=1 turbo run build", 6 | "lint": "FORCE_COLOR=1 turbo run lint", 7 | "test": "FORCE_COLOR=1 turbo run test", 8 | "changeset:version": "changeset version && pnpm install --no-frozen-lockfile", 9 | "changeset:publish": "pnpm run build && changeset publish" 10 | }, 11 | "devDependencies": { 12 | "@changesets/cli": "^2.22.0", 13 | "turbo": "^1.2.9" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/example-app/generated/static-paths.d.ts: -------------------------------------------------------------------------------- 1 | // This file is generated by scripts/generate-paths.ts 2 | // Do not edit this file directly. 3 | 4 | // @generated 5 | // prettier-ignore 6 | /* eslint-disable */ 7 | 8 | declare module "@@@next-static-paths" { 9 | interface Paths { 10 | "/": Record, 11 | "/dynamic/[userId]": {"userId": string}, 12 | "/splat/[...rest]": {"rest": string[]} 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/example-app/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /packages/example-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@next-static-paths/example-app", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "", 6 | "main": "index.js", 7 | "scripts": { 8 | "dev": "next dev", 9 | "build": "next-static-paths && next build" 10 | }, 11 | "keywords": [], 12 | "author": "", 13 | "license": "ISC", 14 | "devDependencies": { 15 | "@types/react": "^17.0.42", 16 | "@types/react-dom": "^18.0.4", 17 | "next": "^12.1.0", 18 | "next-static-paths": "workspace:^0.0.6", 19 | "prettier": "^2.6.0", 20 | "typescript": "^4.6.2", 21 | "vitest": "^0.5.9" 22 | }, 23 | "dependencies": { 24 | "react": "^17.0.2", 25 | "react-dom": "^17.0.2" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /packages/example-app/pages/dynamic/[userId].tsx: -------------------------------------------------------------------------------- 1 | import { useRouter } from "next/router"; 2 | export default function ShowUser() { 3 | const router = useRouter(); 4 | return
user id: {router.query.userId}
; 5 | } 6 | -------------------------------------------------------------------------------- /packages/example-app/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { TypedLink } from "next-static-paths"; 2 | 3 | export default function Home() { 4 | return ( 5 |
6 | Hello, world.{" "} 7 | 8 | Hello 9 | 10 |
11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /packages/example-app/pages/splat/[...rest].tsx: -------------------------------------------------------------------------------- 1 | import { useRouter } from "next/router"; 2 | export default function ShowUser() { 3 | const router = useRouter(); 4 | return
rest: {JSON.stringify(router.query.rest)}
; 5 | } 6 | -------------------------------------------------------------------------------- /packages/example-app/tests/TypedLink.test.tsx: -------------------------------------------------------------------------------- 1 | import { TypedLink } from "next-static-paths"; 2 | import { test, expect, describe } from "vitest"; 3 | import React from "react"; 4 | import { renderToStaticMarkup } from "react-dom/server"; 5 | 6 | test("no args throws", () => { 7 | expect(() => { 8 | renderToStaticMarkup( 9 | // @ts-expect-error 10 | 11 | ); 12 | }).toThrowError(/`as` prop is required/); 13 | }); 14 | 15 | test("/", () => { 16 | expect( 17 | renderToStaticMarkup( 18 | 19 | Hello 20 | 21 | ) 22 | ).toEqual(`Hello`); 23 | }); 24 | 25 | describe("/dynamic/[userId]", () => { 26 | test("fails if missing userId", () => { 27 | expect(() => { 28 | // @ts-ignore 29 | renderToStaticMarkup(); 30 | }).toThrowError(/argument userId is missing/); 31 | }); 32 | test("renders correctly", () => { 33 | expect( 34 | renderToStaticMarkup( 35 | 36 | Hello 37 | 38 | ) 39 | ).toEqual(`Hello`); 40 | }); 41 | }); 42 | 43 | describe("/splat/[...rest]", () => { 44 | test("throws if missing userId", () => { 45 | expect(() => { 46 | // @ts-ignore 47 | renderToStaticMarkup(); 48 | }).toThrowError(/argument rest is missing/); 49 | }); 50 | test("renders correctly", () => { 51 | expect( 52 | renderToStaticMarkup( 53 | 54 | Hello 55 | 56 | ) 57 | ).toEqual(`Hello`); 58 | }); 59 | }); 60 | -------------------------------------------------------------------------------- /packages/example-app/tests/pathFor.test.ts: -------------------------------------------------------------------------------- 1 | import { test, expect } from "vitest"; 2 | import { pathFor } from "next-static-paths"; 3 | 4 | test("/", () => { 5 | expect(pathFor("/")).toEqual("/"); 6 | }); 7 | 8 | test("/dynamic/[userId]", () => { 9 | expect(() => { 10 | // @ts-expect-error 11 | pathFor("/dynamic/[userId]"); 12 | }).toThrowError(/argument userId is missing/i); 13 | 14 | expect(() => { 15 | // @ts-expect-error 16 | pathFor("/dynamic/[userId]", { hello: "world" }); 17 | }).toThrowError(/argument userId is missing/i); 18 | 19 | // @ts-expect-error 20 | pathFor("/dynamic/[userId]", { userId: "userId", hello: "world" }); 21 | 22 | expect(pathFor("/dynamic/[userId]", { userId: "userId" })).toEqual( 23 | "/dynamic/userId" 24 | ); 25 | }); 26 | 27 | test("/splat/[...rest]", () => { 28 | expect(() => { 29 | // @ts-expect-error 30 | pathFor("/splat/[...rest]"); 31 | }).toThrowError(/argument rest is missing/i); 32 | 33 | // @ts-expect-error 34 | pathFor("/splat/[...rest]", { rest: "rest" }); 35 | 36 | // @ts-expect-error 37 | pathFor("/splat/[...rest]", { rest: [10] }); 38 | 39 | pathFor("/splat/[...rest]", { rest: [] }); 40 | expect(pathFor("/splat/[...rest]", { rest: ["hello", "wor/ld"] })).toEqual( 41 | "/splat/hello/wor%2Fld" 42 | ); 43 | }); 44 | -------------------------------------------------------------------------------- /packages/example-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "noEmit": true, 9 | "incremental": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "allowJs": true 17 | }, 18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 19 | "exclude": ["node_modules"] 20 | } 21 | -------------------------------------------------------------------------------- /packages/next-static-paths/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # next-static-paths 2 | 3 | ## 0.0.6 4 | 5 | ### Patch Changes 6 | 7 | - d81f4ff: add a readme to the npm package 8 | 9 | ## 0.0.5 10 | 11 | ### Patch Changes 12 | 13 | - 477976c: Add repository to package.json 14 | 15 | ## 0.0.4 16 | 17 | ### Patch Changes 18 | 19 | - 238a159: Allow TypedLink to receive children in the types 20 | 21 | ## 0.0.3 22 | 23 | ### Patch Changes 24 | 25 | - 3013374: Remove the `as` prop from the link 26 | -------------------------------------------------------------------------------- /packages/next-static-paths/README.md: -------------------------------------------------------------------------------- 1 | # `next-static-paths` 2 | 3 | Statically prevent HTTP 404 Not Found in your Next.js applications using TypeScript and code generation. 4 | 5 | ## Usage 6 | 7 | ```sh-session 8 | $ pnpm add next-static-paths 9 | # or 10 | $ yarn add next-static-paths 11 | # or 12 | $ npm install next-static-paths 13 | ``` 14 | 15 | Then, from within your Next.js application root, run the following command: 16 | 17 | ```sh-session 18 | # For pnpm users 19 | $ pnpx next-static-paths 20 | 21 | # For yarn users 22 | $ yarn next-static-paths 23 | 24 | # For npm users 25 | $ npx next-static-paths 26 | ``` 27 | 28 | ### `TypedLink` component 29 | 30 | ```tsx 31 | import { TypedLink } from "next-static-paths"; 32 | function MyComponent() { 33 | return ( 34 | 35 | Hello world 36 | 37 | ); 38 | } 39 | ``` 40 | 41 | ### `pathFor` helper 42 | 43 | ```tsx 44 | import { pathFor } from "next-static-paths"; 45 | 46 | function getPath() { 47 | return pathFor("/some/[myArgument]", { myArgument: "hello world" }); 48 | } 49 | ``` 50 | -------------------------------------------------------------------------------- /packages/next-static-paths/augment.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@@@next-static-paths" { 2 | interface Paths {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/next-static-paths/bin/next-static-paths.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require("../dist/cli/index.js"); 4 | -------------------------------------------------------------------------------- /packages/next-static-paths/cli/argObject.ts: -------------------------------------------------------------------------------- 1 | export type ArgumentType = "string" | "variadic"; 2 | export type ArgObject = { [arg: string]: ArgumentType }; 3 | 4 | export function getArgumentsFromPath(pathname: string): ArgObject { 5 | const matches = pathname.match(/\[([^\]]+)\]/g); 6 | const output: ArgObject = {}; 7 | if (!matches) { 8 | return output; 9 | } 10 | for (const match of matches) { 11 | const argumentName = match.slice(1, -1); 12 | if (argumentName.startsWith("...")) { 13 | output[argumentName.slice(3)] = "variadic"; 14 | } else { 15 | output[argumentName] = "string"; 16 | } 17 | } 18 | return output; 19 | } 20 | 21 | export function argObjectToTypeString(argObject: ArgObject): string { 22 | const entries = Object.entries(argObject); 23 | if (!entries.length) { 24 | return "Record"; 25 | } 26 | const properties = entries.map(([key, value]) => { 27 | const valueType = value === "variadic" ? "string[]" : "string"; 28 | return `${JSON.stringify(key)}: ${valueType}`; 29 | }); 30 | return `{${properties.join(", ")}}`; 31 | } 32 | -------------------------------------------------------------------------------- /packages/next-static-paths/cli/command-generate.ts: -------------------------------------------------------------------------------- 1 | import { 2 | command, 3 | multioption, 4 | option, 5 | string, 6 | array, 7 | extendType, 8 | } from "cmd-ts"; 9 | import { Directory } from "cmd-ts/batteries/fs"; 10 | import globby from "globby"; 11 | import path from "path"; 12 | import fs from "fs/promises"; 13 | import chalk from "chalk"; 14 | import { existsSync } from "fs"; 15 | import { type Writable } from "stream"; 16 | import { filePathToPathname } from "./filePathToPathname"; 17 | import { 18 | getHelperJsDocs, 19 | HelperJsDocs, 20 | generateHelperCode, 21 | } from "./helperJsDocs"; 22 | import { 23 | ArgObject, 24 | argObjectToTypeString, 25 | getArgumentsFromPath, 26 | } from "./argObject"; 27 | 28 | const logRoutes = chalk.blue.bold(`routes:`); 29 | const danger = chalk.red.bold(`danger:`); 30 | const logOutput = chalk.magenta.bold(`output:`); 31 | 32 | interface Route { 33 | filepath: string; 34 | pathname: string; 35 | arguments: ArgObject; 36 | helper?: HelperJsDocs; 37 | } 38 | 39 | const defaultPageExtensions = ["js", "jsx", "ts", "tsx"] as const; 40 | const PageExtensionType = extendType(array(string), { 41 | async from(value: string[]): Promise { 42 | if (!value.length) { 43 | return defaultPageExtensions; 44 | } 45 | 46 | return value.map((x) => x.replace(/^\./, "")); 47 | }, 48 | defaultValue: () => defaultPageExtensions, 49 | defaultValueIsSerializable: true, 50 | displayName: "ext", 51 | }); 52 | 53 | export const generate = command({ 54 | name: "next-static-paths", 55 | description: "Generate static path generation and helpers for next.js", 56 | args: { 57 | outputDir: option({ 58 | long: "output", 59 | description: "The directory where the files will be stored", 60 | defaultValue: () => "./generated", 61 | defaultValueIsSerializable: true, 62 | }), 63 | pagesDirectory: option({ 64 | type: Directory, 65 | long: "pages-dir", 66 | defaultValue: () => "./pages", 67 | defaultValueIsSerializable: true, 68 | }), 69 | runtimeFilename: option({ 70 | type: { 71 | ...string, 72 | displayName: "file", 73 | }, 74 | long: "runtime-filename", 75 | description: 76 | "the filename for which the runtime helpers will be generated to", 77 | defaultValue: () => "paths.ts", 78 | defaultValueIsSerializable: true, 79 | }), 80 | staticFilename: option({ 81 | type: { 82 | ...string, 83 | displayName: "file", 84 | }, 85 | long: "static-filename", 86 | description: 87 | "the filename for which the static typedefs will be generated to", 88 | defaultValue: () => "static-paths.d.ts", 89 | defaultValueIsSerializable: true, 90 | }), 91 | pageExtensions: multioption({ 92 | long: "page-extension", 93 | type: PageExtensionType, 94 | description: "The pageExtensions config from next.config.js", 95 | }), 96 | }, 97 | async handler({ 98 | outputDir, 99 | staticFilename, 100 | runtimeFilename, 101 | pageExtensions, 102 | pagesDirectory, 103 | }) { 104 | const glob = `**/*.{${pageExtensions.join(",")}}`; 105 | const globber = globby.stream(glob, { 106 | cwd: pagesDirectory, 107 | ignore: [ 108 | ignoredFile("_app", pageExtensions), 109 | ignoredFile("_document", pageExtensions), 110 | ], 111 | }); 112 | const routes = new Map(); 113 | 114 | for await (const pathAsMaybeString of globber) { 115 | const filepath = String(pathAsMaybeString); 116 | const contents = await fs.readFile( 117 | path.join(pagesDirectory, filepath), 118 | "utf8" 119 | ); 120 | 121 | const helper = getHelperJsDocs(contents); 122 | const pathname = filePathToPathname(pageExtensions, filepath); 123 | 124 | const previousValue = routes.get(pathname); 125 | routes.set(pathname, { 126 | ...previousValue, 127 | filepath, 128 | pathname, 129 | arguments: getArgumentsFromPath(pathname), 130 | helper, 131 | }); 132 | } 133 | 134 | const helpers: string[] = []; 135 | for (const { pathname, helper, arguments: args } of routes.values()) { 136 | if (helper) { 137 | helpers.push(generateHelperCode(helper, pathname, args)); 138 | console.error( 139 | `${logRoutes} Found ${pathname} (${chalk.cyan(helper.name)})` 140 | ); 141 | } else { 142 | console.error(`${logRoutes} Found ${pathname}`); 143 | } 144 | } 145 | 146 | const paths = { 147 | runtime: path.join(outputDir, runtimeFilename), 148 | static: path.join(outputDir, staticFilename), 149 | }; 150 | 151 | await fs.mkdir(outputDir, { recursive: true }); 152 | 153 | if (helpers.length) { 154 | console.error( 155 | `${logOutput} Generated ${helpers.length} helpers to ${chalk.cyan( 156 | paths.runtime 157 | )}` 158 | ); 159 | await fs.writeFile( 160 | paths.runtime, 161 | maybePrettify([getIntroString(), "", ...helpers].join("\n\n")), 162 | "utf8" 163 | ); 164 | } else if (existsSync(paths.runtime)) { 165 | console.error( 166 | `${danger} no helpers found, deleting ${chalk.red(paths.runtime)}` 167 | ); 168 | await fs.rm(paths.runtime); 169 | } 170 | 171 | console.error( 172 | `${logOutput} generating static interface to ${chalk.cyan(paths.static)}` 173 | ); 174 | await fs.writeFile( 175 | paths.static, 176 | maybePrettify( 177 | [ 178 | getIntroString(), 179 | "", 180 | `declare module "@@@next-static-paths" {`, 181 | getInterface([...routes.values()]).replace(/^/gm, " "), 182 | "}", 183 | ].join("\n") 184 | ), 185 | "utf8" 186 | ); 187 | 188 | await write(process.stderr, chalk.bgGreen.black.bold(" SUCCESS ") + " "); 189 | await write(process.stderr, "Generated "); 190 | if (helpers.length) { 191 | await write(process.stderr, `${chalk.cyan(helpers.length)} helpers for `); 192 | } 193 | await write(process.stderr, `${chalk.cyan(routes.size)} static paths.`); 194 | await write(process.stderr, "\n"); 195 | }, 196 | }); 197 | 198 | function ignoredFile(name: string, extensions: readonly string[]) { 199 | return `${name}.{${extensions.join(",")}}`; 200 | } 201 | 202 | function getInterface(routes: readonly Route[]) { 203 | const fields = routes 204 | .map((x) => { 205 | let pathname = x.pathname; 206 | let args = x.arguments; 207 | const typedef = argObjectToTypeString(args); 208 | return `${JSON.stringify(pathname)}: ${typedef}`; 209 | }) 210 | .join(",\n"); 211 | return `interface Paths {\n${fields}\n}`; 212 | } 213 | 214 | function getIntroString(): string { 215 | return [ 216 | `// This file is generated by scripts/generate-paths.ts`, 217 | `// Do not edit this file directly.`, 218 | "", 219 | "// @generated", 220 | `// prettier-ignore`, 221 | `/* eslint-disable */`, 222 | ].join("\n"); 223 | } 224 | 225 | function write(writable: Writable, data: string): Promise { 226 | return new Promise((resolve, reject) => { 227 | writable.write(data, (err) => { 228 | if (err) { 229 | reject(err); 230 | } else { 231 | resolve(); 232 | } 233 | }); 234 | }); 235 | } 236 | 237 | function maybePrettify(input: string): string { 238 | try { 239 | const resolved = require("prettier"); 240 | return resolved.format(input, { parser: "typescript" }); 241 | } catch {} 242 | return input; 243 | } 244 | -------------------------------------------------------------------------------- /packages/next-static-paths/cli/filePathToPathname.ts: -------------------------------------------------------------------------------- 1 | export function filePathToPathname( 2 | pageExtensions: readonly string[], 3 | filePath: string 4 | ): string { 5 | const extensionsRegex = new RegExp(`\\.(${pageExtensions.join("|")})$`); 6 | return filePath 7 | .replace(extensionsRegex, "") 8 | .replace(/^/, "/") 9 | .replace(/\/(_middleware|index)$/, "") 10 | .replace(/\/+$/, "") 11 | .replace(/^$/, "/"); 12 | } 13 | -------------------------------------------------------------------------------- /packages/next-static-paths/cli/helperJsDocs.ts: -------------------------------------------------------------------------------- 1 | import { ArgObject, argObjectToTypeString } from "./argObject"; 2 | 3 | export interface HelperJsDocs { 4 | name: string; 5 | } 6 | 7 | export function getHelperJsDocs(contents: string): HelperJsDocs | undefined { 8 | const helperNameMatches = contents.match(/@pathHelper ([a-zA-Z0-9_]+)/); 9 | if (!helperNameMatches || !helperNameMatches[1]) return; 10 | return { name: `${helperNameMatches[1]}Path` }; 11 | } 12 | 13 | export function generateHelperCode( 14 | { name }: HelperJsDocs, 15 | pathname: string, 16 | argsObject: ArgObject 17 | ) { 18 | const comment = `/** A helper for ${pathname} */`; 19 | const argKeys = Object.keys(argsObject); 20 | if (argKeys.length === 0) { 21 | return `${comment}\nexport const ${name} = ${JSON.stringify(pathname)}`; 22 | } 23 | 24 | const literal = pathname 25 | .replace(/\[\.\.\.([^\]]+)\]/g, (_, paramName) => { 26 | return `\${params.${paramName}.map(encodeURIComponent).join('/')}`; 27 | }) 28 | .replace(/\[([^\]]+)\]/g, (_, paramName) => { 29 | return `\${encodeURIComponent(params.${paramName})}`; 30 | }); 31 | 32 | const objectType = argObjectToTypeString(argsObject); 33 | 34 | const definition = ` 35 | ${comment} 36 | export function ${name}(params: ${objectType}): string { 37 | return \`${literal}\`; 38 | } 39 | `; 40 | 41 | return definition; 42 | } 43 | -------------------------------------------------------------------------------- /packages/next-static-paths/cli/index.ts: -------------------------------------------------------------------------------- 1 | import { generate } from "./command-generate"; 2 | import { binary, run } from "cmd-ts"; 3 | 4 | run(binary(generate), process.argv); 5 | -------------------------------------------------------------------------------- /packages/next-static-paths/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-static-paths", 3 | "version": "0.0.6", 4 | "description": "Static types for routing in Next.js apps", 5 | "main": "dist/cjs/index.js", 6 | "module": "dist/esm/index.js", 7 | "types": "./root.d.ts", 8 | "scripts": { 9 | "bin": "pnpm run --silent ts-node -- cli/index.ts", 10 | "build": "rm -rf dist; pnpm run build:cli && pnpm run build:lib", 11 | "build:cli": "pnpm run --silent -- ts-node ./scripts/build.ts", 12 | "build:lib": "tsc -p ./tsconfig.cjs.json && tsc -p ./tsconfig.esm.json", 13 | "test": "vitest", 14 | "ts-node": "node -r @swc-node/register", 15 | "lint": "prettier src/**/*.ts cli/**/*.ts --check" 16 | }, 17 | "bin": { 18 | "next-static-paths": "./bin/next-static-paths.js" 19 | }, 20 | "repository": { 21 | "url": "https://github.com/Schniz/next-static-paths", 22 | "type": "git", 23 | "directory": "packages/next-static-paths" 24 | }, 25 | "files": [ 26 | "bin", 27 | "dist", 28 | "root.d.ts", 29 | "augment.d.ts" 30 | ], 31 | "keywords": [], 32 | "author": "Gal Schlezinger ", 33 | "license": "MIT", 34 | "devDependencies": { 35 | "@swc-node/register": "^1.4.2", 36 | "@types/react": "^17.0.42", 37 | "chalk": "4", 38 | "cmd-ts": "^0.10.0", 39 | "esbuild": "^0.14.25", 40 | "globby": "11", 41 | "next": "^12.1.0", 42 | "prettier": "^2.6.0", 43 | "react": "^17.0.2", 44 | "react-dom": "^17.0.2", 45 | "typescript": "^4.6.2", 46 | "vitest": "^0.5.9" 47 | }, 48 | "peerDependencies": { 49 | "next": "^12.1.0", 50 | "react": "^17.0.2", 51 | "react-dom": "^17.0.2" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /packages/next-static-paths/root.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | export * from "./dist/esm/index"; 4 | -------------------------------------------------------------------------------- /packages/next-static-paths/scripts/build.ts: -------------------------------------------------------------------------------- 1 | import { build } from "esbuild"; 2 | import path from "path"; 3 | 4 | async function main() { 5 | await build({ 6 | entryPoints: [path.resolve(__dirname, "../cli/index.ts")], 7 | bundle: true, 8 | legalComments: "external", 9 | format: "iife", 10 | target: "esnext", 11 | external: ["prettier"], 12 | platform: "node", 13 | minify: true, 14 | outdir: path.resolve(__dirname, "../dist/cli"), 15 | }); 16 | } 17 | 18 | main().catch((err) => { 19 | console.error(err); 20 | process.exit(1); 21 | }); 22 | -------------------------------------------------------------------------------- /packages/next-static-paths/src/TypedLink.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Paths } from "@@@next-static-paths"; 3 | import Link, { LinkProps } from "next/link"; 4 | import { pathFor } from "./pathFor"; 5 | 6 | export type TypedProps = Paths[K] & { as: K }; 7 | export type TypedLinkProps = Omit & 8 | TypedProps; 9 | 10 | export function TypedLink( 11 | props: React.PropsWithChildren> 12 | ) { 13 | const as = (props as any).as as string; 14 | const restProps = omit(props, "as"); 15 | if (typeof as !== "string") { 16 | throw new Error("`as` prop is required"); 17 | } 18 | const generatedPath = (pathFor as any)(as, restProps); 19 | return ; 20 | } 21 | 22 | function omit( 23 | value: T, 24 | ...keys: Keys[] 25 | ): Omit { 26 | const output = {} as Omit; 27 | for (const [key, v] of Object.entries(value)) { 28 | if (!keys.includes(key as Keys)) { 29 | output[key as keyof Omit] = v; 30 | } 31 | } 32 | return output; 33 | } 34 | -------------------------------------------------------------------------------- /packages/next-static-paths/src/index.ts: -------------------------------------------------------------------------------- 1 | export { pathFor } from "./pathFor"; 2 | export { TypedLink } from "./TypedLink"; 3 | export type { TypedLinkProps, TypedProps } from "./TypedLink"; 4 | -------------------------------------------------------------------------------- /packages/next-static-paths/src/pathFor.ts: -------------------------------------------------------------------------------- 1 | import type { Paths } from "@@@next-static-paths"; 2 | 3 | type PathKeysWithoutArguments = { 4 | [key in keyof Paths]: Record extends Paths[key] ? key : never; 5 | }[keyof Paths]; 6 | 7 | type PathKeysWithArguments = { 8 | [key in keyof Paths]: Record extends Paths[key] ? never : key; 9 | }[keyof Paths]; 10 | 11 | /** 12 | * Constructs an absolute path for a given route 13 | * that was generated using `next-static-paths generate` 14 | */ 15 | export function pathFor( 16 | key: K, 17 | args?: undefined 18 | ): string; 19 | export function pathFor( 20 | key: K, 21 | args: Paths[K] 22 | ): string; 23 | export function pathFor< 24 | K extends PathKeysWithArguments | PathKeysWithoutArguments 25 | >(key: K, args?: Record): string { 26 | return (key as string).replace( 27 | /\[(?:\.\.\.)?([^\]]+)\]/g, 28 | (_, argumentKey) => { 29 | if (typeof args === "undefined" || !(argumentKey in args)) { 30 | throw new Error( 31 | `pathFor: argument ${argumentKey} is missing for route ${key}` 32 | ); 33 | } 34 | 35 | const value = (args as Record)[ 36 | argumentKey as string 37 | ] as string | string[]; 38 | 39 | if (typeof value === "string") { 40 | return encodeURIComponent(value); 41 | } else { 42 | return value.map(encodeURIComponent).join("/"); 43 | } 44 | } 45 | ); 46 | } 47 | -------------------------------------------------------------------------------- /packages/next-static-paths/test/command.test.ts: -------------------------------------------------------------------------------- 1 | import { generate } from "../cli/command-generate"; 2 | import fs from "fs/promises"; 3 | import os from "os"; 4 | import path from "path"; 5 | import { test, expect, spyOn } from "vitest"; 6 | import { mkdirSync } from "fs"; 7 | 8 | test("deletes the runtimes file when file is missing", async () => { 9 | const testDir = await createFileSystem({ 10 | [`pages/dynamic/[id].js`]: `// @pathHelper page`, 11 | }); 12 | 13 | const spies = spyOnStderr(); 14 | await generate.handler({ 15 | outputDir: `${testDir}/generated`, 16 | pageExtensions: ["jsx", "js"], 17 | pagesDirectory: `${testDir}/pages`, 18 | runtimeFilename: "runtime.ts", 19 | staticFilename: "static.d.ts", 20 | }); 21 | 22 | expect(await getFileSystem(`${testDir}/generated`)).toMatchObject({ 23 | "runtime.ts": expect.stringContaining("export function pagePath"), 24 | }); 25 | 26 | await fs.writeFile( 27 | path.join(testDir, "pages/dynamic/[id].js"), 28 | `// @hideFromPath` 29 | ); 30 | 31 | spies.clear(); 32 | await generate.handler({ 33 | outputDir: `${testDir}/generated`, 34 | pageExtensions: ["jsx", "js"], 35 | pagesDirectory: `${testDir}/pages`, 36 | runtimeFilename: "runtime.ts", 37 | staticFilename: "static.d.ts", 38 | }); 39 | expect(spies.consoleError).toHaveBeenCalledWith( 40 | expect.stringContaining(`no helpers found`) 41 | ); 42 | 43 | expect(await getFileSystem(`${testDir}/generated`)).toEqual({ 44 | "static.d.ts": expect.stringContaining("@generated"), 45 | }); 46 | }); 47 | 48 | test("generates the files", async () => { 49 | const testDir = await createFileSystem({ 50 | [`pages/index.js`]: `// @pathHelper home`, 51 | [`pages/dynamic/[value1]/[value2]/[value3].js`]: `// @pathHelper threeValues`, 52 | }); 53 | 54 | const spies = spyOnStderr(); 55 | await generate.handler({ 56 | outputDir: `${testDir}/generated`, 57 | pageExtensions: ["jsx", "js"], 58 | pagesDirectory: `${testDir}/pages`, 59 | runtimeFilename: "runtime.ts", 60 | staticFilename: "static.d.ts", 61 | }); 62 | expect(spies.consoleError).toHaveBeenCalledWith( 63 | expect.stringContaining("Found /") 64 | ); 65 | expect(spies.consoleError).toHaveBeenCalledWith( 66 | expect.stringContaining("Found /dynamic/[value1]/[value2]/[value3]") 67 | ); 68 | 69 | const fileSystem = await getFileSystem(`${testDir}/generated`); 70 | 71 | expect(fileSystem).toEqual({ 72 | "runtime.ts": expect.stringContaining(`export const homePath =`), 73 | "static.d.ts": expect.stringContaining(`"/": Record`), 74 | }); 75 | 76 | expect(fileSystem).toEqual({ 77 | "runtime.ts": expect.stringContaining(`export function threeValuesPath`), 78 | "static.d.ts": expect.stringContaining( 79 | `"/dynamic/[value1]/[value2]/[value3]":` 80 | ), 81 | }); 82 | }); 83 | 84 | async function createFileSystem( 85 | files: Record, 86 | testDir: string = randomTempDir() 87 | ): Promise { 88 | for (const [key, value] of Object.entries(files)) { 89 | await fs.mkdir(path.join(testDir, path.dirname(key)), { recursive: true }); 90 | await fs.writeFile(path.join(testDir, key), value); 91 | } 92 | 93 | return testDir; 94 | } 95 | 96 | async function getFileSystem( 97 | rootPath: string 98 | ): Promise> { 99 | const files = await fs.readdir(rootPath); 100 | const fileSystem: Record = {}; 101 | 102 | for (const file of files) { 103 | const filePath = rootPath + "/" + file; 104 | const stat = await fs.stat(filePath); 105 | 106 | if (stat.isDirectory()) { 107 | const subFiles = await getFileSystem(filePath); 108 | Object.assign(fileSystem, subFiles); 109 | } else { 110 | const content = await fs.readFile(filePath, "utf8"); 111 | const relativePath = path.relative(rootPath, filePath); 112 | fileSystem[relativePath] = content; 113 | } 114 | } 115 | 116 | return fileSystem; 117 | } 118 | 119 | function randomTempDir() { 120 | const tmpdir = os.tmpdir(); 121 | const random = `test-${Math.random() * 100000}`; 122 | const testDir = path.join(tmpdir, random); 123 | mkdirSync(testDir); 124 | return testDir; 125 | } 126 | 127 | function spyOnStderr() { 128 | const consoleError = spyOn(console, "error").mockImplementation(() => {}); 129 | const write = spyOn(process.stderr, "write").mockImplementation( 130 | (a: any, b: any, c: any) => { 131 | if (typeof b === "function") { 132 | b(); 133 | } else if (typeof c === "function") { 134 | c(); 135 | } 136 | return true; 137 | } 138 | ); 139 | return { 140 | consoleError, 141 | write, 142 | clear() { 143 | consoleError.mockClear(); 144 | write.mockClear(); 145 | }, 146 | }; 147 | } 148 | -------------------------------------------------------------------------------- /packages/next-static-paths/test/filePathToPathname.test.ts: -------------------------------------------------------------------------------- 1 | import { filePathToPathname } from "../cli/filePathToPathname"; 2 | import { test, expect } from "vitest"; 3 | 4 | test.each([ 5 | ["normal API route", "api/hello.js", "/api/hello"], 6 | ["nested index file", "conf/speakers/index.js", "/conf/speakers"], 7 | ["root index file", "index.js", "/"], 8 | ["middleware", "something/_middleware.js", "/something"], 9 | ["dot in the filepath", "something/file.json.js", "/something/file.json"], 10 | ])(`%s`, (_, filePath, expected) => { 11 | expect(filePathToPathname(["js"], filePath)).toEqual(expected); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/next-static-paths/test/helperJsDocs.test.ts: -------------------------------------------------------------------------------- 1 | import { it, expect, describe } from "vitest"; 2 | import { getHelperJsDocs } from "../cli/helperJsDocs"; 3 | 4 | describe("helperJsDocs", () => { 5 | it("returns undefined when no helper is generated", () => { 6 | const helper = getHelperJsDocs(""); 7 | expect(helper).toBeUndefined(); 8 | }); 9 | 10 | it("returns a helper", () => { 11 | const helper = getHelperJsDocs(` 12 | // @pathHelper pathName 13 | `); 14 | 15 | expect(helper).toEqual({ 16 | name: "pathNamePath", 17 | }); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/next-static-paths/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig.json", 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "noEmit": false, 6 | "module": "commonjs", 7 | "outDir": "./dist/cjs", 8 | "jsx": "react" 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.tsx", "root.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /packages/next-static-paths/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig.json", 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "noEmit": false, 6 | "declaration": true, 7 | "module": "esnext", 8 | "outDir": "./dist/esm", 9 | "jsx": "react" 10 | }, 11 | "include": ["src/**/*.ts", "src/**/*.tsx", "root.d.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /packages/next-static-paths/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2019", 4 | "lib": ["esnext"], 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "strictNullChecks": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "incremental": true, 11 | "esModuleInterop": true, 12 | "module": "esnext", 13 | "moduleResolution": "node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "jsx": "preserve", 17 | "allowJs": true 18 | }, 19 | "include": [ 20 | "root.d.ts", 21 | "src/**/*.ts", 22 | "scripts/**/*.ts", 23 | "test/**/*.ts", 24 | "cli/**/*.ts" 25 | ], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | importers: 4 | 5 | .: 6 | specifiers: 7 | '@changesets/cli': ^2.22.0 8 | turbo: ^1.2.9 9 | devDependencies: 10 | '@changesets/cli': 2.22.0 11 | turbo: 1.2.9 12 | 13 | packages/example-app: 14 | specifiers: 15 | '@types/react': ^17.0.42 16 | '@types/react-dom': ^18.0.4 17 | next: ^12.1.0 18 | next-static-paths: workspace:^0.0.6 19 | prettier: ^2.6.0 20 | react: ^17.0.2 21 | react-dom: ^17.0.2 22 | typescript: ^4.6.2 23 | vitest: ^0.5.9 24 | dependencies: 25 | react: 17.0.2 26 | react-dom: 17.0.2_react@17.0.2 27 | devDependencies: 28 | '@types/react': 17.0.42 29 | '@types/react-dom': 18.0.4 30 | next: 12.1.0_react-dom@17.0.2+react@17.0.2 31 | next-static-paths: link:../next-static-paths 32 | prettier: 2.6.0 33 | typescript: 4.6.2 34 | vitest: 0.5.9 35 | 36 | packages/next-static-paths: 37 | specifiers: 38 | '@swc-node/register': ^1.4.2 39 | '@types/react': ^17.0.42 40 | chalk: '4' 41 | cmd-ts: ^0.10.0 42 | esbuild: ^0.14.25 43 | globby: '11' 44 | next: ^12.1.0 45 | prettier: ^2.6.0 46 | react: ^17.0.2 47 | react-dom: ^17.0.2 48 | typescript: ^4.6.2 49 | vitest: ^0.5.9 50 | devDependencies: 51 | '@swc-node/register': 1.4.2 52 | '@types/react': 17.0.42 53 | chalk: 4.1.2 54 | cmd-ts: 0.10.0 55 | esbuild: 0.14.27 56 | globby: 11.1.0 57 | next: 12.1.0_react-dom@17.0.2+react@17.0.2 58 | prettier: 2.6.0 59 | react: 17.0.2 60 | react-dom: 17.0.2_react@17.0.2 61 | typescript: 4.6.2 62 | vitest: 0.5.9 63 | 64 | packages: 65 | 66 | /@babel/code-frame/7.16.7: 67 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 68 | engines: {node: '>=6.9.0'} 69 | dependencies: 70 | '@babel/highlight': 7.17.9 71 | dev: true 72 | 73 | /@babel/helper-validator-identifier/7.16.7: 74 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 75 | engines: {node: '>=6.9.0'} 76 | dev: true 77 | 78 | /@babel/highlight/7.17.9: 79 | resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} 80 | engines: {node: '>=6.9.0'} 81 | dependencies: 82 | '@babel/helper-validator-identifier': 7.16.7 83 | chalk: 2.4.2 84 | js-tokens: 4.0.0 85 | dev: true 86 | 87 | /@babel/runtime/7.17.9: 88 | resolution: {integrity: sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==} 89 | engines: {node: '>=6.9.0'} 90 | dependencies: 91 | regenerator-runtime: 0.13.9 92 | dev: true 93 | 94 | /@changesets/apply-release-plan/6.0.0: 95 | resolution: {integrity: sha512-gp6nIdVdfYdwKww2+f8whckKmvfE4JEm4jJgBhTmooi0uzHWhnxvk6JIzQi89qEAMINN0SeVNnXiAtbFY0Mj3w==} 96 | dependencies: 97 | '@babel/runtime': 7.17.9 98 | '@changesets/config': 2.0.0 99 | '@changesets/get-version-range-type': 0.3.2 100 | '@changesets/git': 1.3.2 101 | '@changesets/types': 5.0.0 102 | '@manypkg/get-packages': 1.1.3 103 | detect-indent: 6.1.0 104 | fs-extra: 7.0.1 105 | lodash.startcase: 4.4.0 106 | outdent: 0.5.0 107 | prettier: 1.19.1 108 | resolve-from: 5.0.0 109 | semver: 5.7.1 110 | dev: true 111 | 112 | /@changesets/assemble-release-plan/5.1.2: 113 | resolution: {integrity: sha512-nOFyDw4APSkY/vh5WNwGEtThPgEjVShp03PKVdId6wZTJALVcAALCSLmDRfeqjE2z9EsGJb7hZdDlziKlnqZgw==} 114 | dependencies: 115 | '@babel/runtime': 7.17.9 116 | '@changesets/errors': 0.1.4 117 | '@changesets/get-dependents-graph': 1.3.2 118 | '@changesets/types': 5.0.0 119 | '@manypkg/get-packages': 1.1.3 120 | semver: 5.7.1 121 | dev: true 122 | 123 | /@changesets/changelog-git/0.1.11: 124 | resolution: {integrity: sha512-sWJvAm+raRPeES9usNpZRkooeEB93lOpUN0Lmjz5vhVAb7XGIZrHEJ93155bpE1S0c4oJ5Di9ZWgzIwqhWP/Wg==} 125 | dependencies: 126 | '@changesets/types': 5.0.0 127 | dev: true 128 | 129 | /@changesets/cli/2.22.0: 130 | resolution: {integrity: sha512-4bA3YoBkd5cm5WUxmrR2N9WYE7EeQcM+R3bVYMUj2NvffkQVpU3ckAI+z8UICoojq+HRl2OEwtz+S5UBmYY4zw==} 131 | hasBin: true 132 | dependencies: 133 | '@babel/runtime': 7.17.9 134 | '@changesets/apply-release-plan': 6.0.0 135 | '@changesets/assemble-release-plan': 5.1.2 136 | '@changesets/changelog-git': 0.1.11 137 | '@changesets/config': 2.0.0 138 | '@changesets/errors': 0.1.4 139 | '@changesets/get-dependents-graph': 1.3.2 140 | '@changesets/get-release-plan': 3.0.8 141 | '@changesets/git': 1.3.2 142 | '@changesets/logger': 0.0.5 143 | '@changesets/pre': 1.0.11 144 | '@changesets/read': 0.5.5 145 | '@changesets/types': 5.0.0 146 | '@changesets/write': 0.1.8 147 | '@manypkg/get-packages': 1.1.3 148 | '@types/is-ci': 3.0.0 149 | '@types/semver': 6.2.3 150 | chalk: 2.4.2 151 | enquirer: 2.3.6 152 | external-editor: 3.1.0 153 | fs-extra: 7.0.1 154 | human-id: 1.0.2 155 | is-ci: 3.0.1 156 | meow: 6.1.1 157 | outdent: 0.5.0 158 | p-limit: 2.3.0 159 | preferred-pm: 3.0.3 160 | resolve-from: 5.0.0 161 | semver: 5.7.1 162 | spawndamnit: 2.0.0 163 | term-size: 2.2.1 164 | tty-table: 2.8.13 165 | dev: true 166 | 167 | /@changesets/config/2.0.0: 168 | resolution: {integrity: sha512-r5bIFY6CN3K6SQ+HZbjyE3HXrBIopONR47mmX7zUbORlybQXtympq9rVAOzc0Oflbap8QeIexc+hikfZoREXDg==} 169 | dependencies: 170 | '@changesets/errors': 0.1.4 171 | '@changesets/get-dependents-graph': 1.3.2 172 | '@changesets/logger': 0.0.5 173 | '@changesets/types': 5.0.0 174 | '@manypkg/get-packages': 1.1.3 175 | fs-extra: 7.0.1 176 | micromatch: 4.0.4 177 | dev: true 178 | 179 | /@changesets/errors/0.1.4: 180 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} 181 | dependencies: 182 | extendable-error: 0.1.7 183 | dev: true 184 | 185 | /@changesets/get-dependents-graph/1.3.2: 186 | resolution: {integrity: sha512-tsqA6qZRB86SQuApSoDvI8yEWdyIlo/WLI4NUEdhhxLMJ0dapdeT6rUZRgSZzK1X2nv5YwR0MxQBbDAiDibKrg==} 187 | dependencies: 188 | '@changesets/types': 5.0.0 189 | '@manypkg/get-packages': 1.1.3 190 | chalk: 2.4.2 191 | fs-extra: 7.0.1 192 | semver: 5.7.1 193 | dev: true 194 | 195 | /@changesets/get-release-plan/3.0.8: 196 | resolution: {integrity: sha512-TJYiWNuP0Lzu2dL/KHuk75w7TkiE5HqoYirrXF7SJIxkhlgH9toQf2C7IapiFTObtuF1qDN8HJAX1CuIOwXldg==} 197 | dependencies: 198 | '@babel/runtime': 7.17.9 199 | '@changesets/assemble-release-plan': 5.1.2 200 | '@changesets/config': 2.0.0 201 | '@changesets/pre': 1.0.11 202 | '@changesets/read': 0.5.5 203 | '@changesets/types': 5.0.0 204 | '@manypkg/get-packages': 1.1.3 205 | dev: true 206 | 207 | /@changesets/get-version-range-type/0.3.2: 208 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} 209 | dev: true 210 | 211 | /@changesets/git/1.3.2: 212 | resolution: {integrity: sha512-p5UL+urAg0Nnpt70DLiBe2iSsMcDubTo9fTOD/61krmcJ466MGh71OHwdAwu1xG5+NKzeysdy1joRTg8CXcEXA==} 213 | dependencies: 214 | '@babel/runtime': 7.17.9 215 | '@changesets/errors': 0.1.4 216 | '@changesets/types': 5.0.0 217 | '@manypkg/get-packages': 1.1.3 218 | is-subdir: 1.2.0 219 | spawndamnit: 2.0.0 220 | dev: true 221 | 222 | /@changesets/logger/0.0.5: 223 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} 224 | dependencies: 225 | chalk: 2.4.2 226 | dev: true 227 | 228 | /@changesets/parse/0.3.13: 229 | resolution: {integrity: sha512-wh9Ifa0dungY6d2nMz6XxF6FZ/1I7j+mEgPAqrIyKS64nifTh1Ua82qKKMMK05CL7i4wiB2NYc3SfnnCX3RVeA==} 230 | dependencies: 231 | '@changesets/types': 5.0.0 232 | js-yaml: 3.14.1 233 | dev: true 234 | 235 | /@changesets/pre/1.0.11: 236 | resolution: {integrity: sha512-CXZnt4SV9waaC9cPLm7818+SxvLKIDHUxaiTXnJYDp1c56xIexx1BNfC1yMuOdzO2a3rAIcZua5Odxr3dwSKfg==} 237 | dependencies: 238 | '@babel/runtime': 7.17.9 239 | '@changesets/errors': 0.1.4 240 | '@changesets/types': 5.0.0 241 | '@manypkg/get-packages': 1.1.3 242 | fs-extra: 7.0.1 243 | dev: true 244 | 245 | /@changesets/read/0.5.5: 246 | resolution: {integrity: sha512-bzonrPWc29Tsjvgh+8CqJ0apQOwWim0zheeD4ZK44ApSa/GudnZJTODtA3yNOOuQzeZmL0NUebVoHIurtIkA7w==} 247 | dependencies: 248 | '@babel/runtime': 7.17.9 249 | '@changesets/git': 1.3.2 250 | '@changesets/logger': 0.0.5 251 | '@changesets/parse': 0.3.13 252 | '@changesets/types': 5.0.0 253 | chalk: 2.4.2 254 | fs-extra: 7.0.1 255 | p-filter: 2.1.0 256 | dev: true 257 | 258 | /@changesets/types/4.1.0: 259 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 260 | dev: true 261 | 262 | /@changesets/types/5.0.0: 263 | resolution: {integrity: sha512-IT1kBLSbAgTS4WtpU6P5ko054hq12vk4tgeIFRVE7Vnm4a/wgbNvBalgiKP0MjEXbCkZbItiGQHkCGxYWR55sA==} 264 | dev: true 265 | 266 | /@changesets/write/0.1.8: 267 | resolution: {integrity: sha512-oIHeFVMuP6jf0TPnKPpaFpvvAf3JBc+s2pmVChbeEgQTBTALoF51Z9kqxQfG4XONZPHZnqkmy564c7qohhhhTQ==} 268 | dependencies: 269 | '@babel/runtime': 7.17.9 270 | '@changesets/types': 5.0.0 271 | fs-extra: 7.0.1 272 | human-id: 1.0.2 273 | prettier: 1.19.1 274 | dev: true 275 | 276 | /@manypkg/find-root/1.1.0: 277 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 278 | dependencies: 279 | '@babel/runtime': 7.17.9 280 | '@types/node': 12.20.49 281 | find-up: 4.1.0 282 | fs-extra: 8.1.0 283 | dev: true 284 | 285 | /@manypkg/get-packages/1.1.3: 286 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 287 | dependencies: 288 | '@babel/runtime': 7.17.9 289 | '@changesets/types': 4.1.0 290 | '@manypkg/find-root': 1.1.0 291 | fs-extra: 8.1.0 292 | globby: 11.1.0 293 | read-yaml-file: 1.1.0 294 | dev: true 295 | 296 | /@next/env/12.1.0: 297 | resolution: {integrity: sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==} 298 | dev: true 299 | 300 | /@next/swc-android-arm64/12.1.0: 301 | resolution: {integrity: sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==} 302 | engines: {node: '>= 10'} 303 | cpu: [arm64] 304 | os: [android] 305 | requiresBuild: true 306 | dev: true 307 | optional: true 308 | 309 | /@next/swc-darwin-arm64/12.1.0: 310 | resolution: {integrity: sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==} 311 | engines: {node: '>= 10'} 312 | cpu: [arm64] 313 | os: [darwin] 314 | requiresBuild: true 315 | dev: true 316 | optional: true 317 | 318 | /@next/swc-darwin-x64/12.1.0: 319 | resolution: {integrity: sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==} 320 | engines: {node: '>= 10'} 321 | cpu: [x64] 322 | os: [darwin] 323 | requiresBuild: true 324 | dev: true 325 | optional: true 326 | 327 | /@next/swc-linux-arm-gnueabihf/12.1.0: 328 | resolution: {integrity: sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==} 329 | engines: {node: '>= 10'} 330 | cpu: [arm] 331 | os: [linux] 332 | requiresBuild: true 333 | dev: true 334 | optional: true 335 | 336 | /@next/swc-linux-arm64-gnu/12.1.0: 337 | resolution: {integrity: sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==} 338 | engines: {node: '>= 10'} 339 | cpu: [arm64] 340 | os: [linux] 341 | requiresBuild: true 342 | dev: true 343 | optional: true 344 | 345 | /@next/swc-linux-arm64-musl/12.1.0: 346 | resolution: {integrity: sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==} 347 | engines: {node: '>= 10'} 348 | cpu: [arm64] 349 | os: [linux] 350 | requiresBuild: true 351 | dev: true 352 | optional: true 353 | 354 | /@next/swc-linux-x64-gnu/12.1.0: 355 | resolution: {integrity: sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==} 356 | engines: {node: '>= 10'} 357 | cpu: [x64] 358 | os: [linux] 359 | requiresBuild: true 360 | dev: true 361 | optional: true 362 | 363 | /@next/swc-linux-x64-musl/12.1.0: 364 | resolution: {integrity: sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==} 365 | engines: {node: '>= 10'} 366 | cpu: [x64] 367 | os: [linux] 368 | requiresBuild: true 369 | dev: true 370 | optional: true 371 | 372 | /@next/swc-win32-arm64-msvc/12.1.0: 373 | resolution: {integrity: sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==} 374 | engines: {node: '>= 10'} 375 | cpu: [arm64] 376 | os: [win32] 377 | requiresBuild: true 378 | dev: true 379 | optional: true 380 | 381 | /@next/swc-win32-ia32-msvc/12.1.0: 382 | resolution: {integrity: sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==} 383 | engines: {node: '>= 10'} 384 | cpu: [ia32] 385 | os: [win32] 386 | requiresBuild: true 387 | dev: true 388 | optional: true 389 | 390 | /@next/swc-win32-x64-msvc/12.1.0: 391 | resolution: {integrity: sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==} 392 | engines: {node: '>= 10'} 393 | cpu: [x64] 394 | os: [win32] 395 | requiresBuild: true 396 | dev: true 397 | optional: true 398 | 399 | /@nodelib/fs.scandir/2.1.5: 400 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 401 | engines: {node: '>= 8'} 402 | dependencies: 403 | '@nodelib/fs.stat': 2.0.5 404 | run-parallel: 1.2.0 405 | dev: true 406 | 407 | /@nodelib/fs.stat/2.0.5: 408 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 409 | engines: {node: '>= 8'} 410 | dev: true 411 | 412 | /@nodelib/fs.walk/1.2.8: 413 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 414 | engines: {node: '>= 8'} 415 | dependencies: 416 | '@nodelib/fs.scandir': 2.1.5 417 | fastq: 1.13.0 418 | dev: true 419 | 420 | /@swc-node/core/1.8.2: 421 | resolution: {integrity: sha512-IoJ7tGHQ6JOMSmFe4VhP64uLmFKMNasS0QEgUrLFQ0h/dTvpQMynnoGBEJoPL6LfsebZ/q4uKqbpWrth6/yrAA==} 422 | engines: {node: '>= 10'} 423 | dependencies: 424 | '@swc/core': 1.2.160 425 | dev: true 426 | 427 | /@swc-node/register/1.4.2: 428 | resolution: {integrity: sha512-wLZz0J7BTO//1Eq7e4eBQjKF380Hr2eVemz849msQSKcVM1D7UJUt/dP2TinEVGx++/BXJ/0q37i6n9Iw0EM0w==} 429 | dependencies: 430 | '@swc-node/core': 1.8.2 431 | '@swc-node/sourcemap-support': 0.1.11 432 | chalk: 4.1.2 433 | debug: 4.3.4 434 | pirates: 4.0.5 435 | tslib: 2.3.1 436 | typescript: 4.6.2 437 | transitivePeerDependencies: 438 | - supports-color 439 | dev: true 440 | 441 | /@swc-node/sourcemap-support/0.1.11: 442 | resolution: {integrity: sha512-b+Mn3oQl+7nUSt7hPzIbY9B30YhcFo1PT4kd9P4QmD6raycmIealOAhAdZID/JevphzsOXHQB4OqJm7Yi5tMcA==} 443 | dependencies: 444 | source-map-support: 0.5.21 445 | dev: true 446 | 447 | /@swc/core-android-arm-eabi/1.2.160: 448 | resolution: {integrity: sha512-VzFP7tYgvpkUhd8wgyNtERqvoPBBDretyMFxAxPe2SxClaBs9Ka95PdiPPZalRq+vFCb/dFxD8Vhz+XO16Kpjg==} 449 | engines: {node: '>=10'} 450 | cpu: [arm] 451 | os: [android] 452 | requiresBuild: true 453 | dev: true 454 | optional: true 455 | 456 | /@swc/core-android-arm64/1.2.160: 457 | resolution: {integrity: sha512-m+xqQaa7TqW3Vm9MUvITtdU8OlAc/9yT+TgOS4l8WlfFI87IDnLLfinKKEp+xfKwzYDdIsh+sC+jdGdIBTMB+Q==} 458 | engines: {node: '>=10'} 459 | cpu: [arm64] 460 | os: [android] 461 | requiresBuild: true 462 | dev: true 463 | optional: true 464 | 465 | /@swc/core-darwin-arm64/1.2.160: 466 | resolution: {integrity: sha512-9bG70KYKvjNf7tZtjOu1h4kDZPtoidZptIXPGSHuUgJ1BbSJYpfRR5xAmq4k37+GqOjIPJp4+lSGQPa2HfejpA==} 467 | engines: {node: '>=10'} 468 | cpu: [arm64] 469 | os: [darwin] 470 | requiresBuild: true 471 | dev: true 472 | optional: true 473 | 474 | /@swc/core-darwin-x64/1.2.160: 475 | resolution: {integrity: sha512-+b4HdKAVf/XPZ9DjgG2axGLbquPEuYwEP3zeWgbWn0s0FYQ7WTFxznf3YrTJE9MYadJeCOs3U80E2xVAtRRS9Q==} 476 | engines: {node: '>=10'} 477 | cpu: [x64] 478 | os: [darwin] 479 | requiresBuild: true 480 | dev: true 481 | optional: true 482 | 483 | /@swc/core-freebsd-x64/1.2.160: 484 | resolution: {integrity: sha512-E5agJwv+RVMoZ8FQIPSO5wLPDQx6jqcMpV207EB3pPaxPWGe4n3DH3vcibHp80RACDNdiaqo5lBeBnGJI4ithw==} 485 | engines: {node: '>=10'} 486 | cpu: [x64] 487 | os: [freebsd] 488 | requiresBuild: true 489 | dev: true 490 | optional: true 491 | 492 | /@swc/core-linux-arm-gnueabihf/1.2.160: 493 | resolution: {integrity: sha512-uCttZRNx+lWVhCYGC6/pGUej08g1SQc5am6R9NVFh111goytcdlPnC4jV8oWzq2QhDWkkKxLoP2CZOytzI4+0w==} 494 | engines: {node: '>=10'} 495 | cpu: [arm] 496 | os: [linux] 497 | requiresBuild: true 498 | dev: true 499 | optional: true 500 | 501 | /@swc/core-linux-arm64-gnu/1.2.160: 502 | resolution: {integrity: sha512-sB18roiv8m/zsY6tXLSrbUls0eKkSkxOEF0ennXVEtz97rMJ+WWnkOc8gI+rUpj3MHbVAIxyDNyyZU4cH5g1jQ==} 503 | engines: {node: '>=10'} 504 | cpu: [arm64] 505 | os: [linux] 506 | requiresBuild: true 507 | dev: true 508 | optional: true 509 | 510 | /@swc/core-linux-arm64-musl/1.2.160: 511 | resolution: {integrity: sha512-PJ7Ukb+BRR3pGYcUag8qRWOB11eByc5YLx/xAMSc3bRmaYW/oj6s8k+1DYiR//BAuNQdf14MpMFzDuWiDEUh7A==} 512 | engines: {node: '>=10'} 513 | cpu: [arm64] 514 | os: [linux] 515 | requiresBuild: true 516 | dev: true 517 | optional: true 518 | 519 | /@swc/core-linux-x64-gnu/1.2.160: 520 | resolution: {integrity: sha512-wVh8Q86xz3t0y5zoUryWQ64bFG/YxdcykBgaog8lU9xkFb1KSqVRE9ia7aKA12/ZtAfpJZLRBleZxBAcaCg9FQ==} 521 | engines: {node: '>=10'} 522 | cpu: [x64] 523 | os: [linux] 524 | requiresBuild: true 525 | dev: true 526 | optional: true 527 | 528 | /@swc/core-linux-x64-musl/1.2.160: 529 | resolution: {integrity: sha512-AnWdarl9WWuDdbc2AX1w76W1jaekSCokxRrWdSGUgQytaZRtybKZEgThvJCQDrSlYQD4XDOhhVRCurTvy4JsfQ==} 530 | engines: {node: '>=10'} 531 | cpu: [x64] 532 | os: [linux] 533 | requiresBuild: true 534 | dev: true 535 | optional: true 536 | 537 | /@swc/core-win32-arm64-msvc/1.2.160: 538 | resolution: {integrity: sha512-ScL27mZRTwEIqBIv9RY34nQvyBvhosiM5Lus4dCFmS71flPcAEv7hJgy4GE3YUQV0ryGNK9NaO43H8sAyNwKVQ==} 539 | engines: {node: '>=10'} 540 | cpu: [arm64] 541 | os: [win32] 542 | requiresBuild: true 543 | dev: true 544 | optional: true 545 | 546 | /@swc/core-win32-ia32-msvc/1.2.160: 547 | resolution: {integrity: sha512-e75zbWlhlyrd5HdrYzELa6OlZxgyaVpJj+c9xMD95HcdklVbmsyt1vuqRxMyqaZUDLyehwwCDRX/ZeDme//M/A==} 548 | engines: {node: '>=10'} 549 | cpu: [ia32] 550 | os: [win32] 551 | requiresBuild: true 552 | dev: true 553 | optional: true 554 | 555 | /@swc/core-win32-x64-msvc/1.2.160: 556 | resolution: {integrity: sha512-GAYT+WzYQY4sr17S21yJh4flJp/sQ62mAs6RfN89p7jIWgm0Bl/SooRl6ocsftTlnZm7K7QC8zmQVeNCWDCLPw==} 557 | engines: {node: '>=10'} 558 | cpu: [x64] 559 | os: [win32] 560 | requiresBuild: true 561 | dev: true 562 | optional: true 563 | 564 | /@swc/core/1.2.160: 565 | resolution: {integrity: sha512-nXoC7HA+aY7AtBPsiqGXocoRLAzzA7MV+InWQtILN7Uru4hB9+rLnLCPc3zSdg7pgnxJLa1tHup1Rz7Vv6TcIQ==} 566 | engines: {node: '>=10'} 567 | hasBin: true 568 | optionalDependencies: 569 | '@swc/core-android-arm-eabi': 1.2.160 570 | '@swc/core-android-arm64': 1.2.160 571 | '@swc/core-darwin-arm64': 1.2.160 572 | '@swc/core-darwin-x64': 1.2.160 573 | '@swc/core-freebsd-x64': 1.2.160 574 | '@swc/core-linux-arm-gnueabihf': 1.2.160 575 | '@swc/core-linux-arm64-gnu': 1.2.160 576 | '@swc/core-linux-arm64-musl': 1.2.160 577 | '@swc/core-linux-x64-gnu': 1.2.160 578 | '@swc/core-linux-x64-musl': 1.2.160 579 | '@swc/core-win32-arm64-msvc': 1.2.160 580 | '@swc/core-win32-ia32-msvc': 1.2.160 581 | '@swc/core-win32-x64-msvc': 1.2.160 582 | dev: true 583 | 584 | /@types/chai-subset/1.3.3: 585 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 586 | dependencies: 587 | '@types/chai': 4.3.0 588 | dev: true 589 | 590 | /@types/chai/4.3.0: 591 | resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==} 592 | dev: true 593 | 594 | /@types/is-ci/3.0.0: 595 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} 596 | dependencies: 597 | ci-info: 3.3.0 598 | dev: true 599 | 600 | /@types/minimist/1.2.2: 601 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 602 | dev: true 603 | 604 | /@types/node/12.20.49: 605 | resolution: {integrity: sha512-5e6QNb9bkeh4Hni4ktLqUZuUqnGTX/kou2aZkXyxtuYaHXgBm+In1SHR9V+7kDzWzjB08KC2uqt2doDi7cuAAA==} 606 | dev: true 607 | 608 | /@types/normalize-package-data/2.4.1: 609 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 610 | dev: true 611 | 612 | /@types/prop-types/15.7.4: 613 | resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==} 614 | dev: true 615 | 616 | /@types/react-dom/18.0.4: 617 | resolution: {integrity: sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==} 618 | dependencies: 619 | '@types/react': 17.0.42 620 | dev: true 621 | 622 | /@types/react/17.0.42: 623 | resolution: {integrity: sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q==} 624 | dependencies: 625 | '@types/prop-types': 15.7.4 626 | '@types/scheduler': 0.16.2 627 | csstype: 3.0.11 628 | dev: true 629 | 630 | /@types/scheduler/0.16.2: 631 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 632 | dev: true 633 | 634 | /@types/semver/6.2.3: 635 | resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} 636 | dev: true 637 | 638 | /ansi-colors/4.1.1: 639 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 640 | engines: {node: '>=6'} 641 | dev: true 642 | 643 | /ansi-regex/5.0.1: 644 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 645 | engines: {node: '>=8'} 646 | dev: true 647 | 648 | /ansi-styles/3.2.1: 649 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 650 | engines: {node: '>=4'} 651 | dependencies: 652 | color-convert: 1.9.3 653 | dev: true 654 | 655 | /ansi-styles/4.3.0: 656 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 657 | engines: {node: '>=8'} 658 | dependencies: 659 | color-convert: 2.0.1 660 | dev: true 661 | 662 | /argparse/1.0.10: 663 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 664 | dependencies: 665 | sprintf-js: 1.0.3 666 | dev: true 667 | 668 | /array-union/2.1.0: 669 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 670 | engines: {node: '>=8'} 671 | dev: true 672 | 673 | /arrify/1.0.1: 674 | resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} 675 | engines: {node: '>=0.10.0'} 676 | dev: true 677 | 678 | /assertion-error/1.1.0: 679 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 680 | dev: true 681 | 682 | /better-path-resolve/1.0.0: 683 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 684 | engines: {node: '>=4'} 685 | dependencies: 686 | is-windows: 1.0.2 687 | dev: true 688 | 689 | /braces/3.0.2: 690 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 691 | engines: {node: '>=8'} 692 | dependencies: 693 | fill-range: 7.0.1 694 | dev: true 695 | 696 | /breakword/1.0.5: 697 | resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} 698 | dependencies: 699 | wcwidth: 1.0.1 700 | dev: true 701 | 702 | /buffer-from/1.1.2: 703 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 704 | dev: true 705 | 706 | /camelcase-keys/6.2.2: 707 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 708 | engines: {node: '>=8'} 709 | dependencies: 710 | camelcase: 5.3.1 711 | map-obj: 4.3.0 712 | quick-lru: 4.0.1 713 | dev: true 714 | 715 | /camelcase/5.3.1: 716 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 717 | engines: {node: '>=6'} 718 | dev: true 719 | 720 | /caniuse-lite/1.0.30001319: 721 | resolution: {integrity: sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==} 722 | dev: true 723 | 724 | /chai/4.3.6: 725 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 726 | engines: {node: '>=4'} 727 | dependencies: 728 | assertion-error: 1.1.0 729 | check-error: 1.0.2 730 | deep-eql: 3.0.1 731 | get-func-name: 2.0.0 732 | loupe: 2.3.4 733 | pathval: 1.1.1 734 | type-detect: 4.0.8 735 | dev: true 736 | 737 | /chalk/2.4.2: 738 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 739 | engines: {node: '>=4'} 740 | dependencies: 741 | ansi-styles: 3.2.1 742 | escape-string-regexp: 1.0.5 743 | supports-color: 5.5.0 744 | dev: true 745 | 746 | /chalk/3.0.0: 747 | resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} 748 | engines: {node: '>=8'} 749 | dependencies: 750 | ansi-styles: 4.3.0 751 | supports-color: 7.2.0 752 | dev: true 753 | 754 | /chalk/4.1.2: 755 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 756 | engines: {node: '>=10'} 757 | dependencies: 758 | ansi-styles: 4.3.0 759 | supports-color: 7.2.0 760 | dev: true 761 | 762 | /chardet/0.7.0: 763 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 764 | dev: true 765 | 766 | /check-error/1.0.2: 767 | resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} 768 | dev: true 769 | 770 | /ci-info/3.3.0: 771 | resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} 772 | dev: true 773 | 774 | /cliui/6.0.0: 775 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 776 | dependencies: 777 | string-width: 4.2.3 778 | strip-ansi: 6.0.1 779 | wrap-ansi: 6.2.0 780 | dev: true 781 | 782 | /clone/1.0.4: 783 | resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} 784 | engines: {node: '>=0.8'} 785 | dev: true 786 | 787 | /cmd-ts/0.10.0: 788 | resolution: {integrity: sha512-DsVhXSE8yljY96pu+UOlFr67CNrZVCowLh6X1e7sIoLZkR2esoI5Agbokxi8HXu79ow4HBCCI2EcE3t7hrra8Q==} 789 | dependencies: 790 | chalk: 4.1.2 791 | debug: 4.3.4 792 | didyoumean: 1.2.2 793 | strip-ansi: 6.0.1 794 | transitivePeerDependencies: 795 | - supports-color 796 | dev: true 797 | 798 | /color-convert/1.9.3: 799 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 800 | dependencies: 801 | color-name: 1.1.3 802 | dev: true 803 | 804 | /color-convert/2.0.1: 805 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 806 | engines: {node: '>=7.0.0'} 807 | dependencies: 808 | color-name: 1.1.4 809 | dev: true 810 | 811 | /color-name/1.1.3: 812 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 813 | dev: true 814 | 815 | /color-name/1.1.4: 816 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 817 | dev: true 818 | 819 | /cross-spawn/5.1.0: 820 | resolution: {integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=} 821 | dependencies: 822 | lru-cache: 4.1.5 823 | shebang-command: 1.2.0 824 | which: 1.3.1 825 | dev: true 826 | 827 | /csstype/3.0.11: 828 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} 829 | dev: true 830 | 831 | /csv-generate/3.4.3: 832 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} 833 | dev: true 834 | 835 | /csv-parse/4.16.3: 836 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} 837 | dev: true 838 | 839 | /csv-stringify/5.6.5: 840 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} 841 | dev: true 842 | 843 | /csv/5.5.3: 844 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} 845 | engines: {node: '>= 0.1.90'} 846 | dependencies: 847 | csv-generate: 3.4.3 848 | csv-parse: 4.16.3 849 | csv-stringify: 5.6.5 850 | stream-transform: 2.1.3 851 | dev: true 852 | 853 | /debug/4.3.4: 854 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 855 | engines: {node: '>=6.0'} 856 | peerDependencies: 857 | supports-color: '*' 858 | peerDependenciesMeta: 859 | supports-color: 860 | optional: true 861 | dependencies: 862 | ms: 2.1.2 863 | dev: true 864 | 865 | /decamelize-keys/1.1.0: 866 | resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} 867 | engines: {node: '>=0.10.0'} 868 | dependencies: 869 | decamelize: 1.2.0 870 | map-obj: 1.0.1 871 | dev: true 872 | 873 | /decamelize/1.2.0: 874 | resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} 875 | engines: {node: '>=0.10.0'} 876 | dev: true 877 | 878 | /deep-eql/3.0.1: 879 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 880 | engines: {node: '>=0.12'} 881 | dependencies: 882 | type-detect: 4.0.8 883 | dev: true 884 | 885 | /defaults/1.0.3: 886 | resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} 887 | dependencies: 888 | clone: 1.0.4 889 | dev: true 890 | 891 | /detect-indent/6.1.0: 892 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 893 | engines: {node: '>=8'} 894 | dev: true 895 | 896 | /didyoumean/1.2.2: 897 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 898 | dev: true 899 | 900 | /dir-glob/3.0.1: 901 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 902 | engines: {node: '>=8'} 903 | dependencies: 904 | path-type: 4.0.0 905 | dev: true 906 | 907 | /emoji-regex/8.0.0: 908 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 909 | dev: true 910 | 911 | /enquirer/2.3.6: 912 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 913 | engines: {node: '>=8.6'} 914 | dependencies: 915 | ansi-colors: 4.1.1 916 | dev: true 917 | 918 | /error-ex/1.3.2: 919 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 920 | dependencies: 921 | is-arrayish: 0.2.1 922 | dev: true 923 | 924 | /esbuild-android-64/0.14.27: 925 | resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==} 926 | engines: {node: '>=12'} 927 | cpu: [x64] 928 | os: [android] 929 | requiresBuild: true 930 | dev: true 931 | optional: true 932 | 933 | /esbuild-android-arm64/0.14.27: 934 | resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==} 935 | engines: {node: '>=12'} 936 | cpu: [arm64] 937 | os: [android] 938 | requiresBuild: true 939 | dev: true 940 | optional: true 941 | 942 | /esbuild-darwin-64/0.14.27: 943 | resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==} 944 | engines: {node: '>=12'} 945 | cpu: [x64] 946 | os: [darwin] 947 | requiresBuild: true 948 | dev: true 949 | optional: true 950 | 951 | /esbuild-darwin-arm64/0.14.27: 952 | resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==} 953 | engines: {node: '>=12'} 954 | cpu: [arm64] 955 | os: [darwin] 956 | requiresBuild: true 957 | dev: true 958 | optional: true 959 | 960 | /esbuild-freebsd-64/0.14.27: 961 | resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==} 962 | engines: {node: '>=12'} 963 | cpu: [x64] 964 | os: [freebsd] 965 | requiresBuild: true 966 | dev: true 967 | optional: true 968 | 969 | /esbuild-freebsd-arm64/0.14.27: 970 | resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==} 971 | engines: {node: '>=12'} 972 | cpu: [arm64] 973 | os: [freebsd] 974 | requiresBuild: true 975 | dev: true 976 | optional: true 977 | 978 | /esbuild-linux-32/0.14.27: 979 | resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==} 980 | engines: {node: '>=12'} 981 | cpu: [ia32] 982 | os: [linux] 983 | requiresBuild: true 984 | dev: true 985 | optional: true 986 | 987 | /esbuild-linux-64/0.14.27: 988 | resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==} 989 | engines: {node: '>=12'} 990 | cpu: [x64] 991 | os: [linux] 992 | requiresBuild: true 993 | dev: true 994 | optional: true 995 | 996 | /esbuild-linux-arm/0.14.27: 997 | resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==} 998 | engines: {node: '>=12'} 999 | cpu: [arm] 1000 | os: [linux] 1001 | requiresBuild: true 1002 | dev: true 1003 | optional: true 1004 | 1005 | /esbuild-linux-arm64/0.14.27: 1006 | resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==} 1007 | engines: {node: '>=12'} 1008 | cpu: [arm64] 1009 | os: [linux] 1010 | requiresBuild: true 1011 | dev: true 1012 | optional: true 1013 | 1014 | /esbuild-linux-mips64le/0.14.27: 1015 | resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==} 1016 | engines: {node: '>=12'} 1017 | cpu: [mips64el] 1018 | os: [linux] 1019 | requiresBuild: true 1020 | dev: true 1021 | optional: true 1022 | 1023 | /esbuild-linux-ppc64le/0.14.27: 1024 | resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==} 1025 | engines: {node: '>=12'} 1026 | cpu: [ppc64] 1027 | os: [linux] 1028 | requiresBuild: true 1029 | dev: true 1030 | optional: true 1031 | 1032 | /esbuild-linux-riscv64/0.14.27: 1033 | resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==} 1034 | engines: {node: '>=12'} 1035 | cpu: [riscv64] 1036 | os: [linux] 1037 | requiresBuild: true 1038 | dev: true 1039 | optional: true 1040 | 1041 | /esbuild-linux-s390x/0.14.27: 1042 | resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==} 1043 | engines: {node: '>=12'} 1044 | cpu: [s390x] 1045 | os: [linux] 1046 | requiresBuild: true 1047 | dev: true 1048 | optional: true 1049 | 1050 | /esbuild-netbsd-64/0.14.27: 1051 | resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==} 1052 | engines: {node: '>=12'} 1053 | cpu: [x64] 1054 | os: [netbsd] 1055 | requiresBuild: true 1056 | dev: true 1057 | optional: true 1058 | 1059 | /esbuild-openbsd-64/0.14.27: 1060 | resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==} 1061 | engines: {node: '>=12'} 1062 | cpu: [x64] 1063 | os: [openbsd] 1064 | requiresBuild: true 1065 | dev: true 1066 | optional: true 1067 | 1068 | /esbuild-sunos-64/0.14.27: 1069 | resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==} 1070 | engines: {node: '>=12'} 1071 | cpu: [x64] 1072 | os: [sunos] 1073 | requiresBuild: true 1074 | dev: true 1075 | optional: true 1076 | 1077 | /esbuild-windows-32/0.14.27: 1078 | resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==} 1079 | engines: {node: '>=12'} 1080 | cpu: [ia32] 1081 | os: [win32] 1082 | requiresBuild: true 1083 | dev: true 1084 | optional: true 1085 | 1086 | /esbuild-windows-64/0.14.27: 1087 | resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==} 1088 | engines: {node: '>=12'} 1089 | cpu: [x64] 1090 | os: [win32] 1091 | requiresBuild: true 1092 | dev: true 1093 | optional: true 1094 | 1095 | /esbuild-windows-arm64/0.14.27: 1096 | resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==} 1097 | engines: {node: '>=12'} 1098 | cpu: [arm64] 1099 | os: [win32] 1100 | requiresBuild: true 1101 | dev: true 1102 | optional: true 1103 | 1104 | /esbuild/0.14.27: 1105 | resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==} 1106 | engines: {node: '>=12'} 1107 | hasBin: true 1108 | requiresBuild: true 1109 | optionalDependencies: 1110 | esbuild-android-64: 0.14.27 1111 | esbuild-android-arm64: 0.14.27 1112 | esbuild-darwin-64: 0.14.27 1113 | esbuild-darwin-arm64: 0.14.27 1114 | esbuild-freebsd-64: 0.14.27 1115 | esbuild-freebsd-arm64: 0.14.27 1116 | esbuild-linux-32: 0.14.27 1117 | esbuild-linux-64: 0.14.27 1118 | esbuild-linux-arm: 0.14.27 1119 | esbuild-linux-arm64: 0.14.27 1120 | esbuild-linux-mips64le: 0.14.27 1121 | esbuild-linux-ppc64le: 0.14.27 1122 | esbuild-linux-riscv64: 0.14.27 1123 | esbuild-linux-s390x: 0.14.27 1124 | esbuild-netbsd-64: 0.14.27 1125 | esbuild-openbsd-64: 0.14.27 1126 | esbuild-sunos-64: 0.14.27 1127 | esbuild-windows-32: 0.14.27 1128 | esbuild-windows-64: 0.14.27 1129 | esbuild-windows-arm64: 0.14.27 1130 | dev: true 1131 | 1132 | /escape-string-regexp/1.0.5: 1133 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1134 | engines: {node: '>=0.8.0'} 1135 | dev: true 1136 | 1137 | /esprima/4.0.1: 1138 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1139 | engines: {node: '>=4'} 1140 | hasBin: true 1141 | dev: true 1142 | 1143 | /extendable-error/0.1.7: 1144 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1145 | dev: true 1146 | 1147 | /external-editor/3.1.0: 1148 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1149 | engines: {node: '>=4'} 1150 | dependencies: 1151 | chardet: 0.7.0 1152 | iconv-lite: 0.4.24 1153 | tmp: 0.0.33 1154 | dev: true 1155 | 1156 | /fast-glob/3.2.11: 1157 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1158 | engines: {node: '>=8.6.0'} 1159 | dependencies: 1160 | '@nodelib/fs.stat': 2.0.5 1161 | '@nodelib/fs.walk': 1.2.8 1162 | glob-parent: 5.1.2 1163 | merge2: 1.4.1 1164 | micromatch: 4.0.4 1165 | dev: true 1166 | 1167 | /fastq/1.13.0: 1168 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1169 | dependencies: 1170 | reusify: 1.0.4 1171 | dev: true 1172 | 1173 | /fill-range/7.0.1: 1174 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1175 | engines: {node: '>=8'} 1176 | dependencies: 1177 | to-regex-range: 5.0.1 1178 | dev: true 1179 | 1180 | /find-up/4.1.0: 1181 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1182 | engines: {node: '>=8'} 1183 | dependencies: 1184 | locate-path: 5.0.0 1185 | path-exists: 4.0.0 1186 | dev: true 1187 | 1188 | /find-up/5.0.0: 1189 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1190 | engines: {node: '>=10'} 1191 | dependencies: 1192 | locate-path: 6.0.0 1193 | path-exists: 4.0.0 1194 | dev: true 1195 | 1196 | /find-yarn-workspace-root2/1.2.16: 1197 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1198 | dependencies: 1199 | micromatch: 4.0.4 1200 | pkg-dir: 4.2.0 1201 | dev: true 1202 | 1203 | /fs-extra/7.0.1: 1204 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1205 | engines: {node: '>=6 <7 || >=8'} 1206 | dependencies: 1207 | graceful-fs: 4.2.10 1208 | jsonfile: 4.0.0 1209 | universalify: 0.1.2 1210 | dev: true 1211 | 1212 | /fs-extra/8.1.0: 1213 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1214 | engines: {node: '>=6 <7 || >=8'} 1215 | dependencies: 1216 | graceful-fs: 4.2.10 1217 | jsonfile: 4.0.0 1218 | universalify: 0.1.2 1219 | dev: true 1220 | 1221 | /fsevents/2.3.2: 1222 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1223 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1224 | os: [darwin] 1225 | requiresBuild: true 1226 | dev: true 1227 | optional: true 1228 | 1229 | /function-bind/1.1.1: 1230 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1231 | dev: true 1232 | 1233 | /get-caller-file/2.0.5: 1234 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1235 | engines: {node: 6.* || 8.* || >= 10.*} 1236 | dev: true 1237 | 1238 | /get-func-name/2.0.0: 1239 | resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} 1240 | dev: true 1241 | 1242 | /glob-parent/5.1.2: 1243 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1244 | engines: {node: '>= 6'} 1245 | dependencies: 1246 | is-glob: 4.0.3 1247 | dev: true 1248 | 1249 | /globby/11.1.0: 1250 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1251 | engines: {node: '>=10'} 1252 | dependencies: 1253 | array-union: 2.1.0 1254 | dir-glob: 3.0.1 1255 | fast-glob: 3.2.11 1256 | ignore: 5.2.0 1257 | merge2: 1.4.1 1258 | slash: 3.0.0 1259 | dev: true 1260 | 1261 | /graceful-fs/4.2.10: 1262 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1263 | dev: true 1264 | 1265 | /grapheme-splitter/1.0.4: 1266 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1267 | dev: true 1268 | 1269 | /hard-rejection/2.1.0: 1270 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 1271 | engines: {node: '>=6'} 1272 | dev: true 1273 | 1274 | /has-flag/3.0.0: 1275 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1276 | engines: {node: '>=4'} 1277 | dev: true 1278 | 1279 | /has-flag/4.0.0: 1280 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1281 | engines: {node: '>=8'} 1282 | dev: true 1283 | 1284 | /has/1.0.3: 1285 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1286 | engines: {node: '>= 0.4.0'} 1287 | dependencies: 1288 | function-bind: 1.1.1 1289 | dev: true 1290 | 1291 | /hosted-git-info/2.8.9: 1292 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1293 | dev: true 1294 | 1295 | /human-id/1.0.2: 1296 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1297 | dev: true 1298 | 1299 | /iconv-lite/0.4.24: 1300 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1301 | engines: {node: '>=0.10.0'} 1302 | dependencies: 1303 | safer-buffer: 2.1.2 1304 | dev: true 1305 | 1306 | /ignore/5.2.0: 1307 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1308 | engines: {node: '>= 4'} 1309 | dev: true 1310 | 1311 | /indent-string/4.0.0: 1312 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1313 | engines: {node: '>=8'} 1314 | dev: true 1315 | 1316 | /is-arrayish/0.2.1: 1317 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 1318 | dev: true 1319 | 1320 | /is-ci/3.0.1: 1321 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 1322 | hasBin: true 1323 | dependencies: 1324 | ci-info: 3.3.0 1325 | dev: true 1326 | 1327 | /is-core-module/2.8.1: 1328 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 1329 | dependencies: 1330 | has: 1.0.3 1331 | dev: true 1332 | 1333 | /is-extglob/2.1.1: 1334 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1335 | engines: {node: '>=0.10.0'} 1336 | dev: true 1337 | 1338 | /is-fullwidth-code-point/3.0.0: 1339 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1340 | engines: {node: '>=8'} 1341 | dev: true 1342 | 1343 | /is-glob/4.0.3: 1344 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1345 | engines: {node: '>=0.10.0'} 1346 | dependencies: 1347 | is-extglob: 2.1.1 1348 | dev: true 1349 | 1350 | /is-number/7.0.0: 1351 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1352 | engines: {node: '>=0.12.0'} 1353 | dev: true 1354 | 1355 | /is-plain-obj/1.1.0: 1356 | resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} 1357 | engines: {node: '>=0.10.0'} 1358 | dev: true 1359 | 1360 | /is-subdir/1.2.0: 1361 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1362 | engines: {node: '>=4'} 1363 | dependencies: 1364 | better-path-resolve: 1.0.0 1365 | dev: true 1366 | 1367 | /is-windows/1.0.2: 1368 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1369 | engines: {node: '>=0.10.0'} 1370 | dev: true 1371 | 1372 | /isexe/2.0.0: 1373 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1374 | dev: true 1375 | 1376 | /js-tokens/4.0.0: 1377 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1378 | 1379 | /js-yaml/3.14.1: 1380 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1381 | hasBin: true 1382 | dependencies: 1383 | argparse: 1.0.10 1384 | esprima: 4.0.1 1385 | dev: true 1386 | 1387 | /json-parse-even-better-errors/2.3.1: 1388 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1389 | dev: true 1390 | 1391 | /jsonfile/4.0.0: 1392 | resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} 1393 | optionalDependencies: 1394 | graceful-fs: 4.2.10 1395 | dev: true 1396 | 1397 | /kind-of/6.0.3: 1398 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1399 | engines: {node: '>=0.10.0'} 1400 | dev: true 1401 | 1402 | /lines-and-columns/1.2.4: 1403 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1404 | dev: true 1405 | 1406 | /load-yaml-file/0.2.0: 1407 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 1408 | engines: {node: '>=6'} 1409 | dependencies: 1410 | graceful-fs: 4.2.10 1411 | js-yaml: 3.14.1 1412 | pify: 4.0.1 1413 | strip-bom: 3.0.0 1414 | dev: true 1415 | 1416 | /local-pkg/0.4.1: 1417 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} 1418 | engines: {node: '>=14'} 1419 | dev: true 1420 | 1421 | /locate-path/5.0.0: 1422 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1423 | engines: {node: '>=8'} 1424 | dependencies: 1425 | p-locate: 4.1.0 1426 | dev: true 1427 | 1428 | /locate-path/6.0.0: 1429 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1430 | engines: {node: '>=10'} 1431 | dependencies: 1432 | p-locate: 5.0.0 1433 | dev: true 1434 | 1435 | /lodash.startcase/4.4.0: 1436 | resolution: {integrity: sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=} 1437 | dev: true 1438 | 1439 | /loose-envify/1.4.0: 1440 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1441 | hasBin: true 1442 | dependencies: 1443 | js-tokens: 4.0.0 1444 | 1445 | /loupe/2.3.4: 1446 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} 1447 | dependencies: 1448 | get-func-name: 2.0.0 1449 | dev: true 1450 | 1451 | /lru-cache/4.1.5: 1452 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 1453 | dependencies: 1454 | pseudomap: 1.0.2 1455 | yallist: 2.1.2 1456 | dev: true 1457 | 1458 | /map-obj/1.0.1: 1459 | resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} 1460 | engines: {node: '>=0.10.0'} 1461 | dev: true 1462 | 1463 | /map-obj/4.3.0: 1464 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 1465 | engines: {node: '>=8'} 1466 | dev: true 1467 | 1468 | /meow/6.1.1: 1469 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} 1470 | engines: {node: '>=8'} 1471 | dependencies: 1472 | '@types/minimist': 1.2.2 1473 | camelcase-keys: 6.2.2 1474 | decamelize-keys: 1.1.0 1475 | hard-rejection: 2.1.0 1476 | minimist-options: 4.1.0 1477 | normalize-package-data: 2.5.0 1478 | read-pkg-up: 7.0.1 1479 | redent: 3.0.0 1480 | trim-newlines: 3.0.1 1481 | type-fest: 0.13.1 1482 | yargs-parser: 18.1.3 1483 | dev: true 1484 | 1485 | /merge2/1.4.1: 1486 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1487 | engines: {node: '>= 8'} 1488 | dev: true 1489 | 1490 | /micromatch/4.0.4: 1491 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 1492 | engines: {node: '>=8.6'} 1493 | dependencies: 1494 | braces: 3.0.2 1495 | picomatch: 2.3.1 1496 | dev: true 1497 | 1498 | /min-indent/1.0.1: 1499 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1500 | engines: {node: '>=4'} 1501 | dev: true 1502 | 1503 | /minimist-options/4.1.0: 1504 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 1505 | engines: {node: '>= 6'} 1506 | dependencies: 1507 | arrify: 1.0.1 1508 | is-plain-obj: 1.1.0 1509 | kind-of: 6.0.3 1510 | dev: true 1511 | 1512 | /mixme/0.5.4: 1513 | resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} 1514 | engines: {node: '>= 8.0.0'} 1515 | dev: true 1516 | 1517 | /ms/2.1.2: 1518 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1519 | dev: true 1520 | 1521 | /nanoid/3.3.1: 1522 | resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} 1523 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1524 | hasBin: true 1525 | dev: true 1526 | 1527 | /next/12.1.0_react-dom@17.0.2+react@17.0.2: 1528 | resolution: {integrity: sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==} 1529 | engines: {node: '>=12.22.0'} 1530 | hasBin: true 1531 | peerDependencies: 1532 | fibers: '>= 3.1.0' 1533 | node-sass: ^6.0.0 || ^7.0.0 1534 | react: ^17.0.2 || ^18.0.0-0 1535 | react-dom: ^17.0.2 || ^18.0.0-0 1536 | sass: ^1.3.0 1537 | peerDependenciesMeta: 1538 | fibers: 1539 | optional: true 1540 | node-sass: 1541 | optional: true 1542 | sass: 1543 | optional: true 1544 | dependencies: 1545 | '@next/env': 12.1.0 1546 | caniuse-lite: 1.0.30001319 1547 | postcss: 8.4.5 1548 | react: 17.0.2 1549 | react-dom: 17.0.2_react@17.0.2 1550 | styled-jsx: 5.0.0_react@17.0.2 1551 | use-subscription: 1.5.1_react@17.0.2 1552 | optionalDependencies: 1553 | '@next/swc-android-arm64': 12.1.0 1554 | '@next/swc-darwin-arm64': 12.1.0 1555 | '@next/swc-darwin-x64': 12.1.0 1556 | '@next/swc-linux-arm-gnueabihf': 12.1.0 1557 | '@next/swc-linux-arm64-gnu': 12.1.0 1558 | '@next/swc-linux-arm64-musl': 12.1.0 1559 | '@next/swc-linux-x64-gnu': 12.1.0 1560 | '@next/swc-linux-x64-musl': 12.1.0 1561 | '@next/swc-win32-arm64-msvc': 12.1.0 1562 | '@next/swc-win32-ia32-msvc': 12.1.0 1563 | '@next/swc-win32-x64-msvc': 12.1.0 1564 | transitivePeerDependencies: 1565 | - '@babel/core' 1566 | - babel-plugin-macros 1567 | dev: true 1568 | 1569 | /normalize-package-data/2.5.0: 1570 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1571 | dependencies: 1572 | hosted-git-info: 2.8.9 1573 | resolve: 1.22.0 1574 | semver: 5.7.1 1575 | validate-npm-package-license: 3.0.4 1576 | dev: true 1577 | 1578 | /object-assign/4.1.1: 1579 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 1580 | engines: {node: '>=0.10.0'} 1581 | 1582 | /os-tmpdir/1.0.2: 1583 | resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} 1584 | engines: {node: '>=0.10.0'} 1585 | dev: true 1586 | 1587 | /outdent/0.5.0: 1588 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1589 | dev: true 1590 | 1591 | /p-filter/2.1.0: 1592 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1593 | engines: {node: '>=8'} 1594 | dependencies: 1595 | p-map: 2.1.0 1596 | dev: true 1597 | 1598 | /p-limit/2.3.0: 1599 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1600 | engines: {node: '>=6'} 1601 | dependencies: 1602 | p-try: 2.2.0 1603 | dev: true 1604 | 1605 | /p-limit/3.1.0: 1606 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1607 | engines: {node: '>=10'} 1608 | dependencies: 1609 | yocto-queue: 0.1.0 1610 | dev: true 1611 | 1612 | /p-locate/4.1.0: 1613 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1614 | engines: {node: '>=8'} 1615 | dependencies: 1616 | p-limit: 2.3.0 1617 | dev: true 1618 | 1619 | /p-locate/5.0.0: 1620 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1621 | engines: {node: '>=10'} 1622 | dependencies: 1623 | p-limit: 3.1.0 1624 | dev: true 1625 | 1626 | /p-map/2.1.0: 1627 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1628 | engines: {node: '>=6'} 1629 | dev: true 1630 | 1631 | /p-try/2.2.0: 1632 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1633 | engines: {node: '>=6'} 1634 | dev: true 1635 | 1636 | /parse-json/5.2.0: 1637 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1638 | engines: {node: '>=8'} 1639 | dependencies: 1640 | '@babel/code-frame': 7.16.7 1641 | error-ex: 1.3.2 1642 | json-parse-even-better-errors: 2.3.1 1643 | lines-and-columns: 1.2.4 1644 | dev: true 1645 | 1646 | /path-exists/4.0.0: 1647 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1648 | engines: {node: '>=8'} 1649 | dev: true 1650 | 1651 | /path-parse/1.0.7: 1652 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1653 | dev: true 1654 | 1655 | /path-type/4.0.0: 1656 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1657 | engines: {node: '>=8'} 1658 | dev: true 1659 | 1660 | /pathval/1.1.1: 1661 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 1662 | dev: true 1663 | 1664 | /picocolors/1.0.0: 1665 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1666 | dev: true 1667 | 1668 | /picomatch/2.3.1: 1669 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1670 | engines: {node: '>=8.6'} 1671 | dev: true 1672 | 1673 | /pify/4.0.1: 1674 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1675 | engines: {node: '>=6'} 1676 | dev: true 1677 | 1678 | /pirates/4.0.5: 1679 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 1680 | engines: {node: '>= 6'} 1681 | dev: true 1682 | 1683 | /pkg-dir/4.2.0: 1684 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1685 | engines: {node: '>=8'} 1686 | dependencies: 1687 | find-up: 4.1.0 1688 | dev: true 1689 | 1690 | /postcss/8.4.12: 1691 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} 1692 | engines: {node: ^10 || ^12 || >=14} 1693 | dependencies: 1694 | nanoid: 3.3.1 1695 | picocolors: 1.0.0 1696 | source-map-js: 1.0.2 1697 | dev: true 1698 | 1699 | /postcss/8.4.5: 1700 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} 1701 | engines: {node: ^10 || ^12 || >=14} 1702 | dependencies: 1703 | nanoid: 3.3.1 1704 | picocolors: 1.0.0 1705 | source-map-js: 1.0.2 1706 | dev: true 1707 | 1708 | /preferred-pm/3.0.3: 1709 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 1710 | engines: {node: '>=10'} 1711 | dependencies: 1712 | find-up: 5.0.0 1713 | find-yarn-workspace-root2: 1.2.16 1714 | path-exists: 4.0.0 1715 | which-pm: 2.0.0 1716 | dev: true 1717 | 1718 | /prettier/1.19.1: 1719 | resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} 1720 | engines: {node: '>=4'} 1721 | hasBin: true 1722 | dev: true 1723 | 1724 | /prettier/2.6.0: 1725 | resolution: {integrity: sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==} 1726 | engines: {node: '>=10.13.0'} 1727 | hasBin: true 1728 | dev: true 1729 | 1730 | /pseudomap/1.0.2: 1731 | resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} 1732 | dev: true 1733 | 1734 | /queue-microtask/1.2.3: 1735 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1736 | dev: true 1737 | 1738 | /quick-lru/4.0.1: 1739 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 1740 | engines: {node: '>=8'} 1741 | dev: true 1742 | 1743 | /react-dom/17.0.2_react@17.0.2: 1744 | resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} 1745 | peerDependencies: 1746 | react: 17.0.2 1747 | dependencies: 1748 | loose-envify: 1.4.0 1749 | object-assign: 4.1.1 1750 | react: 17.0.2 1751 | scheduler: 0.20.2 1752 | 1753 | /react/17.0.2: 1754 | resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} 1755 | engines: {node: '>=0.10.0'} 1756 | dependencies: 1757 | loose-envify: 1.4.0 1758 | object-assign: 4.1.1 1759 | 1760 | /read-pkg-up/7.0.1: 1761 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 1762 | engines: {node: '>=8'} 1763 | dependencies: 1764 | find-up: 4.1.0 1765 | read-pkg: 5.2.0 1766 | type-fest: 0.8.1 1767 | dev: true 1768 | 1769 | /read-pkg/5.2.0: 1770 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 1771 | engines: {node: '>=8'} 1772 | dependencies: 1773 | '@types/normalize-package-data': 2.4.1 1774 | normalize-package-data: 2.5.0 1775 | parse-json: 5.2.0 1776 | type-fest: 0.6.0 1777 | dev: true 1778 | 1779 | /read-yaml-file/1.1.0: 1780 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1781 | engines: {node: '>=6'} 1782 | dependencies: 1783 | graceful-fs: 4.2.10 1784 | js-yaml: 3.14.1 1785 | pify: 4.0.1 1786 | strip-bom: 3.0.0 1787 | dev: true 1788 | 1789 | /redent/3.0.0: 1790 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 1791 | engines: {node: '>=8'} 1792 | dependencies: 1793 | indent-string: 4.0.0 1794 | strip-indent: 3.0.0 1795 | dev: true 1796 | 1797 | /regenerator-runtime/0.13.9: 1798 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 1799 | dev: true 1800 | 1801 | /require-directory/2.1.1: 1802 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 1803 | engines: {node: '>=0.10.0'} 1804 | dev: true 1805 | 1806 | /require-main-filename/2.0.0: 1807 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 1808 | dev: true 1809 | 1810 | /resolve-from/5.0.0: 1811 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1812 | engines: {node: '>=8'} 1813 | dev: true 1814 | 1815 | /resolve/1.22.0: 1816 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 1817 | hasBin: true 1818 | dependencies: 1819 | is-core-module: 2.8.1 1820 | path-parse: 1.0.7 1821 | supports-preserve-symlinks-flag: 1.0.0 1822 | dev: true 1823 | 1824 | /reusify/1.0.4: 1825 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1826 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1827 | dev: true 1828 | 1829 | /rollup/2.70.1: 1830 | resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} 1831 | engines: {node: '>=10.0.0'} 1832 | hasBin: true 1833 | optionalDependencies: 1834 | fsevents: 2.3.2 1835 | dev: true 1836 | 1837 | /run-parallel/1.2.0: 1838 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1839 | dependencies: 1840 | queue-microtask: 1.2.3 1841 | dev: true 1842 | 1843 | /safer-buffer/2.1.2: 1844 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1845 | dev: true 1846 | 1847 | /scheduler/0.20.2: 1848 | resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} 1849 | dependencies: 1850 | loose-envify: 1.4.0 1851 | object-assign: 4.1.1 1852 | 1853 | /semver/5.7.1: 1854 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 1855 | hasBin: true 1856 | dev: true 1857 | 1858 | /set-blocking/2.0.0: 1859 | resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} 1860 | dev: true 1861 | 1862 | /shebang-command/1.2.0: 1863 | resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} 1864 | engines: {node: '>=0.10.0'} 1865 | dependencies: 1866 | shebang-regex: 1.0.0 1867 | dev: true 1868 | 1869 | /shebang-regex/1.0.0: 1870 | resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} 1871 | engines: {node: '>=0.10.0'} 1872 | dev: true 1873 | 1874 | /signal-exit/3.0.7: 1875 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1876 | dev: true 1877 | 1878 | /slash/3.0.0: 1879 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1880 | engines: {node: '>=8'} 1881 | dev: true 1882 | 1883 | /smartwrap/1.2.5: 1884 | resolution: {integrity: sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==} 1885 | deprecated: Backported compatibility to node > 6 1886 | hasBin: true 1887 | dependencies: 1888 | breakword: 1.0.5 1889 | grapheme-splitter: 1.0.4 1890 | strip-ansi: 6.0.1 1891 | wcwidth: 1.0.1 1892 | yargs: 15.4.1 1893 | dev: true 1894 | 1895 | /source-map-js/1.0.2: 1896 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1897 | engines: {node: '>=0.10.0'} 1898 | dev: true 1899 | 1900 | /source-map-support/0.5.21: 1901 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1902 | dependencies: 1903 | buffer-from: 1.1.2 1904 | source-map: 0.6.1 1905 | dev: true 1906 | 1907 | /source-map/0.6.1: 1908 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1909 | engines: {node: '>=0.10.0'} 1910 | dev: true 1911 | 1912 | /spawndamnit/2.0.0: 1913 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 1914 | dependencies: 1915 | cross-spawn: 5.1.0 1916 | signal-exit: 3.0.7 1917 | dev: true 1918 | 1919 | /spdx-correct/3.1.1: 1920 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 1921 | dependencies: 1922 | spdx-expression-parse: 3.0.1 1923 | spdx-license-ids: 3.0.11 1924 | dev: true 1925 | 1926 | /spdx-exceptions/2.3.0: 1927 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 1928 | dev: true 1929 | 1930 | /spdx-expression-parse/3.0.1: 1931 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1932 | dependencies: 1933 | spdx-exceptions: 2.3.0 1934 | spdx-license-ids: 3.0.11 1935 | dev: true 1936 | 1937 | /spdx-license-ids/3.0.11: 1938 | resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} 1939 | dev: true 1940 | 1941 | /sprintf-js/1.0.3: 1942 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 1943 | dev: true 1944 | 1945 | /stream-transform/2.1.3: 1946 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 1947 | dependencies: 1948 | mixme: 0.5.4 1949 | dev: true 1950 | 1951 | /string-width/4.2.3: 1952 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1953 | engines: {node: '>=8'} 1954 | dependencies: 1955 | emoji-regex: 8.0.0 1956 | is-fullwidth-code-point: 3.0.0 1957 | strip-ansi: 6.0.1 1958 | dev: true 1959 | 1960 | /strip-ansi/6.0.1: 1961 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1962 | engines: {node: '>=8'} 1963 | dependencies: 1964 | ansi-regex: 5.0.1 1965 | dev: true 1966 | 1967 | /strip-bom/3.0.0: 1968 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 1969 | engines: {node: '>=4'} 1970 | dev: true 1971 | 1972 | /strip-indent/3.0.0: 1973 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1974 | engines: {node: '>=8'} 1975 | dependencies: 1976 | min-indent: 1.0.1 1977 | dev: true 1978 | 1979 | /styled-jsx/5.0.0_react@17.0.2: 1980 | resolution: {integrity: sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==} 1981 | engines: {node: '>= 12.0.0'} 1982 | peerDependencies: 1983 | '@babel/core': '*' 1984 | babel-plugin-macros: '*' 1985 | react: '>= 16.8.0 || 17.x.x || 18.x.x' 1986 | peerDependenciesMeta: 1987 | '@babel/core': 1988 | optional: true 1989 | babel-plugin-macros: 1990 | optional: true 1991 | dependencies: 1992 | react: 17.0.2 1993 | dev: true 1994 | 1995 | /supports-color/5.5.0: 1996 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1997 | engines: {node: '>=4'} 1998 | dependencies: 1999 | has-flag: 3.0.0 2000 | dev: true 2001 | 2002 | /supports-color/7.2.0: 2003 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2004 | engines: {node: '>=8'} 2005 | dependencies: 2006 | has-flag: 4.0.0 2007 | dev: true 2008 | 2009 | /supports-preserve-symlinks-flag/1.0.0: 2010 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2011 | engines: {node: '>= 0.4'} 2012 | dev: true 2013 | 2014 | /term-size/2.2.1: 2015 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 2016 | engines: {node: '>=8'} 2017 | dev: true 2018 | 2019 | /tinypool/0.1.2: 2020 | resolution: {integrity: sha512-fvtYGXoui2RpeMILfkvGIgOVkzJEGediv8UJt7TxdAOY8pnvUkFg/fkvqTfXG9Acc9S17Cnn1S4osDc2164guA==} 2021 | engines: {node: '>=14.0.0'} 2022 | dev: true 2023 | 2024 | /tinyspy/0.3.0: 2025 | resolution: {integrity: sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==} 2026 | engines: {node: '>=14.0.0'} 2027 | dev: true 2028 | 2029 | /tmp/0.0.33: 2030 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 2031 | engines: {node: '>=0.6.0'} 2032 | dependencies: 2033 | os-tmpdir: 1.0.2 2034 | dev: true 2035 | 2036 | /to-regex-range/5.0.1: 2037 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2038 | engines: {node: '>=8.0'} 2039 | dependencies: 2040 | is-number: 7.0.0 2041 | dev: true 2042 | 2043 | /trim-newlines/3.0.1: 2044 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 2045 | engines: {node: '>=8'} 2046 | dev: true 2047 | 2048 | /tslib/2.3.1: 2049 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 2050 | dev: true 2051 | 2052 | /tty-table/2.8.13: 2053 | resolution: {integrity: sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ==} 2054 | engines: {node: '>=8.16.0'} 2055 | hasBin: true 2056 | dependencies: 2057 | chalk: 3.0.0 2058 | csv: 5.5.3 2059 | smartwrap: 1.2.5 2060 | strip-ansi: 6.0.1 2061 | wcwidth: 1.0.1 2062 | yargs: 15.4.1 2063 | dev: true 2064 | 2065 | /turbo-darwin-64/1.2.9: 2066 | resolution: {integrity: sha512-rVwDQpi6p0GwTiqSsvtA1b3RvKl8l2y+ElZ3EKGiIIJYZt1D6wBMJoADaZ9uZ/LWkT+WKfAWNtKdwRmuBAOS6g==} 2067 | cpu: [x64] 2068 | os: [darwin] 2069 | requiresBuild: true 2070 | dev: true 2071 | optional: true 2072 | 2073 | /turbo-darwin-arm64/1.2.9: 2074 | resolution: {integrity: sha512-j7NgQHkQWWODw1I/saiqmjjD54uGAEq0qTTtLI3RoLaA+yI+awXmHwsiHRqsvGSyGJlBoKBcbxXkekLf21q3GA==} 2075 | cpu: [arm64] 2076 | os: [darwin] 2077 | requiresBuild: true 2078 | dev: true 2079 | optional: true 2080 | 2081 | /turbo-freebsd-64/1.2.9: 2082 | resolution: {integrity: sha512-+tLb3iCOrIeGrcOJZYey5mD9qgNgKYuwRRg6FeX/6TDITvZXcCS50A2uRbaD/PQzQKs1lHcshiCe/DRtbvJ63g==} 2083 | cpu: [x64] 2084 | os: [freebsd] 2085 | requiresBuild: true 2086 | dev: true 2087 | optional: true 2088 | 2089 | /turbo-freebsd-arm64/1.2.9: 2090 | resolution: {integrity: sha512-gwI8jocTf036kc9GI1BebzftxrkT5pewHPA2iqvAXAJpX01G1x1iGcl8/uIbkbL5hp038nu+l2Kb+lRI96sJuA==} 2091 | cpu: [arm64] 2092 | os: [freebsd] 2093 | requiresBuild: true 2094 | dev: true 2095 | optional: true 2096 | 2097 | /turbo-linux-32/1.2.9: 2098 | resolution: {integrity: sha512-Rm47bIsCHIae/DkXJ58YrWvdh8o4Ug9U4VnTDb9byXrz2B7624ol9XdfpXv429z7LXkQR1+WnwCMwFB4K6DyuQ==} 2099 | cpu: [ia32] 2100 | os: [linux] 2101 | requiresBuild: true 2102 | dev: true 2103 | optional: true 2104 | 2105 | /turbo-linux-64/1.2.9: 2106 | resolution: {integrity: sha512-8Gqi+TzEdmOmxxAukU0NO0JlIqdm98C97u9qEsxWrXTFL/xL21gKCixqsBTEO7JOISC4M8VjArxjSsITRbkD5g==} 2107 | cpu: [x64] 2108 | os: [linux] 2109 | requiresBuild: true 2110 | dev: true 2111 | optional: true 2112 | 2113 | /turbo-linux-arm/1.2.9: 2114 | resolution: {integrity: sha512-OS+XCWiGFbuM7UNBVQdVbIJqxhVu9Sr2WxQgDcGZpCYn32yLLPlWDDGL0Cl/EG006J9k+VS1e4OzyM6kfMxS9Q==} 2115 | cpu: [arm] 2116 | os: [linux] 2117 | requiresBuild: true 2118 | dev: true 2119 | optional: true 2120 | 2121 | /turbo-linux-arm64/1.2.9: 2122 | resolution: {integrity: sha512-FVIeM7koUtyu1cNAJhPYjb90kL/ICdWoJr4PoZZYnqty5sxLsBg75bVErEDQeDzKQvwXLlcax2lEzHvaSyn/wg==} 2123 | cpu: [arm64] 2124 | os: [linux] 2125 | requiresBuild: true 2126 | dev: true 2127 | optional: true 2128 | 2129 | /turbo-linux-mips64le/1.2.9: 2130 | resolution: {integrity: sha512-2zVBnOVivWGpl51qO/lycfw7euM4b04AXYUmhsWkUN3FygIwyNgjuiMU8rxQOlu9VGX8X+WXkX2gfbgTovTeFw==} 2131 | cpu: [mips64el] 2132 | os: [linux] 2133 | requiresBuild: true 2134 | dev: true 2135 | optional: true 2136 | 2137 | /turbo-linux-ppc64le/1.2.9: 2138 | resolution: {integrity: sha512-EGgKyzf8IhodOF32BvE3Zlgbr/dSGuUbemC9RGSuhF1F1PMnP1nYS/t3JWN5QKZU4O2uWiIyLdC/0ZjtcGAcZQ==} 2139 | cpu: [ppc64] 2140 | os: [linux] 2141 | requiresBuild: true 2142 | dev: true 2143 | optional: true 2144 | 2145 | /turbo-windows-32/1.2.9: 2146 | resolution: {integrity: sha512-XrMJMUtewlfksBUB0R7Tyw16IoqshVl6f/3R2ccMccddEMcvak0oW03FK9n+Y4F+wyIoJ22AVhu8jMv+HgEehA==} 2147 | cpu: [ia32] 2148 | os: [win32] 2149 | requiresBuild: true 2150 | dev: true 2151 | optional: true 2152 | 2153 | /turbo-windows-64/1.2.9: 2154 | resolution: {integrity: sha512-ewhj4MrqcMpW/keag4xG7YRLTJ7PzcqBc6Kc96OGD2qfK/uJV/r7H3Xt09WuYHRWwPgGEeNn8utpqdqbYfCVDw==} 2155 | cpu: [x64] 2156 | os: [win32] 2157 | requiresBuild: true 2158 | dev: true 2159 | optional: true 2160 | 2161 | /turbo-windows-arm64/1.2.9: 2162 | resolution: {integrity: sha512-B8BoNb/yZWAyKwQUbs2+UFzLmOu/WGv/+ADT6SQfI8jOaTenS7Od4bbMsGJT0iXcqv+v8TcWKX83KmQ6gxBQpg==} 2163 | cpu: [arm64] 2164 | os: [win32] 2165 | requiresBuild: true 2166 | dev: true 2167 | optional: true 2168 | 2169 | /turbo/1.2.9: 2170 | resolution: {integrity: sha512-aPGzZqmUHE9yx9TS7wcAJnDmXiuQSNXDwU5b1KrgNlFuID18TL443wna79p7k4awmf4Yuhu1cSZIvO+se72iVQ==} 2171 | hasBin: true 2172 | requiresBuild: true 2173 | optionalDependencies: 2174 | turbo-darwin-64: 1.2.9 2175 | turbo-darwin-arm64: 1.2.9 2176 | turbo-freebsd-64: 1.2.9 2177 | turbo-freebsd-arm64: 1.2.9 2178 | turbo-linux-32: 1.2.9 2179 | turbo-linux-64: 1.2.9 2180 | turbo-linux-arm: 1.2.9 2181 | turbo-linux-arm64: 1.2.9 2182 | turbo-linux-mips64le: 1.2.9 2183 | turbo-linux-ppc64le: 1.2.9 2184 | turbo-windows-32: 1.2.9 2185 | turbo-windows-64: 1.2.9 2186 | turbo-windows-arm64: 1.2.9 2187 | dev: true 2188 | 2189 | /type-detect/4.0.8: 2190 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2191 | engines: {node: '>=4'} 2192 | dev: true 2193 | 2194 | /type-fest/0.13.1: 2195 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2196 | engines: {node: '>=10'} 2197 | dev: true 2198 | 2199 | /type-fest/0.6.0: 2200 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2201 | engines: {node: '>=8'} 2202 | dev: true 2203 | 2204 | /type-fest/0.8.1: 2205 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2206 | engines: {node: '>=8'} 2207 | dev: true 2208 | 2209 | /typescript/4.6.2: 2210 | resolution: {integrity: sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==} 2211 | engines: {node: '>=4.2.0'} 2212 | hasBin: true 2213 | dev: true 2214 | 2215 | /universalify/0.1.2: 2216 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 2217 | engines: {node: '>= 4.0.0'} 2218 | dev: true 2219 | 2220 | /use-subscription/1.5.1_react@17.0.2: 2221 | resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} 2222 | peerDependencies: 2223 | react: ^16.8.0 || ^17.0.0 2224 | dependencies: 2225 | object-assign: 4.1.1 2226 | react: 17.0.2 2227 | dev: true 2228 | 2229 | /validate-npm-package-license/3.0.4: 2230 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2231 | dependencies: 2232 | spdx-correct: 3.1.1 2233 | spdx-expression-parse: 3.0.1 2234 | dev: true 2235 | 2236 | /vite/2.8.6: 2237 | resolution: {integrity: sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==} 2238 | engines: {node: '>=12.2.0'} 2239 | hasBin: true 2240 | peerDependencies: 2241 | less: '*' 2242 | sass: '*' 2243 | stylus: '*' 2244 | peerDependenciesMeta: 2245 | less: 2246 | optional: true 2247 | sass: 2248 | optional: true 2249 | stylus: 2250 | optional: true 2251 | dependencies: 2252 | esbuild: 0.14.27 2253 | postcss: 8.4.12 2254 | resolve: 1.22.0 2255 | rollup: 2.70.1 2256 | optionalDependencies: 2257 | fsevents: 2.3.2 2258 | dev: true 2259 | 2260 | /vitest/0.5.9: 2261 | resolution: {integrity: sha512-R8lRP9Q1yIbwr8pDf2gvw4PFe8H5YMyHhBcdyfnUh6toLfCR10jrdI/WkNxdo5I4H/9XrMX9t+SAavdJExNdKg==} 2262 | engines: {node: '>=14.14.0'} 2263 | hasBin: true 2264 | peerDependencies: 2265 | '@vitest/ui': '*' 2266 | c8: '*' 2267 | happy-dom: '*' 2268 | jsdom: '*' 2269 | peerDependenciesMeta: 2270 | '@vitest/ui': 2271 | optional: true 2272 | c8: 2273 | optional: true 2274 | happy-dom: 2275 | optional: true 2276 | jsdom: 2277 | optional: true 2278 | dependencies: 2279 | '@types/chai': 4.3.0 2280 | '@types/chai-subset': 1.3.3 2281 | chai: 4.3.6 2282 | local-pkg: 0.4.1 2283 | tinypool: 0.1.2 2284 | tinyspy: 0.3.0 2285 | vite: 2.8.6 2286 | transitivePeerDependencies: 2287 | - less 2288 | - sass 2289 | - stylus 2290 | dev: true 2291 | 2292 | /wcwidth/1.0.1: 2293 | resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} 2294 | dependencies: 2295 | defaults: 1.0.3 2296 | dev: true 2297 | 2298 | /which-module/2.0.0: 2299 | resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} 2300 | dev: true 2301 | 2302 | /which-pm/2.0.0: 2303 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 2304 | engines: {node: '>=8.15'} 2305 | dependencies: 2306 | load-yaml-file: 0.2.0 2307 | path-exists: 4.0.0 2308 | dev: true 2309 | 2310 | /which/1.3.1: 2311 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 2312 | hasBin: true 2313 | dependencies: 2314 | isexe: 2.0.0 2315 | dev: true 2316 | 2317 | /wrap-ansi/6.2.0: 2318 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 2319 | engines: {node: '>=8'} 2320 | dependencies: 2321 | ansi-styles: 4.3.0 2322 | string-width: 4.2.3 2323 | strip-ansi: 6.0.1 2324 | dev: true 2325 | 2326 | /y18n/4.0.3: 2327 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 2328 | dev: true 2329 | 2330 | /yallist/2.1.2: 2331 | resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} 2332 | dev: true 2333 | 2334 | /yargs-parser/18.1.3: 2335 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 2336 | engines: {node: '>=6'} 2337 | dependencies: 2338 | camelcase: 5.3.1 2339 | decamelize: 1.2.0 2340 | dev: true 2341 | 2342 | /yargs/15.4.1: 2343 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 2344 | engines: {node: '>=8'} 2345 | dependencies: 2346 | cliui: 6.0.0 2347 | decamelize: 1.2.0 2348 | find-up: 4.1.0 2349 | get-caller-file: 2.0.5 2350 | require-directory: 2.1.1 2351 | require-main-filename: 2.0.0 2352 | set-blocking: 2.0.0 2353 | string-width: 4.2.3 2354 | which-module: 2.0.0 2355 | y18n: 4.0.3 2356 | yargs-parser: 18.1.3 2357 | dev: true 2358 | 2359 | /yocto-queue/0.1.0: 2360 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2361 | engines: {node: '>=10'} 2362 | dev: true 2363 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - packages/* 3 | -------------------------------------------------------------------------------- /turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turborepo.org/schema.json", 3 | "pipeline": { 4 | "build": { 5 | "dependsOn": ["^build"], 6 | "outputs": ["dist/**"] 7 | }, 8 | "test": { 9 | "dependsOn": ["build"], 10 | "outputs": [] 11 | }, 12 | "lint": { 13 | "outputs": [] 14 | } 15 | } 16 | } 17 | --------------------------------------------------------------------------------