├── .eslintrc.json
├── .github
├── renovate.json5
└── workflows
│ └── test.yaml
├── .gitignore
├── .husky
└── pre-commit
├── .vscode
├── extensions.json
└── settings.json
├── DEV.md
├── LICENSE
├── README.md
├── biome.json
├── example
├── .eslintrc
├── README.md
├── next-env.d.ts
├── package.json
├── pnpm-lock.yaml
├── src
│ ├── pages
│ │ ├── _app.tsx
│ │ ├── api
│ │ │ ├── renew-token.ts
│ │ │ └── trpc
│ │ │ │ └── [trpc].ts
│ │ └── index.tsx
│ ├── server
│ │ ├── appRouter.ts
│ │ ├── context.ts
│ │ └── trpc.ts
│ └── utils
│ │ ├── logLink.ts
│ │ ├── tokenRefresh.ts
│ │ └── trpc.ts
└── tsconfig.json
├── package.json
├── pnpm-lock.yaml
├── src
├── index.test.ts
└── index.ts
├── tsconfig.json
└── vitest.config.ts
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "extends": "@sachinraja"
4 | }
5 |
--------------------------------------------------------------------------------
/.github/renovate.json5:
--------------------------------------------------------------------------------
1 | {
2 | extends: ['config:js-lib', 'github>sachinraja/renovate-config:js'],
3 | }
4 |
--------------------------------------------------------------------------------
/.github/workflows/test.yaml:
--------------------------------------------------------------------------------
1 | name: Test
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 |
9 | jobs:
10 | test:
11 | runs-on: ubuntu-latest
12 |
13 | steps:
14 | - uses: actions/checkout@v4
15 |
16 | - uses: pnpm/action-setup@v2
17 | with:
18 | version: 10
19 |
20 | - uses: actions/setup-node@v4
21 | with:
22 | node-version: 22
23 | cache: 'pnpm'
24 |
25 | - name: Install dependencies
26 | run: pnpm install
27 |
28 | - name: Lint
29 | run: pnpm lint
30 |
31 | - name: Test
32 | run: pnpm test
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 |
132 | .next
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | pnpm format
5 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["dbaeumer.vscode-eslint", "dprint.dprint"]
3 | }
4 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.defaultFormatter": "dprint.dprint",
3 | "dprint.path": "node_modules/dprint/dprint",
4 | "typescript.preferences.importModuleSpecifierEnding": "js",
5 | "[typescript]": {
6 | "editor.defaultFormatter": "biomejs.biome"
7 | },
8 | "[json]": {
9 | "editor.defaultFormatter": "biomejs.biome"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/DEV.md:
--------------------------------------------------------------------------------
1 | ## Publishing a new version
2 |
3 | ```
4 | pnpm run build
5 | pnpm publish:minor
6 | ```
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021-2022 Sachin Raja
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | # tRPC Token Refresh Link
7 |
8 | | Seamlessly update your JWT access token right before it expires.
9 |
10 | - ✅ Works with batching
11 | - ✅ Works with many requests at once. Will only do one token refresh request
12 | - ✅ Works with tRPC v10 and v11
13 |
14 | ## Demo
15 |
16 | This demo shows how the link preserves batching and only does one request to renew the token:
17 |
18 | 
19 |
20 | ## Installation
21 |
22 | ```
23 | npm install trpc-token-refresh-link
24 | ```
25 |
26 | ## Implementation
27 |
28 | ```ts
29 | import { tokenRefreshLink } from "trpc-token-refresh-link"
30 |
31 | tokenRefreshLink({
32 | tokenRefreshNeeded: () => boolean,
33 | fetchAccessToken: async () => void
34 | }),
35 | ```
36 |
37 | ## Example
38 |
39 | ```ts
40 | ...
41 | links: [
42 | tokenRefreshLink({
43 | // access to the original tRPC query operation object
44 | // is accessible on both methods
45 | tokenRefreshNeeded: (query) => {
46 | // on every request, this function is called
47 |
48 | const token = ... // get the token from localstorage or cookies
49 |
50 | if(query.path.includes(/* A route that does not need tokens */)){
51 | return false
52 | }
53 |
54 | if(/* There is no token */){
55 | return false
56 | }
57 |
58 | if(/* Token is valid */){
59 | return false
60 | }
61 |
62 | if(/* Token is expired or expires soon (in 10 seconds) */){
63 | return true
64 | }
65 |
66 | // Return `false` as default statement
67 | return false
68 | },
69 | fetchAccessToken: async (query) => {
70 | // if true is returned from tokenRefreshNeeded, this function will be called
71 |
72 | // do your magic to fetch a refresh token here
73 | // example:
74 | try {
75 | const res = (await fetch("/api/renew-token", {
76 | method: "POST",
77 | }).then((res) => res.json())) as { accessToken: string }
78 |
79 | saveAccessToken(res.accessToken) // save token to cookies
80 | } catch (err) {
81 |
82 | // token refreshing failed, let's log the user out
83 | if (err instanceof Error && err.message.includes("401")) {
84 | clearAccessToken()
85 | location.reload()
86 |
87 | // can also do more precise logs using the original object
88 | console.log(`Token failed blocking the ${query.path} ${query.type}.`)
89 | }
90 | }
91 | },
92 | }),
93 | httpLink({
94 | url,
95 | })
96 | ],
97 | ...
98 | ```
99 |
100 | ## Philosophy
101 |
102 | This library calculates the expiration time for the access token before sending it to the server.
103 |
104 | This means we can refresh the token in advance, not requiring the roundtrip to the server for that.
105 |
106 | This approach means that you need to have a way to read and decode the access token on the client.
107 | If you use a http-only access token (not available to js), this approach will not work.
108 |
109 | ## Credits and similar libraries
110 |
111 | - This library is heavily inspired from [newsiberian/apollo-link-token-refresh](https://github.com/newsiberian/apollo-link-token-refresh).
112 | - [axios-auth-refresh](https://github.com/Flyrell/axios-auth-refresh) - Axios interceptors that refresh token on 403 responses
113 | - [trpc-refresh-token-link](https://github.com/pyncz/trpc-refresh-token-link)
114 |
--------------------------------------------------------------------------------
/biome.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3 | "vcs": {
4 | "enabled": false,
5 | "clientKind": "git",
6 | "useIgnoreFile": false
7 | },
8 | "files": {
9 | "ignoreUnknown": false,
10 | "ignore": ["dist/**", "example/**", "node_modules/**"]
11 | },
12 | "formatter": {
13 | "enabled": true,
14 | "indentStyle": "tab"
15 | },
16 | "organizeImports": {
17 | "enabled": true
18 | },
19 | "linter": {
20 | "enabled": true,
21 | "rules": {
22 | "recommended": true
23 | }
24 | },
25 | "javascript": {
26 | "formatter": {
27 | "quoteStyle": "double"
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/example/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parserOptions": { "project": "tsconfig.json" },
3 | "extends": ["next"]
4 | }
5 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | (copied from trpc/examples/next-minimal-starter)
2 |
3 | # Next.js + TRPC
4 |
5 | This example shows how you can make a typed query using a minimal implementation of TRPC following [`this as a reference`](https://trpc.io/docs/nextjs).
6 |
7 | ## Setup
8 |
9 | ```bash
10 | npx create-next-app --example https://github.com/trpc/trpc --example-path examples/next-minimal-starter trpc-minimal-starter
11 | cd trpc-minimal-starter
12 | npm i
13 | npm run dev
14 | ```
15 |
16 | ## Development
17 |
18 | ### Start project
19 |
20 | ```bash
21 | npm run dev # starts next.js
22 | ```
23 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@examples/next-minimal",
3 | "version": "10.0.0-rc.8",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start"
9 | },
10 | "dependencies": {
11 | "@tanstack/react-query": "^5.24.1",
12 | "@trpc/client": "11.0.0-next-beta.294",
13 | "@trpc/next": "11.0.0-next-beta.294",
14 | "@trpc/react-query": "11.0.0-next-beta.294",
15 | "@trpc/server": "11.0.0-next-beta.294",
16 | "next": "^14.1.0",
17 | "react": "^18.2.0",
18 | "react-dom": "^18.2.0",
19 | "zod": "^3.22.4"
20 | },
21 | "devDependencies": {
22 | "@types/node": "^20.11.22",
23 | "@types/react": "^18.2.60",
24 | "@types/react-dom": "^18.2.19",
25 | "typescript": "^5.3.3"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/example/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@tanstack/react-query':
9 | specifier: ^5.24.1
10 | version: 5.24.1(react@18.2.0)
11 | '@trpc/client':
12 | specifier: 11.0.0-next-beta.294
13 | version: 11.0.0-next-beta.294(@trpc/server@11.0.0-next-beta.294)
14 | '@trpc/next':
15 | specifier: 11.0.0-next-beta.294
16 | version: 11.0.0-next-beta.294(@tanstack/react-query@5.24.1)(@trpc/client@11.0.0-next-beta.294)(@trpc/react-query@11.0.0-next-beta.294)(@trpc/server@11.0.0-next-beta.294)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0)
17 | '@trpc/react-query':
18 | specifier: 11.0.0-next-beta.294
19 | version: 11.0.0-next-beta.294(@tanstack/react-query@5.24.1)(@trpc/client@11.0.0-next-beta.294)(@trpc/server@11.0.0-next-beta.294)(react-dom@18.2.0)(react@18.2.0)
20 | '@trpc/server':
21 | specifier: 11.0.0-next-beta.294
22 | version: 11.0.0-next-beta.294
23 | next:
24 | specifier: ^14.1.0
25 | version: 14.1.0(react-dom@18.2.0)(react@18.2.0)
26 | react:
27 | specifier: ^18.2.0
28 | version: 18.2.0
29 | react-dom:
30 | specifier: ^18.2.0
31 | version: 18.2.0(react@18.2.0)
32 | zod:
33 | specifier: ^3.22.4
34 | version: 3.22.4
35 |
36 | devDependencies:
37 | '@types/node':
38 | specifier: ^20.11.22
39 | version: 20.11.22
40 | '@types/react':
41 | specifier: ^18.2.60
42 | version: 18.2.60
43 | '@types/react-dom':
44 | specifier: ^18.2.19
45 | version: 18.2.19
46 | typescript:
47 | specifier: ^5.3.3
48 | version: 5.3.3
49 |
50 | packages:
51 |
52 | /@next/env@14.1.0:
53 | resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==}
54 | dev: false
55 |
56 | /@next/swc-darwin-arm64@14.1.0:
57 | resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==}
58 | engines: {node: '>= 10'}
59 | cpu: [arm64]
60 | os: [darwin]
61 | requiresBuild: true
62 | dev: false
63 | optional: true
64 |
65 | /@next/swc-darwin-x64@14.1.0:
66 | resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==}
67 | engines: {node: '>= 10'}
68 | cpu: [x64]
69 | os: [darwin]
70 | requiresBuild: true
71 | dev: false
72 | optional: true
73 |
74 | /@next/swc-linux-arm64-gnu@14.1.0:
75 | resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==}
76 | engines: {node: '>= 10'}
77 | cpu: [arm64]
78 | os: [linux]
79 | requiresBuild: true
80 | dev: false
81 | optional: true
82 |
83 | /@next/swc-linux-arm64-musl@14.1.0:
84 | resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==}
85 | engines: {node: '>= 10'}
86 | cpu: [arm64]
87 | os: [linux]
88 | requiresBuild: true
89 | dev: false
90 | optional: true
91 |
92 | /@next/swc-linux-x64-gnu@14.1.0:
93 | resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==}
94 | engines: {node: '>= 10'}
95 | cpu: [x64]
96 | os: [linux]
97 | requiresBuild: true
98 | dev: false
99 | optional: true
100 |
101 | /@next/swc-linux-x64-musl@14.1.0:
102 | resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==}
103 | engines: {node: '>= 10'}
104 | cpu: [x64]
105 | os: [linux]
106 | requiresBuild: true
107 | dev: false
108 | optional: true
109 |
110 | /@next/swc-win32-arm64-msvc@14.1.0:
111 | resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==}
112 | engines: {node: '>= 10'}
113 | cpu: [arm64]
114 | os: [win32]
115 | requiresBuild: true
116 | dev: false
117 | optional: true
118 |
119 | /@next/swc-win32-ia32-msvc@14.1.0:
120 | resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==}
121 | engines: {node: '>= 10'}
122 | cpu: [ia32]
123 | os: [win32]
124 | requiresBuild: true
125 | dev: false
126 | optional: true
127 |
128 | /@next/swc-win32-x64-msvc@14.1.0:
129 | resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==}
130 | engines: {node: '>= 10'}
131 | cpu: [x64]
132 | os: [win32]
133 | requiresBuild: true
134 | dev: false
135 | optional: true
136 |
137 | /@swc/helpers@0.5.2:
138 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
139 | dependencies:
140 | tslib: 2.6.2
141 | dev: false
142 |
143 | /@tanstack/query-core@5.24.1:
144 | resolution: {integrity: sha512-DZ6Nx9p7BhjkG50ayJ+MKPgff+lMeol7QYXkvuU5jr2ryW/4ok5eanaS9W5eooA4xN0A/GPHdLGOZGzArgf5Cg==}
145 | dev: false
146 |
147 | /@tanstack/react-query@5.24.1(react@18.2.0):
148 | resolution: {integrity: sha512-4+09JEdO4d6+Gc8Y/g2M/MuxDK5IY0QV8+2wL2304wPKJgJ54cBbULd3nciJ5uvh/as8rrxx6s0mtIwpRuGd1g==}
149 | peerDependencies:
150 | react: ^18.0.0
151 | dependencies:
152 | '@tanstack/query-core': 5.24.1
153 | react: 18.2.0
154 | dev: false
155 |
156 | /@trpc/client@11.0.0-next-beta.294(@trpc/server@11.0.0-next-beta.294):
157 | resolution: {integrity: sha512-9rK+bwg7TPNsvisDAanaAiR2TYmgFA2zNll4TexUGKQaQ09dt6ZPdFDqWIZqa33cyoXeK9Z5LQptr3NVfaSjNA==}
158 | peerDependencies:
159 | '@trpc/server': 11.0.0-next-beta.294+1e32ff91b
160 | dependencies:
161 | '@trpc/server': 11.0.0-next-beta.294
162 | dev: false
163 |
164 | /@trpc/next@11.0.0-next-beta.294(@tanstack/react-query@5.24.1)(@trpc/client@11.0.0-next-beta.294)(@trpc/react-query@11.0.0-next-beta.294)(@trpc/server@11.0.0-next-beta.294)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0):
165 | resolution: {integrity: sha512-wQ9bh3QnPSD1e8EfWTt3iSj3OT4KjncO4RkPMuZM89FPD4AjWWW3jqkkibcQ+92q4MZ1J5zJmwzdY/Hn+9B/AA==}
166 | peerDependencies:
167 | '@tanstack/react-query': ^5.0.0
168 | '@trpc/client': 11.0.0-next-beta.294+1e32ff91b
169 | '@trpc/react-query': 11.0.0-next-beta.294+1e32ff91b
170 | '@trpc/server': 11.0.0-next-beta.294+1e32ff91b
171 | next: '*'
172 | react: '>=16.8.0'
173 | react-dom: '>=16.8.0'
174 | peerDependenciesMeta:
175 | '@tanstack/react-query':
176 | optional: true
177 | '@trpc/react-query':
178 | optional: true
179 | dependencies:
180 | '@tanstack/react-query': 5.24.1(react@18.2.0)
181 | '@trpc/client': 11.0.0-next-beta.294(@trpc/server@11.0.0-next-beta.294)
182 | '@trpc/react-query': 11.0.0-next-beta.294(@tanstack/react-query@5.24.1)(@trpc/client@11.0.0-next-beta.294)(@trpc/server@11.0.0-next-beta.294)(react-dom@18.2.0)(react@18.2.0)
183 | '@trpc/server': 11.0.0-next-beta.294
184 | next: 14.1.0(react-dom@18.2.0)(react@18.2.0)
185 | react: 18.2.0
186 | react-dom: 18.2.0(react@18.2.0)
187 | dev: false
188 |
189 | /@trpc/react-query@11.0.0-next-beta.294(@tanstack/react-query@5.24.1)(@trpc/client@11.0.0-next-beta.294)(@trpc/server@11.0.0-next-beta.294)(react-dom@18.2.0)(react@18.2.0):
190 | resolution: {integrity: sha512-behVOMsJRh73wltFrLc7J3ulWO/A2O529oDWlFZagtM2i/WWM2/7CVh3iL1MgW5pRB3hwC9mARKpGb80ZN4V0A==}
191 | peerDependencies:
192 | '@tanstack/react-query': ^5.0.0
193 | '@trpc/client': 11.0.0-next-beta.294+1e32ff91b
194 | '@trpc/server': 11.0.0-next-beta.294+1e32ff91b
195 | react: '>=18.2.0'
196 | react-dom: '>=18.2.0'
197 | dependencies:
198 | '@tanstack/react-query': 5.24.1(react@18.2.0)
199 | '@trpc/client': 11.0.0-next-beta.294(@trpc/server@11.0.0-next-beta.294)
200 | '@trpc/server': 11.0.0-next-beta.294
201 | react: 18.2.0
202 | react-dom: 18.2.0(react@18.2.0)
203 | dev: false
204 |
205 | /@trpc/server@11.0.0-next-beta.294:
206 | resolution: {integrity: sha512-wwz78kfl4c8WQ3ytjzYf3SM8uxhvhSRYVxqqChPM+IbDb9scfNyEsZOUzSWds8brFNgO3LHeHYkP0l8S4YdDXA==}
207 | dev: false
208 |
209 | /@types/node@20.11.22:
210 | resolution: {integrity: sha512-/G+IxWxma6V3E+pqK1tSl2Fo1kl41pK1yeCyDsgkF9WlVAme4j5ISYM2zR11bgLFJGLN5sVK40T4RJNuiZbEjA==}
211 | dependencies:
212 | undici-types: 5.26.5
213 | dev: true
214 |
215 | /@types/prop-types@15.7.11:
216 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
217 | dev: true
218 |
219 | /@types/react-dom@18.2.19:
220 | resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==}
221 | dependencies:
222 | '@types/react': 18.2.60
223 | dev: true
224 |
225 | /@types/react@18.2.60:
226 | resolution: {integrity: sha512-dfiPj9+k20jJrLGOu9Nf6eqxm2EyJRrq2NvwOFsfbb7sFExZ9WELPs67UImHj3Ayxg8ruTtKtNnbjaF8olPq0A==}
227 | dependencies:
228 | '@types/prop-types': 15.7.11
229 | '@types/scheduler': 0.16.8
230 | csstype: 3.1.3
231 | dev: true
232 |
233 | /@types/scheduler@0.16.8:
234 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
235 | dev: true
236 |
237 | /busboy@1.6.0:
238 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
239 | engines: {node: '>=10.16.0'}
240 | dependencies:
241 | streamsearch: 1.1.0
242 | dev: false
243 |
244 | /caniuse-lite@1.0.30001591:
245 | resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==}
246 | dev: false
247 |
248 | /client-only@0.0.1:
249 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
250 | dev: false
251 |
252 | /csstype@3.1.3:
253 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
254 | dev: true
255 |
256 | /graceful-fs@4.2.11:
257 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
258 | dev: false
259 |
260 | /js-tokens@4.0.0:
261 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
262 | dev: false
263 |
264 | /loose-envify@1.4.0:
265 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
266 | hasBin: true
267 | dependencies:
268 | js-tokens: 4.0.0
269 | dev: false
270 |
271 | /nanoid@3.3.7:
272 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
273 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
274 | hasBin: true
275 | dev: false
276 |
277 | /next@14.1.0(react-dom@18.2.0)(react@18.2.0):
278 | resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==}
279 | engines: {node: '>=18.17.0'}
280 | hasBin: true
281 | peerDependencies:
282 | '@opentelemetry/api': ^1.1.0
283 | react: ^18.2.0
284 | react-dom: ^18.2.0
285 | sass: ^1.3.0
286 | peerDependenciesMeta:
287 | '@opentelemetry/api':
288 | optional: true
289 | sass:
290 | optional: true
291 | dependencies:
292 | '@next/env': 14.1.0
293 | '@swc/helpers': 0.5.2
294 | busboy: 1.6.0
295 | caniuse-lite: 1.0.30001591
296 | graceful-fs: 4.2.11
297 | postcss: 8.4.31
298 | react: 18.2.0
299 | react-dom: 18.2.0(react@18.2.0)
300 | styled-jsx: 5.1.1(react@18.2.0)
301 | optionalDependencies:
302 | '@next/swc-darwin-arm64': 14.1.0
303 | '@next/swc-darwin-x64': 14.1.0
304 | '@next/swc-linux-arm64-gnu': 14.1.0
305 | '@next/swc-linux-arm64-musl': 14.1.0
306 | '@next/swc-linux-x64-gnu': 14.1.0
307 | '@next/swc-linux-x64-musl': 14.1.0
308 | '@next/swc-win32-arm64-msvc': 14.1.0
309 | '@next/swc-win32-ia32-msvc': 14.1.0
310 | '@next/swc-win32-x64-msvc': 14.1.0
311 | transitivePeerDependencies:
312 | - '@babel/core'
313 | - babel-plugin-macros
314 | dev: false
315 |
316 | /picocolors@1.0.0:
317 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
318 | dev: false
319 |
320 | /postcss@8.4.31:
321 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
322 | engines: {node: ^10 || ^12 || >=14}
323 | dependencies:
324 | nanoid: 3.3.7
325 | picocolors: 1.0.0
326 | source-map-js: 1.0.2
327 | dev: false
328 |
329 | /react-dom@18.2.0(react@18.2.0):
330 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
331 | peerDependencies:
332 | react: ^18.2.0
333 | dependencies:
334 | loose-envify: 1.4.0
335 | react: 18.2.0
336 | scheduler: 0.23.0
337 | dev: false
338 |
339 | /react@18.2.0:
340 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
341 | engines: {node: '>=0.10.0'}
342 | dependencies:
343 | loose-envify: 1.4.0
344 | dev: false
345 |
346 | /scheduler@0.23.0:
347 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
348 | dependencies:
349 | loose-envify: 1.4.0
350 | dev: false
351 |
352 | /source-map-js@1.0.2:
353 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
354 | engines: {node: '>=0.10.0'}
355 | dev: false
356 |
357 | /streamsearch@1.1.0:
358 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
359 | engines: {node: '>=10.0.0'}
360 | dev: false
361 |
362 | /styled-jsx@5.1.1(react@18.2.0):
363 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
364 | engines: {node: '>= 12.0.0'}
365 | peerDependencies:
366 | '@babel/core': '*'
367 | babel-plugin-macros: '*'
368 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
369 | peerDependenciesMeta:
370 | '@babel/core':
371 | optional: true
372 | babel-plugin-macros:
373 | optional: true
374 | dependencies:
375 | client-only: 0.0.1
376 | react: 18.2.0
377 | dev: false
378 |
379 | /tslib@2.6.2:
380 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
381 | dev: false
382 |
383 | /typescript@5.3.3:
384 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
385 | engines: {node: '>=14.17'}
386 | hasBin: true
387 | dev: true
388 |
389 | /undici-types@5.26.5:
390 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
391 | dev: true
392 |
393 | /zod@3.22.4:
394 | resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
395 | dev: false
396 |
--------------------------------------------------------------------------------
/example/src/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import type { AppType } from "next/app";
2 | import { trpc } from "../utils/trpc";
3 |
4 | const MyApp: AppType = ({ Component, pageProps }) => {
5 | return ;
6 | };
7 |
8 | export default trpc.withTRPC(MyApp);
9 |
--------------------------------------------------------------------------------
/example/src/pages/api/renew-token.ts:
--------------------------------------------------------------------------------
1 | import { NextApiRequest, NextApiResponse } from "next";
2 | import { createAccessToken } from "~/server/appRouter";
3 |
4 | async function renewToken(req: NextApiRequest, res: NextApiResponse) {
5 | await new Promise((resolve) => setTimeout(resolve, 2000));
6 |
7 | return res.status(200).json({
8 | accessToken: createAccessToken(),
9 | });
10 | }
11 |
12 | export default renewToken;
13 |
--------------------------------------------------------------------------------
/example/src/pages/api/trpc/[trpc].ts:
--------------------------------------------------------------------------------
1 | /**
2 | * This is the API-handler of your app that contains all your API routes.
3 | * On a bigger app, you will probably want to split this file up into multiple files.
4 | */
5 | import * as trpcNext from "@trpc/server/adapters/next";
6 | import { createContext } from "~/server/context";
7 | import { appRouter } from "../../../server/appRouter";
8 |
9 | // export only the type definition of the API
10 | // None of the actual implementation is exposed to the client
11 |
12 | // export API handler
13 | export default trpcNext.createNextApiHandler({
14 | router: appRouter,
15 | createContext: createContext,
16 | });
17 |
--------------------------------------------------------------------------------
/example/src/pages/index.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * This is a Next.js page.
3 | */
4 | import { differenceInSeconds } from "date-fns";
5 | import { useEffect, useState } from "react";
6 | import { tokenRefreshNeeded } from "~/utils/tokenRefresh";
7 | import { trpc } from "../utils/trpc";
8 |
9 | export default function IndexPage() {
10 | const { mutate: publicMutation } = trpc.publicTest.useMutation();
11 |
12 | const { mutate: privateMutation } = trpc.privateTest.useMutation();
13 |
14 | const { mutate: loginMutation } = trpc.login.useMutation({
15 | onSuccess: ({ accessToken, refreshToken }) => {
16 | localStorage.setItem("accessToken", accessToken);
17 | localStorage.setItem("refreshToken", refreshToken);
18 | },
19 | });
20 |
21 | return (
22 |
23 |
24 |
token-refresh-link example
25 |
26 |
27 |
28 |
29 |
30 |
38 |
39 |
40 | );
41 | }
42 |
43 | const TokenInfos = () => {
44 | const [_, setTick] = useState(0);
45 |
46 | const [accessToken, setAccessToken] = useState();
47 | const [isTokenRefreshNeeded, setIsTokenRefreshNeeded] = useState(false);
48 |
49 | const [refreshToken, setRefreshToken] = useState();
50 |
51 | useEffect(() => {
52 | const interval = setInterval(() => {
53 | const accessToken = localStorage.getItem("accessToken");
54 | const refreshToken = localStorage.getItem("refreshToken");
55 | setAccessToken(accessToken);
56 | setIsTokenRefreshNeeded(tokenRefreshNeeded());
57 | setRefreshToken(refreshToken);
58 | setTick((tick) => tick + 1);
59 | }, 200);
60 | return () => clearInterval(interval);
61 | }, []);
62 |
63 | const accessTokenExpiresIn = accessToken
64 | ? differenceInSeconds(new Date(accessToken), new Date())
65 | : 0;
66 |
67 | return (
68 |
69 |
70 | Access token:{" "}
71 | {accessToken ? (
72 | <>
73 | {accessTokenExpiresIn > 0 ? (
74 | <>(expires in {accessTokenExpiresIn}s)>
75 | ) : (
76 | <>(expired)>
77 | )}
78 | >
79 | ) : null}
80 |
81 |
tokenRefreshNeeded: {isTokenRefreshNeeded ? "true" : "false"}
82 |
Refresh token: {refreshToken}
83 |
84 | );
85 | };
86 |
--------------------------------------------------------------------------------
/example/src/server/appRouter.ts:
--------------------------------------------------------------------------------
1 | import { addSeconds } from "date-fns";
2 | import { protectedProcedure, publicProcedure, router } from "~/server/trpc";
3 |
4 | export const createAccessToken = () => {
5 | return addSeconds(new Date(), 10).toISOString();
6 | };
7 |
8 | export const appRouter = router({
9 | publicTest: publicProcedure.mutation(() => {
10 | return {
11 | message: `hello world ${Math.random()}`,
12 | };
13 | }),
14 | login: publicProcedure.mutation(() => {
15 | const accessToken = createAccessToken();
16 | const refreshToken = "123abc";
17 | return {
18 | accessToken,
19 | refreshToken,
20 | };
21 | }),
22 | privateTest: protectedProcedure.mutation(() => {
23 | return {
24 | message: `hello protected world ${Math.random()}`,
25 | };
26 | }),
27 | // 💡 Tip: Try adding a new procedure here and see if you can use it in the client!
28 | // getUser: t.procedure.query(() => {
29 | // return { id: '1', name: 'bob' };
30 | // }),
31 | });
32 |
33 | export type AppRouter = typeof appRouter;
34 |
--------------------------------------------------------------------------------
/example/src/server/context.ts:
--------------------------------------------------------------------------------
1 | import * as trpc from "@trpc/server";
2 | import * as trpcNext from "@trpc/server/adapters/next";
3 | import { isFuture } from "date-fns";
4 | import { getAccessTokenExpiration } from "~/utils/tokenRefresh";
5 |
6 | export const createContext = (opts?: trpcNext.CreateNextContextOptions) => {
7 | const req = opts?.req;
8 | const res = opts?.res;
9 |
10 | const accessToken = req?.headers["x-access-token"];
11 | const isValid =
12 | typeof accessToken === "string" &&
13 | typeof Date.parse(accessToken) === "number";
14 | const expiration = isValid
15 | ? getAccessTokenExpiration(accessToken)
16 | : undefined;
17 |
18 | const isAuthenticated =
19 | (expiration && isFuture(new Date(expiration))) || false;
20 |
21 | return {
22 | req,
23 | res,
24 | isAuthenticated,
25 | };
26 | };
27 |
28 | export type Context = trpc.inferAsyncReturnType;
29 |
--------------------------------------------------------------------------------
/example/src/server/trpc.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * This is your entry point to setup the root configuration for tRPC on the server.
3 | * - `initTRPC` should only be used once per app.
4 | * - We export only the functionality that we use so we can enforce which base procedures should be used
5 | *
6 | * Learn how to create protected base procedures and other things below:
7 | * @see https://trpc.io/docs/v10/router
8 | * @see https://trpc.io/docs/v10/procedures
9 | */
10 | import { initTRPC, TRPCError } from "@trpc/server";
11 | import { Context } from "./context";
12 |
13 | const t = initTRPC.context().create();
14 |
15 | const baseProcedure = t.procedure.use(
16 | t.middleware(async ({ ctx, next }) => {
17 | // add delay to simulate a slow request
18 | await new Promise((resolve) => setTimeout(resolve, 500));
19 |
20 | return next();
21 | }),
22 | );
23 |
24 | /**
25 | * Unprotected procedure
26 | */
27 | export const publicProcedure = baseProcedure;
28 |
29 | export const protectedProcedure = baseProcedure.use(
30 | t.middleware(async ({ ctx, next }) => {
31 | if (!ctx.isAuthenticated) {
32 | throw new TRPCError({ code: "UNAUTHORIZED" });
33 | }
34 | return next();
35 | }),
36 | );
37 |
38 | export const router = t.router;
39 | export const middleware = t.middleware;
40 |
--------------------------------------------------------------------------------
/example/src/utils/logLink.ts:
--------------------------------------------------------------------------------
1 | import { TRPCLink } from "@trpc/client";
2 | import { observable } from "@trpc/server/observable";
3 | import { AppRouter } from "~/server/appRouter";
4 |
5 | export const logLink: TRPCLink = () => {
6 | return ({ next, op }) => {
7 | console.log(op.path);
8 | // each link needs to return an observable which propagates results
9 | return observable((observer) => {
10 | const unsubscribe = next(op).subscribe({
11 | next(value) {
12 | observer.next(value);
13 | },
14 | error(error) {
15 | console.log(op.path + " ❌");
16 | observer.error(error);
17 | },
18 | complete() {
19 | console.log(op.path + " ✅");
20 | observer.complete();
21 | },
22 | });
23 | return unsubscribe;
24 | });
25 | };
26 | };
27 |
--------------------------------------------------------------------------------
/example/src/utils/tokenRefresh.ts:
--------------------------------------------------------------------------------
1 | import { tokenRefreshLink as tokenRefresh } from "../../../dist/index.js";
2 |
3 | export const RENEW_MS_BEFORE_EXPIRATION = 5000;
4 |
5 | export const getAccessTokenExpiration = (accessToken: string) => {
6 | return new Date(accessToken).getTime();
7 | };
8 |
9 | export const tokenRefreshNeeded = () => {
10 | const accessToken = localStorage.getItem("accessToken");
11 |
12 | if (!accessToken) return false;
13 |
14 | const expirationTimeInMilliseconds = getAccessTokenExpiration(accessToken);
15 |
16 | if (!expirationTimeInMilliseconds) {
17 | // If there is no expiration time, the token is not valid
18 | return true;
19 | }
20 |
21 | const now = new Date();
22 |
23 | const millisecondsUntilExpiration =
24 | expirationTimeInMilliseconds - now.getTime();
25 |
26 | if (millisecondsUntilExpiration >= RENEW_MS_BEFORE_EXPIRATION) {
27 | // token is valid for a while, no need to renew
28 | return false;
29 | } else {
30 | // we need to renew (it is either already expired or soon expiring)
31 | return true;
32 | }
33 | };
34 |
35 | export const tokenRefreshLink = tokenRefresh({
36 | tokenRefreshNeeded,
37 | fetchAccessToken: async () => {
38 | try {
39 | console.log("fetching new access token 🌱");
40 | const rsp = await fetch("/api/renew-token", {
41 | method: "POST",
42 | });
43 |
44 | if (rsp.ok) {
45 | const { accessToken } = (await rsp.json()) as { accessToken: string };
46 | localStorage.setItem("accessToken", accessToken);
47 | } else {
48 | const { error } = (await rsp.json()) as { error: string };
49 | throw error;
50 | }
51 | } catch (err) {
52 | // token refreshing failed, usually you would want to logout the user here
53 | }
54 | },
55 | });
56 |
--------------------------------------------------------------------------------
/example/src/utils/trpc.ts:
--------------------------------------------------------------------------------
1 | import { httpBatchLink } from "@trpc/client";
2 | import { createTRPCNext } from "@trpc/next";
3 | import type { AppRouter } from "~/server/appRouter";
4 | import { logLink } from "./logLink";
5 | import { tokenRefreshLink } from "./tokenRefresh";
6 |
7 | function getBaseUrl() {
8 | if (typeof window !== "undefined") {
9 | // In the browser, we return a relative URL
10 | return "";
11 | }
12 | // When rendering on the server, we return an absolute URL
13 |
14 | // reference for vercel.com
15 | if (process.env.VERCEL_URL) {
16 | return `https://${process.env.VERCEL_URL}`;
17 | }
18 |
19 | // assume localhost
20 | return `http://localhost:${process.env.PORT ?? 3000}`;
21 | }
22 |
23 | export const trpc = createTRPCNext({
24 | config() {
25 | return {
26 | links: [
27 | logLink,
28 | tokenRefreshLink,
29 | httpBatchLink({
30 | url: getBaseUrl() + "/api/trpc",
31 | headers: () => ({
32 | "x-access-token":
33 | (typeof window != "undefined" &&
34 | localStorage.getItem("accessToken")) ||
35 | undefined,
36 | }),
37 | }),
38 | ],
39 | };
40 | },
41 | });
42 |
--------------------------------------------------------------------------------
/example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "incremental": true,
17 | "baseUrl": ".",
18 | "paths": {
19 | "~/*": ["src/*"]
20 | }
21 | },
22 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
23 | "exclude": ["node_modules"]
24 | }
25 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "trpc-token-refresh-link",
3 | "version": "0.5.3",
4 | "type": "module",
5 | "description": "Token Refresh Link for tRPC",
6 | "main": "dist/index.cjs",
7 | "repository": {
8 | "type": "git",
9 | "url": "https://github.com/larskarbo/trpc-token-refresh-link"
10 | },
11 | "exports": {
12 | "./package.json": "./package.json",
13 | ".": {
14 | "import": "./dist/index.js",
15 | "default": "./dist/index.cjs"
16 | }
17 | },
18 | "types": "dist/index.d.ts",
19 | "files": [
20 | "dist"
21 | ],
22 | "scripts": {
23 | "dev": "tsup --watch",
24 | "build": "tsup",
25 | "format": "biome format --write .",
26 | "lint": "run-p lint:*",
27 | "lint:format": "biome check .",
28 | "lint:types": "tsc --noEmit",
29 | "lint:js": "biome check --apply .",
30 | "prepare": "husky install",
31 | "prepublishOnly": "pnpm build",
32 | "test": "vitest run",
33 | "test:watch": "vitest",
34 | "test:coverage": "vitest run --coverage",
35 | "publish:patch": "pnpm version patch && pnpm publish",
36 | "publish:minor": "pnpm version minor && pnpm publish"
37 | },
38 | "devDependencies": {
39 | "@biomejs/biome": "1.5.3",
40 | "@sachinraja/eslint-config": "0.1.1",
41 | "@types/node": "18.7.14",
42 | "husky": "8.0.1",
43 | "nano-staged": "0.8.0",
44 | "npm-run-all": "4.1.5",
45 | "tsup": "6.2.3",
46 | "typescript": "4.8.2",
47 | "vite": "3.0.9",
48 | "vitest": "0.23.0"
49 | },
50 | "sideEffects": false,
51 | "nano-staged": {
52 | "*.{ts,tsx,js,jsx,json,md}": "biome format --write"
53 | },
54 | "tsup": {
55 | "entry": [
56 | "src/index.ts"
57 | ],
58 | "format": [
59 | "esm",
60 | "cjs"
61 | ],
62 | "dts": {
63 | "resolve": true
64 | },
65 | "splitting": true,
66 | "clean": true
67 | },
68 | "packageManager": "pnpm@10.4.1",
69 | "dependencies": {
70 | "@trpc/client": "^10.0.0 || ^11.0.0-next-beta.294",
71 | "@trpc/server": "^10.0.0 || ^11.0.0-next-beta.294"
72 | },
73 | "pnpm": {
74 | "ignoredBuiltDependencies": [
75 | "esbuild"
76 | ],
77 | "onlyBuiltDependencies": [
78 | "@biomejs/biome",
79 | "esbuild"
80 | ]
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@trpc/client':
12 | specifier: ^10.0.0 || ^11.0.0-next-beta.294
13 | version: 10.45.2(@trpc/server@10.45.2)
14 | '@trpc/server':
15 | specifier: ^10.0.0 || ^11.0.0-next-beta.294
16 | version: 10.45.2
17 | devDependencies:
18 | '@biomejs/biome':
19 | specifier: 1.5.3
20 | version: 1.5.3
21 | '@sachinraja/eslint-config':
22 | specifier: 0.1.1
23 | version: 0.1.1(eslint@8.23.0)(typescript@4.8.2)
24 | '@types/node':
25 | specifier: 18.7.14
26 | version: 18.7.14
27 | husky:
28 | specifier: 8.0.1
29 | version: 8.0.1
30 | nano-staged:
31 | specifier: 0.8.0
32 | version: 0.8.0
33 | npm-run-all:
34 | specifier: 4.1.5
35 | version: 4.1.5
36 | tsup:
37 | specifier: 6.2.3
38 | version: 6.2.3(postcss@8.5.3)(typescript@4.8.2)
39 | typescript:
40 | specifier: 4.8.2
41 | version: 4.8.2
42 | vite:
43 | specifier: 3.0.9
44 | version: 3.0.9
45 | vitest:
46 | specifier: 0.23.0
47 | version: 0.23.0
48 |
49 | packages:
50 |
51 | '@babel/code-frame@7.26.2':
52 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
53 | engines: {node: '>=6.9.0'}
54 |
55 | '@babel/helper-validator-identifier@7.25.9':
56 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
57 | engines: {node: '>=6.9.0'}
58 |
59 | '@biomejs/biome@1.5.3':
60 | resolution: {integrity: sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==}
61 | engines: {node: '>=14.*'}
62 | hasBin: true
63 |
64 | '@biomejs/cli-darwin-arm64@1.5.3':
65 | resolution: {integrity: sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==}
66 | engines: {node: '>=14.*'}
67 | cpu: [arm64]
68 | os: [darwin]
69 |
70 | '@biomejs/cli-darwin-x64@1.5.3':
71 | resolution: {integrity: sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==}
72 | engines: {node: '>=14.*'}
73 | cpu: [x64]
74 | os: [darwin]
75 |
76 | '@biomejs/cli-linux-arm64-musl@1.5.3':
77 | resolution: {integrity: sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==}
78 | engines: {node: '>=14.*'}
79 | cpu: [arm64]
80 | os: [linux]
81 |
82 | '@biomejs/cli-linux-arm64@1.5.3':
83 | resolution: {integrity: sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==}
84 | engines: {node: '>=14.*'}
85 | cpu: [arm64]
86 | os: [linux]
87 |
88 | '@biomejs/cli-linux-x64-musl@1.5.3':
89 | resolution: {integrity: sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==}
90 | engines: {node: '>=14.*'}
91 | cpu: [x64]
92 | os: [linux]
93 |
94 | '@biomejs/cli-linux-x64@1.5.3':
95 | resolution: {integrity: sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==}
96 | engines: {node: '>=14.*'}
97 | cpu: [x64]
98 | os: [linux]
99 |
100 | '@biomejs/cli-win32-arm64@1.5.3':
101 | resolution: {integrity: sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==}
102 | engines: {node: '>=14.*'}
103 | cpu: [arm64]
104 | os: [win32]
105 |
106 | '@biomejs/cli-win32-x64@1.5.3':
107 | resolution: {integrity: sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==}
108 | engines: {node: '>=14.*'}
109 | cpu: [x64]
110 | os: [win32]
111 |
112 | '@esbuild/android-arm@0.15.18':
113 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
114 | engines: {node: '>=12'}
115 | cpu: [arm]
116 | os: [android]
117 |
118 | '@esbuild/linux-loong64@0.14.54':
119 | resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==}
120 | engines: {node: '>=12'}
121 | cpu: [loong64]
122 | os: [linux]
123 |
124 | '@esbuild/linux-loong64@0.15.18':
125 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
126 | engines: {node: '>=12'}
127 | cpu: [loong64]
128 | os: [linux]
129 |
130 | '@eslint/eslintrc@1.4.1':
131 | resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
132 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
133 |
134 | '@humanwhocodes/config-array@0.10.7':
135 | resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==}
136 | engines: {node: '>=10.10.0'}
137 | deprecated: Use @eslint/config-array instead
138 |
139 | '@humanwhocodes/gitignore-to-minimatch@1.0.2':
140 | resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==}
141 |
142 | '@humanwhocodes/module-importer@1.0.1':
143 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
144 | engines: {node: '>=12.22'}
145 |
146 | '@humanwhocodes/object-schema@1.2.1':
147 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
148 | deprecated: Use @eslint/object-schema instead
149 |
150 | '@isaacs/cliui@8.0.2':
151 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
152 | engines: {node: '>=12'}
153 |
154 | '@jridgewell/gen-mapping@0.3.8':
155 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
156 | engines: {node: '>=6.0.0'}
157 |
158 | '@jridgewell/resolve-uri@3.1.2':
159 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
160 | engines: {node: '>=6.0.0'}
161 |
162 | '@jridgewell/set-array@1.2.1':
163 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
164 | engines: {node: '>=6.0.0'}
165 |
166 | '@jridgewell/sourcemap-codec@1.5.0':
167 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
168 |
169 | '@jridgewell/trace-mapping@0.3.25':
170 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
171 |
172 | '@nodelib/fs.scandir@2.1.5':
173 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
174 | engines: {node: '>= 8'}
175 |
176 | '@nodelib/fs.stat@2.0.5':
177 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
178 | engines: {node: '>= 8'}
179 |
180 | '@nodelib/fs.walk@1.2.8':
181 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
182 | engines: {node: '>= 8'}
183 |
184 | '@pkgjs/parseargs@0.11.0':
185 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
186 | engines: {node: '>=14'}
187 |
188 | '@sachinraja/eslint-config@0.1.1':
189 | resolution: {integrity: sha512-40fNIlAh2zZKSAscTymtKrVp+FSXXYEgJBGh1TBsnPyHnyiIUwz3ND9XNvG0eUiRec33xk6FMl+0I7V1RtlzHw==}
190 | peerDependencies:
191 | '@types/eslint': ^8
192 | eslint: ^8
193 | peerDependenciesMeta:
194 | '@types/eslint':
195 | optional: true
196 |
197 | '@trpc/client@10.45.2':
198 | resolution: {integrity: sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg==}
199 | peerDependencies:
200 | '@trpc/server': 10.45.2
201 |
202 | '@trpc/server@10.45.2':
203 | resolution: {integrity: sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg==}
204 |
205 | '@types/chai-subset@1.3.5':
206 | resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==}
207 |
208 | '@types/chai@4.3.20':
209 | resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==}
210 |
211 | '@types/json-schema@7.0.15':
212 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
213 |
214 | '@types/node@18.7.14':
215 | resolution: {integrity: sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==}
216 |
217 | '@types/normalize-package-data@2.4.4':
218 | resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
219 |
220 | '@typescript-eslint/eslint-plugin@5.27.0':
221 | resolution: {integrity: sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==}
222 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
223 | peerDependencies:
224 | '@typescript-eslint/parser': ^5.0.0
225 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
226 | typescript: '*'
227 | peerDependenciesMeta:
228 | typescript:
229 | optional: true
230 |
231 | '@typescript-eslint/parser@5.27.0':
232 | resolution: {integrity: sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==}
233 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
234 | peerDependencies:
235 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
236 | typescript: '*'
237 | peerDependenciesMeta:
238 | typescript:
239 | optional: true
240 |
241 | '@typescript-eslint/scope-manager@5.27.0':
242 | resolution: {integrity: sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g==}
243 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
244 |
245 | '@typescript-eslint/type-utils@5.27.0':
246 | resolution: {integrity: sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g==}
247 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
248 | peerDependencies:
249 | eslint: '*'
250 | typescript: '*'
251 | peerDependenciesMeta:
252 | typescript:
253 | optional: true
254 |
255 | '@typescript-eslint/types@5.27.0':
256 | resolution: {integrity: sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==}
257 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
258 |
259 | '@typescript-eslint/typescript-estree@5.27.0':
260 | resolution: {integrity: sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==}
261 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
262 | peerDependencies:
263 | typescript: '*'
264 | peerDependenciesMeta:
265 | typescript:
266 | optional: true
267 |
268 | '@typescript-eslint/utils@5.27.0':
269 | resolution: {integrity: sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA==}
270 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
271 | peerDependencies:
272 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
273 |
274 | '@typescript-eslint/visitor-keys@5.27.0':
275 | resolution: {integrity: sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==}
276 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
277 |
278 | acorn-jsx@5.3.2:
279 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
280 | peerDependencies:
281 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
282 |
283 | acorn@8.14.0:
284 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
285 | engines: {node: '>=0.4.0'}
286 | hasBin: true
287 |
288 | ajv@6.12.6:
289 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
290 |
291 | ansi-regex@5.0.1:
292 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
293 | engines: {node: '>=8'}
294 |
295 | ansi-regex@6.1.0:
296 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
297 | engines: {node: '>=12'}
298 |
299 | ansi-styles@3.2.1:
300 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
301 | engines: {node: '>=4'}
302 |
303 | ansi-styles@4.3.0:
304 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
305 | engines: {node: '>=8'}
306 |
307 | ansi-styles@6.2.1:
308 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
309 | engines: {node: '>=12'}
310 |
311 | any-promise@1.3.0:
312 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
313 |
314 | anymatch@3.1.3:
315 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
316 | engines: {node: '>= 8'}
317 |
318 | argparse@2.0.1:
319 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
320 |
321 | array-buffer-byte-length@1.0.2:
322 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
323 | engines: {node: '>= 0.4'}
324 |
325 | array-union@2.1.0:
326 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
327 | engines: {node: '>=8'}
328 |
329 | arraybuffer.prototype.slice@1.0.4:
330 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
331 | engines: {node: '>= 0.4'}
332 |
333 | assertion-error@1.1.0:
334 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
335 |
336 | async-function@1.0.0:
337 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
338 | engines: {node: '>= 0.4'}
339 |
340 | available-typed-arrays@1.0.7:
341 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
342 | engines: {node: '>= 0.4'}
343 |
344 | balanced-match@1.0.2:
345 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
346 |
347 | binary-extensions@2.3.0:
348 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
349 | engines: {node: '>=8'}
350 |
351 | brace-expansion@1.1.11:
352 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
353 |
354 | brace-expansion@2.0.1:
355 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
356 |
357 | braces@3.0.3:
358 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
359 | engines: {node: '>=8'}
360 |
361 | builtin-modules@3.3.0:
362 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
363 | engines: {node: '>=6'}
364 |
365 | bundle-require@3.1.2:
366 | resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==}
367 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
368 | peerDependencies:
369 | esbuild: '>=0.13'
370 |
371 | cac@6.7.14:
372 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
373 | engines: {node: '>=8'}
374 |
375 | call-bind-apply-helpers@1.0.2:
376 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
377 | engines: {node: '>= 0.4'}
378 |
379 | call-bind@1.0.8:
380 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
381 | engines: {node: '>= 0.4'}
382 |
383 | call-bound@1.0.3:
384 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
385 | engines: {node: '>= 0.4'}
386 |
387 | callsites@3.1.0:
388 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
389 | engines: {node: '>=6'}
390 |
391 | chai@4.5.0:
392 | resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
393 | engines: {node: '>=4'}
394 |
395 | chalk@2.4.2:
396 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
397 | engines: {node: '>=4'}
398 |
399 | chalk@4.1.2:
400 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
401 | engines: {node: '>=10'}
402 |
403 | check-error@1.0.3:
404 | resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
405 |
406 | chokidar@3.6.0:
407 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
408 | engines: {node: '>= 8.10.0'}
409 |
410 | ci-info@3.9.0:
411 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
412 | engines: {node: '>=8'}
413 |
414 | clean-regexp@1.0.0:
415 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
416 | engines: {node: '>=4'}
417 |
418 | color-convert@1.9.3:
419 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
420 |
421 | color-convert@2.0.1:
422 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
423 | engines: {node: '>=7.0.0'}
424 |
425 | color-name@1.1.3:
426 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
427 |
428 | color-name@1.1.4:
429 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
430 |
431 | commander@4.1.1:
432 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
433 | engines: {node: '>= 6'}
434 |
435 | concat-map@0.0.1:
436 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
437 |
438 | cross-spawn@6.0.6:
439 | resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
440 | engines: {node: '>=4.8'}
441 |
442 | cross-spawn@7.0.6:
443 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
444 | engines: {node: '>= 8'}
445 |
446 | data-view-buffer@1.0.2:
447 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
448 | engines: {node: '>= 0.4'}
449 |
450 | data-view-byte-length@1.0.2:
451 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
452 | engines: {node: '>= 0.4'}
453 |
454 | data-view-byte-offset@1.0.1:
455 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
456 | engines: {node: '>= 0.4'}
457 |
458 | debug@4.4.0:
459 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
460 | engines: {node: '>=6.0'}
461 | peerDependencies:
462 | supports-color: '*'
463 | peerDependenciesMeta:
464 | supports-color:
465 | optional: true
466 |
467 | deep-eql@4.1.4:
468 | resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
469 | engines: {node: '>=6'}
470 |
471 | deep-is@0.1.4:
472 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
473 |
474 | define-data-property@1.1.4:
475 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
476 | engines: {node: '>= 0.4'}
477 |
478 | define-properties@1.2.1:
479 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
480 | engines: {node: '>= 0.4'}
481 |
482 | dir-glob@3.0.1:
483 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
484 | engines: {node: '>=8'}
485 |
486 | doctrine@3.0.0:
487 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
488 | engines: {node: '>=6.0.0'}
489 |
490 | dunder-proto@1.0.1:
491 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
492 | engines: {node: '>= 0.4'}
493 |
494 | eastasianwidth@0.2.0:
495 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
496 |
497 | emoji-regex@8.0.0:
498 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
499 |
500 | emoji-regex@9.2.2:
501 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
502 |
503 | error-ex@1.3.2:
504 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
505 |
506 | es-abstract@1.23.9:
507 | resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
508 | engines: {node: '>= 0.4'}
509 |
510 | es-define-property@1.0.1:
511 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
512 | engines: {node: '>= 0.4'}
513 |
514 | es-errors@1.3.0:
515 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
516 | engines: {node: '>= 0.4'}
517 |
518 | es-object-atoms@1.1.1:
519 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
520 | engines: {node: '>= 0.4'}
521 |
522 | es-set-tostringtag@2.1.0:
523 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
524 | engines: {node: '>= 0.4'}
525 |
526 | es-to-primitive@1.3.0:
527 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
528 | engines: {node: '>= 0.4'}
529 |
530 | esbuild-android-64@0.14.54:
531 | resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
532 | engines: {node: '>=12'}
533 | cpu: [x64]
534 | os: [android]
535 |
536 | esbuild-android-64@0.15.18:
537 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
538 | engines: {node: '>=12'}
539 | cpu: [x64]
540 | os: [android]
541 |
542 | esbuild-android-arm64@0.14.54:
543 | resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==}
544 | engines: {node: '>=12'}
545 | cpu: [arm64]
546 | os: [android]
547 |
548 | esbuild-android-arm64@0.15.18:
549 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
550 | engines: {node: '>=12'}
551 | cpu: [arm64]
552 | os: [android]
553 |
554 | esbuild-darwin-64@0.14.54:
555 | resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==}
556 | engines: {node: '>=12'}
557 | cpu: [x64]
558 | os: [darwin]
559 |
560 | esbuild-darwin-64@0.15.18:
561 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
562 | engines: {node: '>=12'}
563 | cpu: [x64]
564 | os: [darwin]
565 |
566 | esbuild-darwin-arm64@0.14.54:
567 | resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==}
568 | engines: {node: '>=12'}
569 | cpu: [arm64]
570 | os: [darwin]
571 |
572 | esbuild-darwin-arm64@0.15.18:
573 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
574 | engines: {node: '>=12'}
575 | cpu: [arm64]
576 | os: [darwin]
577 |
578 | esbuild-freebsd-64@0.14.54:
579 | resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==}
580 | engines: {node: '>=12'}
581 | cpu: [x64]
582 | os: [freebsd]
583 |
584 | esbuild-freebsd-64@0.15.18:
585 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
586 | engines: {node: '>=12'}
587 | cpu: [x64]
588 | os: [freebsd]
589 |
590 | esbuild-freebsd-arm64@0.14.54:
591 | resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==}
592 | engines: {node: '>=12'}
593 | cpu: [arm64]
594 | os: [freebsd]
595 |
596 | esbuild-freebsd-arm64@0.15.18:
597 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
598 | engines: {node: '>=12'}
599 | cpu: [arm64]
600 | os: [freebsd]
601 |
602 | esbuild-linux-32@0.14.54:
603 | resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==}
604 | engines: {node: '>=12'}
605 | cpu: [ia32]
606 | os: [linux]
607 |
608 | esbuild-linux-32@0.15.18:
609 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
610 | engines: {node: '>=12'}
611 | cpu: [ia32]
612 | os: [linux]
613 |
614 | esbuild-linux-64@0.14.54:
615 | resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==}
616 | engines: {node: '>=12'}
617 | cpu: [x64]
618 | os: [linux]
619 |
620 | esbuild-linux-64@0.15.18:
621 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
622 | engines: {node: '>=12'}
623 | cpu: [x64]
624 | os: [linux]
625 |
626 | esbuild-linux-arm64@0.14.54:
627 | resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==}
628 | engines: {node: '>=12'}
629 | cpu: [arm64]
630 | os: [linux]
631 |
632 | esbuild-linux-arm64@0.15.18:
633 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
634 | engines: {node: '>=12'}
635 | cpu: [arm64]
636 | os: [linux]
637 |
638 | esbuild-linux-arm@0.14.54:
639 | resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==}
640 | engines: {node: '>=12'}
641 | cpu: [arm]
642 | os: [linux]
643 |
644 | esbuild-linux-arm@0.15.18:
645 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
646 | engines: {node: '>=12'}
647 | cpu: [arm]
648 | os: [linux]
649 |
650 | esbuild-linux-mips64le@0.14.54:
651 | resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==}
652 | engines: {node: '>=12'}
653 | cpu: [mips64el]
654 | os: [linux]
655 |
656 | esbuild-linux-mips64le@0.15.18:
657 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
658 | engines: {node: '>=12'}
659 | cpu: [mips64el]
660 | os: [linux]
661 |
662 | esbuild-linux-ppc64le@0.14.54:
663 | resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==}
664 | engines: {node: '>=12'}
665 | cpu: [ppc64]
666 | os: [linux]
667 |
668 | esbuild-linux-ppc64le@0.15.18:
669 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
670 | engines: {node: '>=12'}
671 | cpu: [ppc64]
672 | os: [linux]
673 |
674 | esbuild-linux-riscv64@0.14.54:
675 | resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==}
676 | engines: {node: '>=12'}
677 | cpu: [riscv64]
678 | os: [linux]
679 |
680 | esbuild-linux-riscv64@0.15.18:
681 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
682 | engines: {node: '>=12'}
683 | cpu: [riscv64]
684 | os: [linux]
685 |
686 | esbuild-linux-s390x@0.14.54:
687 | resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==}
688 | engines: {node: '>=12'}
689 | cpu: [s390x]
690 | os: [linux]
691 |
692 | esbuild-linux-s390x@0.15.18:
693 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
694 | engines: {node: '>=12'}
695 | cpu: [s390x]
696 | os: [linux]
697 |
698 | esbuild-netbsd-64@0.14.54:
699 | resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==}
700 | engines: {node: '>=12'}
701 | cpu: [x64]
702 | os: [netbsd]
703 |
704 | esbuild-netbsd-64@0.15.18:
705 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
706 | engines: {node: '>=12'}
707 | cpu: [x64]
708 | os: [netbsd]
709 |
710 | esbuild-openbsd-64@0.14.54:
711 | resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==}
712 | engines: {node: '>=12'}
713 | cpu: [x64]
714 | os: [openbsd]
715 |
716 | esbuild-openbsd-64@0.15.18:
717 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
718 | engines: {node: '>=12'}
719 | cpu: [x64]
720 | os: [openbsd]
721 |
722 | esbuild-sunos-64@0.14.54:
723 | resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==}
724 | engines: {node: '>=12'}
725 | cpu: [x64]
726 | os: [sunos]
727 |
728 | esbuild-sunos-64@0.15.18:
729 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
730 | engines: {node: '>=12'}
731 | cpu: [x64]
732 | os: [sunos]
733 |
734 | esbuild-windows-32@0.14.54:
735 | resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==}
736 | engines: {node: '>=12'}
737 | cpu: [ia32]
738 | os: [win32]
739 |
740 | esbuild-windows-32@0.15.18:
741 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
742 | engines: {node: '>=12'}
743 | cpu: [ia32]
744 | os: [win32]
745 |
746 | esbuild-windows-64@0.14.54:
747 | resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==}
748 | engines: {node: '>=12'}
749 | cpu: [x64]
750 | os: [win32]
751 |
752 | esbuild-windows-64@0.15.18:
753 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
754 | engines: {node: '>=12'}
755 | cpu: [x64]
756 | os: [win32]
757 |
758 | esbuild-windows-arm64@0.14.54:
759 | resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==}
760 | engines: {node: '>=12'}
761 | cpu: [arm64]
762 | os: [win32]
763 |
764 | esbuild-windows-arm64@0.15.18:
765 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
766 | engines: {node: '>=12'}
767 | cpu: [arm64]
768 | os: [win32]
769 |
770 | esbuild@0.14.54:
771 | resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==}
772 | engines: {node: '>=12'}
773 | hasBin: true
774 |
775 | esbuild@0.15.18:
776 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
777 | engines: {node: '>=12'}
778 | hasBin: true
779 |
780 | escape-string-regexp@1.0.5:
781 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
782 | engines: {node: '>=0.8.0'}
783 |
784 | escape-string-regexp@4.0.0:
785 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
786 | engines: {node: '>=10'}
787 |
788 | eslint-config-prettier@8.5.0:
789 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
790 | hasBin: true
791 | peerDependencies:
792 | eslint: '>=7.0.0'
793 |
794 | eslint-plugin-unicorn@42.0.0:
795 | resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==}
796 | engines: {node: '>=12'}
797 | peerDependencies:
798 | eslint: '>=8.8.0'
799 |
800 | eslint-scope@5.1.1:
801 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
802 | engines: {node: '>=8.0.0'}
803 |
804 | eslint-scope@7.2.2:
805 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
806 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
807 |
808 | eslint-utils@3.0.0:
809 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
810 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
811 | peerDependencies:
812 | eslint: '>=5'
813 |
814 | eslint-visitor-keys@2.1.0:
815 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
816 | engines: {node: '>=10'}
817 |
818 | eslint-visitor-keys@3.4.3:
819 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
820 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
821 |
822 | eslint@8.23.0:
823 | resolution: {integrity: sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==}
824 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
825 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
826 | hasBin: true
827 |
828 | espree@9.6.1:
829 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
830 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
831 |
832 | esquery@1.6.0:
833 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
834 | engines: {node: '>=0.10'}
835 |
836 | esrecurse@4.3.0:
837 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
838 | engines: {node: '>=4.0'}
839 |
840 | estraverse@4.3.0:
841 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
842 | engines: {node: '>=4.0'}
843 |
844 | estraverse@5.3.0:
845 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
846 | engines: {node: '>=4.0'}
847 |
848 | esutils@2.0.3:
849 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
850 | engines: {node: '>=0.10.0'}
851 |
852 | execa@5.1.1:
853 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
854 | engines: {node: '>=10'}
855 |
856 | fast-deep-equal@3.1.3:
857 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
858 |
859 | fast-glob@3.3.3:
860 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
861 | engines: {node: '>=8.6.0'}
862 |
863 | fast-json-stable-stringify@2.1.0:
864 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
865 |
866 | fast-levenshtein@2.0.6:
867 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
868 |
869 | fastq@1.19.0:
870 | resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==}
871 |
872 | file-entry-cache@6.0.1:
873 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
874 | engines: {node: ^10.12.0 || >=12.0.0}
875 |
876 | fill-range@7.1.1:
877 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
878 | engines: {node: '>=8'}
879 |
880 | find-up@4.1.0:
881 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
882 | engines: {node: '>=8'}
883 |
884 | find-up@5.0.0:
885 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
886 | engines: {node: '>=10'}
887 |
888 | flat-cache@3.2.0:
889 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
890 | engines: {node: ^10.12.0 || >=12.0.0}
891 |
892 | flatted@3.3.3:
893 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
894 |
895 | for-each@0.3.5:
896 | resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
897 | engines: {node: '>= 0.4'}
898 |
899 | foreground-child@3.3.1:
900 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
901 | engines: {node: '>=14'}
902 |
903 | fs.realpath@1.0.0:
904 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
905 |
906 | fsevents@2.3.3:
907 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
908 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
909 | os: [darwin]
910 |
911 | function-bind@1.1.2:
912 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
913 |
914 | function.prototype.name@1.1.8:
915 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
916 | engines: {node: '>= 0.4'}
917 |
918 | functional-red-black-tree@1.0.1:
919 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
920 |
921 | functions-have-names@1.2.3:
922 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
923 |
924 | get-func-name@2.0.2:
925 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
926 |
927 | get-intrinsic@1.3.0:
928 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
929 | engines: {node: '>= 0.4'}
930 |
931 | get-proto@1.0.1:
932 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
933 | engines: {node: '>= 0.4'}
934 |
935 | get-stream@6.0.1:
936 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
937 | engines: {node: '>=10'}
938 |
939 | get-symbol-description@1.1.0:
940 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
941 | engines: {node: '>= 0.4'}
942 |
943 | glob-parent@5.1.2:
944 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
945 | engines: {node: '>= 6'}
946 |
947 | glob-parent@6.0.2:
948 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
949 | engines: {node: '>=10.13.0'}
950 |
951 | glob@10.4.5:
952 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
953 | hasBin: true
954 |
955 | glob@7.2.3:
956 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
957 | deprecated: Glob versions prior to v9 are no longer supported
958 |
959 | globals@13.24.0:
960 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
961 | engines: {node: '>=8'}
962 |
963 | globalthis@1.0.4:
964 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
965 | engines: {node: '>= 0.4'}
966 |
967 | globby@11.1.0:
968 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
969 | engines: {node: '>=10'}
970 |
971 | gopd@1.2.0:
972 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
973 | engines: {node: '>= 0.4'}
974 |
975 | graceful-fs@4.2.11:
976 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
977 |
978 | grapheme-splitter@1.0.4:
979 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
980 |
981 | has-bigints@1.1.0:
982 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
983 | engines: {node: '>= 0.4'}
984 |
985 | has-flag@3.0.0:
986 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
987 | engines: {node: '>=4'}
988 |
989 | has-flag@4.0.0:
990 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
991 | engines: {node: '>=8'}
992 |
993 | has-property-descriptors@1.0.2:
994 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
995 |
996 | has-proto@1.2.0:
997 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
998 | engines: {node: '>= 0.4'}
999 |
1000 | has-symbols@1.1.0:
1001 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
1002 | engines: {node: '>= 0.4'}
1003 |
1004 | has-tostringtag@1.0.2:
1005 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
1006 | engines: {node: '>= 0.4'}
1007 |
1008 | hasown@2.0.2:
1009 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1010 | engines: {node: '>= 0.4'}
1011 |
1012 | hosted-git-info@2.8.9:
1013 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
1014 |
1015 | human-signals@2.1.0:
1016 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1017 | engines: {node: '>=10.17.0'}
1018 |
1019 | husky@8.0.1:
1020 | resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==}
1021 | engines: {node: '>=14'}
1022 | hasBin: true
1023 |
1024 | ignore@5.3.2:
1025 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1026 | engines: {node: '>= 4'}
1027 |
1028 | import-fresh@3.3.1:
1029 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
1030 | engines: {node: '>=6'}
1031 |
1032 | imurmurhash@0.1.4:
1033 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1034 | engines: {node: '>=0.8.19'}
1035 |
1036 | indent-string@4.0.0:
1037 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
1038 | engines: {node: '>=8'}
1039 |
1040 | inflight@1.0.6:
1041 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1042 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
1043 |
1044 | inherits@2.0.4:
1045 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1046 |
1047 | internal-slot@1.1.0:
1048 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
1049 | engines: {node: '>= 0.4'}
1050 |
1051 | is-array-buffer@3.0.5:
1052 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
1053 | engines: {node: '>= 0.4'}
1054 |
1055 | is-arrayish@0.2.1:
1056 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1057 |
1058 | is-async-function@2.1.1:
1059 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
1060 | engines: {node: '>= 0.4'}
1061 |
1062 | is-bigint@1.1.0:
1063 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
1064 | engines: {node: '>= 0.4'}
1065 |
1066 | is-binary-path@2.1.0:
1067 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1068 | engines: {node: '>=8'}
1069 |
1070 | is-boolean-object@1.2.2:
1071 | resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
1072 | engines: {node: '>= 0.4'}
1073 |
1074 | is-builtin-module@3.2.1:
1075 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
1076 | engines: {node: '>=6'}
1077 |
1078 | is-callable@1.2.7:
1079 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1080 | engines: {node: '>= 0.4'}
1081 |
1082 | is-core-module@2.16.1:
1083 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
1084 | engines: {node: '>= 0.4'}
1085 |
1086 | is-data-view@1.0.2:
1087 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
1088 | engines: {node: '>= 0.4'}
1089 |
1090 | is-date-object@1.1.0:
1091 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
1092 | engines: {node: '>= 0.4'}
1093 |
1094 | is-extglob@2.1.1:
1095 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1096 | engines: {node: '>=0.10.0'}
1097 |
1098 | is-finalizationregistry@1.1.1:
1099 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
1100 | engines: {node: '>= 0.4'}
1101 |
1102 | is-fullwidth-code-point@3.0.0:
1103 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1104 | engines: {node: '>=8'}
1105 |
1106 | is-generator-function@1.1.0:
1107 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
1108 | engines: {node: '>= 0.4'}
1109 |
1110 | is-glob@4.0.3:
1111 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1112 | engines: {node: '>=0.10.0'}
1113 |
1114 | is-map@2.0.3:
1115 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
1116 | engines: {node: '>= 0.4'}
1117 |
1118 | is-number-object@1.1.1:
1119 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
1120 | engines: {node: '>= 0.4'}
1121 |
1122 | is-number@7.0.0:
1123 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1124 | engines: {node: '>=0.12.0'}
1125 |
1126 | is-regex@1.2.1:
1127 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
1128 | engines: {node: '>= 0.4'}
1129 |
1130 | is-set@2.0.3:
1131 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
1132 | engines: {node: '>= 0.4'}
1133 |
1134 | is-shared-array-buffer@1.0.4:
1135 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
1136 | engines: {node: '>= 0.4'}
1137 |
1138 | is-stream@2.0.1:
1139 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1140 | engines: {node: '>=8'}
1141 |
1142 | is-string@1.1.1:
1143 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
1144 | engines: {node: '>= 0.4'}
1145 |
1146 | is-symbol@1.1.1:
1147 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
1148 | engines: {node: '>= 0.4'}
1149 |
1150 | is-typed-array@1.1.15:
1151 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
1152 | engines: {node: '>= 0.4'}
1153 |
1154 | is-weakmap@2.0.2:
1155 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
1156 | engines: {node: '>= 0.4'}
1157 |
1158 | is-weakref@1.1.1:
1159 | resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
1160 | engines: {node: '>= 0.4'}
1161 |
1162 | is-weakset@2.0.4:
1163 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
1164 | engines: {node: '>= 0.4'}
1165 |
1166 | isarray@2.0.5:
1167 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1168 |
1169 | isexe@2.0.0:
1170 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1171 |
1172 | jackspeak@3.4.3:
1173 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1174 |
1175 | joycon@3.1.1:
1176 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1177 | engines: {node: '>=10'}
1178 |
1179 | js-tokens@4.0.0:
1180 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1181 |
1182 | js-yaml@4.1.0:
1183 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1184 | hasBin: true
1185 |
1186 | json-buffer@3.0.1:
1187 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1188 |
1189 | json-parse-better-errors@1.0.2:
1190 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
1191 |
1192 | json-parse-even-better-errors@2.3.1:
1193 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1194 |
1195 | json-schema-traverse@0.4.1:
1196 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1197 |
1198 | json-stable-stringify-without-jsonify@1.0.1:
1199 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1200 |
1201 | keyv@4.5.4:
1202 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1203 |
1204 | levn@0.4.1:
1205 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1206 | engines: {node: '>= 0.8.0'}
1207 |
1208 | lilconfig@2.1.0:
1209 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1210 | engines: {node: '>=10'}
1211 |
1212 | lines-and-columns@1.2.4:
1213 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1214 |
1215 | load-json-file@4.0.0:
1216 | resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
1217 | engines: {node: '>=4'}
1218 |
1219 | load-tsconfig@0.2.5:
1220 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
1221 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1222 |
1223 | local-pkg@0.4.3:
1224 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
1225 | engines: {node: '>=14'}
1226 |
1227 | locate-path@5.0.0:
1228 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1229 | engines: {node: '>=8'}
1230 |
1231 | locate-path@6.0.0:
1232 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1233 | engines: {node: '>=10'}
1234 |
1235 | lodash.merge@4.6.2:
1236 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1237 |
1238 | lodash.sortby@4.7.0:
1239 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
1240 |
1241 | lodash@4.17.21:
1242 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1243 |
1244 | loupe@2.3.7:
1245 | resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
1246 |
1247 | lru-cache@10.4.3:
1248 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1249 |
1250 | math-intrinsics@1.1.0:
1251 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1252 | engines: {node: '>= 0.4'}
1253 |
1254 | memorystream@0.3.1:
1255 | resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
1256 | engines: {node: '>= 0.10.0'}
1257 |
1258 | merge-stream@2.0.0:
1259 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1260 |
1261 | merge2@1.4.1:
1262 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1263 | engines: {node: '>= 8'}
1264 |
1265 | micromatch@4.0.8:
1266 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1267 | engines: {node: '>=8.6'}
1268 |
1269 | mimic-fn@2.1.0:
1270 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1271 | engines: {node: '>=6'}
1272 |
1273 | min-indent@1.0.1:
1274 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
1275 | engines: {node: '>=4'}
1276 |
1277 | minimatch@3.1.2:
1278 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1279 |
1280 | minimatch@9.0.5:
1281 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1282 | engines: {node: '>=16 || 14 >=14.17'}
1283 |
1284 | minipass@7.1.2:
1285 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1286 | engines: {node: '>=16 || 14 >=14.17'}
1287 |
1288 | ms@2.1.3:
1289 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1290 |
1291 | mz@2.7.0:
1292 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1293 |
1294 | nano-staged@0.8.0:
1295 | resolution: {integrity: sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==}
1296 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1297 | hasBin: true
1298 |
1299 | nanoid@3.3.8:
1300 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
1301 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1302 | hasBin: true
1303 |
1304 | natural-compare@1.4.0:
1305 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1306 |
1307 | nice-try@1.0.5:
1308 | resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
1309 |
1310 | normalize-package-data@2.5.0:
1311 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1312 |
1313 | normalize-path@3.0.0:
1314 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1315 | engines: {node: '>=0.10.0'}
1316 |
1317 | npm-run-all@4.1.5:
1318 | resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
1319 | engines: {node: '>= 4'}
1320 | hasBin: true
1321 |
1322 | npm-run-path@4.0.1:
1323 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
1324 | engines: {node: '>=8'}
1325 |
1326 | object-assign@4.1.1:
1327 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1328 | engines: {node: '>=0.10.0'}
1329 |
1330 | object-inspect@1.13.4:
1331 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
1332 | engines: {node: '>= 0.4'}
1333 |
1334 | object-keys@1.1.1:
1335 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1336 | engines: {node: '>= 0.4'}
1337 |
1338 | object.assign@4.1.7:
1339 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1340 | engines: {node: '>= 0.4'}
1341 |
1342 | once@1.4.0:
1343 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1344 |
1345 | onetime@5.1.2:
1346 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1347 | engines: {node: '>=6'}
1348 |
1349 | optionator@0.9.4:
1350 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1351 | engines: {node: '>= 0.8.0'}
1352 |
1353 | own-keys@1.0.1:
1354 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
1355 | engines: {node: '>= 0.4'}
1356 |
1357 | p-limit@2.3.0:
1358 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1359 | engines: {node: '>=6'}
1360 |
1361 | p-limit@3.1.0:
1362 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1363 | engines: {node: '>=10'}
1364 |
1365 | p-locate@4.1.0:
1366 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1367 | engines: {node: '>=8'}
1368 |
1369 | p-locate@5.0.0:
1370 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1371 | engines: {node: '>=10'}
1372 |
1373 | p-try@2.2.0:
1374 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1375 | engines: {node: '>=6'}
1376 |
1377 | package-json-from-dist@1.0.1:
1378 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
1379 |
1380 | parent-module@1.0.1:
1381 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1382 | engines: {node: '>=6'}
1383 |
1384 | parse-json@4.0.0:
1385 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
1386 | engines: {node: '>=4'}
1387 |
1388 | parse-json@5.2.0:
1389 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1390 | engines: {node: '>=8'}
1391 |
1392 | path-exists@4.0.0:
1393 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1394 | engines: {node: '>=8'}
1395 |
1396 | path-is-absolute@1.0.1:
1397 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1398 | engines: {node: '>=0.10.0'}
1399 |
1400 | path-key@2.0.1:
1401 | resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
1402 | engines: {node: '>=4'}
1403 |
1404 | path-key@3.1.1:
1405 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1406 | engines: {node: '>=8'}
1407 |
1408 | path-parse@1.0.7:
1409 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1410 |
1411 | path-scurry@1.11.1:
1412 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1413 | engines: {node: '>=16 || 14 >=14.18'}
1414 |
1415 | path-type@3.0.0:
1416 | resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
1417 | engines: {node: '>=4'}
1418 |
1419 | path-type@4.0.0:
1420 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1421 | engines: {node: '>=8'}
1422 |
1423 | pathval@1.1.1:
1424 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
1425 |
1426 | picocolors@1.1.1:
1427 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1428 |
1429 | picomatch@2.3.1:
1430 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1431 | engines: {node: '>=8.6'}
1432 |
1433 | pidtree@0.3.1:
1434 | resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
1435 | engines: {node: '>=0.10'}
1436 | hasBin: true
1437 |
1438 | pify@3.0.0:
1439 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
1440 | engines: {node: '>=4'}
1441 |
1442 | pirates@4.0.6:
1443 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1444 | engines: {node: '>= 6'}
1445 |
1446 | pluralize@8.0.0:
1447 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
1448 | engines: {node: '>=4'}
1449 |
1450 | possible-typed-array-names@1.1.0:
1451 | resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
1452 | engines: {node: '>= 0.4'}
1453 |
1454 | postcss-load-config@3.1.4:
1455 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1456 | engines: {node: '>= 10'}
1457 | peerDependencies:
1458 | postcss: '>=8.0.9'
1459 | ts-node: '>=9.0.0'
1460 | peerDependenciesMeta:
1461 | postcss:
1462 | optional: true
1463 | ts-node:
1464 | optional: true
1465 |
1466 | postcss@8.5.3:
1467 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
1468 | engines: {node: ^10 || ^12 || >=14}
1469 |
1470 | prelude-ls@1.2.1:
1471 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1472 | engines: {node: '>= 0.8.0'}
1473 |
1474 | punycode@2.3.1:
1475 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1476 | engines: {node: '>=6'}
1477 |
1478 | queue-microtask@1.2.3:
1479 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1480 |
1481 | read-pkg-up@7.0.1:
1482 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
1483 | engines: {node: '>=8'}
1484 |
1485 | read-pkg@3.0.0:
1486 | resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
1487 | engines: {node: '>=4'}
1488 |
1489 | read-pkg@5.2.0:
1490 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
1491 | engines: {node: '>=8'}
1492 |
1493 | readdirp@3.6.0:
1494 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1495 | engines: {node: '>=8.10.0'}
1496 |
1497 | reflect.getprototypeof@1.0.10:
1498 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
1499 | engines: {node: '>= 0.4'}
1500 |
1501 | regexp-tree@0.1.27:
1502 | resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
1503 | hasBin: true
1504 |
1505 | regexp.prototype.flags@1.5.4:
1506 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1507 | engines: {node: '>= 0.4'}
1508 |
1509 | regexpp@3.2.0:
1510 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
1511 | engines: {node: '>=8'}
1512 |
1513 | resolve-from@4.0.0:
1514 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1515 | engines: {node: '>=4'}
1516 |
1517 | resolve-from@5.0.0:
1518 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1519 | engines: {node: '>=8'}
1520 |
1521 | resolve@1.22.10:
1522 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1523 | engines: {node: '>= 0.4'}
1524 | hasBin: true
1525 |
1526 | reusify@1.0.4:
1527 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1528 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1529 |
1530 | rimraf@3.0.2:
1531 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1532 | deprecated: Rimraf versions prior to v4 are no longer supported
1533 | hasBin: true
1534 |
1535 | rollup@2.77.3:
1536 | resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==}
1537 | engines: {node: '>=10.0.0'}
1538 | hasBin: true
1539 |
1540 | rollup@2.79.2:
1541 | resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==}
1542 | engines: {node: '>=10.0.0'}
1543 | hasBin: true
1544 |
1545 | run-parallel@1.2.0:
1546 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1547 |
1548 | safe-array-concat@1.1.3:
1549 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
1550 | engines: {node: '>=0.4'}
1551 |
1552 | safe-push-apply@1.0.0:
1553 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
1554 | engines: {node: '>= 0.4'}
1555 |
1556 | safe-regex-test@1.1.0:
1557 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
1558 | engines: {node: '>= 0.4'}
1559 |
1560 | safe-regex@2.1.1:
1561 | resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
1562 |
1563 | semver@5.7.2:
1564 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
1565 | hasBin: true
1566 |
1567 | semver@7.7.1:
1568 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
1569 | engines: {node: '>=10'}
1570 | hasBin: true
1571 |
1572 | set-function-length@1.2.2:
1573 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1574 | engines: {node: '>= 0.4'}
1575 |
1576 | set-function-name@2.0.2:
1577 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1578 | engines: {node: '>= 0.4'}
1579 |
1580 | set-proto@1.0.0:
1581 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
1582 | engines: {node: '>= 0.4'}
1583 |
1584 | shebang-command@1.2.0:
1585 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
1586 | engines: {node: '>=0.10.0'}
1587 |
1588 | shebang-command@2.0.0:
1589 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1590 | engines: {node: '>=8'}
1591 |
1592 | shebang-regex@1.0.0:
1593 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
1594 | engines: {node: '>=0.10.0'}
1595 |
1596 | shebang-regex@3.0.0:
1597 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1598 | engines: {node: '>=8'}
1599 |
1600 | shell-quote@1.8.2:
1601 | resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
1602 | engines: {node: '>= 0.4'}
1603 |
1604 | side-channel-list@1.0.0:
1605 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
1606 | engines: {node: '>= 0.4'}
1607 |
1608 | side-channel-map@1.0.1:
1609 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
1610 | engines: {node: '>= 0.4'}
1611 |
1612 | side-channel-weakmap@1.0.2:
1613 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
1614 | engines: {node: '>= 0.4'}
1615 |
1616 | side-channel@1.1.0:
1617 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1618 | engines: {node: '>= 0.4'}
1619 |
1620 | signal-exit@3.0.7:
1621 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1622 |
1623 | signal-exit@4.1.0:
1624 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1625 | engines: {node: '>=14'}
1626 |
1627 | slash@3.0.0:
1628 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1629 | engines: {node: '>=8'}
1630 |
1631 | source-map-js@1.2.1:
1632 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1633 | engines: {node: '>=0.10.0'}
1634 |
1635 | source-map@0.8.0-beta.0:
1636 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
1637 | engines: {node: '>= 8'}
1638 |
1639 | spdx-correct@3.2.0:
1640 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
1641 |
1642 | spdx-exceptions@2.5.0:
1643 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
1644 |
1645 | spdx-expression-parse@3.0.1:
1646 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
1647 |
1648 | spdx-license-ids@3.0.21:
1649 | resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==}
1650 |
1651 | string-width@4.2.3:
1652 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1653 | engines: {node: '>=8'}
1654 |
1655 | string-width@5.1.2:
1656 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1657 | engines: {node: '>=12'}
1658 |
1659 | string.prototype.padend@3.1.6:
1660 | resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
1661 | engines: {node: '>= 0.4'}
1662 |
1663 | string.prototype.trim@1.2.10:
1664 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
1665 | engines: {node: '>= 0.4'}
1666 |
1667 | string.prototype.trimend@1.0.9:
1668 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
1669 | engines: {node: '>= 0.4'}
1670 |
1671 | string.prototype.trimstart@1.0.8:
1672 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1673 | engines: {node: '>= 0.4'}
1674 |
1675 | strip-ansi@6.0.1:
1676 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1677 | engines: {node: '>=8'}
1678 |
1679 | strip-ansi@7.1.0:
1680 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1681 | engines: {node: '>=12'}
1682 |
1683 | strip-bom@3.0.0:
1684 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1685 | engines: {node: '>=4'}
1686 |
1687 | strip-final-newline@2.0.0:
1688 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1689 | engines: {node: '>=6'}
1690 |
1691 | strip-indent@3.0.0:
1692 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
1693 | engines: {node: '>=8'}
1694 |
1695 | strip-json-comments@3.1.1:
1696 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1697 | engines: {node: '>=8'}
1698 |
1699 | strip-literal@0.4.2:
1700 | resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==}
1701 |
1702 | sucrase@3.35.0:
1703 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1704 | engines: {node: '>=16 || 14 >=14.17'}
1705 | hasBin: true
1706 |
1707 | supports-color@5.5.0:
1708 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1709 | engines: {node: '>=4'}
1710 |
1711 | supports-color@7.2.0:
1712 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1713 | engines: {node: '>=8'}
1714 |
1715 | supports-preserve-symlinks-flag@1.0.0:
1716 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1717 | engines: {node: '>= 0.4'}
1718 |
1719 | text-table@0.2.0:
1720 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1721 |
1722 | thenify-all@1.6.0:
1723 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1724 | engines: {node: '>=0.8'}
1725 |
1726 | thenify@3.3.1:
1727 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1728 |
1729 | tinybench@2.9.0:
1730 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
1731 |
1732 | tinypool@0.2.4:
1733 | resolution: {integrity: sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==}
1734 | engines: {node: '>=14.0.0'}
1735 |
1736 | tinyspy@1.1.1:
1737 | resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==}
1738 | engines: {node: '>=14.0.0'}
1739 |
1740 | to-regex-range@5.0.1:
1741 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1742 | engines: {node: '>=8.0'}
1743 |
1744 | tr46@1.0.1:
1745 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
1746 |
1747 | tree-kill@1.2.2:
1748 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1749 | hasBin: true
1750 |
1751 | ts-interface-checker@0.1.13:
1752 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1753 |
1754 | tslib@1.14.1:
1755 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
1756 |
1757 | tsup@6.2.3:
1758 | resolution: {integrity: sha512-J5Pu2Dx0E1wlpIEsVFv9ryzP1pZ1OYsJ2cBHZ7GrKteytNdzaSz5hmLX7/nAxtypq+jVkVvA79d7S83ETgHQ5w==}
1759 | engines: {node: '>=14'}
1760 | hasBin: true
1761 | peerDependencies:
1762 | '@swc/core': ^1
1763 | postcss: ^8.4.12
1764 | typescript: ^4.1.0
1765 | peerDependenciesMeta:
1766 | '@swc/core':
1767 | optional: true
1768 | postcss:
1769 | optional: true
1770 | typescript:
1771 | optional: true
1772 |
1773 | tsutils@3.21.0:
1774 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
1775 | engines: {node: '>= 6'}
1776 | peerDependencies:
1777 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
1778 |
1779 | type-check@0.4.0:
1780 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1781 | engines: {node: '>= 0.8.0'}
1782 |
1783 | type-detect@4.1.0:
1784 | resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
1785 | engines: {node: '>=4'}
1786 |
1787 | type-fest@0.20.2:
1788 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1789 | engines: {node: '>=10'}
1790 |
1791 | type-fest@0.6.0:
1792 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
1793 | engines: {node: '>=8'}
1794 |
1795 | type-fest@0.8.1:
1796 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
1797 | engines: {node: '>=8'}
1798 |
1799 | typed-array-buffer@1.0.3:
1800 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
1801 | engines: {node: '>= 0.4'}
1802 |
1803 | typed-array-byte-length@1.0.3:
1804 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
1805 | engines: {node: '>= 0.4'}
1806 |
1807 | typed-array-byte-offset@1.0.4:
1808 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
1809 | engines: {node: '>= 0.4'}
1810 |
1811 | typed-array-length@1.0.7:
1812 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1813 | engines: {node: '>= 0.4'}
1814 |
1815 | typescript@4.8.2:
1816 | resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==}
1817 | engines: {node: '>=4.2.0'}
1818 | hasBin: true
1819 |
1820 | unbox-primitive@1.1.0:
1821 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1822 | engines: {node: '>= 0.4'}
1823 |
1824 | uri-js@4.4.1:
1825 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1826 |
1827 | validate-npm-package-license@3.0.4:
1828 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
1829 |
1830 | vite@3.0.9:
1831 | resolution: {integrity: sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==}
1832 | engines: {node: ^14.18.0 || >=16.0.0}
1833 | hasBin: true
1834 | peerDependencies:
1835 | less: '*'
1836 | sass: '*'
1837 | stylus: '*'
1838 | terser: ^5.4.0
1839 | peerDependenciesMeta:
1840 | less:
1841 | optional: true
1842 | sass:
1843 | optional: true
1844 | stylus:
1845 | optional: true
1846 | terser:
1847 | optional: true
1848 |
1849 | vitest@0.23.0:
1850 | resolution: {integrity: sha512-I3ctlfiXYprA2tID1qP+m6pmgmKx3HYfRe66MetGOHKCHLY7hz74ihiwIEtN7LReJgF3U5cM735iYPkn/Go1iQ==}
1851 | engines: {node: '>=v14.16.0'}
1852 | hasBin: true
1853 | peerDependencies:
1854 | '@edge-runtime/vm': '*'
1855 | '@vitest/browser': '*'
1856 | '@vitest/ui': '*'
1857 | happy-dom: '*'
1858 | jsdom: '*'
1859 | peerDependenciesMeta:
1860 | '@edge-runtime/vm':
1861 | optional: true
1862 | '@vitest/browser':
1863 | optional: true
1864 | '@vitest/ui':
1865 | optional: true
1866 | happy-dom:
1867 | optional: true
1868 | jsdom:
1869 | optional: true
1870 |
1871 | webidl-conversions@4.0.2:
1872 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
1873 |
1874 | whatwg-url@7.1.0:
1875 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
1876 |
1877 | which-boxed-primitive@1.1.1:
1878 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
1879 | engines: {node: '>= 0.4'}
1880 |
1881 | which-builtin-type@1.2.1:
1882 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
1883 | engines: {node: '>= 0.4'}
1884 |
1885 | which-collection@1.0.2:
1886 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
1887 | engines: {node: '>= 0.4'}
1888 |
1889 | which-typed-array@1.1.18:
1890 | resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
1891 | engines: {node: '>= 0.4'}
1892 |
1893 | which@1.3.1:
1894 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1895 | hasBin: true
1896 |
1897 | which@2.0.2:
1898 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1899 | engines: {node: '>= 8'}
1900 | hasBin: true
1901 |
1902 | word-wrap@1.2.5:
1903 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1904 | engines: {node: '>=0.10.0'}
1905 |
1906 | wrap-ansi@7.0.0:
1907 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1908 | engines: {node: '>=10'}
1909 |
1910 | wrap-ansi@8.1.0:
1911 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1912 | engines: {node: '>=12'}
1913 |
1914 | wrappy@1.0.2:
1915 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1916 |
1917 | yaml@1.10.2:
1918 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1919 | engines: {node: '>= 6'}
1920 |
1921 | yocto-queue@0.1.0:
1922 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1923 | engines: {node: '>=10'}
1924 |
1925 | snapshots:
1926 |
1927 | '@babel/code-frame@7.26.2':
1928 | dependencies:
1929 | '@babel/helper-validator-identifier': 7.25.9
1930 | js-tokens: 4.0.0
1931 | picocolors: 1.1.1
1932 |
1933 | '@babel/helper-validator-identifier@7.25.9': {}
1934 |
1935 | '@biomejs/biome@1.5.3':
1936 | optionalDependencies:
1937 | '@biomejs/cli-darwin-arm64': 1.5.3
1938 | '@biomejs/cli-darwin-x64': 1.5.3
1939 | '@biomejs/cli-linux-arm64': 1.5.3
1940 | '@biomejs/cli-linux-arm64-musl': 1.5.3
1941 | '@biomejs/cli-linux-x64': 1.5.3
1942 | '@biomejs/cli-linux-x64-musl': 1.5.3
1943 | '@biomejs/cli-win32-arm64': 1.5.3
1944 | '@biomejs/cli-win32-x64': 1.5.3
1945 |
1946 | '@biomejs/cli-darwin-arm64@1.5.3':
1947 | optional: true
1948 |
1949 | '@biomejs/cli-darwin-x64@1.5.3':
1950 | optional: true
1951 |
1952 | '@biomejs/cli-linux-arm64-musl@1.5.3':
1953 | optional: true
1954 |
1955 | '@biomejs/cli-linux-arm64@1.5.3':
1956 | optional: true
1957 |
1958 | '@biomejs/cli-linux-x64-musl@1.5.3':
1959 | optional: true
1960 |
1961 | '@biomejs/cli-linux-x64@1.5.3':
1962 | optional: true
1963 |
1964 | '@biomejs/cli-win32-arm64@1.5.3':
1965 | optional: true
1966 |
1967 | '@biomejs/cli-win32-x64@1.5.3':
1968 | optional: true
1969 |
1970 | '@esbuild/android-arm@0.15.18':
1971 | optional: true
1972 |
1973 | '@esbuild/linux-loong64@0.14.54':
1974 | optional: true
1975 |
1976 | '@esbuild/linux-loong64@0.15.18':
1977 | optional: true
1978 |
1979 | '@eslint/eslintrc@1.4.1':
1980 | dependencies:
1981 | ajv: 6.12.6
1982 | debug: 4.4.0
1983 | espree: 9.6.1
1984 | globals: 13.24.0
1985 | ignore: 5.3.2
1986 | import-fresh: 3.3.1
1987 | js-yaml: 4.1.0
1988 | minimatch: 3.1.2
1989 | strip-json-comments: 3.1.1
1990 | transitivePeerDependencies:
1991 | - supports-color
1992 |
1993 | '@humanwhocodes/config-array@0.10.7':
1994 | dependencies:
1995 | '@humanwhocodes/object-schema': 1.2.1
1996 | debug: 4.4.0
1997 | minimatch: 3.1.2
1998 | transitivePeerDependencies:
1999 | - supports-color
2000 |
2001 | '@humanwhocodes/gitignore-to-minimatch@1.0.2': {}
2002 |
2003 | '@humanwhocodes/module-importer@1.0.1': {}
2004 |
2005 | '@humanwhocodes/object-schema@1.2.1': {}
2006 |
2007 | '@isaacs/cliui@8.0.2':
2008 | dependencies:
2009 | string-width: 5.1.2
2010 | string-width-cjs: string-width@4.2.3
2011 | strip-ansi: 7.1.0
2012 | strip-ansi-cjs: strip-ansi@6.0.1
2013 | wrap-ansi: 8.1.0
2014 | wrap-ansi-cjs: wrap-ansi@7.0.0
2015 |
2016 | '@jridgewell/gen-mapping@0.3.8':
2017 | dependencies:
2018 | '@jridgewell/set-array': 1.2.1
2019 | '@jridgewell/sourcemap-codec': 1.5.0
2020 | '@jridgewell/trace-mapping': 0.3.25
2021 |
2022 | '@jridgewell/resolve-uri@3.1.2': {}
2023 |
2024 | '@jridgewell/set-array@1.2.1': {}
2025 |
2026 | '@jridgewell/sourcemap-codec@1.5.0': {}
2027 |
2028 | '@jridgewell/trace-mapping@0.3.25':
2029 | dependencies:
2030 | '@jridgewell/resolve-uri': 3.1.2
2031 | '@jridgewell/sourcemap-codec': 1.5.0
2032 |
2033 | '@nodelib/fs.scandir@2.1.5':
2034 | dependencies:
2035 | '@nodelib/fs.stat': 2.0.5
2036 | run-parallel: 1.2.0
2037 |
2038 | '@nodelib/fs.stat@2.0.5': {}
2039 |
2040 | '@nodelib/fs.walk@1.2.8':
2041 | dependencies:
2042 | '@nodelib/fs.scandir': 2.1.5
2043 | fastq: 1.19.0
2044 |
2045 | '@pkgjs/parseargs@0.11.0':
2046 | optional: true
2047 |
2048 | '@sachinraja/eslint-config@0.1.1(eslint@8.23.0)(typescript@4.8.2)':
2049 | dependencies:
2050 | '@typescript-eslint/eslint-plugin': 5.27.0(@typescript-eslint/parser@5.27.0(eslint@8.23.0)(typescript@4.8.2))(eslint@8.23.0)(typescript@4.8.2)
2051 | '@typescript-eslint/parser': 5.27.0(eslint@8.23.0)(typescript@4.8.2)
2052 | eslint: 8.23.0
2053 | eslint-config-prettier: 8.5.0(eslint@8.23.0)
2054 | eslint-plugin-unicorn: 42.0.0(eslint@8.23.0)
2055 | transitivePeerDependencies:
2056 | - supports-color
2057 | - typescript
2058 |
2059 | '@trpc/client@10.45.2(@trpc/server@10.45.2)':
2060 | dependencies:
2061 | '@trpc/server': 10.45.2
2062 |
2063 | '@trpc/server@10.45.2': {}
2064 |
2065 | '@types/chai-subset@1.3.5':
2066 | dependencies:
2067 | '@types/chai': 4.3.20
2068 |
2069 | '@types/chai@4.3.20': {}
2070 |
2071 | '@types/json-schema@7.0.15': {}
2072 |
2073 | '@types/node@18.7.14': {}
2074 |
2075 | '@types/normalize-package-data@2.4.4': {}
2076 |
2077 | '@typescript-eslint/eslint-plugin@5.27.0(@typescript-eslint/parser@5.27.0(eslint@8.23.0)(typescript@4.8.2))(eslint@8.23.0)(typescript@4.8.2)':
2078 | dependencies:
2079 | '@typescript-eslint/parser': 5.27.0(eslint@8.23.0)(typescript@4.8.2)
2080 | '@typescript-eslint/scope-manager': 5.27.0
2081 | '@typescript-eslint/type-utils': 5.27.0(eslint@8.23.0)(typescript@4.8.2)
2082 | '@typescript-eslint/utils': 5.27.0(eslint@8.23.0)(typescript@4.8.2)
2083 | debug: 4.4.0
2084 | eslint: 8.23.0
2085 | functional-red-black-tree: 1.0.1
2086 | ignore: 5.3.2
2087 | regexpp: 3.2.0
2088 | semver: 7.7.1
2089 | tsutils: 3.21.0(typescript@4.8.2)
2090 | optionalDependencies:
2091 | typescript: 4.8.2
2092 | transitivePeerDependencies:
2093 | - supports-color
2094 |
2095 | '@typescript-eslint/parser@5.27.0(eslint@8.23.0)(typescript@4.8.2)':
2096 | dependencies:
2097 | '@typescript-eslint/scope-manager': 5.27.0
2098 | '@typescript-eslint/types': 5.27.0
2099 | '@typescript-eslint/typescript-estree': 5.27.0(typescript@4.8.2)
2100 | debug: 4.4.0
2101 | eslint: 8.23.0
2102 | optionalDependencies:
2103 | typescript: 4.8.2
2104 | transitivePeerDependencies:
2105 | - supports-color
2106 |
2107 | '@typescript-eslint/scope-manager@5.27.0':
2108 | dependencies:
2109 | '@typescript-eslint/types': 5.27.0
2110 | '@typescript-eslint/visitor-keys': 5.27.0
2111 |
2112 | '@typescript-eslint/type-utils@5.27.0(eslint@8.23.0)(typescript@4.8.2)':
2113 | dependencies:
2114 | '@typescript-eslint/utils': 5.27.0(eslint@8.23.0)(typescript@4.8.2)
2115 | debug: 4.4.0
2116 | eslint: 8.23.0
2117 | tsutils: 3.21.0(typescript@4.8.2)
2118 | optionalDependencies:
2119 | typescript: 4.8.2
2120 | transitivePeerDependencies:
2121 | - supports-color
2122 |
2123 | '@typescript-eslint/types@5.27.0': {}
2124 |
2125 | '@typescript-eslint/typescript-estree@5.27.0(typescript@4.8.2)':
2126 | dependencies:
2127 | '@typescript-eslint/types': 5.27.0
2128 | '@typescript-eslint/visitor-keys': 5.27.0
2129 | debug: 4.4.0
2130 | globby: 11.1.0
2131 | is-glob: 4.0.3
2132 | semver: 7.7.1
2133 | tsutils: 3.21.0(typescript@4.8.2)
2134 | optionalDependencies:
2135 | typescript: 4.8.2
2136 | transitivePeerDependencies:
2137 | - supports-color
2138 |
2139 | '@typescript-eslint/utils@5.27.0(eslint@8.23.0)(typescript@4.8.2)':
2140 | dependencies:
2141 | '@types/json-schema': 7.0.15
2142 | '@typescript-eslint/scope-manager': 5.27.0
2143 | '@typescript-eslint/types': 5.27.0
2144 | '@typescript-eslint/typescript-estree': 5.27.0(typescript@4.8.2)
2145 | eslint: 8.23.0
2146 | eslint-scope: 5.1.1
2147 | eslint-utils: 3.0.0(eslint@8.23.0)
2148 | transitivePeerDependencies:
2149 | - supports-color
2150 | - typescript
2151 |
2152 | '@typescript-eslint/visitor-keys@5.27.0':
2153 | dependencies:
2154 | '@typescript-eslint/types': 5.27.0
2155 | eslint-visitor-keys: 3.4.3
2156 |
2157 | acorn-jsx@5.3.2(acorn@8.14.0):
2158 | dependencies:
2159 | acorn: 8.14.0
2160 |
2161 | acorn@8.14.0: {}
2162 |
2163 | ajv@6.12.6:
2164 | dependencies:
2165 | fast-deep-equal: 3.1.3
2166 | fast-json-stable-stringify: 2.1.0
2167 | json-schema-traverse: 0.4.1
2168 | uri-js: 4.4.1
2169 |
2170 | ansi-regex@5.0.1: {}
2171 |
2172 | ansi-regex@6.1.0: {}
2173 |
2174 | ansi-styles@3.2.1:
2175 | dependencies:
2176 | color-convert: 1.9.3
2177 |
2178 | ansi-styles@4.3.0:
2179 | dependencies:
2180 | color-convert: 2.0.1
2181 |
2182 | ansi-styles@6.2.1: {}
2183 |
2184 | any-promise@1.3.0: {}
2185 |
2186 | anymatch@3.1.3:
2187 | dependencies:
2188 | normalize-path: 3.0.0
2189 | picomatch: 2.3.1
2190 |
2191 | argparse@2.0.1: {}
2192 |
2193 | array-buffer-byte-length@1.0.2:
2194 | dependencies:
2195 | call-bound: 1.0.3
2196 | is-array-buffer: 3.0.5
2197 |
2198 | array-union@2.1.0: {}
2199 |
2200 | arraybuffer.prototype.slice@1.0.4:
2201 | dependencies:
2202 | array-buffer-byte-length: 1.0.2
2203 | call-bind: 1.0.8
2204 | define-properties: 1.2.1
2205 | es-abstract: 1.23.9
2206 | es-errors: 1.3.0
2207 | get-intrinsic: 1.3.0
2208 | is-array-buffer: 3.0.5
2209 |
2210 | assertion-error@1.1.0: {}
2211 |
2212 | async-function@1.0.0: {}
2213 |
2214 | available-typed-arrays@1.0.7:
2215 | dependencies:
2216 | possible-typed-array-names: 1.1.0
2217 |
2218 | balanced-match@1.0.2: {}
2219 |
2220 | binary-extensions@2.3.0: {}
2221 |
2222 | brace-expansion@1.1.11:
2223 | dependencies:
2224 | balanced-match: 1.0.2
2225 | concat-map: 0.0.1
2226 |
2227 | brace-expansion@2.0.1:
2228 | dependencies:
2229 | balanced-match: 1.0.2
2230 |
2231 | braces@3.0.3:
2232 | dependencies:
2233 | fill-range: 7.1.1
2234 |
2235 | builtin-modules@3.3.0: {}
2236 |
2237 | bundle-require@3.1.2(esbuild@0.15.18):
2238 | dependencies:
2239 | esbuild: 0.15.18
2240 | load-tsconfig: 0.2.5
2241 |
2242 | cac@6.7.14: {}
2243 |
2244 | call-bind-apply-helpers@1.0.2:
2245 | dependencies:
2246 | es-errors: 1.3.0
2247 | function-bind: 1.1.2
2248 |
2249 | call-bind@1.0.8:
2250 | dependencies:
2251 | call-bind-apply-helpers: 1.0.2
2252 | es-define-property: 1.0.1
2253 | get-intrinsic: 1.3.0
2254 | set-function-length: 1.2.2
2255 |
2256 | call-bound@1.0.3:
2257 | dependencies:
2258 | call-bind-apply-helpers: 1.0.2
2259 | get-intrinsic: 1.3.0
2260 |
2261 | callsites@3.1.0: {}
2262 |
2263 | chai@4.5.0:
2264 | dependencies:
2265 | assertion-error: 1.1.0
2266 | check-error: 1.0.3
2267 | deep-eql: 4.1.4
2268 | get-func-name: 2.0.2
2269 | loupe: 2.3.7
2270 | pathval: 1.1.1
2271 | type-detect: 4.1.0
2272 |
2273 | chalk@2.4.2:
2274 | dependencies:
2275 | ansi-styles: 3.2.1
2276 | escape-string-regexp: 1.0.5
2277 | supports-color: 5.5.0
2278 |
2279 | chalk@4.1.2:
2280 | dependencies:
2281 | ansi-styles: 4.3.0
2282 | supports-color: 7.2.0
2283 |
2284 | check-error@1.0.3:
2285 | dependencies:
2286 | get-func-name: 2.0.2
2287 |
2288 | chokidar@3.6.0:
2289 | dependencies:
2290 | anymatch: 3.1.3
2291 | braces: 3.0.3
2292 | glob-parent: 5.1.2
2293 | is-binary-path: 2.1.0
2294 | is-glob: 4.0.3
2295 | normalize-path: 3.0.0
2296 | readdirp: 3.6.0
2297 | optionalDependencies:
2298 | fsevents: 2.3.3
2299 |
2300 | ci-info@3.9.0: {}
2301 |
2302 | clean-regexp@1.0.0:
2303 | dependencies:
2304 | escape-string-regexp: 1.0.5
2305 |
2306 | color-convert@1.9.3:
2307 | dependencies:
2308 | color-name: 1.1.3
2309 |
2310 | color-convert@2.0.1:
2311 | dependencies:
2312 | color-name: 1.1.4
2313 |
2314 | color-name@1.1.3: {}
2315 |
2316 | color-name@1.1.4: {}
2317 |
2318 | commander@4.1.1: {}
2319 |
2320 | concat-map@0.0.1: {}
2321 |
2322 | cross-spawn@6.0.6:
2323 | dependencies:
2324 | nice-try: 1.0.5
2325 | path-key: 2.0.1
2326 | semver: 5.7.2
2327 | shebang-command: 1.2.0
2328 | which: 1.3.1
2329 |
2330 | cross-spawn@7.0.6:
2331 | dependencies:
2332 | path-key: 3.1.1
2333 | shebang-command: 2.0.0
2334 | which: 2.0.2
2335 |
2336 | data-view-buffer@1.0.2:
2337 | dependencies:
2338 | call-bound: 1.0.3
2339 | es-errors: 1.3.0
2340 | is-data-view: 1.0.2
2341 |
2342 | data-view-byte-length@1.0.2:
2343 | dependencies:
2344 | call-bound: 1.0.3
2345 | es-errors: 1.3.0
2346 | is-data-view: 1.0.2
2347 |
2348 | data-view-byte-offset@1.0.1:
2349 | dependencies:
2350 | call-bound: 1.0.3
2351 | es-errors: 1.3.0
2352 | is-data-view: 1.0.2
2353 |
2354 | debug@4.4.0:
2355 | dependencies:
2356 | ms: 2.1.3
2357 |
2358 | deep-eql@4.1.4:
2359 | dependencies:
2360 | type-detect: 4.1.0
2361 |
2362 | deep-is@0.1.4: {}
2363 |
2364 | define-data-property@1.1.4:
2365 | dependencies:
2366 | es-define-property: 1.0.1
2367 | es-errors: 1.3.0
2368 | gopd: 1.2.0
2369 |
2370 | define-properties@1.2.1:
2371 | dependencies:
2372 | define-data-property: 1.1.4
2373 | has-property-descriptors: 1.0.2
2374 | object-keys: 1.1.1
2375 |
2376 | dir-glob@3.0.1:
2377 | dependencies:
2378 | path-type: 4.0.0
2379 |
2380 | doctrine@3.0.0:
2381 | dependencies:
2382 | esutils: 2.0.3
2383 |
2384 | dunder-proto@1.0.1:
2385 | dependencies:
2386 | call-bind-apply-helpers: 1.0.2
2387 | es-errors: 1.3.0
2388 | gopd: 1.2.0
2389 |
2390 | eastasianwidth@0.2.0: {}
2391 |
2392 | emoji-regex@8.0.0: {}
2393 |
2394 | emoji-regex@9.2.2: {}
2395 |
2396 | error-ex@1.3.2:
2397 | dependencies:
2398 | is-arrayish: 0.2.1
2399 |
2400 | es-abstract@1.23.9:
2401 | dependencies:
2402 | array-buffer-byte-length: 1.0.2
2403 | arraybuffer.prototype.slice: 1.0.4
2404 | available-typed-arrays: 1.0.7
2405 | call-bind: 1.0.8
2406 | call-bound: 1.0.3
2407 | data-view-buffer: 1.0.2
2408 | data-view-byte-length: 1.0.2
2409 | data-view-byte-offset: 1.0.1
2410 | es-define-property: 1.0.1
2411 | es-errors: 1.3.0
2412 | es-object-atoms: 1.1.1
2413 | es-set-tostringtag: 2.1.0
2414 | es-to-primitive: 1.3.0
2415 | function.prototype.name: 1.1.8
2416 | get-intrinsic: 1.3.0
2417 | get-proto: 1.0.1
2418 | get-symbol-description: 1.1.0
2419 | globalthis: 1.0.4
2420 | gopd: 1.2.0
2421 | has-property-descriptors: 1.0.2
2422 | has-proto: 1.2.0
2423 | has-symbols: 1.1.0
2424 | hasown: 2.0.2
2425 | internal-slot: 1.1.0
2426 | is-array-buffer: 3.0.5
2427 | is-callable: 1.2.7
2428 | is-data-view: 1.0.2
2429 | is-regex: 1.2.1
2430 | is-shared-array-buffer: 1.0.4
2431 | is-string: 1.1.1
2432 | is-typed-array: 1.1.15
2433 | is-weakref: 1.1.1
2434 | math-intrinsics: 1.1.0
2435 | object-inspect: 1.13.4
2436 | object-keys: 1.1.1
2437 | object.assign: 4.1.7
2438 | own-keys: 1.0.1
2439 | regexp.prototype.flags: 1.5.4
2440 | safe-array-concat: 1.1.3
2441 | safe-push-apply: 1.0.0
2442 | safe-regex-test: 1.1.0
2443 | set-proto: 1.0.0
2444 | string.prototype.trim: 1.2.10
2445 | string.prototype.trimend: 1.0.9
2446 | string.prototype.trimstart: 1.0.8
2447 | typed-array-buffer: 1.0.3
2448 | typed-array-byte-length: 1.0.3
2449 | typed-array-byte-offset: 1.0.4
2450 | typed-array-length: 1.0.7
2451 | unbox-primitive: 1.1.0
2452 | which-typed-array: 1.1.18
2453 |
2454 | es-define-property@1.0.1: {}
2455 |
2456 | es-errors@1.3.0: {}
2457 |
2458 | es-object-atoms@1.1.1:
2459 | dependencies:
2460 | es-errors: 1.3.0
2461 |
2462 | es-set-tostringtag@2.1.0:
2463 | dependencies:
2464 | es-errors: 1.3.0
2465 | get-intrinsic: 1.3.0
2466 | has-tostringtag: 1.0.2
2467 | hasown: 2.0.2
2468 |
2469 | es-to-primitive@1.3.0:
2470 | dependencies:
2471 | is-callable: 1.2.7
2472 | is-date-object: 1.1.0
2473 | is-symbol: 1.1.1
2474 |
2475 | esbuild-android-64@0.14.54:
2476 | optional: true
2477 |
2478 | esbuild-android-64@0.15.18:
2479 | optional: true
2480 |
2481 | esbuild-android-arm64@0.14.54:
2482 | optional: true
2483 |
2484 | esbuild-android-arm64@0.15.18:
2485 | optional: true
2486 |
2487 | esbuild-darwin-64@0.14.54:
2488 | optional: true
2489 |
2490 | esbuild-darwin-64@0.15.18:
2491 | optional: true
2492 |
2493 | esbuild-darwin-arm64@0.14.54:
2494 | optional: true
2495 |
2496 | esbuild-darwin-arm64@0.15.18:
2497 | optional: true
2498 |
2499 | esbuild-freebsd-64@0.14.54:
2500 | optional: true
2501 |
2502 | esbuild-freebsd-64@0.15.18:
2503 | optional: true
2504 |
2505 | esbuild-freebsd-arm64@0.14.54:
2506 | optional: true
2507 |
2508 | esbuild-freebsd-arm64@0.15.18:
2509 | optional: true
2510 |
2511 | esbuild-linux-32@0.14.54:
2512 | optional: true
2513 |
2514 | esbuild-linux-32@0.15.18:
2515 | optional: true
2516 |
2517 | esbuild-linux-64@0.14.54:
2518 | optional: true
2519 |
2520 | esbuild-linux-64@0.15.18:
2521 | optional: true
2522 |
2523 | esbuild-linux-arm64@0.14.54:
2524 | optional: true
2525 |
2526 | esbuild-linux-arm64@0.15.18:
2527 | optional: true
2528 |
2529 | esbuild-linux-arm@0.14.54:
2530 | optional: true
2531 |
2532 | esbuild-linux-arm@0.15.18:
2533 | optional: true
2534 |
2535 | esbuild-linux-mips64le@0.14.54:
2536 | optional: true
2537 |
2538 | esbuild-linux-mips64le@0.15.18:
2539 | optional: true
2540 |
2541 | esbuild-linux-ppc64le@0.14.54:
2542 | optional: true
2543 |
2544 | esbuild-linux-ppc64le@0.15.18:
2545 | optional: true
2546 |
2547 | esbuild-linux-riscv64@0.14.54:
2548 | optional: true
2549 |
2550 | esbuild-linux-riscv64@0.15.18:
2551 | optional: true
2552 |
2553 | esbuild-linux-s390x@0.14.54:
2554 | optional: true
2555 |
2556 | esbuild-linux-s390x@0.15.18:
2557 | optional: true
2558 |
2559 | esbuild-netbsd-64@0.14.54:
2560 | optional: true
2561 |
2562 | esbuild-netbsd-64@0.15.18:
2563 | optional: true
2564 |
2565 | esbuild-openbsd-64@0.14.54:
2566 | optional: true
2567 |
2568 | esbuild-openbsd-64@0.15.18:
2569 | optional: true
2570 |
2571 | esbuild-sunos-64@0.14.54:
2572 | optional: true
2573 |
2574 | esbuild-sunos-64@0.15.18:
2575 | optional: true
2576 |
2577 | esbuild-windows-32@0.14.54:
2578 | optional: true
2579 |
2580 | esbuild-windows-32@0.15.18:
2581 | optional: true
2582 |
2583 | esbuild-windows-64@0.14.54:
2584 | optional: true
2585 |
2586 | esbuild-windows-64@0.15.18:
2587 | optional: true
2588 |
2589 | esbuild-windows-arm64@0.14.54:
2590 | optional: true
2591 |
2592 | esbuild-windows-arm64@0.15.18:
2593 | optional: true
2594 |
2595 | esbuild@0.14.54:
2596 | optionalDependencies:
2597 | '@esbuild/linux-loong64': 0.14.54
2598 | esbuild-android-64: 0.14.54
2599 | esbuild-android-arm64: 0.14.54
2600 | esbuild-darwin-64: 0.14.54
2601 | esbuild-darwin-arm64: 0.14.54
2602 | esbuild-freebsd-64: 0.14.54
2603 | esbuild-freebsd-arm64: 0.14.54
2604 | esbuild-linux-32: 0.14.54
2605 | esbuild-linux-64: 0.14.54
2606 | esbuild-linux-arm: 0.14.54
2607 | esbuild-linux-arm64: 0.14.54
2608 | esbuild-linux-mips64le: 0.14.54
2609 | esbuild-linux-ppc64le: 0.14.54
2610 | esbuild-linux-riscv64: 0.14.54
2611 | esbuild-linux-s390x: 0.14.54
2612 | esbuild-netbsd-64: 0.14.54
2613 | esbuild-openbsd-64: 0.14.54
2614 | esbuild-sunos-64: 0.14.54
2615 | esbuild-windows-32: 0.14.54
2616 | esbuild-windows-64: 0.14.54
2617 | esbuild-windows-arm64: 0.14.54
2618 |
2619 | esbuild@0.15.18:
2620 | optionalDependencies:
2621 | '@esbuild/android-arm': 0.15.18
2622 | '@esbuild/linux-loong64': 0.15.18
2623 | esbuild-android-64: 0.15.18
2624 | esbuild-android-arm64: 0.15.18
2625 | esbuild-darwin-64: 0.15.18
2626 | esbuild-darwin-arm64: 0.15.18
2627 | esbuild-freebsd-64: 0.15.18
2628 | esbuild-freebsd-arm64: 0.15.18
2629 | esbuild-linux-32: 0.15.18
2630 | esbuild-linux-64: 0.15.18
2631 | esbuild-linux-arm: 0.15.18
2632 | esbuild-linux-arm64: 0.15.18
2633 | esbuild-linux-mips64le: 0.15.18
2634 | esbuild-linux-ppc64le: 0.15.18
2635 | esbuild-linux-riscv64: 0.15.18
2636 | esbuild-linux-s390x: 0.15.18
2637 | esbuild-netbsd-64: 0.15.18
2638 | esbuild-openbsd-64: 0.15.18
2639 | esbuild-sunos-64: 0.15.18
2640 | esbuild-windows-32: 0.15.18
2641 | esbuild-windows-64: 0.15.18
2642 | esbuild-windows-arm64: 0.15.18
2643 |
2644 | escape-string-regexp@1.0.5: {}
2645 |
2646 | escape-string-regexp@4.0.0: {}
2647 |
2648 | eslint-config-prettier@8.5.0(eslint@8.23.0):
2649 | dependencies:
2650 | eslint: 8.23.0
2651 |
2652 | eslint-plugin-unicorn@42.0.0(eslint@8.23.0):
2653 | dependencies:
2654 | '@babel/helper-validator-identifier': 7.25.9
2655 | ci-info: 3.9.0
2656 | clean-regexp: 1.0.0
2657 | eslint: 8.23.0
2658 | eslint-utils: 3.0.0(eslint@8.23.0)
2659 | esquery: 1.6.0
2660 | indent-string: 4.0.0
2661 | is-builtin-module: 3.2.1
2662 | lodash: 4.17.21
2663 | pluralize: 8.0.0
2664 | read-pkg-up: 7.0.1
2665 | regexp-tree: 0.1.27
2666 | safe-regex: 2.1.1
2667 | semver: 7.7.1
2668 | strip-indent: 3.0.0
2669 |
2670 | eslint-scope@5.1.1:
2671 | dependencies:
2672 | esrecurse: 4.3.0
2673 | estraverse: 4.3.0
2674 |
2675 | eslint-scope@7.2.2:
2676 | dependencies:
2677 | esrecurse: 4.3.0
2678 | estraverse: 5.3.0
2679 |
2680 | eslint-utils@3.0.0(eslint@8.23.0):
2681 | dependencies:
2682 | eslint: 8.23.0
2683 | eslint-visitor-keys: 2.1.0
2684 |
2685 | eslint-visitor-keys@2.1.0: {}
2686 |
2687 | eslint-visitor-keys@3.4.3: {}
2688 |
2689 | eslint@8.23.0:
2690 | dependencies:
2691 | '@eslint/eslintrc': 1.4.1
2692 | '@humanwhocodes/config-array': 0.10.7
2693 | '@humanwhocodes/gitignore-to-minimatch': 1.0.2
2694 | '@humanwhocodes/module-importer': 1.0.1
2695 | ajv: 6.12.6
2696 | chalk: 4.1.2
2697 | cross-spawn: 7.0.6
2698 | debug: 4.4.0
2699 | doctrine: 3.0.0
2700 | escape-string-regexp: 4.0.0
2701 | eslint-scope: 7.2.2
2702 | eslint-utils: 3.0.0(eslint@8.23.0)
2703 | eslint-visitor-keys: 3.4.3
2704 | espree: 9.6.1
2705 | esquery: 1.6.0
2706 | esutils: 2.0.3
2707 | fast-deep-equal: 3.1.3
2708 | file-entry-cache: 6.0.1
2709 | find-up: 5.0.0
2710 | functional-red-black-tree: 1.0.1
2711 | glob-parent: 6.0.2
2712 | globals: 13.24.0
2713 | globby: 11.1.0
2714 | grapheme-splitter: 1.0.4
2715 | ignore: 5.3.2
2716 | import-fresh: 3.3.1
2717 | imurmurhash: 0.1.4
2718 | is-glob: 4.0.3
2719 | js-yaml: 4.1.0
2720 | json-stable-stringify-without-jsonify: 1.0.1
2721 | levn: 0.4.1
2722 | lodash.merge: 4.6.2
2723 | minimatch: 3.1.2
2724 | natural-compare: 1.4.0
2725 | optionator: 0.9.4
2726 | regexpp: 3.2.0
2727 | strip-ansi: 6.0.1
2728 | strip-json-comments: 3.1.1
2729 | text-table: 0.2.0
2730 | transitivePeerDependencies:
2731 | - supports-color
2732 |
2733 | espree@9.6.1:
2734 | dependencies:
2735 | acorn: 8.14.0
2736 | acorn-jsx: 5.3.2(acorn@8.14.0)
2737 | eslint-visitor-keys: 3.4.3
2738 |
2739 | esquery@1.6.0:
2740 | dependencies:
2741 | estraverse: 5.3.0
2742 |
2743 | esrecurse@4.3.0:
2744 | dependencies:
2745 | estraverse: 5.3.0
2746 |
2747 | estraverse@4.3.0: {}
2748 |
2749 | estraverse@5.3.0: {}
2750 |
2751 | esutils@2.0.3: {}
2752 |
2753 | execa@5.1.1:
2754 | dependencies:
2755 | cross-spawn: 7.0.6
2756 | get-stream: 6.0.1
2757 | human-signals: 2.1.0
2758 | is-stream: 2.0.1
2759 | merge-stream: 2.0.0
2760 | npm-run-path: 4.0.1
2761 | onetime: 5.1.2
2762 | signal-exit: 3.0.7
2763 | strip-final-newline: 2.0.0
2764 |
2765 | fast-deep-equal@3.1.3: {}
2766 |
2767 | fast-glob@3.3.3:
2768 | dependencies:
2769 | '@nodelib/fs.stat': 2.0.5
2770 | '@nodelib/fs.walk': 1.2.8
2771 | glob-parent: 5.1.2
2772 | merge2: 1.4.1
2773 | micromatch: 4.0.8
2774 |
2775 | fast-json-stable-stringify@2.1.0: {}
2776 |
2777 | fast-levenshtein@2.0.6: {}
2778 |
2779 | fastq@1.19.0:
2780 | dependencies:
2781 | reusify: 1.0.4
2782 |
2783 | file-entry-cache@6.0.1:
2784 | dependencies:
2785 | flat-cache: 3.2.0
2786 |
2787 | fill-range@7.1.1:
2788 | dependencies:
2789 | to-regex-range: 5.0.1
2790 |
2791 | find-up@4.1.0:
2792 | dependencies:
2793 | locate-path: 5.0.0
2794 | path-exists: 4.0.0
2795 |
2796 | find-up@5.0.0:
2797 | dependencies:
2798 | locate-path: 6.0.0
2799 | path-exists: 4.0.0
2800 |
2801 | flat-cache@3.2.0:
2802 | dependencies:
2803 | flatted: 3.3.3
2804 | keyv: 4.5.4
2805 | rimraf: 3.0.2
2806 |
2807 | flatted@3.3.3: {}
2808 |
2809 | for-each@0.3.5:
2810 | dependencies:
2811 | is-callable: 1.2.7
2812 |
2813 | foreground-child@3.3.1:
2814 | dependencies:
2815 | cross-spawn: 7.0.6
2816 | signal-exit: 4.1.0
2817 |
2818 | fs.realpath@1.0.0: {}
2819 |
2820 | fsevents@2.3.3:
2821 | optional: true
2822 |
2823 | function-bind@1.1.2: {}
2824 |
2825 | function.prototype.name@1.1.8:
2826 | dependencies:
2827 | call-bind: 1.0.8
2828 | call-bound: 1.0.3
2829 | define-properties: 1.2.1
2830 | functions-have-names: 1.2.3
2831 | hasown: 2.0.2
2832 | is-callable: 1.2.7
2833 |
2834 | functional-red-black-tree@1.0.1: {}
2835 |
2836 | functions-have-names@1.2.3: {}
2837 |
2838 | get-func-name@2.0.2: {}
2839 |
2840 | get-intrinsic@1.3.0:
2841 | dependencies:
2842 | call-bind-apply-helpers: 1.0.2
2843 | es-define-property: 1.0.1
2844 | es-errors: 1.3.0
2845 | es-object-atoms: 1.1.1
2846 | function-bind: 1.1.2
2847 | get-proto: 1.0.1
2848 | gopd: 1.2.0
2849 | has-symbols: 1.1.0
2850 | hasown: 2.0.2
2851 | math-intrinsics: 1.1.0
2852 |
2853 | get-proto@1.0.1:
2854 | dependencies:
2855 | dunder-proto: 1.0.1
2856 | es-object-atoms: 1.1.1
2857 |
2858 | get-stream@6.0.1: {}
2859 |
2860 | get-symbol-description@1.1.0:
2861 | dependencies:
2862 | call-bound: 1.0.3
2863 | es-errors: 1.3.0
2864 | get-intrinsic: 1.3.0
2865 |
2866 | glob-parent@5.1.2:
2867 | dependencies:
2868 | is-glob: 4.0.3
2869 |
2870 | glob-parent@6.0.2:
2871 | dependencies:
2872 | is-glob: 4.0.3
2873 |
2874 | glob@10.4.5:
2875 | dependencies:
2876 | foreground-child: 3.3.1
2877 | jackspeak: 3.4.3
2878 | minimatch: 9.0.5
2879 | minipass: 7.1.2
2880 | package-json-from-dist: 1.0.1
2881 | path-scurry: 1.11.1
2882 |
2883 | glob@7.2.3:
2884 | dependencies:
2885 | fs.realpath: 1.0.0
2886 | inflight: 1.0.6
2887 | inherits: 2.0.4
2888 | minimatch: 3.1.2
2889 | once: 1.4.0
2890 | path-is-absolute: 1.0.1
2891 |
2892 | globals@13.24.0:
2893 | dependencies:
2894 | type-fest: 0.20.2
2895 |
2896 | globalthis@1.0.4:
2897 | dependencies:
2898 | define-properties: 1.2.1
2899 | gopd: 1.2.0
2900 |
2901 | globby@11.1.0:
2902 | dependencies:
2903 | array-union: 2.1.0
2904 | dir-glob: 3.0.1
2905 | fast-glob: 3.3.3
2906 | ignore: 5.3.2
2907 | merge2: 1.4.1
2908 | slash: 3.0.0
2909 |
2910 | gopd@1.2.0: {}
2911 |
2912 | graceful-fs@4.2.11: {}
2913 |
2914 | grapheme-splitter@1.0.4: {}
2915 |
2916 | has-bigints@1.1.0: {}
2917 |
2918 | has-flag@3.0.0: {}
2919 |
2920 | has-flag@4.0.0: {}
2921 |
2922 | has-property-descriptors@1.0.2:
2923 | dependencies:
2924 | es-define-property: 1.0.1
2925 |
2926 | has-proto@1.2.0:
2927 | dependencies:
2928 | dunder-proto: 1.0.1
2929 |
2930 | has-symbols@1.1.0: {}
2931 |
2932 | has-tostringtag@1.0.2:
2933 | dependencies:
2934 | has-symbols: 1.1.0
2935 |
2936 | hasown@2.0.2:
2937 | dependencies:
2938 | function-bind: 1.1.2
2939 |
2940 | hosted-git-info@2.8.9: {}
2941 |
2942 | human-signals@2.1.0: {}
2943 |
2944 | husky@8.0.1: {}
2945 |
2946 | ignore@5.3.2: {}
2947 |
2948 | import-fresh@3.3.1:
2949 | dependencies:
2950 | parent-module: 1.0.1
2951 | resolve-from: 4.0.0
2952 |
2953 | imurmurhash@0.1.4: {}
2954 |
2955 | indent-string@4.0.0: {}
2956 |
2957 | inflight@1.0.6:
2958 | dependencies:
2959 | once: 1.4.0
2960 | wrappy: 1.0.2
2961 |
2962 | inherits@2.0.4: {}
2963 |
2964 | internal-slot@1.1.0:
2965 | dependencies:
2966 | es-errors: 1.3.0
2967 | hasown: 2.0.2
2968 | side-channel: 1.1.0
2969 |
2970 | is-array-buffer@3.0.5:
2971 | dependencies:
2972 | call-bind: 1.0.8
2973 | call-bound: 1.0.3
2974 | get-intrinsic: 1.3.0
2975 |
2976 | is-arrayish@0.2.1: {}
2977 |
2978 | is-async-function@2.1.1:
2979 | dependencies:
2980 | async-function: 1.0.0
2981 | call-bound: 1.0.3
2982 | get-proto: 1.0.1
2983 | has-tostringtag: 1.0.2
2984 | safe-regex-test: 1.1.0
2985 |
2986 | is-bigint@1.1.0:
2987 | dependencies:
2988 | has-bigints: 1.1.0
2989 |
2990 | is-binary-path@2.1.0:
2991 | dependencies:
2992 | binary-extensions: 2.3.0
2993 |
2994 | is-boolean-object@1.2.2:
2995 | dependencies:
2996 | call-bound: 1.0.3
2997 | has-tostringtag: 1.0.2
2998 |
2999 | is-builtin-module@3.2.1:
3000 | dependencies:
3001 | builtin-modules: 3.3.0
3002 |
3003 | is-callable@1.2.7: {}
3004 |
3005 | is-core-module@2.16.1:
3006 | dependencies:
3007 | hasown: 2.0.2
3008 |
3009 | is-data-view@1.0.2:
3010 | dependencies:
3011 | call-bound: 1.0.3
3012 | get-intrinsic: 1.3.0
3013 | is-typed-array: 1.1.15
3014 |
3015 | is-date-object@1.1.0:
3016 | dependencies:
3017 | call-bound: 1.0.3
3018 | has-tostringtag: 1.0.2
3019 |
3020 | is-extglob@2.1.1: {}
3021 |
3022 | is-finalizationregistry@1.1.1:
3023 | dependencies:
3024 | call-bound: 1.0.3
3025 |
3026 | is-fullwidth-code-point@3.0.0: {}
3027 |
3028 | is-generator-function@1.1.0:
3029 | dependencies:
3030 | call-bound: 1.0.3
3031 | get-proto: 1.0.1
3032 | has-tostringtag: 1.0.2
3033 | safe-regex-test: 1.1.0
3034 |
3035 | is-glob@4.0.3:
3036 | dependencies:
3037 | is-extglob: 2.1.1
3038 |
3039 | is-map@2.0.3: {}
3040 |
3041 | is-number-object@1.1.1:
3042 | dependencies:
3043 | call-bound: 1.0.3
3044 | has-tostringtag: 1.0.2
3045 |
3046 | is-number@7.0.0: {}
3047 |
3048 | is-regex@1.2.1:
3049 | dependencies:
3050 | call-bound: 1.0.3
3051 | gopd: 1.2.0
3052 | has-tostringtag: 1.0.2
3053 | hasown: 2.0.2
3054 |
3055 | is-set@2.0.3: {}
3056 |
3057 | is-shared-array-buffer@1.0.4:
3058 | dependencies:
3059 | call-bound: 1.0.3
3060 |
3061 | is-stream@2.0.1: {}
3062 |
3063 | is-string@1.1.1:
3064 | dependencies:
3065 | call-bound: 1.0.3
3066 | has-tostringtag: 1.0.2
3067 |
3068 | is-symbol@1.1.1:
3069 | dependencies:
3070 | call-bound: 1.0.3
3071 | has-symbols: 1.1.0
3072 | safe-regex-test: 1.1.0
3073 |
3074 | is-typed-array@1.1.15:
3075 | dependencies:
3076 | which-typed-array: 1.1.18
3077 |
3078 | is-weakmap@2.0.2: {}
3079 |
3080 | is-weakref@1.1.1:
3081 | dependencies:
3082 | call-bound: 1.0.3
3083 |
3084 | is-weakset@2.0.4:
3085 | dependencies:
3086 | call-bound: 1.0.3
3087 | get-intrinsic: 1.3.0
3088 |
3089 | isarray@2.0.5: {}
3090 |
3091 | isexe@2.0.0: {}
3092 |
3093 | jackspeak@3.4.3:
3094 | dependencies:
3095 | '@isaacs/cliui': 8.0.2
3096 | optionalDependencies:
3097 | '@pkgjs/parseargs': 0.11.0
3098 |
3099 | joycon@3.1.1: {}
3100 |
3101 | js-tokens@4.0.0: {}
3102 |
3103 | js-yaml@4.1.0:
3104 | dependencies:
3105 | argparse: 2.0.1
3106 |
3107 | json-buffer@3.0.1: {}
3108 |
3109 | json-parse-better-errors@1.0.2: {}
3110 |
3111 | json-parse-even-better-errors@2.3.1: {}
3112 |
3113 | json-schema-traverse@0.4.1: {}
3114 |
3115 | json-stable-stringify-without-jsonify@1.0.1: {}
3116 |
3117 | keyv@4.5.4:
3118 | dependencies:
3119 | json-buffer: 3.0.1
3120 |
3121 | levn@0.4.1:
3122 | dependencies:
3123 | prelude-ls: 1.2.1
3124 | type-check: 0.4.0
3125 |
3126 | lilconfig@2.1.0: {}
3127 |
3128 | lines-and-columns@1.2.4: {}
3129 |
3130 | load-json-file@4.0.0:
3131 | dependencies:
3132 | graceful-fs: 4.2.11
3133 | parse-json: 4.0.0
3134 | pify: 3.0.0
3135 | strip-bom: 3.0.0
3136 |
3137 | load-tsconfig@0.2.5: {}
3138 |
3139 | local-pkg@0.4.3: {}
3140 |
3141 | locate-path@5.0.0:
3142 | dependencies:
3143 | p-locate: 4.1.0
3144 |
3145 | locate-path@6.0.0:
3146 | dependencies:
3147 | p-locate: 5.0.0
3148 |
3149 | lodash.merge@4.6.2: {}
3150 |
3151 | lodash.sortby@4.7.0: {}
3152 |
3153 | lodash@4.17.21: {}
3154 |
3155 | loupe@2.3.7:
3156 | dependencies:
3157 | get-func-name: 2.0.2
3158 |
3159 | lru-cache@10.4.3: {}
3160 |
3161 | math-intrinsics@1.1.0: {}
3162 |
3163 | memorystream@0.3.1: {}
3164 |
3165 | merge-stream@2.0.0: {}
3166 |
3167 | merge2@1.4.1: {}
3168 |
3169 | micromatch@4.0.8:
3170 | dependencies:
3171 | braces: 3.0.3
3172 | picomatch: 2.3.1
3173 |
3174 | mimic-fn@2.1.0: {}
3175 |
3176 | min-indent@1.0.1: {}
3177 |
3178 | minimatch@3.1.2:
3179 | dependencies:
3180 | brace-expansion: 1.1.11
3181 |
3182 | minimatch@9.0.5:
3183 | dependencies:
3184 | brace-expansion: 2.0.1
3185 |
3186 | minipass@7.1.2: {}
3187 |
3188 | ms@2.1.3: {}
3189 |
3190 | mz@2.7.0:
3191 | dependencies:
3192 | any-promise: 1.3.0
3193 | object-assign: 4.1.1
3194 | thenify-all: 1.6.0
3195 |
3196 | nano-staged@0.8.0:
3197 | dependencies:
3198 | picocolors: 1.1.1
3199 |
3200 | nanoid@3.3.8: {}
3201 |
3202 | natural-compare@1.4.0: {}
3203 |
3204 | nice-try@1.0.5: {}
3205 |
3206 | normalize-package-data@2.5.0:
3207 | dependencies:
3208 | hosted-git-info: 2.8.9
3209 | resolve: 1.22.10
3210 | semver: 5.7.2
3211 | validate-npm-package-license: 3.0.4
3212 |
3213 | normalize-path@3.0.0: {}
3214 |
3215 | npm-run-all@4.1.5:
3216 | dependencies:
3217 | ansi-styles: 3.2.1
3218 | chalk: 2.4.2
3219 | cross-spawn: 6.0.6
3220 | memorystream: 0.3.1
3221 | minimatch: 3.1.2
3222 | pidtree: 0.3.1
3223 | read-pkg: 3.0.0
3224 | shell-quote: 1.8.2
3225 | string.prototype.padend: 3.1.6
3226 |
3227 | npm-run-path@4.0.1:
3228 | dependencies:
3229 | path-key: 3.1.1
3230 |
3231 | object-assign@4.1.1: {}
3232 |
3233 | object-inspect@1.13.4: {}
3234 |
3235 | object-keys@1.1.1: {}
3236 |
3237 | object.assign@4.1.7:
3238 | dependencies:
3239 | call-bind: 1.0.8
3240 | call-bound: 1.0.3
3241 | define-properties: 1.2.1
3242 | es-object-atoms: 1.1.1
3243 | has-symbols: 1.1.0
3244 | object-keys: 1.1.1
3245 |
3246 | once@1.4.0:
3247 | dependencies:
3248 | wrappy: 1.0.2
3249 |
3250 | onetime@5.1.2:
3251 | dependencies:
3252 | mimic-fn: 2.1.0
3253 |
3254 | optionator@0.9.4:
3255 | dependencies:
3256 | deep-is: 0.1.4
3257 | fast-levenshtein: 2.0.6
3258 | levn: 0.4.1
3259 | prelude-ls: 1.2.1
3260 | type-check: 0.4.0
3261 | word-wrap: 1.2.5
3262 |
3263 | own-keys@1.0.1:
3264 | dependencies:
3265 | get-intrinsic: 1.3.0
3266 | object-keys: 1.1.1
3267 | safe-push-apply: 1.0.0
3268 |
3269 | p-limit@2.3.0:
3270 | dependencies:
3271 | p-try: 2.2.0
3272 |
3273 | p-limit@3.1.0:
3274 | dependencies:
3275 | yocto-queue: 0.1.0
3276 |
3277 | p-locate@4.1.0:
3278 | dependencies:
3279 | p-limit: 2.3.0
3280 |
3281 | p-locate@5.0.0:
3282 | dependencies:
3283 | p-limit: 3.1.0
3284 |
3285 | p-try@2.2.0: {}
3286 |
3287 | package-json-from-dist@1.0.1: {}
3288 |
3289 | parent-module@1.0.1:
3290 | dependencies:
3291 | callsites: 3.1.0
3292 |
3293 | parse-json@4.0.0:
3294 | dependencies:
3295 | error-ex: 1.3.2
3296 | json-parse-better-errors: 1.0.2
3297 |
3298 | parse-json@5.2.0:
3299 | dependencies:
3300 | '@babel/code-frame': 7.26.2
3301 | error-ex: 1.3.2
3302 | json-parse-even-better-errors: 2.3.1
3303 | lines-and-columns: 1.2.4
3304 |
3305 | path-exists@4.0.0: {}
3306 |
3307 | path-is-absolute@1.0.1: {}
3308 |
3309 | path-key@2.0.1: {}
3310 |
3311 | path-key@3.1.1: {}
3312 |
3313 | path-parse@1.0.7: {}
3314 |
3315 | path-scurry@1.11.1:
3316 | dependencies:
3317 | lru-cache: 10.4.3
3318 | minipass: 7.1.2
3319 |
3320 | path-type@3.0.0:
3321 | dependencies:
3322 | pify: 3.0.0
3323 |
3324 | path-type@4.0.0: {}
3325 |
3326 | pathval@1.1.1: {}
3327 |
3328 | picocolors@1.1.1: {}
3329 |
3330 | picomatch@2.3.1: {}
3331 |
3332 | pidtree@0.3.1: {}
3333 |
3334 | pify@3.0.0: {}
3335 |
3336 | pirates@4.0.6: {}
3337 |
3338 | pluralize@8.0.0: {}
3339 |
3340 | possible-typed-array-names@1.1.0: {}
3341 |
3342 | postcss-load-config@3.1.4(postcss@8.5.3):
3343 | dependencies:
3344 | lilconfig: 2.1.0
3345 | yaml: 1.10.2
3346 | optionalDependencies:
3347 | postcss: 8.5.3
3348 |
3349 | postcss@8.5.3:
3350 | dependencies:
3351 | nanoid: 3.3.8
3352 | picocolors: 1.1.1
3353 | source-map-js: 1.2.1
3354 |
3355 | prelude-ls@1.2.1: {}
3356 |
3357 | punycode@2.3.1: {}
3358 |
3359 | queue-microtask@1.2.3: {}
3360 |
3361 | read-pkg-up@7.0.1:
3362 | dependencies:
3363 | find-up: 4.1.0
3364 | read-pkg: 5.2.0
3365 | type-fest: 0.8.1
3366 |
3367 | read-pkg@3.0.0:
3368 | dependencies:
3369 | load-json-file: 4.0.0
3370 | normalize-package-data: 2.5.0
3371 | path-type: 3.0.0
3372 |
3373 | read-pkg@5.2.0:
3374 | dependencies:
3375 | '@types/normalize-package-data': 2.4.4
3376 | normalize-package-data: 2.5.0
3377 | parse-json: 5.2.0
3378 | type-fest: 0.6.0
3379 |
3380 | readdirp@3.6.0:
3381 | dependencies:
3382 | picomatch: 2.3.1
3383 |
3384 | reflect.getprototypeof@1.0.10:
3385 | dependencies:
3386 | call-bind: 1.0.8
3387 | define-properties: 1.2.1
3388 | es-abstract: 1.23.9
3389 | es-errors: 1.3.0
3390 | es-object-atoms: 1.1.1
3391 | get-intrinsic: 1.3.0
3392 | get-proto: 1.0.1
3393 | which-builtin-type: 1.2.1
3394 |
3395 | regexp-tree@0.1.27: {}
3396 |
3397 | regexp.prototype.flags@1.5.4:
3398 | dependencies:
3399 | call-bind: 1.0.8
3400 | define-properties: 1.2.1
3401 | es-errors: 1.3.0
3402 | get-proto: 1.0.1
3403 | gopd: 1.2.0
3404 | set-function-name: 2.0.2
3405 |
3406 | regexpp@3.2.0: {}
3407 |
3408 | resolve-from@4.0.0: {}
3409 |
3410 | resolve-from@5.0.0: {}
3411 |
3412 | resolve@1.22.10:
3413 | dependencies:
3414 | is-core-module: 2.16.1
3415 | path-parse: 1.0.7
3416 | supports-preserve-symlinks-flag: 1.0.0
3417 |
3418 | reusify@1.0.4: {}
3419 |
3420 | rimraf@3.0.2:
3421 | dependencies:
3422 | glob: 7.2.3
3423 |
3424 | rollup@2.77.3:
3425 | optionalDependencies:
3426 | fsevents: 2.3.3
3427 |
3428 | rollup@2.79.2:
3429 | optionalDependencies:
3430 | fsevents: 2.3.3
3431 |
3432 | run-parallel@1.2.0:
3433 | dependencies:
3434 | queue-microtask: 1.2.3
3435 |
3436 | safe-array-concat@1.1.3:
3437 | dependencies:
3438 | call-bind: 1.0.8
3439 | call-bound: 1.0.3
3440 | get-intrinsic: 1.3.0
3441 | has-symbols: 1.1.0
3442 | isarray: 2.0.5
3443 |
3444 | safe-push-apply@1.0.0:
3445 | dependencies:
3446 | es-errors: 1.3.0
3447 | isarray: 2.0.5
3448 |
3449 | safe-regex-test@1.1.0:
3450 | dependencies:
3451 | call-bound: 1.0.3
3452 | es-errors: 1.3.0
3453 | is-regex: 1.2.1
3454 |
3455 | safe-regex@2.1.1:
3456 | dependencies:
3457 | regexp-tree: 0.1.27
3458 |
3459 | semver@5.7.2: {}
3460 |
3461 | semver@7.7.1: {}
3462 |
3463 | set-function-length@1.2.2:
3464 | dependencies:
3465 | define-data-property: 1.1.4
3466 | es-errors: 1.3.0
3467 | function-bind: 1.1.2
3468 | get-intrinsic: 1.3.0
3469 | gopd: 1.2.0
3470 | has-property-descriptors: 1.0.2
3471 |
3472 | set-function-name@2.0.2:
3473 | dependencies:
3474 | define-data-property: 1.1.4
3475 | es-errors: 1.3.0
3476 | functions-have-names: 1.2.3
3477 | has-property-descriptors: 1.0.2
3478 |
3479 | set-proto@1.0.0:
3480 | dependencies:
3481 | dunder-proto: 1.0.1
3482 | es-errors: 1.3.0
3483 | es-object-atoms: 1.1.1
3484 |
3485 | shebang-command@1.2.0:
3486 | dependencies:
3487 | shebang-regex: 1.0.0
3488 |
3489 | shebang-command@2.0.0:
3490 | dependencies:
3491 | shebang-regex: 3.0.0
3492 |
3493 | shebang-regex@1.0.0: {}
3494 |
3495 | shebang-regex@3.0.0: {}
3496 |
3497 | shell-quote@1.8.2: {}
3498 |
3499 | side-channel-list@1.0.0:
3500 | dependencies:
3501 | es-errors: 1.3.0
3502 | object-inspect: 1.13.4
3503 |
3504 | side-channel-map@1.0.1:
3505 | dependencies:
3506 | call-bound: 1.0.3
3507 | es-errors: 1.3.0
3508 | get-intrinsic: 1.3.0
3509 | object-inspect: 1.13.4
3510 |
3511 | side-channel-weakmap@1.0.2:
3512 | dependencies:
3513 | call-bound: 1.0.3
3514 | es-errors: 1.3.0
3515 | get-intrinsic: 1.3.0
3516 | object-inspect: 1.13.4
3517 | side-channel-map: 1.0.1
3518 |
3519 | side-channel@1.1.0:
3520 | dependencies:
3521 | es-errors: 1.3.0
3522 | object-inspect: 1.13.4
3523 | side-channel-list: 1.0.0
3524 | side-channel-map: 1.0.1
3525 | side-channel-weakmap: 1.0.2
3526 |
3527 | signal-exit@3.0.7: {}
3528 |
3529 | signal-exit@4.1.0: {}
3530 |
3531 | slash@3.0.0: {}
3532 |
3533 | source-map-js@1.2.1: {}
3534 |
3535 | source-map@0.8.0-beta.0:
3536 | dependencies:
3537 | whatwg-url: 7.1.0
3538 |
3539 | spdx-correct@3.2.0:
3540 | dependencies:
3541 | spdx-expression-parse: 3.0.1
3542 | spdx-license-ids: 3.0.21
3543 |
3544 | spdx-exceptions@2.5.0: {}
3545 |
3546 | spdx-expression-parse@3.0.1:
3547 | dependencies:
3548 | spdx-exceptions: 2.5.0
3549 | spdx-license-ids: 3.0.21
3550 |
3551 | spdx-license-ids@3.0.21: {}
3552 |
3553 | string-width@4.2.3:
3554 | dependencies:
3555 | emoji-regex: 8.0.0
3556 | is-fullwidth-code-point: 3.0.0
3557 | strip-ansi: 6.0.1
3558 |
3559 | string-width@5.1.2:
3560 | dependencies:
3561 | eastasianwidth: 0.2.0
3562 | emoji-regex: 9.2.2
3563 | strip-ansi: 7.1.0
3564 |
3565 | string.prototype.padend@3.1.6:
3566 | dependencies:
3567 | call-bind: 1.0.8
3568 | define-properties: 1.2.1
3569 | es-abstract: 1.23.9
3570 | es-object-atoms: 1.1.1
3571 |
3572 | string.prototype.trim@1.2.10:
3573 | dependencies:
3574 | call-bind: 1.0.8
3575 | call-bound: 1.0.3
3576 | define-data-property: 1.1.4
3577 | define-properties: 1.2.1
3578 | es-abstract: 1.23.9
3579 | es-object-atoms: 1.1.1
3580 | has-property-descriptors: 1.0.2
3581 |
3582 | string.prototype.trimend@1.0.9:
3583 | dependencies:
3584 | call-bind: 1.0.8
3585 | call-bound: 1.0.3
3586 | define-properties: 1.2.1
3587 | es-object-atoms: 1.1.1
3588 |
3589 | string.prototype.trimstart@1.0.8:
3590 | dependencies:
3591 | call-bind: 1.0.8
3592 | define-properties: 1.2.1
3593 | es-object-atoms: 1.1.1
3594 |
3595 | strip-ansi@6.0.1:
3596 | dependencies:
3597 | ansi-regex: 5.0.1
3598 |
3599 | strip-ansi@7.1.0:
3600 | dependencies:
3601 | ansi-regex: 6.1.0
3602 |
3603 | strip-bom@3.0.0: {}
3604 |
3605 | strip-final-newline@2.0.0: {}
3606 |
3607 | strip-indent@3.0.0:
3608 | dependencies:
3609 | min-indent: 1.0.1
3610 |
3611 | strip-json-comments@3.1.1: {}
3612 |
3613 | strip-literal@0.4.2:
3614 | dependencies:
3615 | acorn: 8.14.0
3616 |
3617 | sucrase@3.35.0:
3618 | dependencies:
3619 | '@jridgewell/gen-mapping': 0.3.8
3620 | commander: 4.1.1
3621 | glob: 10.4.5
3622 | lines-and-columns: 1.2.4
3623 | mz: 2.7.0
3624 | pirates: 4.0.6
3625 | ts-interface-checker: 0.1.13
3626 |
3627 | supports-color@5.5.0:
3628 | dependencies:
3629 | has-flag: 3.0.0
3630 |
3631 | supports-color@7.2.0:
3632 | dependencies:
3633 | has-flag: 4.0.0
3634 |
3635 | supports-preserve-symlinks-flag@1.0.0: {}
3636 |
3637 | text-table@0.2.0: {}
3638 |
3639 | thenify-all@1.6.0:
3640 | dependencies:
3641 | thenify: 3.3.1
3642 |
3643 | thenify@3.3.1:
3644 | dependencies:
3645 | any-promise: 1.3.0
3646 |
3647 | tinybench@2.9.0: {}
3648 |
3649 | tinypool@0.2.4: {}
3650 |
3651 | tinyspy@1.1.1: {}
3652 |
3653 | to-regex-range@5.0.1:
3654 | dependencies:
3655 | is-number: 7.0.0
3656 |
3657 | tr46@1.0.1:
3658 | dependencies:
3659 | punycode: 2.3.1
3660 |
3661 | tree-kill@1.2.2: {}
3662 |
3663 | ts-interface-checker@0.1.13: {}
3664 |
3665 | tslib@1.14.1: {}
3666 |
3667 | tsup@6.2.3(postcss@8.5.3)(typescript@4.8.2):
3668 | dependencies:
3669 | bundle-require: 3.1.2(esbuild@0.15.18)
3670 | cac: 6.7.14
3671 | chokidar: 3.6.0
3672 | debug: 4.4.0
3673 | esbuild: 0.15.18
3674 | execa: 5.1.1
3675 | globby: 11.1.0
3676 | joycon: 3.1.1
3677 | postcss-load-config: 3.1.4(postcss@8.5.3)
3678 | resolve-from: 5.0.0
3679 | rollup: 2.79.2
3680 | source-map: 0.8.0-beta.0
3681 | sucrase: 3.35.0
3682 | tree-kill: 1.2.2
3683 | optionalDependencies:
3684 | postcss: 8.5.3
3685 | typescript: 4.8.2
3686 | transitivePeerDependencies:
3687 | - supports-color
3688 | - ts-node
3689 |
3690 | tsutils@3.21.0(typescript@4.8.2):
3691 | dependencies:
3692 | tslib: 1.14.1
3693 | typescript: 4.8.2
3694 |
3695 | type-check@0.4.0:
3696 | dependencies:
3697 | prelude-ls: 1.2.1
3698 |
3699 | type-detect@4.1.0: {}
3700 |
3701 | type-fest@0.20.2: {}
3702 |
3703 | type-fest@0.6.0: {}
3704 |
3705 | type-fest@0.8.1: {}
3706 |
3707 | typed-array-buffer@1.0.3:
3708 | dependencies:
3709 | call-bound: 1.0.3
3710 | es-errors: 1.3.0
3711 | is-typed-array: 1.1.15
3712 |
3713 | typed-array-byte-length@1.0.3:
3714 | dependencies:
3715 | call-bind: 1.0.8
3716 | for-each: 0.3.5
3717 | gopd: 1.2.0
3718 | has-proto: 1.2.0
3719 | is-typed-array: 1.1.15
3720 |
3721 | typed-array-byte-offset@1.0.4:
3722 | dependencies:
3723 | available-typed-arrays: 1.0.7
3724 | call-bind: 1.0.8
3725 | for-each: 0.3.5
3726 | gopd: 1.2.0
3727 | has-proto: 1.2.0
3728 | is-typed-array: 1.1.15
3729 | reflect.getprototypeof: 1.0.10
3730 |
3731 | typed-array-length@1.0.7:
3732 | dependencies:
3733 | call-bind: 1.0.8
3734 | for-each: 0.3.5
3735 | gopd: 1.2.0
3736 | is-typed-array: 1.1.15
3737 | possible-typed-array-names: 1.1.0
3738 | reflect.getprototypeof: 1.0.10
3739 |
3740 | typescript@4.8.2: {}
3741 |
3742 | unbox-primitive@1.1.0:
3743 | dependencies:
3744 | call-bound: 1.0.3
3745 | has-bigints: 1.1.0
3746 | has-symbols: 1.1.0
3747 | which-boxed-primitive: 1.1.1
3748 |
3749 | uri-js@4.4.1:
3750 | dependencies:
3751 | punycode: 2.3.1
3752 |
3753 | validate-npm-package-license@3.0.4:
3754 | dependencies:
3755 | spdx-correct: 3.2.0
3756 | spdx-expression-parse: 3.0.1
3757 |
3758 | vite@3.0.9:
3759 | dependencies:
3760 | esbuild: 0.14.54
3761 | postcss: 8.5.3
3762 | resolve: 1.22.10
3763 | rollup: 2.77.3
3764 | optionalDependencies:
3765 | fsevents: 2.3.3
3766 |
3767 | vitest@0.23.0:
3768 | dependencies:
3769 | '@types/chai': 4.3.20
3770 | '@types/chai-subset': 1.3.5
3771 | '@types/node': 18.7.14
3772 | chai: 4.5.0
3773 | debug: 4.4.0
3774 | local-pkg: 0.4.3
3775 | strip-literal: 0.4.2
3776 | tinybench: 2.9.0
3777 | tinypool: 0.2.4
3778 | tinyspy: 1.1.1
3779 | vite: 3.0.9
3780 | transitivePeerDependencies:
3781 | - less
3782 | - sass
3783 | - stylus
3784 | - supports-color
3785 | - terser
3786 |
3787 | webidl-conversions@4.0.2: {}
3788 |
3789 | whatwg-url@7.1.0:
3790 | dependencies:
3791 | lodash.sortby: 4.7.0
3792 | tr46: 1.0.1
3793 | webidl-conversions: 4.0.2
3794 |
3795 | which-boxed-primitive@1.1.1:
3796 | dependencies:
3797 | is-bigint: 1.1.0
3798 | is-boolean-object: 1.2.2
3799 | is-number-object: 1.1.1
3800 | is-string: 1.1.1
3801 | is-symbol: 1.1.1
3802 |
3803 | which-builtin-type@1.2.1:
3804 | dependencies:
3805 | call-bound: 1.0.3
3806 | function.prototype.name: 1.1.8
3807 | has-tostringtag: 1.0.2
3808 | is-async-function: 2.1.1
3809 | is-date-object: 1.1.0
3810 | is-finalizationregistry: 1.1.1
3811 | is-generator-function: 1.1.0
3812 | is-regex: 1.2.1
3813 | is-weakref: 1.1.1
3814 | isarray: 2.0.5
3815 | which-boxed-primitive: 1.1.1
3816 | which-collection: 1.0.2
3817 | which-typed-array: 1.1.18
3818 |
3819 | which-collection@1.0.2:
3820 | dependencies:
3821 | is-map: 2.0.3
3822 | is-set: 2.0.3
3823 | is-weakmap: 2.0.2
3824 | is-weakset: 2.0.4
3825 |
3826 | which-typed-array@1.1.18:
3827 | dependencies:
3828 | available-typed-arrays: 1.0.7
3829 | call-bind: 1.0.8
3830 | call-bound: 1.0.3
3831 | for-each: 0.3.5
3832 | gopd: 1.2.0
3833 | has-tostringtag: 1.0.2
3834 |
3835 | which@1.3.1:
3836 | dependencies:
3837 | isexe: 2.0.0
3838 |
3839 | which@2.0.2:
3840 | dependencies:
3841 | isexe: 2.0.0
3842 |
3843 | word-wrap@1.2.5: {}
3844 |
3845 | wrap-ansi@7.0.0:
3846 | dependencies:
3847 | ansi-styles: 4.3.0
3848 | string-width: 4.2.3
3849 | strip-ansi: 6.0.1
3850 |
3851 | wrap-ansi@8.1.0:
3852 | dependencies:
3853 | ansi-styles: 6.2.1
3854 | string-width: 5.1.2
3855 | strip-ansi: 7.1.0
3856 |
3857 | wrappy@1.0.2: {}
3858 |
3859 | yaml@1.10.2: {}
3860 |
3861 | yocto-queue@0.1.0: {}
3862 |
--------------------------------------------------------------------------------
/src/index.test.ts:
--------------------------------------------------------------------------------
1 | import { Operation, TRPCClientError, TRPCClientRuntime } from "@trpc/client";
2 | import { observable } from "@trpc/server/observable";
3 | import { expect, test, vi } from "vitest";
4 | import { TokenRefreshProperties, tokenRefreshLink } from "./index";
5 |
6 | test("should refresh token when needed", async () => {
7 | const mockTokenRefreshNeeded = vi.fn().mockReturnValue(true);
8 | const mockFetchAccessToken = vi.fn().mockResolvedValue(async () => {
9 | await new Promise((resolve) => setTimeout(resolve, 1));
10 | return "supersecret";
11 | });
12 |
13 | const properties: TokenRefreshProperties = {
14 | tokenRefreshNeeded: mockTokenRefreshNeeded,
15 | fetchAccessToken: mockFetchAccessToken,
16 | };
17 |
18 | const link = tokenRefreshLink(properties)({} as TRPCClientRuntime);
19 |
20 | const mockNext = vi.fn().mockReturnValue(
21 | observable((observer) => {
22 | observer.next({ result: "success" });
23 | observer.complete();
24 | }),
25 | );
26 |
27 | const mockOperation: Operation = {
28 | id: 1,
29 | type: "query",
30 | path: "test",
31 | input: {},
32 | context: {},
33 | };
34 |
35 | const obs = link({ op: mockOperation, next: mockNext });
36 |
37 | await Promise.all([
38 | new Promise((resolve) => {
39 | obs.subscribe({
40 | next: (value) => {
41 | expect(value).toEqual({ result: "success" });
42 | },
43 | complete: () => {
44 | resolve();
45 | },
46 | });
47 | }),
48 | ]);
49 |
50 | expect(mockTokenRefreshNeeded).toHaveBeenCalledWith(mockOperation);
51 | expect(mockFetchAccessToken).toHaveBeenCalledWith(mockOperation);
52 | expect(mockNext).toHaveBeenCalledWith(mockOperation);
53 |
54 | expect(mockFetchAccessToken).toHaveBeenCalledTimes(1);
55 | });
56 |
57 | test("tokenRefreshLink should not refresh token if not needed", async () => {
58 | const mockTokenRefreshNeeded = vi.fn().mockReturnValue(false);
59 | const mockFetchAccessToken = vi.fn();
60 |
61 | const properties: TokenRefreshProperties = {
62 | tokenRefreshNeeded: mockTokenRefreshNeeded,
63 | fetchAccessToken: mockFetchAccessToken,
64 | };
65 |
66 | const link = tokenRefreshLink(properties)({} as TRPCClientRuntime);
67 |
68 | const mockNext = vi.fn().mockReturnValue(
69 | observable((observer) => {
70 | observer.next({ result: "success" });
71 | observer.complete();
72 | }),
73 | );
74 |
75 | const mockOperation: Operation = {
76 | id: 1,
77 | type: "query",
78 | path: "test",
79 | input: {},
80 | context: {},
81 | };
82 |
83 | const obs = link({ op: mockOperation, next: mockNext });
84 |
85 | await new Promise((resolve) => {
86 | obs.subscribe({
87 | next: (value) => {
88 | expect(value).toEqual({ result: "success" });
89 | },
90 | complete: () => {
91 | resolve();
92 | },
93 | });
94 | });
95 |
96 | expect(mockTokenRefreshNeeded).toHaveBeenCalledWith(mockOperation);
97 | expect(mockFetchAccessToken).not.toHaveBeenCalled();
98 | expect(mockNext).toHaveBeenCalledWith(mockOperation);
99 | });
100 |
101 | test("tokenRefreshLink should handle token refresh error", async () => {
102 | const mockTokenRefreshNeeded = vi.fn().mockReturnValue(true);
103 | const mockFetchAccessToken = vi
104 | .fn()
105 | .mockRejectedValue(new Error("Token refresh failed"));
106 |
107 | const properties: TokenRefreshProperties = {
108 | tokenRefreshNeeded: mockTokenRefreshNeeded,
109 | fetchAccessToken: mockFetchAccessToken,
110 | };
111 |
112 | const link = tokenRefreshLink(properties)({} as TRPCClientRuntime);
113 |
114 | const mockNext = vi.fn();
115 |
116 | const mockOperation: Operation = {
117 | id: 1,
118 | type: "query",
119 | path: "test",
120 | input: {},
121 | context: {},
122 | };
123 |
124 | const obs = link({ op: mockOperation, next: mockNext });
125 |
126 | await new Promise((resolve) => {
127 | obs.subscribe({
128 | error: (error) => {
129 | expect(error).toBeInstanceOf(TRPCClientError);
130 | expect(error.message).toBe("Token refresh failed");
131 | resolve();
132 | },
133 | });
134 | });
135 |
136 | expect(mockTokenRefreshNeeded).toHaveBeenCalledWith(mockOperation);
137 | expect(mockFetchAccessToken).toHaveBeenCalledWith(mockOperation);
138 | expect(mockNext).not.toHaveBeenCalled();
139 | });
140 |
141 | test("tokenRefreshLink should only refresh token once for multiple concurrent operations", async () => {
142 | const mockTokenRefreshNeeded = vi.fn().mockReturnValue(true);
143 | const mockFetchAccessToken = vi.fn().mockResolvedValue(async () => {
144 | await new Promise((resolve) => setTimeout(resolve, 1));
145 | });
146 |
147 | const properties: TokenRefreshProperties = {
148 | tokenRefreshNeeded: mockTokenRefreshNeeded,
149 | fetchAccessToken: mockFetchAccessToken,
150 | };
151 |
152 | const link = tokenRefreshLink(properties)({} as TRPCClientRuntime);
153 |
154 | const mockNext = vi.fn().mockReturnValue(
155 | observable((observer) => {
156 | observer.next({ result: "success" });
157 | observer.complete();
158 | }),
159 | );
160 |
161 | const mockOperation1: Operation = {
162 | id: 1,
163 | type: "query",
164 | path: "test1",
165 | input: {},
166 | context: {},
167 | };
168 |
169 | const mockOperation2: Operation = {
170 | id: 2,
171 | type: "query",
172 | path: "test2",
173 | input: {},
174 | context: {},
175 | };
176 |
177 | const obs1 = link({ op: mockOperation1, next: mockNext });
178 | const obs2 = link({ op: mockOperation2, next: mockNext });
179 |
180 | await Promise.all([
181 | new Promise((resolve) => {
182 | obs1.subscribe({
183 | next: (value) => {
184 | expect(value).toEqual({ result: "success" });
185 | },
186 | complete: () => {
187 | resolve();
188 | },
189 | });
190 | }),
191 | new Promise((resolve) => {
192 | obs2.subscribe({
193 | next: (value) => {
194 | expect(value).toEqual({ result: "success" });
195 | },
196 | complete: () => {
197 | resolve();
198 | },
199 | });
200 | }),
201 | ]);
202 |
203 | expect(mockTokenRefreshNeeded).toHaveBeenCalledTimes(2);
204 | expect(mockFetchAccessToken).toHaveBeenCalledTimes(1);
205 | expect(mockNext).toHaveBeenCalledTimes(2);
206 | });
207 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { type Operation, TRPCClientError, type TRPCLink } from "@trpc/client";
2 | import type { AnyRouter } from "@trpc/server";
3 | import { observable } from "@trpc/server/observable";
4 |
5 | export type TokenRefreshProperties = {
6 | tokenRefreshNeeded: (op: Operation) => boolean;
7 | fetchAccessToken: (op: Operation) => Promise;
8 | };
9 | export const tokenRefreshLink =
10 | ({
11 | tokenRefreshNeeded,
12 | fetchAccessToken,
13 | }: TokenRefreshProperties): TRPCLink =>
14 | () => {
15 | let refreshPromise: Promise | undefined;
16 | return (options) => {
17 | const { next, op } = options;
18 |
19 | return observable((observer) => {
20 | if (!tokenRefreshNeeded(op)) {
21 | return next(op).subscribe(observer);
22 | }
23 |
24 | refreshPromise ??= fetchAccessToken(op);
25 |
26 | refreshPromise
27 | .then(() => {
28 | next(op).subscribe(observer);
29 | })
30 | .catch((error) => {
31 | observer.error(TRPCClientError.from(error));
32 | })
33 | .finally(() => {
34 | refreshPromise = undefined;
35 | });
36 | });
37 | };
38 | };
39 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "module": "esnext",
5 | "moduleResolution": "node",
6 | "strict": true,
7 | "esModuleInterop": true,
8 | "skipLibCheck": true,
9 | "allowSyntheticDefaultImports": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "noEmit": true,
12 | "isolatedModules": true
13 | },
14 | "include": ["src", "test"],
15 | "exclude": ["node_modules", "dist"]
16 | }
17 |
--------------------------------------------------------------------------------
/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config";
2 |
3 | export default defineConfig({
4 | test: {
5 | environment: "node",
6 | include: ["**/*.test.ts"],
7 | coverage: {
8 | reporter: ["text", "json", "html"],
9 | },
10 | },
11 | });
12 |
--------------------------------------------------------------------------------