├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ └── main.yaml
├── .gitignore
├── .tool-versions
├── CODE_OF_CONDUCT.md
├── EXAMPLES.md
├── LICENSE
├── README.md
├── jest.config.js
├── lib
├── executor.spec.ts
├── executor.ts
├── index.ts
├── label.spec.ts
├── label.ts
├── promises.ts
├── types.ts
├── use.spec.ts
├── use.ts
├── validation.spec.ts
└── validation.ts
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
└── tsup.config.ts
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help improve this library
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Desktop (please complete the following information):**
24 | - OS: [e.g. iOS]
25 | - Version [e.g. 22]
26 |
27 | **Additional context**
28 | Add any other context about the problem here.
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this library
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/main.yaml:
--------------------------------------------------------------------------------
1 | name: Main
2 |
3 | on:
4 | push:
5 | branches:
6 | - canary
7 | pull_request:
8 |
9 | jobs:
10 | build:
11 | name: Build
12 | runs-on: ubuntu-latest
13 | env:
14 | CI: true
15 | steps:
16 | - name: Checkout Repository
17 | uses: actions/checkout@v4
18 |
19 | - name: Setup Node.js
20 | uses: actions/setup-node@v4
21 | with:
22 | node-version: 20
23 |
24 | - uses: pnpm/action-setup@v2
25 | name: Install pnpm
26 | id: pnpm-install
27 | with:
28 | version: 8
29 | run_install: false
30 |
31 | - name: Get pnpm Store Directory
32 | id: pnpm-cache
33 | shell: bash
34 | run: |
35 | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
36 |
37 | - uses: actions/cache@v4
38 | name: Setup pnpm Cache
39 | with:
40 | path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
41 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
42 | restore-keys: |
43 | ${{ runner.os }}-pnpm-store-
44 |
45 | - name: Install Dependencies
46 | run: pnpm install
47 |
48 | - name: Check Types
49 | run: pnpm type-check
50 |
51 | - name: Build
52 | run: pnpm build
53 | test:
54 | name: Test with Node.js ${{ matrix.node }}
55 | runs-on: ubuntu-latest
56 | strategy:
57 | matrix:
58 | node: [16, 18, 20, 21]
59 | env:
60 | CI: true
61 | steps:
62 | - name: Checkout Repository
63 | uses: actions/checkout@v4
64 |
65 | - name: Setup Node.js
66 | uses: actions/setup-node@v4
67 | with:
68 | node-version: ${{ matrix.node }}
69 |
70 | - uses: pnpm/action-setup@v2
71 | name: Install pnpm
72 | id: pnpm-install
73 | with:
74 | version: 8
75 | run_install: false
76 |
77 | - name: Get pnpm Store Directory
78 | id: pnpm-cache
79 | shell: bash
80 | run: |
81 | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
82 |
83 | - uses: actions/cache@v4
84 | name: Setup pnpm Cache
85 | with:
86 | path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
87 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
88 | restore-keys: |
89 | ${{ runner.os }}-pnpm-store-
90 |
91 | - name: Install Dependencies
92 | run: pnpm install
93 |
94 | - name: Test
95 | run: pnpm test
96 |
97 | - name: Upload Code Coverage Results
98 | uses: codecov/codecov-action@v3
99 | with:
100 | file: ./coverage/coverage-final.json
101 | fail_ci_if_error: true
102 | verbose: true
103 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # .gitignore generated from https://github.com/github/gitignore/blob/master/Node.gitignore
2 |
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 | lerna-debug.log*
10 | .pnpm-debug.log*
11 |
12 | # Diagnostic reports (https://nodejs.org/api/report.html)
13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
14 |
15 | # Runtime data
16 | pids
17 | *.pid
18 | *.seed
19 | *.pid.lock
20 |
21 | # Directory for instrumented libs generated by jscoverage/JSCover
22 | lib-cov
23 |
24 | # Coverage directory used by tools like istanbul
25 | coverage
26 | *.lcov
27 |
28 | # nyc test coverage
29 | .nyc_output
30 |
31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
32 | .grunt
33 |
34 | # Bower dependency directory (https://bower.io/)
35 | bower_components
36 |
37 | # node-waf configuration
38 | .lock-wscript
39 |
40 | # Compiled binary addons (https://nodejs.org/api/addons.html)
41 | build/Release
42 |
43 | # Dependency directories
44 | node_modules/
45 | jspm_packages/
46 |
47 | # Snowpack dependency directory (https://snowpack.dev/)
48 | web_modules/
49 |
50 | # TypeScript cache
51 | *.tsbuildinfo
52 |
53 | # Optional npm cache directory
54 | .npm
55 |
56 | # Optional eslint cache
57 | .eslintcache
58 |
59 | # Microbundle cache
60 | .rpt2_cache/
61 | .rts2_cache_cjs/
62 | .rts2_cache_es/
63 | .rts2_cache_umd/
64 |
65 | # Optional REPL history
66 | .node_repl_history
67 |
68 | # Output of 'npm pack'
69 | *.tgz
70 |
71 | # Yarn Integrity file
72 | .yarn-integrity
73 |
74 | # dotenv environment variables file
75 | .env
76 | .env.test
77 | .env.production
78 |
79 | # parcel-bundler cache (https://parceljs.org/)
80 | .cache
81 | .parcel-cache
82 |
83 | # Next.js build output
84 | .next
85 | out
86 |
87 | # Nuxt.js build / generate output
88 | .nuxt
89 | dist
90 |
91 | # Gatsby files
92 | .cache/
93 | # Comment in the public line in if your project uses Gatsby and not Next.js
94 | # https://nextjs.org/blog/next-9-1#public-directory-support
95 | # public
96 |
97 | # vuepress build output
98 | .vuepress/dist
99 |
100 | # Serverless directories
101 | .serverless/
102 |
103 | # FuseBox cache
104 | .fusebox/
105 |
106 | # DynamoDB Local files
107 | .dynamodb/
108 |
109 | # TernJS port file
110 | .tern-port
111 |
112 | # Stores VSCode versions used for testing VSCode extensions
113 | .vscode-test
114 |
115 | yarn.lock
116 | package-lock.json
117 |
--------------------------------------------------------------------------------
/.tool-versions:
--------------------------------------------------------------------------------
1 | pnpm 8.14.3
2 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at htunnicliff@hey.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/EXAMPLES.md:
--------------------------------------------------------------------------------
1 | ## Examples
2 |
3 | ### Writing Middleware
4 |
5 | Middleware that does work before a request:
6 |
7 | ```ts
8 | import type { Middleware } from "next-api-middleware";
9 |
10 | export const addRequestUUID: Middleware = async (req, res, next) => {
11 | // Set a custom header
12 | res.setHeader("X-Response-ID", uuid());
13 |
14 | // Execute the remaining middleware
15 | await next();
16 | };
17 | ```
18 |
19 | Middleware that does work before _and_ after a request:
20 |
21 | ```ts
22 | export const addRequestTiming = async (req, res, next) => {
23 | // Set a custom header before other middleware and the route handler
24 | res.setHeader("X-Timing-Start", new Date().getTime());
25 |
26 | // Execute the remaining middleware
27 | await next();
28 |
29 | // Set a custom header
30 | res.setHeader("X-Timing-End", new Date().getTime());
31 | };
32 | ```
33 |
34 | Middleware that catches errors that occur in remaining middleware _and_ the request:
35 |
36 | ```ts
37 | export const logErrorsWithACME: Middleware = async (req, res, next) => {
38 | try {
39 | // Catch any errors that are thrown in remaining
40 | // middleware and the API route handler
41 | await next();
42 | } catch (error) {
43 | Acme.captureException(error);
44 | res.status(500);
45 | res.json({ error: error.message });
46 | }
47 | };
48 | ```
49 |
50 | ### Middleware groups with `label`
51 |
52 | Using `label` creates a middleware group that, by default, doesn't invoke any middleware. Instead, it allows choosing specific middleware by supplying labels as arguments in the API route.
53 |
54 | ```ts
55 | import { label } from "next-api-middleware";
56 | import {
57 | addRequestTiming,
58 | logErrorsWithACME,
59 | addRequestUUID,
60 | } from "../helpers";
61 |
62 | // Create a middleware wrapper that imports middleware and
63 | // assigns friendly labels
64 | const withMiddleware = label({
65 | timing: addRequestTiming,
66 | logErrors: logErrorsWithACME,
67 | uuids: addRequestUUID,
68 | all: [addRequestTiming, logErrorsWithACME, addRequestUUID],
69 | });
70 |
71 | const apiRouteHandler = async (req, res) => {
72 | const { name } = req.locals.user;
73 |
74 | res.status(200);
75 | res.send(`Hello, ${name}!`);
76 | };
77 |
78 | // Only invoke `addRequestTiming` and `logErrorsWithACME`, using their
79 | // friendly labels
80 | export default withMiddleware("timing", "logErrors")(apiRouteHandler);
81 | ```
82 |
83 | ### Middleware groups with `use`
84 |
85 | The `use` method creates a higher order function that applies middleware to an API route. `use` accepts a list of values that evaluate to middleware functions. It also accepts arrays of middleware functions, which are flattened at runtime (order is preserved).
86 |
87 | ```js
88 | import { use } from "next-api-middleware";
89 | import {
90 | addRequestTiming,
91 | logErrorsWithACME,
92 | addRequestUUID,
93 | } from "../helpers";
94 | import { connectDatabase, loadUsers } from "../users";
95 |
96 | // Create a middleware wrapper to be used on API routes
97 | // that need authentication
98 | export const withAuthMiddleware = use(
99 | addRequestTiming,
100 | logErrorsWithACME,
101 | addRequestUUID,
102 | connectDatabase,
103 | loadUsers
104 | );
105 |
106 | // Create a middleware wrapper to be used on API routes
107 | // that are only used by guests
108 | export const withGuestMiddleware = use(
109 | isProduction ? [addRequestTiming, logErrorsWithACME] : [],
110 | addRequestUUID
111 | );
112 |
113 | // Create a middleware wrapper using arrays of middleware
114 | // functions; these are flattened and executed in the order
115 | // in which they are provided
116 | export const withXYZMiddleware = use(
117 | [addRequestUUID, connectDatabase, loadUsers],
118 | [addRequestTiming, logErrorsWithACME]
119 | );
120 |
121 | const apiRouteHandler = async (req, res) => {
122 | const { name } = req.locals.user;
123 |
124 | res.status(200);
125 | res.send(`Hello, ${name}!`);
126 | };
127 |
128 | export default withAuthMiddleware(apiRouteHandler);
129 | ```
130 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Hunter Tunnicliff
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 |
Next.js API Middleware
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | ## Introduction
24 |
25 | > ⚠️ **This library was written to support API routes that use the Next.js [Pages Router](https://nextjs.org/docs/pages). It has not been tested with the [App Router](https://nextjs.org/docs/app).**
26 |
27 | [Next.js API routes](https://nextjs.org/docs/api-routes/introduction) are a ridiculously fun and simple way to add backend functionality to a React app. However, when it comes time to add middleware, there is no easy way to implement it.
28 |
29 | The official Next.js docs recommend writing functions [inside your API route handler](https://nextjs.org/docs/api-routes/api-middlewares). This is a huge step backward compared to the clean APIs provided by Express.js or Koa.js.
30 |
31 | This library attempts to provide minimal, clean, composable middleware patterns that are both productive and pleasant to use.
32 |
33 | ## Table of Contents
34 |
35 | - [Quick Start](#quick-start)
36 | - [How It Works](#quick-start)
37 | - [APIs](#apis)
38 | - [`label`](#label)
39 | - [`use`](#use)
40 | - [Usage Guide](#usage-guide)
41 | - [Advanced](#advanced)
42 | - [Middleware Factories](#middleware-factories)
43 | - [Middleware Signature](#middleware-types)
44 | - [Alternatives](#alternatives)
45 |
46 | ## Quick Start
47 |
48 | ```ts
49 | import { label, Middleware } from "next-api-middleware";
50 | import * as Sentry from "@sentry/nextjs";
51 | import nanoid from "nanoid";
52 |
53 | // 1 – Create middleware functions
54 |
55 | const captureErrors: Middleware = async (req, res, next) => {
56 | try {
57 | // Catch any errors that are thrown in remaining
58 | // middleware and the API route handler
59 | await next();
60 | } catch (err) {
61 | const eventId = Sentry.captureException(err);
62 |
63 | res.status(500);
64 | res.json({ error: err });
65 | }
66 | };
67 |
68 | const addRequestId: Middleware = async (req, res, next) => {
69 | // Let remaining middleware and API route execute
70 | await next();
71 |
72 | // Apply header
73 | res.setHeader("X-Response-ID", nanoid());
74 | };
75 |
76 | // 2 – Use `label` to assemble all middleware
77 |
78 | const withMiddleware = label(
79 | {
80 | addRequestId,
81 | sentry: captureErrors, // <-- Optionally alias middleware
82 | },
83 | ["sentry"] // <-- Provide a list of middleware to call automatically
84 | );
85 |
86 | // 3 – Define your API route handler
87 |
88 | const apiRouteHandler = async (req, res) => {
89 | res.status(200);
90 | res.send("Hello world!");
91 | };
92 |
93 | // 4 – Choose middleware to invoke for this API route
94 |
95 | export default withMiddleware("addRequestId")(apiRouteHandler);
96 | ```
97 |
98 | ## How It Works
99 |
100 | My mental model for how this library handles middleware functions is that of a "winding and unwinding stack."
101 |
102 | Let's imagine you've used `label` to add two middleware functions to an API route.
103 |
104 | When a request comes in, this is a rough impression of how that request makes its way through all middleware functions, the API route handler itself, and then back up through the middleware.
105 |
106 | ```
107 | |-----------------|-----------------|--------------------|
108 | | Middleware #1 | Middleware #2 | API Route Handler |
109 | |-----------------|-----------------|--------------------|
110 | | | | |
111 | Request ------|----> Setup -----|----> Setup -----|-->------| |
112 | | | | | |
113 | |-----------------|-----------------| V |
114 | | | | |
115 | | await next() | await next() | API stuff |
116 | | | | |
117 | |-----------------|-----------------| | |
118 | | | | | |
119 | Response <----|--- Teardown <---|--- Teardown <---|---------| |
120 | | | | |
121 | |-----------------|-----------------|--------------------|
122 | ```
123 |
124 | While this is a crummy ASCII diagram, I think it gives the right impression. The request winds its way though each middleware function in succession, hits the API route handler, and then proceeds to "unwind" its way through the stack.
125 |
126 | Every middleware function has the opportunity to go through three phases:
127 |
128 | 1. Setup
129 | 2. Waiting
130 | 3. Teardown
131 |
132 | The "Setup" phase covers everything that happens before `await next()`. The "Waiting" phase is really just `await next()`. The "Teardown" phase is the remaining code within a middleware function after `await next()`.
133 |
134 | It is worth noting that although these phases are available to all middleware functions, you don't need to take advantage of them all.
135 |
136 | For example, in error catching middleware you might simply wrap `await next()` in a `try / catch` block. On the other hand, you might have request timing middleware that captures a start time during the setup phase, waits, and then captures a finish time in the teardown phase.
137 |
138 | ## APIs
139 |
140 | ### `label`
141 |
142 | This is the primary utility for creating reusuable collections of middleware for use throughout many Next.js API routes.
143 |
144 | ```ts
145 | const withMiddleware = label(middleware, defaults);
146 | ```
147 |
148 | #### Parameters
149 |
150 | - `middleware`: an object containing middleware functions or arrays of middleware
151 | - `defaults`: (optional) an array of `middleware` keys that will be invoked automatically
152 |
153 | #### Return Value
154 |
155 | `label` returns a function (conventionally referred to as `withMiddleware`) that uses currying to accept a list of middleware names to be invoked, followed by a Next.js API handler function.
156 |
157 | Typically, `withMiddleware` will be imported in API route files and used at the default export statement:
158 |
159 | ```ts
160 | import { withMiddleware } from "../helpers/my-middleware";
161 |
162 | const apiRouteHandler = async (req, res) => {
163 | ...
164 | }
165 |
166 | export default withMiddleware("foo", "bar", "baz")(apiRouteHandler);
167 | ```
168 |
169 | Though `label` could contain many middleware functions, the actual middleware invoked by an API route is determined by the names passed in to `withMiddleware`.
170 |
171 | #### Examples
172 |
173 | ##### Basic Use
174 |
175 | ```ts
176 | const logErrors = async (req, res, next) => {
177 | try {
178 | await next();
179 | } catch (error) {
180 | console.error(error);
181 | res.status(500);
182 | res.json({ error });
183 | }
184 | };
185 |
186 | const withMiddleware = label({
187 | logErrors,
188 | });
189 |
190 | // export default withMiddleware("logErrors")(apiRouteHandler);
191 | ```
192 |
193 | ##### Aliases
194 |
195 | ```ts
196 | const withMiddleware = label({
197 | error: logErrors,
198 | });
199 |
200 | // export default withMiddleware("error")(apiRouteHandler);
201 | ```
202 |
203 | ##### Groups
204 |
205 | ```ts
206 | import { foo, bar, baz } from "./my-middleware";
207 |
208 | const withMiddleware = label({
209 | error: logErrors,
210 | myGroup: [foo, bar, baz],
211 | });
212 |
213 | // export default withMiddleware("error", "myGroup")(apiRouteHandler);
214 | ```
215 |
216 | ##### Defaults
217 |
218 | ```ts
219 | const withMiddleware = label(
220 | {
221 | error: logErrors,
222 | myGroup: [foo, bar, baz],
223 | },
224 | ["error"]
225 | );
226 |
227 | // export default withMiddleware("myGroup")(apiRouteHandler);
228 | ```
229 |
230 | ### `use`
231 |
232 | This utility accepts middleware functions directly and executes them all in order. It is a simpler alternative to `label` that can be useful for handling one-off middleware functions.
233 |
234 | ```ts
235 | const withInlineMiddleware = use(...middleware);
236 | ```
237 |
238 | #### Parameters
239 |
240 | - `middleware`: a list of middleware functions and/or arrays of middleware functions
241 |
242 | #### Return Value
243 |
244 | `use` returns a function that accepts a Next.js API route handler.
245 |
246 | #### Examples
247 |
248 | ##### CORS
249 |
250 | ```ts
251 | import { use } from "next-api-middleware";
252 | import cors from "cors";
253 |
254 | const apiRouteThatOnlyNeedsCORS = async (req, res) => {
255 | ...
256 | }
257 |
258 | export default use(cors())(apiRouteThatOnlyNeedsCORS);
259 | ```
260 |
261 | ## Usage Guide
262 |
263 | See [EXAMPLES.md](./EXAMPLES.md) for more detailed examples of `label` and `use`.
264 |
265 | ## Advanced
266 |
267 | ### Middleware Factories
268 |
269 | Since `use` and `label` accept values that evaluate to middleware functions, this provides the opportunity to create custom middleware factories.
270 |
271 | Here's an example of a factory that generates a middleware function to only allow requests with a given HTTP method:
272 |
273 | ```ts
274 | import { Middleware } from "next-api-middleware";
275 |
276 | const httpMethod = (
277 | allowedHttpMethod: "GET" | "POST" | "PATCH"
278 | ): Middleware => {
279 | return async function (req, res, next) {
280 | if (req.method === allowedHttpMethod || req.method == "OPTIONS") {
281 | await next();
282 | } else {
283 | res.status(404);
284 | res.end();
285 | }
286 | };
287 | };
288 |
289 | export const postRequestsOnlyMiddleware = httpMethod("POST");
290 | ```
291 |
292 | ### Middleware Signature
293 |
294 | `Middleware` is inspired by the asyncronous middleware style popularized by Koa.js.
295 |
296 | ```ts
297 | type Middleware = (
298 | req: Request,
299 | res: Response,
300 | next: () => Promise
301 | ) => Promise;
302 | ```
303 |
304 | ## Alternatives
305 |
306 | - [next-connect](https://github.com/hoangvvo/next-connect)
307 |
--------------------------------------------------------------------------------
/jest.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import("@jest/types").Config.InitialOptions} */
2 | export default {
3 | clearMocks: true,
4 | collectCoverage: true,
5 | collectCoverageFrom: ["lib/**", "!lib/index.ts", "!lib/types.ts"],
6 | coverageDirectory: "coverage",
7 | coverageProvider: "v8",
8 | coverageReporters: ["text", "json"],
9 | testEnvironment: "node",
10 | testMatch: ["**/*.spec.ts"],
11 | transform: {
12 | "^.+\\.(t|j)sx?$": ["@swc/jest"],
13 | },
14 | resolver: "jest-ts-webcompat-resolver",
15 | setupFilesAfterEnv: ["jest-extended"],
16 | verbose: true,
17 | };
18 |
--------------------------------------------------------------------------------
/lib/executor.spec.ts:
--------------------------------------------------------------------------------
1 | import "jest-extended";
2 | import { NextApiHandler, NextApiRequest, NextApiResponse } from "next";
3 | import { Middleware } from "./types";
4 | import { makeMiddlewareExecutor } from "./executor";
5 |
6 | async function callExecutor(executor: NextApiHandler) {
7 | const req = {} as NextApiRequest;
8 | const res = {} as NextApiResponse;
9 |
10 | return executor(req, res);
11 | }
12 |
13 | describe("makeMiddlewareExecutor", () => {
14 | describe("Execution order", () => {
15 | it("invokes callback-style middleware in order", async () => {
16 | const [cb1, cb2, cb3] = new Array(3).fill(null).map(() =>
17 | jest.fn((_req, _res, next) => {
18 | next();
19 | })
20 | );
21 |
22 | const handler = jest.fn(async (_, __) => {});
23 |
24 | await callExecutor(makeMiddlewareExecutor([cb1, cb2, cb3])(handler));
25 |
26 | expect(cb1).toHaveBeenCalledBefore(cb2);
27 | expect(cb2).toHaveBeenCalledAfter(cb1);
28 | expect(cb3).toHaveBeenCalledAfter(cb2);
29 | expect(handler).toHaveBeenCalledAfter(cb3);
30 | });
31 |
32 | it("invokes async middleware in order", async () => {
33 | const [a1, a2, a3] = new Array(3).fill(null).map(() =>
34 | jest.fn(async (_req, _res, next) => {
35 | await next();
36 | })
37 | );
38 |
39 | const handler = jest.fn(async (_, __) => {});
40 |
41 | await callExecutor(makeMiddlewareExecutor([a1, a2, a3])(handler));
42 |
43 | expect(a1).toHaveBeenCalledBefore(a2);
44 | expect(a2).toHaveBeenCalledAfter(a1);
45 | expect(a3).toHaveBeenCalledAfter(a2);
46 | expect(handler).toHaveBeenCalledAfter(a3);
47 | });
48 |
49 | it("invokes a combination of callback-style and async middleware in the correct order", async () => {
50 | const [cb1, cb2, cb3] = new Array(3).fill(null).map(() =>
51 | jest.fn((_req, _res, next) => {
52 | next();
53 | })
54 | );
55 |
56 | const [a1, a2, a3] = new Array(3).fill(null).map(() =>
57 | jest.fn(async (_req, _res, next) => {
58 | await next();
59 | })
60 | );
61 |
62 | const handler = jest.fn(async (_, __) => {});
63 |
64 | await callExecutor(
65 | makeMiddlewareExecutor([cb1, a1, cb2, a2, cb3, a3])(handler)
66 | );
67 |
68 | expect(cb1).toHaveBeenCalledBefore(a1);
69 | expect(a1).toHaveBeenCalledAfter(cb1);
70 | expect(cb2).toHaveBeenCalledAfter(a1);
71 | expect(a2).toHaveBeenCalledAfter(cb2);
72 | expect(cb3).toHaveBeenCalledAfter(a2);
73 | expect(a3).toHaveBeenCalledAfter(cb3);
74 | expect(handler).toHaveBeenCalledAfter(a3);
75 | });
76 | });
77 |
78 | describe("Setup and teardown", () => {
79 | it("invokes callback-style setups, async setups, and async teardowns correctly", async () => {
80 | const [setup1, setup2, setup3, setup4, teardown1, teardown2] = new Array(
81 | 6
82 | )
83 | .fill(null)
84 | .map(() => jest.fn());
85 |
86 | const handler = jest.fn(async (_, __) => {});
87 |
88 | const nestedWaiting1 = jest.fn();
89 | const nestedWaiting2 = jest.fn();
90 |
91 | const middleware: Middleware[] = [
92 | (_, __, next) => {
93 | setup1();
94 | next();
95 | },
96 | (_, __, next) => {
97 | setup2();
98 | next();
99 | },
100 | async (_, __, next) => {
101 | setup3();
102 | await new Promise((resolve) => {
103 | setTimeout(() => {
104 | nestedWaiting1();
105 | resolve();
106 | }, 500);
107 | });
108 | await next();
109 | teardown2();
110 | },
111 | (_, __, next) => {
112 | setup4();
113 | next();
114 | },
115 | async (_, __, next) => {
116 | await next();
117 | teardown1();
118 | await new Promise((resolve) => {
119 | setTimeout(() => {
120 | nestedWaiting2();
121 | resolve();
122 | }, 500);
123 | });
124 | },
125 | ];
126 |
127 | await callExecutor(makeMiddlewareExecutor(middleware)(handler));
128 |
129 | expect(setup1).toHaveBeenCalledBefore(setup2);
130 | expect(setup3).toHaveBeenCalledAfter(setup2);
131 | expect(setup4).toHaveBeenCalledAfter(setup3);
132 | expect(setup4).toHaveBeenCalledAfter(nestedWaiting1);
133 | expect(handler).toHaveBeenCalledAfter(setup4);
134 | expect(teardown1).toHaveBeenCalledAfter(handler);
135 | expect(teardown2).toHaveBeenCalledAfter(nestedWaiting2);
136 | expect(teardown2).toHaveBeenCalledAfter(teardown1);
137 | });
138 | });
139 |
140 | describe("Error handling", () => {
141 | it("prevents further middleware and handler execution when callback-style middleware fails", async () => {
142 | const [cb1, cb2, cb3] = new Array(3).fill(null).map(() =>
143 | jest.fn((_req, _res, next) => {
144 | next();
145 | })
146 | );
147 |
148 | const cbFailing = jest.fn((_req, _res, next) => {
149 | next(new Error("Failure"));
150 | });
151 |
152 | const [a1, a2, a3] = new Array(3).fill(null).map(() =>
153 | jest.fn(async (_req, _res, next) => {
154 | await next();
155 | })
156 | );
157 |
158 | const handler = jest.fn(async (_, __) => {});
159 |
160 | expect(
161 | callExecutor(
162 | makeMiddlewareExecutor([cb1, a1, cb2, cbFailing, a2, cb3, a3])(
163 | handler
164 | )
165 | )
166 | ).toReject();
167 |
168 | expect(cb1).toHaveBeenCalledBefore(a1);
169 | expect(a1).toHaveBeenCalledAfter(cb1);
170 | expect(cb2).toHaveBeenCalledAfter(a1);
171 | expect(cbFailing).toHaveBeenCalledAfter(cb2);
172 | expect(a2).not.toHaveBeenCalled();
173 | expect(cb3).not.toHaveBeenCalled();
174 | expect(a3).not.toHaveBeenCalled();
175 | expect(handler).not.toHaveBeenCalled();
176 | });
177 |
178 | it("prevents further middleware and handler execution when async middleware fails", async () => {
179 | const [cb1, cb2, cb3] = new Array(3).fill(null).map(() =>
180 | jest.fn((_req, _res, next) => {
181 | next();
182 | })
183 | );
184 |
185 | const aFailing = jest.fn(async (_req, _res, next) => {
186 | throw new Error("Failed");
187 | });
188 |
189 | const [a1, a2, a3] = new Array(3).fill(null).map(() =>
190 | jest.fn(async (_req, _res, next) => {
191 | await next();
192 | })
193 | );
194 |
195 | const handler = jest.fn(async (_, __) => {});
196 |
197 | expect(
198 | callExecutor(
199 | makeMiddlewareExecutor([cb1, a1, cb2, aFailing, a2, cb3, a3])(handler)
200 | )
201 | ).toReject();
202 |
203 | expect(cb1).toHaveBeenCalledBefore(a1);
204 | expect(a1).toHaveBeenCalledAfter(cb1);
205 | expect(cb2).toHaveBeenCalledAfter(a1);
206 | expect(aFailing).toHaveBeenCalledAfter(cb2);
207 | expect(a2).not.toHaveBeenCalled();
208 | expect(cb3).not.toHaveBeenCalled();
209 | expect(a3).not.toHaveBeenCalled();
210 | expect(handler).not.toHaveBeenCalled();
211 | });
212 |
213 | it("prevents further middleware and handler execution when async middleware fails using soley async middleware", async () => {
214 | const aFailing = jest.fn(async (_req, _res, _next) => {
215 | throw new Error("Failed");
216 | });
217 |
218 | const [a1, a2, a3] = new Array(3).fill(null).map(() =>
219 | jest.fn(async (_req, _res, next) => {
220 | await next();
221 | })
222 | );
223 |
224 | const handler = jest.fn(async (_, __) => {});
225 |
226 | expect(
227 | callExecutor(makeMiddlewareExecutor([a1, a2, aFailing, a3])(handler))
228 | ).toReject();
229 |
230 | expect(a1).toHaveBeenCalledBefore(a2);
231 | expect(a2).toHaveBeenCalledAfter(a1);
232 | expect(aFailing).toHaveBeenCalledAfter(a2);
233 | expect(a3).not.toBeCalled();
234 | expect(handler).not.toBeCalled();
235 | });
236 |
237 | it("enables async middleware to capture errors", async () => {
238 | const aFailing = jest.fn(async (_req, _res, _next) => {
239 | throw new Error("Failed");
240 | });
241 |
242 | const caughtError = jest.fn();
243 |
244 | const aErrorHandler = jest.fn(async (_req, _res, next) => {
245 | try {
246 | await next();
247 | } catch (err) {
248 | caughtError(err);
249 | }
250 | });
251 |
252 | const [a1, a2, a3] = new Array(3).fill(null).map(() =>
253 | jest.fn(async (_req, _res, next) => {
254 | await next();
255 | })
256 | );
257 |
258 | const handler = jest.fn(async (_, __) => {});
259 |
260 | await callExecutor(
261 | makeMiddlewareExecutor([a1, a2, aErrorHandler, a3, aFailing])(handler)
262 | );
263 |
264 | expect(a1).toHaveBeenCalledBefore(a2);
265 | expect(a2).toHaveBeenCalledAfter(a1);
266 | expect(aErrorHandler).toHaveBeenCalledAfter(a2);
267 | expect(a3).toHaveBeenCalledAfter(aErrorHandler);
268 | expect(aFailing).toHaveBeenCalledAfter(a3);
269 | expect(handler).not.toBeCalled();
270 | expect(caughtError).toBeCalled();
271 | });
272 | });
273 | });
274 |
--------------------------------------------------------------------------------
/lib/executor.ts:
--------------------------------------------------------------------------------
1 | import { NextApiHandler, NextApiRequest, NextApiResponse } from "next";
2 | import { controlledPromise, isPromise } from "./promises";
3 | import { Middleware } from "./types";
4 |
5 | // This gets invoked internally by `use` and `label`
6 | export function makeMiddlewareExecutor(middlewareFns: Middleware[]) {
7 | // This curried function receives an API route
8 | return function curryApiHandler(apiRouteFn: NextApiHandler): NextApiHandler {
9 | // The final function returned is a Next API handler that
10 | // is responsible for executing all the middleware provided,
11 | // as well as the API route handler
12 | return async function finalRouteHandler(req, res) {
13 | await new Executor(middlewareFns, apiRouteFn, req, res).run();
14 | };
15 | };
16 | }
17 |
18 | export class Executor {
19 | /**
20 | * The first middleware function in the queue
21 | */
22 | currentFn: Middleware;
23 |
24 | /**
25 | * Middleware remaining in the queue
26 | */
27 | remaining: Middleware[];
28 |
29 | /**
30 | * The return value of `currentFn`
31 | */
32 | result?: void | Promise;
33 |
34 | /**
35 | * A controlled promise that is used to manage
36 | * the success or failure of this Executor
37 | */
38 | internalPromise = controlledPromise();
39 | succeed = this.internalPromise.resolve;
40 | fail = this.internalPromise.reject;
41 |
42 | /**
43 | * A controlled promise that is used to
44 | * "pause" async middleware from completing until
45 | * the rest of the `remaining` queue is executed
46 | */
47 | teardownPromise = controlledPromise();
48 |
49 | /**
50 | * Integer representing the position of the executor in
51 | * the "stack" of all middleware, starting at `1`
52 | */
53 | stackPosition: number;
54 |
55 | constructor(
56 | [currentFn, ...remaining]: Middleware[],
57 | public apiRouteFn: NextApiHandler,
58 | public req: NextApiRequest,
59 | public res: NextApiResponse,
60 | previousStackPosition?: number
61 | ) {
62 | this.currentFn = currentFn;
63 | this.remaining = remaining;
64 | this.stackPosition = 1 + (previousStackPosition || 0);
65 | }
66 |
67 | /**
68 | * Execute the current middleware function.
69 | *
70 | * If it fails, the remaining middleware and API route
71 | * handler are not executed and the error is thrown up.
72 | *
73 | * If it succeeds, an executor is created to handle
74 | * the remaining middleware.
75 | */
76 | async run(): Promise {
77 | try {
78 | const cleanupPromise = controlledPromise();
79 |
80 | // Call the current function
81 | this.result = this.currentFn(this.req, this.res, (error?: any) => {
82 | cleanupPromise.resolve();
83 |
84 | // Look for errors from synchronous middleware
85 | if (error) {
86 | // Throw errors to be caught in the try/catch block
87 | throw error;
88 | }
89 |
90 | // Return teardown promise to "pause" async middleware
91 | return this.teardownPromise.promise;
92 | });
93 |
94 | let asyncMiddlewareFailed = false;
95 |
96 | // Add handlers to async middleware, if available
97 | if (isPromise(this.result)) {
98 | this.result.then(
99 | () => {
100 | this.succeed();
101 | },
102 | (err) => {
103 | asyncMiddlewareFailed = true;
104 | cleanupPromise.resolve();
105 | this.fail(err);
106 | }
107 | );
108 | }
109 |
110 | await cleanupPromise.promise;
111 |
112 | // Use a microtask to give async middleware a chance to fail
113 | queueMicrotask(() => {
114 | if (!asyncMiddlewareFailed) {
115 | // Things look good so far – execute the rest of the queue
116 | this.runRemaining();
117 | }
118 | });
119 | } catch (err) {
120 | // Catches errors from synchronous middleware
121 | this.fail(err);
122 | }
123 |
124 | return this.internalPromise.promise;
125 | }
126 |
127 | /**
128 | * Execute the remaining middleware, then resume the result
129 | * promise if it is available.
130 | */
131 | async runRemaining(): Promise {
132 | try {
133 | if (this.remaining.length === 0) {
134 | // No more middleware, execute the API route handler
135 | await this.apiRouteFn(this.req, this.res);
136 | } else {
137 | // Recursively execute remaining middleware
138 | const remainingExecutor = new Executor(
139 | this.remaining,
140 | this.apiRouteFn,
141 | this.req,
142 | this.res,
143 | this.stackPosition
144 | );
145 |
146 | await remainingExecutor.run();
147 | }
148 |
149 | // The remaining queue is now empty
150 | this.finish();
151 | } catch (err) {
152 | this.finish(err);
153 | }
154 | }
155 |
156 | /**
157 | * Ensure this executor finishes by handling errors
158 | * correctly, resuming async middleware (if the current
159 | * middleware is async), or resolving the internal
160 | * promise as a success.
161 | */
162 | finish(error?: any) {
163 | if (isPromise(this.result)) {
164 | // Current middleware is async
165 | if (error) {
166 | // Let the result have a chance to handle the error
167 | this.teardownPromise.reject(error);
168 | } else {
169 | // Let the result continue its teardown
170 | this.teardownPromise.resolve();
171 | }
172 | } else {
173 | // Current middleware is synchronous
174 | if (error) {
175 | // Synchronous middleware cannot handle errors, trigger a failure
176 | this.fail(error);
177 | } else {
178 | // Synchronous middleware has no teardown phase, trigger a success
179 | this.succeed();
180 | }
181 | }
182 | }
183 | }
184 |
--------------------------------------------------------------------------------
/lib/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./label";
2 | export * from "./use";
3 | export * from "./types";
4 |
--------------------------------------------------------------------------------
/lib/label.spec.ts:
--------------------------------------------------------------------------------
1 | import { Middleware } from "./types";
2 | import { label } from "./label";
3 |
4 | describe("label", () => {
5 | it("throws an error for invalid middleware", () => {
6 | // @ts-expect-error
7 | expect(() => label({ notMiddleware: NaN })).toThrowError();
8 | });
9 |
10 | it("calls labeled middleware in order", async () => {
11 | const log: string[] = [];
12 |
13 | // Setup middleware
14 | const middleware1 = jest.fn((req, res, next) => next());
15 | const middleware2 = jest.fn(async (req, res, next) => {
16 | log.push("setup middleware2");
17 | await next();
18 | log.push("teardown middleware2");
19 | });
20 | const middleware3 = jest.fn((req, res, next) => next());
21 | const groupMiddleware1 = jest.fn(async (req, res, next) => {
22 | log.push("setup groupMiddleware1");
23 | await next();
24 | log.push("teardown groupMiddleware1");
25 | });
26 | const groupMiddleware2 = jest.fn(async (req, res, next) => {
27 | log.push("setup groupMiddleware2");
28 | await next();
29 | log.push("teardown groupMiddleware2");
30 | });
31 |
32 | const withMiddleware = label({
33 | one: middleware1,
34 | two: middleware2,
35 | three: middleware3,
36 | sampleGroup: [groupMiddleware1, groupMiddleware2],
37 | });
38 |
39 | const handler = jest.fn();
40 |
41 | await withMiddleware("sampleGroup", "two")(handler)({} as any, {} as any);
42 |
43 | expect(middleware2).toBeCalled();
44 | expect(groupMiddleware1).toBeCalled();
45 | expect(groupMiddleware2).toBeCalled();
46 | expect(handler).toBeCalled();
47 | expect(log.toString()).toBe(
48 | [
49 | "setup groupMiddleware1",
50 | "setup groupMiddleware2",
51 | "setup middleware2",
52 | "teardown middleware2",
53 | "teardown groupMiddleware2",
54 | "teardown groupMiddleware1",
55 | ].toString()
56 | );
57 | });
58 |
59 | it("calls default middleware", async () => {
60 | const middleware1 = jest.fn((req, res, next) => next());
61 |
62 | const middlewareWithDefaults = label(
63 | {
64 | m1: middleware1,
65 | },
66 | ["m1"]
67 | );
68 |
69 | const handler = jest.fn();
70 |
71 | await middlewareWithDefaults()(handler)({} as any, {} as any);
72 |
73 | expect(middleware1).toBeCalled();
74 | expect(handler).toBeCalled();
75 | });
76 |
77 | it("throws errors for invalid middleware", async () => {
78 | const middleware = label({
79 | normal: (req, res, next) => next(),
80 | });
81 |
82 | expect(() => middleware("normal", [(a, b) => {}])).toThrowError(
83 | "Invalid middleware"
84 | );
85 |
86 | expect(() => middleware("normal", (a, b) => {})).toThrowError(
87 | "Invalid middleware"
88 | );
89 |
90 | // @ts-expect-error
91 | expect(() => middleware("missing")).toThrowError(
92 | 'Middleware "missing" not available'
93 | );
94 | });
95 |
96 | it("adds groups to final executed middleware", async () => {
97 | const m0: Middleware = jest.fn((req, res, next) => next());
98 | const m1: Middleware = jest.fn((req, res, next) => next());
99 | const m2: Middleware = jest.fn((req, res, next) => next());
100 |
101 | const middleware = label({
102 | m0,
103 | });
104 |
105 | await middleware([m1, m2], "m0")(jest.fn())({} as any, {} as any);
106 | expect(m1).toBeCalled();
107 | expect(m2).toBeCalled();
108 | expect(m0).toBeCalled();
109 | });
110 |
111 | it("executes inline middleware", async () => {
112 | const middleware = label({});
113 |
114 | const inlineFn = jest.fn((req, res, next) => next());
115 |
116 | await middleware(inlineFn, inlineFn, inlineFn)(jest.fn())(
117 | {} as any,
118 | {} as any
119 | );
120 |
121 | expect(inlineFn).toBeCalledTimes(3);
122 | });
123 | });
124 |
--------------------------------------------------------------------------------
/lib/label.ts:
--------------------------------------------------------------------------------
1 | import { LabeledMiddleware, Middleware } from "./types";
2 | import { makeMiddlewareExecutor } from "./executor";
3 | import { isValidMiddleware, isValidMiddlewareArray } from "./validation";
4 |
5 | export function label(
6 | middleware: T,
7 | defaults: (keyof T)[] = []
8 | ) {
9 | // Check signatures
10 | isValidMiddlewareArray(Object.values(middleware).flat(), true);
11 |
12 | // Receive chosen middleware (either names or literal middleware functions)
13 | return function curryMiddlewareChoices(
14 | ...chosenMiddleware: (keyof T | Middleware | Middleware[])[]
15 | ) {
16 | const middlewareFns: Middleware[] = [];
17 |
18 | // Load middleware for each choice
19 | for (const choice of [...defaults, ...chosenMiddleware]) {
20 | // Choice is the name of a registered function, get from registered middleware
21 | if (typeof choice === "string") {
22 | const fn = middleware[choice];
23 | if (!fn) {
24 | throw new Error(`Middleware "${choice}" not available`);
25 | }
26 |
27 | // Add middleware function or group to array
28 | middlewareFns.push(...(Array.isArray(fn) ? fn : [fn]));
29 | continue;
30 | }
31 |
32 | if (Array.isArray(choice) && isValidMiddlewareArray(choice, true)) {
33 | // Choice is an array of middleware functions
34 | middlewareFns.push(...choice);
35 | continue;
36 | }
37 |
38 | if (isValidMiddleware(choice, true)) {
39 | // Choice is a middleware function, add directly to array
40 | middlewareFns.push(choice);
41 | continue;
42 | }
43 | }
44 |
45 | // Make executor
46 | return makeMiddlewareExecutor(middlewareFns);
47 | };
48 | }
49 |
--------------------------------------------------------------------------------
/lib/promises.ts:
--------------------------------------------------------------------------------
1 | export function controlledPromise() {
2 | // Define variables to hold references to the resolve
3 | // and reject handlers within a real promise.
4 | let resolve: (value: Result | PromiseLike) => void;
5 | let reject: (err: Error) => void;
6 |
7 | // Create a promise and assign its actual resolver and rejecter
8 | // handlers to the reference variables
9 | const promise = new Promise((actualResolve, actualReject) => {
10 | resolve = actualResolve;
11 | reject = actualReject;
12 | });
13 |
14 | return {
15 | promise,
16 | // @ts-ignore
17 | resolve: resolve,
18 | // @ts-ignore
19 | reject: reject,
20 | };
21 | }
22 |
23 | export function isPromise(input: unknown): input is Promise {
24 | return typeof input === "object" && input !== null && "then" in input;
25 | }
26 |
--------------------------------------------------------------------------------
/lib/types.ts:
--------------------------------------------------------------------------------
1 | import type { NextApiRequest, NextApiResponse } from "next";
2 |
3 | export type Middleware = (
4 | req: Request,
5 | res: Response,
6 | next: () => Promise
7 | ) => Promise;
8 |
9 | export type LabeledMiddleware<
10 | Request = NextApiRequest,
11 | Response = NextApiResponse
12 | > = {
13 | [name: string]:
14 | | Middleware
15 | | Array>;
16 | };
17 |
--------------------------------------------------------------------------------
/lib/use.spec.ts:
--------------------------------------------------------------------------------
1 | import { use } from "./use";
2 |
3 | describe("use", () => {
4 | it("throws an error for invalid middleware", () => {
5 | expect(() => use(() => null)).toThrowError();
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/lib/use.ts:
--------------------------------------------------------------------------------
1 | import { Middleware } from "./types";
2 | import { makeMiddlewareExecutor } from "./executor";
3 | import { isValidMiddlewareArray } from "./validation";
4 |
5 | export function use(...middleware: (Middleware | Middleware[])[]) {
6 | // Flatten middleware groups
7 | const middlewareFns = middleware.flat();
8 |
9 | // Check signatures
10 | isValidMiddlewareArray(middlewareFns, true);
11 |
12 | // Make executor
13 | return makeMiddlewareExecutor(middlewareFns);
14 | }
15 |
--------------------------------------------------------------------------------
/lib/validation.spec.ts:
--------------------------------------------------------------------------------
1 | import { isValidMiddleware } from "./validation";
2 |
3 | describe("isValidMiddleware", () => {
4 | it("returns false for invalid input", () => {
5 | expect(isValidMiddleware(NaN)).toBe(false);
6 | expect(isValidMiddleware(0)).toBe(false);
7 | expect(isValidMiddleware({})).toBe(false);
8 | expect(isValidMiddleware(Function)).toBe(false);
9 | expect(isValidMiddleware([])).toBe(false);
10 | expect(isValidMiddleware(false)).toBe(false);
11 | expect(isValidMiddleware(true)).toBe(false);
12 | expect(isValidMiddleware("")).toBe(false);
13 | expect(isValidMiddleware((arg1, arg2) => {})).toBe(false);
14 | expect(isValidMiddleware((arg1, arg2, arg3, arg4) => {})).toBe(false);
15 | });
16 |
17 | it("returns true for valid input", () => {
18 | expect(isValidMiddleware((arg1, arg2, arg3) => {})).toBe(true);
19 | });
20 |
21 | it("throws errors for invalid input when throwOnError is enabled", () => {
22 | expect(() => isValidMiddleware("", true)).toThrowError(
23 | "Invalid middleware"
24 | );
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/lib/validation.ts:
--------------------------------------------------------------------------------
1 | import { Middleware } from "./types";
2 |
3 | export function isValidMiddleware(
4 | input: unknown,
5 | throwOnFailure = false
6 | ): input is Middleware {
7 | const valid = typeof input === "function" && input.length === 3;
8 | if (!valid && throwOnFailure) {
9 | throw new Error("Invalid middleware");
10 | }
11 | return valid;
12 | }
13 |
14 | export function isValidMiddlewareArray(
15 | input: unknown[],
16 | throwOnFailure = false
17 | ): input is Middleware[] {
18 | return input.every((item) => isValidMiddleware(item, throwOnFailure));
19 | }
20 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "next-api-middleware",
3 | "version": "3.0.0",
4 | "description": "Middleware solution for Next.js API routes",
5 | "author": "Hunter Tunnicliff ",
6 | "repository": "htunnicliff/next-api-middleware",
7 | "license": "MIT",
8 | "type": "module",
9 | "exports": {
10 | "require": "./dist/index.cjs",
11 | "import": "./dist/index.js"
12 | },
13 | "types": "./dist/index.d.ts",
14 | "engines": {
15 | "node": ">=16.0.0"
16 | },
17 | "keywords": [
18 | "next",
19 | "next.js",
20 | "middleware",
21 | "API routes"
22 | ],
23 | "files": [
24 | "dist",
25 | "LICENSE",
26 | "package.json",
27 | "README.md"
28 | ],
29 | "scripts": {
30 | "build": "tsup",
31 | "type-check": "tsc --pretty --noEmit",
32 | "test": "jest",
33 | "version": "pnpm test && pnpm build"
34 | },
35 | "devDependencies": {
36 | "@swc/core": "^1.3.24",
37 | "@swc/jest": "^0.2.24",
38 | "@types/jest": "^26.0.24",
39 | "@types/node": "^16.18.10",
40 | "jest": "^27.5.1",
41 | "jest-extended": "^0.11.5",
42 | "jest-ts-webcompat-resolver": "^1.0.0",
43 | "next": "^12.3.4",
44 | "tsup": "^6.5.0",
45 | "typescript": "^4.9.4"
46 | },
47 | "peerDependencies": {
48 | "next": ">=10"
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | devDependencies:
8 | '@swc/core':
9 | specifier: ^1.3.24
10 | version: 1.3.24
11 | '@swc/jest':
12 | specifier: ^0.2.24
13 | version: 0.2.24(@swc/core@1.3.24)
14 | '@types/jest':
15 | specifier: ^26.0.24
16 | version: 26.0.24
17 | '@types/node':
18 | specifier: ^16.18.10
19 | version: 16.18.10
20 | jest:
21 | specifier: ^27.5.1
22 | version: 27.5.1
23 | jest-extended:
24 | specifier: ^0.11.5
25 | version: 0.11.5
26 | jest-ts-webcompat-resolver:
27 | specifier: ^1.0.0
28 | version: 1.0.0(jest-resolve@27.5.1)
29 | next:
30 | specifier: ^12.3.4
31 | version: 12.3.4(@babel/core@7.20.5)(react-dom@18.2.0)(react@18.2.0)
32 | tsup:
33 | specifier: ^6.5.0
34 | version: 6.5.0(@swc/core@1.3.24)(typescript@4.9.4)
35 | typescript:
36 | specifier: ^4.9.4
37 | version: 4.9.4
38 |
39 | packages:
40 |
41 | /@ampproject/remapping@2.2.0:
42 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
43 | engines: {node: '>=6.0.0'}
44 | dependencies:
45 | '@jridgewell/gen-mapping': 0.1.1
46 | '@jridgewell/trace-mapping': 0.3.17
47 | dev: true
48 |
49 | /@babel/code-frame@7.18.6:
50 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
51 | engines: {node: '>=6.9.0'}
52 | dependencies:
53 | '@babel/highlight': 7.18.6
54 | dev: true
55 |
56 | /@babel/compat-data@7.20.5:
57 | resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==}
58 | engines: {node: '>=6.9.0'}
59 | dev: true
60 |
61 | /@babel/core@7.20.5:
62 | resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==}
63 | engines: {node: '>=6.9.0'}
64 | dependencies:
65 | '@ampproject/remapping': 2.2.0
66 | '@babel/code-frame': 7.18.6
67 | '@babel/generator': 7.20.5
68 | '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5)
69 | '@babel/helper-module-transforms': 7.20.2
70 | '@babel/helpers': 7.20.6
71 | '@babel/parser': 7.20.5
72 | '@babel/template': 7.18.10
73 | '@babel/traverse': 7.20.5
74 | '@babel/types': 7.20.5
75 | convert-source-map: 1.9.0
76 | debug: 4.3.4
77 | gensync: 1.0.0-beta.2
78 | json5: 2.2.2
79 | semver: 6.3.0
80 | transitivePeerDependencies:
81 | - supports-color
82 | dev: true
83 |
84 | /@babel/generator@7.20.5:
85 | resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==}
86 | engines: {node: '>=6.9.0'}
87 | dependencies:
88 | '@babel/types': 7.20.5
89 | '@jridgewell/gen-mapping': 0.3.2
90 | jsesc: 2.5.2
91 | dev: true
92 |
93 | /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5):
94 | resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==}
95 | engines: {node: '>=6.9.0'}
96 | peerDependencies:
97 | '@babel/core': ^7.0.0
98 | dependencies:
99 | '@babel/compat-data': 7.20.5
100 | '@babel/core': 7.20.5
101 | '@babel/helper-validator-option': 7.18.6
102 | browserslist: 4.21.4
103 | semver: 6.3.0
104 | dev: true
105 |
106 | /@babel/helper-environment-visitor@7.18.9:
107 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==}
108 | engines: {node: '>=6.9.0'}
109 | dev: true
110 |
111 | /@babel/helper-function-name@7.19.0:
112 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==}
113 | engines: {node: '>=6.9.0'}
114 | dependencies:
115 | '@babel/template': 7.18.10
116 | '@babel/types': 7.20.5
117 | dev: true
118 |
119 | /@babel/helper-hoist-variables@7.18.6:
120 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
121 | engines: {node: '>=6.9.0'}
122 | dependencies:
123 | '@babel/types': 7.20.5
124 | dev: true
125 |
126 | /@babel/helper-module-imports@7.18.6:
127 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
128 | engines: {node: '>=6.9.0'}
129 | dependencies:
130 | '@babel/types': 7.20.5
131 | dev: true
132 |
133 | /@babel/helper-module-transforms@7.20.2:
134 | resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==}
135 | engines: {node: '>=6.9.0'}
136 | dependencies:
137 | '@babel/helper-environment-visitor': 7.18.9
138 | '@babel/helper-module-imports': 7.18.6
139 | '@babel/helper-simple-access': 7.20.2
140 | '@babel/helper-split-export-declaration': 7.18.6
141 | '@babel/helper-validator-identifier': 7.19.1
142 | '@babel/template': 7.18.10
143 | '@babel/traverse': 7.20.5
144 | '@babel/types': 7.20.5
145 | transitivePeerDependencies:
146 | - supports-color
147 | dev: true
148 |
149 | /@babel/helper-plugin-utils@7.20.2:
150 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==}
151 | engines: {node: '>=6.9.0'}
152 | dev: true
153 |
154 | /@babel/helper-simple-access@7.20.2:
155 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==}
156 | engines: {node: '>=6.9.0'}
157 | dependencies:
158 | '@babel/types': 7.20.5
159 | dev: true
160 |
161 | /@babel/helper-split-export-declaration@7.18.6:
162 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
163 | engines: {node: '>=6.9.0'}
164 | dependencies:
165 | '@babel/types': 7.20.5
166 | dev: true
167 |
168 | /@babel/helper-string-parser@7.19.4:
169 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
170 | engines: {node: '>=6.9.0'}
171 | dev: true
172 |
173 | /@babel/helper-validator-identifier@7.19.1:
174 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
175 | engines: {node: '>=6.9.0'}
176 | dev: true
177 |
178 | /@babel/helper-validator-option@7.18.6:
179 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==}
180 | engines: {node: '>=6.9.0'}
181 | dev: true
182 |
183 | /@babel/helpers@7.20.6:
184 | resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==}
185 | engines: {node: '>=6.9.0'}
186 | dependencies:
187 | '@babel/template': 7.18.10
188 | '@babel/traverse': 7.20.5
189 | '@babel/types': 7.20.5
190 | transitivePeerDependencies:
191 | - supports-color
192 | dev: true
193 |
194 | /@babel/highlight@7.18.6:
195 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
196 | engines: {node: '>=6.9.0'}
197 | dependencies:
198 | '@babel/helper-validator-identifier': 7.19.1
199 | chalk: 2.4.2
200 | js-tokens: 4.0.0
201 | dev: true
202 |
203 | /@babel/parser@7.20.5:
204 | resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==}
205 | engines: {node: '>=6.0.0'}
206 | hasBin: true
207 | dependencies:
208 | '@babel/types': 7.20.5
209 | dev: true
210 |
211 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.5):
212 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
213 | peerDependencies:
214 | '@babel/core': ^7.0.0-0
215 | dependencies:
216 | '@babel/core': 7.20.5
217 | '@babel/helper-plugin-utils': 7.20.2
218 | dev: true
219 |
220 | /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.5):
221 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
222 | peerDependencies:
223 | '@babel/core': ^7.0.0-0
224 | dependencies:
225 | '@babel/core': 7.20.5
226 | '@babel/helper-plugin-utils': 7.20.2
227 | dev: true
228 |
229 | /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.5):
230 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
231 | peerDependencies:
232 | '@babel/core': ^7.0.0-0
233 | dependencies:
234 | '@babel/core': 7.20.5
235 | '@babel/helper-plugin-utils': 7.20.2
236 | dev: true
237 |
238 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.5):
239 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
240 | peerDependencies:
241 | '@babel/core': ^7.0.0-0
242 | dependencies:
243 | '@babel/core': 7.20.5
244 | '@babel/helper-plugin-utils': 7.20.2
245 | dev: true
246 |
247 | /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.5):
248 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
249 | peerDependencies:
250 | '@babel/core': ^7.0.0-0
251 | dependencies:
252 | '@babel/core': 7.20.5
253 | '@babel/helper-plugin-utils': 7.20.2
254 | dev: true
255 |
256 | /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.5):
257 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
258 | peerDependencies:
259 | '@babel/core': ^7.0.0-0
260 | dependencies:
261 | '@babel/core': 7.20.5
262 | '@babel/helper-plugin-utils': 7.20.2
263 | dev: true
264 |
265 | /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.5):
266 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
267 | peerDependencies:
268 | '@babel/core': ^7.0.0-0
269 | dependencies:
270 | '@babel/core': 7.20.5
271 | '@babel/helper-plugin-utils': 7.20.2
272 | dev: true
273 |
274 | /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.5):
275 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
276 | peerDependencies:
277 | '@babel/core': ^7.0.0-0
278 | dependencies:
279 | '@babel/core': 7.20.5
280 | '@babel/helper-plugin-utils': 7.20.2
281 | dev: true
282 |
283 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.5):
284 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
285 | peerDependencies:
286 | '@babel/core': ^7.0.0-0
287 | dependencies:
288 | '@babel/core': 7.20.5
289 | '@babel/helper-plugin-utils': 7.20.2
290 | dev: true
291 |
292 | /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.5):
293 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
294 | peerDependencies:
295 | '@babel/core': ^7.0.0-0
296 | dependencies:
297 | '@babel/core': 7.20.5
298 | '@babel/helper-plugin-utils': 7.20.2
299 | dev: true
300 |
301 | /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.5):
302 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
303 | peerDependencies:
304 | '@babel/core': ^7.0.0-0
305 | dependencies:
306 | '@babel/core': 7.20.5
307 | '@babel/helper-plugin-utils': 7.20.2
308 | dev: true
309 |
310 | /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.5):
311 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
312 | engines: {node: '>=6.9.0'}
313 | peerDependencies:
314 | '@babel/core': ^7.0.0-0
315 | dependencies:
316 | '@babel/core': 7.20.5
317 | '@babel/helper-plugin-utils': 7.20.2
318 | dev: true
319 |
320 | /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.20.5):
321 | resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==}
322 | engines: {node: '>=6.9.0'}
323 | peerDependencies:
324 | '@babel/core': ^7.0.0-0
325 | dependencies:
326 | '@babel/core': 7.20.5
327 | '@babel/helper-plugin-utils': 7.20.2
328 | dev: true
329 |
330 | /@babel/template@7.18.10:
331 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==}
332 | engines: {node: '>=6.9.0'}
333 | dependencies:
334 | '@babel/code-frame': 7.18.6
335 | '@babel/parser': 7.20.5
336 | '@babel/types': 7.20.5
337 | dev: true
338 |
339 | /@babel/traverse@7.20.5:
340 | resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==}
341 | engines: {node: '>=6.9.0'}
342 | dependencies:
343 | '@babel/code-frame': 7.18.6
344 | '@babel/generator': 7.20.5
345 | '@babel/helper-environment-visitor': 7.18.9
346 | '@babel/helper-function-name': 7.19.0
347 | '@babel/helper-hoist-variables': 7.18.6
348 | '@babel/helper-split-export-declaration': 7.18.6
349 | '@babel/parser': 7.20.5
350 | '@babel/types': 7.20.5
351 | debug: 4.3.4
352 | globals: 11.12.0
353 | transitivePeerDependencies:
354 | - supports-color
355 | dev: true
356 |
357 | /@babel/types@7.20.5:
358 | resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==}
359 | engines: {node: '>=6.9.0'}
360 | dependencies:
361 | '@babel/helper-string-parser': 7.19.4
362 | '@babel/helper-validator-identifier': 7.19.1
363 | to-fast-properties: 2.0.0
364 | dev: true
365 |
366 | /@bcoe/v8-coverage@0.2.3:
367 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
368 | dev: true
369 |
370 | /@esbuild/android-arm@0.15.18:
371 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
372 | engines: {node: '>=12'}
373 | cpu: [arm]
374 | os: [android]
375 | requiresBuild: true
376 | dev: true
377 | optional: true
378 |
379 | /@esbuild/linux-loong64@0.15.18:
380 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
381 | engines: {node: '>=12'}
382 | cpu: [loong64]
383 | os: [linux]
384 | requiresBuild: true
385 | dev: true
386 | optional: true
387 |
388 | /@istanbuljs/load-nyc-config@1.1.0:
389 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
390 | engines: {node: '>=8'}
391 | dependencies:
392 | camelcase: 5.3.1
393 | find-up: 4.1.0
394 | get-package-type: 0.1.0
395 | js-yaml: 3.14.1
396 | resolve-from: 5.0.0
397 | dev: true
398 |
399 | /@istanbuljs/schema@0.1.3:
400 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
401 | engines: {node: '>=8'}
402 | dev: true
403 |
404 | /@jest/console@24.9.0:
405 | resolution: {integrity: sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==}
406 | engines: {node: '>= 6'}
407 | dependencies:
408 | '@jest/source-map': 24.9.0
409 | chalk: 2.4.2
410 | slash: 2.0.0
411 | dev: true
412 |
413 | /@jest/console@27.5.1:
414 | resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==}
415 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
416 | dependencies:
417 | '@jest/types': 27.5.1
418 | '@types/node': 16.18.10
419 | chalk: 4.1.2
420 | jest-message-util: 27.5.1
421 | jest-util: 27.5.1
422 | slash: 3.0.0
423 | dev: true
424 |
425 | /@jest/core@27.5.1:
426 | resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==}
427 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
428 | peerDependencies:
429 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
430 | peerDependenciesMeta:
431 | node-notifier:
432 | optional: true
433 | dependencies:
434 | '@jest/console': 27.5.1
435 | '@jest/reporters': 27.5.1
436 | '@jest/test-result': 27.5.1
437 | '@jest/transform': 27.5.1
438 | '@jest/types': 27.5.1
439 | '@types/node': 16.18.10
440 | ansi-escapes: 4.3.2
441 | chalk: 4.1.2
442 | emittery: 0.8.1
443 | exit: 0.1.2
444 | graceful-fs: 4.2.10
445 | jest-changed-files: 27.5.1
446 | jest-config: 27.5.1
447 | jest-haste-map: 27.5.1
448 | jest-message-util: 27.5.1
449 | jest-regex-util: 27.5.1
450 | jest-resolve: 27.5.1
451 | jest-resolve-dependencies: 27.5.1
452 | jest-runner: 27.5.1
453 | jest-runtime: 27.5.1
454 | jest-snapshot: 27.5.1
455 | jest-util: 27.5.1
456 | jest-validate: 27.5.1
457 | jest-watcher: 27.5.1
458 | micromatch: 4.0.5
459 | rimraf: 3.0.2
460 | slash: 3.0.0
461 | strip-ansi: 6.0.1
462 | transitivePeerDependencies:
463 | - bufferutil
464 | - canvas
465 | - supports-color
466 | - ts-node
467 | - utf-8-validate
468 | dev: true
469 |
470 | /@jest/create-cache-key-function@27.5.1:
471 | resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==}
472 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
473 | dependencies:
474 | '@jest/types': 27.5.1
475 | dev: true
476 |
477 | /@jest/environment@27.5.1:
478 | resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==}
479 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
480 | dependencies:
481 | '@jest/fake-timers': 27.5.1
482 | '@jest/types': 27.5.1
483 | '@types/node': 16.18.10
484 | jest-mock: 27.5.1
485 | dev: true
486 |
487 | /@jest/fake-timers@27.5.1:
488 | resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==}
489 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
490 | dependencies:
491 | '@jest/types': 27.5.1
492 | '@sinonjs/fake-timers': 8.1.0
493 | '@types/node': 16.18.10
494 | jest-message-util: 27.5.1
495 | jest-mock: 27.5.1
496 | jest-util: 27.5.1
497 | dev: true
498 |
499 | /@jest/globals@27.5.1:
500 | resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==}
501 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
502 | dependencies:
503 | '@jest/environment': 27.5.1
504 | '@jest/types': 27.5.1
505 | expect: 27.5.1
506 | dev: true
507 |
508 | /@jest/reporters@27.5.1:
509 | resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==}
510 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
511 | peerDependencies:
512 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
513 | peerDependenciesMeta:
514 | node-notifier:
515 | optional: true
516 | dependencies:
517 | '@bcoe/v8-coverage': 0.2.3
518 | '@jest/console': 27.5.1
519 | '@jest/test-result': 27.5.1
520 | '@jest/transform': 27.5.1
521 | '@jest/types': 27.5.1
522 | '@types/node': 16.18.10
523 | chalk: 4.1.2
524 | collect-v8-coverage: 1.0.1
525 | exit: 0.1.2
526 | glob: 7.2.3
527 | graceful-fs: 4.2.10
528 | istanbul-lib-coverage: 3.2.0
529 | istanbul-lib-instrument: 5.2.1
530 | istanbul-lib-report: 3.0.0
531 | istanbul-lib-source-maps: 4.0.1
532 | istanbul-reports: 3.1.5
533 | jest-haste-map: 27.5.1
534 | jest-resolve: 27.5.1
535 | jest-util: 27.5.1
536 | jest-worker: 27.5.1
537 | slash: 3.0.0
538 | source-map: 0.6.1
539 | string-length: 4.0.2
540 | terminal-link: 2.1.1
541 | v8-to-istanbul: 8.1.1
542 | transitivePeerDependencies:
543 | - supports-color
544 | dev: true
545 |
546 | /@jest/source-map@24.9.0:
547 | resolution: {integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==}
548 | engines: {node: '>= 6'}
549 | dependencies:
550 | callsites: 3.1.0
551 | graceful-fs: 4.2.10
552 | source-map: 0.6.1
553 | dev: true
554 |
555 | /@jest/source-map@27.5.1:
556 | resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==}
557 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
558 | dependencies:
559 | callsites: 3.1.0
560 | graceful-fs: 4.2.10
561 | source-map: 0.6.1
562 | dev: true
563 |
564 | /@jest/test-result@24.9.0:
565 | resolution: {integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==}
566 | engines: {node: '>= 6'}
567 | dependencies:
568 | '@jest/console': 24.9.0
569 | '@jest/types': 24.9.0
570 | '@types/istanbul-lib-coverage': 2.0.4
571 | dev: true
572 |
573 | /@jest/test-result@27.5.1:
574 | resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==}
575 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
576 | dependencies:
577 | '@jest/console': 27.5.1
578 | '@jest/types': 27.5.1
579 | '@types/istanbul-lib-coverage': 2.0.4
580 | collect-v8-coverage: 1.0.1
581 | dev: true
582 |
583 | /@jest/test-sequencer@27.5.1:
584 | resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==}
585 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
586 | dependencies:
587 | '@jest/test-result': 27.5.1
588 | graceful-fs: 4.2.10
589 | jest-haste-map: 27.5.1
590 | jest-runtime: 27.5.1
591 | transitivePeerDependencies:
592 | - supports-color
593 | dev: true
594 |
595 | /@jest/transform@27.5.1:
596 | resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==}
597 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
598 | dependencies:
599 | '@babel/core': 7.20.5
600 | '@jest/types': 27.5.1
601 | babel-plugin-istanbul: 6.1.1
602 | chalk: 4.1.2
603 | convert-source-map: 1.9.0
604 | fast-json-stable-stringify: 2.1.0
605 | graceful-fs: 4.2.10
606 | jest-haste-map: 27.5.1
607 | jest-regex-util: 27.5.1
608 | jest-util: 27.5.1
609 | micromatch: 4.0.5
610 | pirates: 4.0.5
611 | slash: 3.0.0
612 | source-map: 0.6.1
613 | write-file-atomic: 3.0.3
614 | transitivePeerDependencies:
615 | - supports-color
616 | dev: true
617 |
618 | /@jest/types@24.9.0:
619 | resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==}
620 | engines: {node: '>= 6'}
621 | dependencies:
622 | '@types/istanbul-lib-coverage': 2.0.4
623 | '@types/istanbul-reports': 1.1.2
624 | '@types/yargs': 13.0.12
625 | dev: true
626 |
627 | /@jest/types@26.6.2:
628 | resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
629 | engines: {node: '>= 10.14.2'}
630 | dependencies:
631 | '@types/istanbul-lib-coverage': 2.0.4
632 | '@types/istanbul-reports': 3.0.1
633 | '@types/node': 16.18.10
634 | '@types/yargs': 15.0.14
635 | chalk: 4.1.2
636 | dev: true
637 |
638 | /@jest/types@27.5.1:
639 | resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==}
640 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
641 | dependencies:
642 | '@types/istanbul-lib-coverage': 2.0.4
643 | '@types/istanbul-reports': 3.0.1
644 | '@types/node': 16.18.10
645 | '@types/yargs': 16.0.4
646 | chalk: 4.1.2
647 | dev: true
648 |
649 | /@jridgewell/gen-mapping@0.1.1:
650 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
651 | engines: {node: '>=6.0.0'}
652 | dependencies:
653 | '@jridgewell/set-array': 1.1.2
654 | '@jridgewell/sourcemap-codec': 1.4.14
655 | dev: true
656 |
657 | /@jridgewell/gen-mapping@0.3.2:
658 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
659 | engines: {node: '>=6.0.0'}
660 | dependencies:
661 | '@jridgewell/set-array': 1.1.2
662 | '@jridgewell/sourcemap-codec': 1.4.14
663 | '@jridgewell/trace-mapping': 0.3.17
664 | dev: true
665 |
666 | /@jridgewell/resolve-uri@3.1.0:
667 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
668 | engines: {node: '>=6.0.0'}
669 | dev: true
670 |
671 | /@jridgewell/set-array@1.1.2:
672 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
673 | engines: {node: '>=6.0.0'}
674 | dev: true
675 |
676 | /@jridgewell/sourcemap-codec@1.4.14:
677 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
678 | dev: true
679 |
680 | /@jridgewell/trace-mapping@0.3.17:
681 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==}
682 | dependencies:
683 | '@jridgewell/resolve-uri': 3.1.0
684 | '@jridgewell/sourcemap-codec': 1.4.14
685 | dev: true
686 |
687 | /@next/env@12.3.4:
688 | resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==}
689 | dev: true
690 |
691 | /@next/swc-android-arm-eabi@12.3.4:
692 | resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==}
693 | engines: {node: '>= 10'}
694 | cpu: [arm]
695 | os: [android]
696 | requiresBuild: true
697 | dev: true
698 | optional: true
699 |
700 | /@next/swc-android-arm64@12.3.4:
701 | resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==}
702 | engines: {node: '>= 10'}
703 | cpu: [arm64]
704 | os: [android]
705 | requiresBuild: true
706 | dev: true
707 | optional: true
708 |
709 | /@next/swc-darwin-arm64@12.3.4:
710 | resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==}
711 | engines: {node: '>= 10'}
712 | cpu: [arm64]
713 | os: [darwin]
714 | requiresBuild: true
715 | dev: true
716 | optional: true
717 |
718 | /@next/swc-darwin-x64@12.3.4:
719 | resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==}
720 | engines: {node: '>= 10'}
721 | cpu: [x64]
722 | os: [darwin]
723 | requiresBuild: true
724 | dev: true
725 | optional: true
726 |
727 | /@next/swc-freebsd-x64@12.3.4:
728 | resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==}
729 | engines: {node: '>= 10'}
730 | cpu: [x64]
731 | os: [freebsd]
732 | requiresBuild: true
733 | dev: true
734 | optional: true
735 |
736 | /@next/swc-linux-arm-gnueabihf@12.3.4:
737 | resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==}
738 | engines: {node: '>= 10'}
739 | cpu: [arm]
740 | os: [linux]
741 | requiresBuild: true
742 | dev: true
743 | optional: true
744 |
745 | /@next/swc-linux-arm64-gnu@12.3.4:
746 | resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==}
747 | engines: {node: '>= 10'}
748 | cpu: [arm64]
749 | os: [linux]
750 | requiresBuild: true
751 | dev: true
752 | optional: true
753 |
754 | /@next/swc-linux-arm64-musl@12.3.4:
755 | resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==}
756 | engines: {node: '>= 10'}
757 | cpu: [arm64]
758 | os: [linux]
759 | requiresBuild: true
760 | dev: true
761 | optional: true
762 |
763 | /@next/swc-linux-x64-gnu@12.3.4:
764 | resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==}
765 | engines: {node: '>= 10'}
766 | cpu: [x64]
767 | os: [linux]
768 | requiresBuild: true
769 | dev: true
770 | optional: true
771 |
772 | /@next/swc-linux-x64-musl@12.3.4:
773 | resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==}
774 | engines: {node: '>= 10'}
775 | cpu: [x64]
776 | os: [linux]
777 | requiresBuild: true
778 | dev: true
779 | optional: true
780 |
781 | /@next/swc-win32-arm64-msvc@12.3.4:
782 | resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==}
783 | engines: {node: '>= 10'}
784 | cpu: [arm64]
785 | os: [win32]
786 | requiresBuild: true
787 | dev: true
788 | optional: true
789 |
790 | /@next/swc-win32-ia32-msvc@12.3.4:
791 | resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==}
792 | engines: {node: '>= 10'}
793 | cpu: [ia32]
794 | os: [win32]
795 | requiresBuild: true
796 | dev: true
797 | optional: true
798 |
799 | /@next/swc-win32-x64-msvc@12.3.4:
800 | resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==}
801 | engines: {node: '>= 10'}
802 | cpu: [x64]
803 | os: [win32]
804 | requiresBuild: true
805 | dev: true
806 | optional: true
807 |
808 | /@nodelib/fs.scandir@2.1.5:
809 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
810 | engines: {node: '>= 8'}
811 | dependencies:
812 | '@nodelib/fs.stat': 2.0.5
813 | run-parallel: 1.2.0
814 | dev: true
815 |
816 | /@nodelib/fs.stat@2.0.5:
817 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
818 | engines: {node: '>= 8'}
819 | dev: true
820 |
821 | /@nodelib/fs.walk@1.2.8:
822 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
823 | engines: {node: '>= 8'}
824 | dependencies:
825 | '@nodelib/fs.scandir': 2.1.5
826 | fastq: 1.14.0
827 | dev: true
828 |
829 | /@sinonjs/commons@1.8.6:
830 | resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==}
831 | dependencies:
832 | type-detect: 4.0.8
833 | dev: true
834 |
835 | /@sinonjs/fake-timers@8.1.0:
836 | resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==}
837 | dependencies:
838 | '@sinonjs/commons': 1.8.6
839 | dev: true
840 |
841 | /@swc/core-darwin-arm64@1.3.24:
842 | resolution: {integrity: sha512-rR+9UpWm+fGXcipsjCst2hIL1GYIbo0YTLhJZWdIpQD6KRHHJMFXiydMgQQkDj2Ml7HpqUVgxj6m4ZWYL8b0OA==}
843 | engines: {node: '>=10'}
844 | cpu: [arm64]
845 | os: [darwin]
846 | requiresBuild: true
847 | dev: true
848 | optional: true
849 |
850 | /@swc/core-darwin-x64@1.3.24:
851 | resolution: {integrity: sha512-px+5vkGtgPH0m3FkkTBHynlRdS5rRz+lK+wiXIuBZFJSySWFl6RkKbvwkD+sf0MpazQlqwlv/rTOGJBw6oDffg==}
852 | engines: {node: '>=10'}
853 | cpu: [x64]
854 | os: [darwin]
855 | requiresBuild: true
856 | dev: true
857 | optional: true
858 |
859 | /@swc/core-linux-arm-gnueabihf@1.3.24:
860 | resolution: {integrity: sha512-jLs8ZOdTV4UW4J12E143QJ4mOMONQtqgAnuhBbRuWFzQ3ny1dfoC3P1jNWAJ2Xi59XdxAIXn0PggPNH4Kh34kw==}
861 | engines: {node: '>=10'}
862 | cpu: [arm]
863 | os: [linux]
864 | requiresBuild: true
865 | dev: true
866 | optional: true
867 |
868 | /@swc/core-linux-arm64-gnu@1.3.24:
869 | resolution: {integrity: sha512-A/v0h70BekrwGpp1DlzIFGcHQ3QQ2PexXcnnuIBZeMc9gNmHlcZmg3EcwAnaUDiokhNuSUFA/wV94yk1OqmSkw==}
870 | engines: {node: '>=10'}
871 | cpu: [arm64]
872 | os: [linux]
873 | requiresBuild: true
874 | dev: true
875 | optional: true
876 |
877 | /@swc/core-linux-arm64-musl@1.3.24:
878 | resolution: {integrity: sha512-pbc9eArWPTiMrbpS/pJo0IiQNAKAQBcBIDjWBGP1tcw2iDXYLw4bruwz9kI/VjakbshWb8MoE4T5ClkeuULvSw==}
879 | engines: {node: '>=10'}
880 | cpu: [arm64]
881 | os: [linux]
882 | requiresBuild: true
883 | dev: true
884 | optional: true
885 |
886 | /@swc/core-linux-x64-gnu@1.3.24:
887 | resolution: {integrity: sha512-pP5pOLlY1xd352qo7rTlpVPUI9/9VhOd4b3Lk+LzfZDq9bTL2NDlGfyrPiwa5DGHMSzrugH56K2J68eutkxYVA==}
888 | engines: {node: '>=10'}
889 | cpu: [x64]
890 | os: [linux]
891 | requiresBuild: true
892 | dev: true
893 | optional: true
894 |
895 | /@swc/core-linux-x64-musl@1.3.24:
896 | resolution: {integrity: sha512-phNbP7zGp+Wcyxq1Qxlpe5KkxO7WLT2kVQUC7aDFGlVdCr+xdXsfH1MzheHtnr0kqTVQX1aiM8XXXHfFxR0oNA==}
897 | engines: {node: '>=10'}
898 | cpu: [x64]
899 | os: [linux]
900 | requiresBuild: true
901 | dev: true
902 | optional: true
903 |
904 | /@swc/core-win32-arm64-msvc@1.3.24:
905 | resolution: {integrity: sha512-qhbiJTWAOqyR+K9xnGmCkOWSz2EmWpDBstEJCEOTc6FZiEdbiTscDmqTcMbCKaTHGu8t+6erVA4t65/Eg6uWPA==}
906 | engines: {node: '>=10'}
907 | cpu: [arm64]
908 | os: [win32]
909 | requiresBuild: true
910 | dev: true
911 | optional: true
912 |
913 | /@swc/core-win32-ia32-msvc@1.3.24:
914 | resolution: {integrity: sha512-JfghIlscE4Rz+Lc08lSoDh+R0cWxrISed5biogFfE6vZqhaDnw3E5Qshqw7O3pIaiq8L2u1nmzuyP581ZmpbRA==}
915 | engines: {node: '>=10'}
916 | cpu: [ia32]
917 | os: [win32]
918 | requiresBuild: true
919 | dev: true
920 | optional: true
921 |
922 | /@swc/core-win32-x64-msvc@1.3.24:
923 | resolution: {integrity: sha512-3AmJRr0hwciwDBbzUNqaftvppzS8v9X/iv/Wl7YaVLBVpPfQvaZzfqLycvNMGLZb5vIKXR/u58txg3dRBGsJtw==}
924 | engines: {node: '>=10'}
925 | cpu: [x64]
926 | os: [win32]
927 | requiresBuild: true
928 | dev: true
929 | optional: true
930 |
931 | /@swc/core@1.3.24:
932 | resolution: {integrity: sha512-QMOTd0AgiUT3K1crxLRqd3gw0f3FC8hhH1vvlIlryvYqU4c+FJ/T2G4ZhMKLxQlZ/jX6Rhk0gKINZRBxy2GFyQ==}
933 | engines: {node: '>=10'}
934 | hasBin: true
935 | requiresBuild: true
936 | optionalDependencies:
937 | '@swc/core-darwin-arm64': 1.3.24
938 | '@swc/core-darwin-x64': 1.3.24
939 | '@swc/core-linux-arm-gnueabihf': 1.3.24
940 | '@swc/core-linux-arm64-gnu': 1.3.24
941 | '@swc/core-linux-arm64-musl': 1.3.24
942 | '@swc/core-linux-x64-gnu': 1.3.24
943 | '@swc/core-linux-x64-musl': 1.3.24
944 | '@swc/core-win32-arm64-msvc': 1.3.24
945 | '@swc/core-win32-ia32-msvc': 1.3.24
946 | '@swc/core-win32-x64-msvc': 1.3.24
947 | dev: true
948 |
949 | /@swc/helpers@0.4.11:
950 | resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==}
951 | dependencies:
952 | tslib: 2.4.1
953 | dev: true
954 |
955 | /@swc/jest@0.2.24(@swc/core@1.3.24):
956 | resolution: {integrity: sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==}
957 | engines: {npm: '>= 7.0.0'}
958 | peerDependencies:
959 | '@swc/core': '*'
960 | dependencies:
961 | '@jest/create-cache-key-function': 27.5.1
962 | '@swc/core': 1.3.24
963 | jsonc-parser: 3.2.0
964 | dev: true
965 |
966 | /@tootallnate/once@1.1.2:
967 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
968 | engines: {node: '>= 6'}
969 | dev: true
970 |
971 | /@types/babel__core@7.1.20:
972 | resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==}
973 | dependencies:
974 | '@babel/parser': 7.20.5
975 | '@babel/types': 7.20.5
976 | '@types/babel__generator': 7.6.4
977 | '@types/babel__template': 7.4.1
978 | '@types/babel__traverse': 7.18.3
979 | dev: true
980 |
981 | /@types/babel__generator@7.6.4:
982 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==}
983 | dependencies:
984 | '@babel/types': 7.20.5
985 | dev: true
986 |
987 | /@types/babel__template@7.4.1:
988 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==}
989 | dependencies:
990 | '@babel/parser': 7.20.5
991 | '@babel/types': 7.20.5
992 | dev: true
993 |
994 | /@types/babel__traverse@7.18.3:
995 | resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==}
996 | dependencies:
997 | '@babel/types': 7.20.5
998 | dev: true
999 |
1000 | /@types/graceful-fs@4.1.5:
1001 | resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
1002 | dependencies:
1003 | '@types/node': 16.18.10
1004 | dev: true
1005 |
1006 | /@types/istanbul-lib-coverage@2.0.4:
1007 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
1008 | dev: true
1009 |
1010 | /@types/istanbul-lib-report@3.0.0:
1011 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
1012 | dependencies:
1013 | '@types/istanbul-lib-coverage': 2.0.4
1014 | dev: true
1015 |
1016 | /@types/istanbul-reports@1.1.2:
1017 | resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==}
1018 | dependencies:
1019 | '@types/istanbul-lib-coverage': 2.0.4
1020 | '@types/istanbul-lib-report': 3.0.0
1021 | dev: true
1022 |
1023 | /@types/istanbul-reports@3.0.1:
1024 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
1025 | dependencies:
1026 | '@types/istanbul-lib-report': 3.0.0
1027 | dev: true
1028 |
1029 | /@types/jest@26.0.24:
1030 | resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==}
1031 | dependencies:
1032 | jest-diff: 26.6.2
1033 | pretty-format: 26.6.2
1034 | dev: true
1035 |
1036 | /@types/node@16.18.10:
1037 | resolution: {integrity: sha512-XU1+v7h81p7145ddPfjv7jtWvkSilpcnON3mQ+bDi9Yuf7OI56efOglXRyXWgQ57xH3fEQgh7WOJMncRHVew5w==}
1038 | dev: true
1039 |
1040 | /@types/prettier@2.7.2:
1041 | resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==}
1042 | dev: true
1043 |
1044 | /@types/stack-utils@1.0.1:
1045 | resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==}
1046 | dev: true
1047 |
1048 | /@types/stack-utils@2.0.1:
1049 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
1050 | dev: true
1051 |
1052 | /@types/yargs-parser@21.0.0:
1053 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
1054 | dev: true
1055 |
1056 | /@types/yargs@13.0.12:
1057 | resolution: {integrity: sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==}
1058 | dependencies:
1059 | '@types/yargs-parser': 21.0.0
1060 | dev: true
1061 |
1062 | /@types/yargs@15.0.14:
1063 | resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==}
1064 | dependencies:
1065 | '@types/yargs-parser': 21.0.0
1066 | dev: true
1067 |
1068 | /@types/yargs@16.0.4:
1069 | resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==}
1070 | dependencies:
1071 | '@types/yargs-parser': 21.0.0
1072 | dev: true
1073 |
1074 | /abab@2.0.6:
1075 | resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
1076 | dev: true
1077 |
1078 | /acorn-globals@6.0.0:
1079 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==}
1080 | dependencies:
1081 | acorn: 7.4.1
1082 | acorn-walk: 7.2.0
1083 | dev: true
1084 |
1085 | /acorn-walk@7.2.0:
1086 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
1087 | engines: {node: '>=0.4.0'}
1088 | dev: true
1089 |
1090 | /acorn@7.4.1:
1091 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
1092 | engines: {node: '>=0.4.0'}
1093 | hasBin: true
1094 | dev: true
1095 |
1096 | /acorn@8.8.1:
1097 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
1098 | engines: {node: '>=0.4.0'}
1099 | hasBin: true
1100 | dev: true
1101 |
1102 | /agent-base@6.0.2:
1103 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
1104 | engines: {node: '>= 6.0.0'}
1105 | dependencies:
1106 | debug: 4.3.4
1107 | transitivePeerDependencies:
1108 | - supports-color
1109 | dev: true
1110 |
1111 | /ansi-escapes@4.3.2:
1112 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
1113 | engines: {node: '>=8'}
1114 | dependencies:
1115 | type-fest: 0.21.3
1116 | dev: true
1117 |
1118 | /ansi-regex@3.0.1:
1119 | resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
1120 | engines: {node: '>=4'}
1121 | dev: true
1122 |
1123 | /ansi-regex@4.1.1:
1124 | resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
1125 | engines: {node: '>=6'}
1126 | dev: true
1127 |
1128 | /ansi-regex@5.0.1:
1129 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
1130 | engines: {node: '>=8'}
1131 | dev: true
1132 |
1133 | /ansi-styles@3.2.1:
1134 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
1135 | engines: {node: '>=4'}
1136 | dependencies:
1137 | color-convert: 1.9.3
1138 | dev: true
1139 |
1140 | /ansi-styles@4.3.0:
1141 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1142 | engines: {node: '>=8'}
1143 | dependencies:
1144 | color-convert: 2.0.1
1145 | dev: true
1146 |
1147 | /ansi-styles@5.2.0:
1148 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
1149 | engines: {node: '>=10'}
1150 | dev: true
1151 |
1152 | /any-promise@1.3.0:
1153 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
1154 | dev: true
1155 |
1156 | /anymatch@3.1.3:
1157 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
1158 | engines: {node: '>= 8'}
1159 | dependencies:
1160 | normalize-path: 3.0.0
1161 | picomatch: 2.3.1
1162 | dev: true
1163 |
1164 | /argparse@1.0.10:
1165 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
1166 | dependencies:
1167 | sprintf-js: 1.0.3
1168 | dev: true
1169 |
1170 | /arr-diff@4.0.0:
1171 | resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
1172 | engines: {node: '>=0.10.0'}
1173 | dev: true
1174 |
1175 | /arr-flatten@1.1.0:
1176 | resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
1177 | engines: {node: '>=0.10.0'}
1178 | dev: true
1179 |
1180 | /arr-union@3.1.0:
1181 | resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
1182 | engines: {node: '>=0.10.0'}
1183 | dev: true
1184 |
1185 | /array-union@2.1.0:
1186 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
1187 | engines: {node: '>=8'}
1188 | dev: true
1189 |
1190 | /array-unique@0.3.2:
1191 | resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
1192 | engines: {node: '>=0.10.0'}
1193 | dev: true
1194 |
1195 | /assign-symbols@1.0.0:
1196 | resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
1197 | engines: {node: '>=0.10.0'}
1198 | dev: true
1199 |
1200 | /asynckit@0.4.0:
1201 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
1202 | dev: true
1203 |
1204 | /atob@2.1.2:
1205 | resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
1206 | engines: {node: '>= 4.5.0'}
1207 | hasBin: true
1208 | dev: true
1209 |
1210 | /babel-jest@27.5.1(@babel/core@7.20.5):
1211 | resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==}
1212 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1213 | peerDependencies:
1214 | '@babel/core': ^7.8.0
1215 | dependencies:
1216 | '@babel/core': 7.20.5
1217 | '@jest/transform': 27.5.1
1218 | '@jest/types': 27.5.1
1219 | '@types/babel__core': 7.1.20
1220 | babel-plugin-istanbul: 6.1.1
1221 | babel-preset-jest: 27.5.1(@babel/core@7.20.5)
1222 | chalk: 4.1.2
1223 | graceful-fs: 4.2.10
1224 | slash: 3.0.0
1225 | transitivePeerDependencies:
1226 | - supports-color
1227 | dev: true
1228 |
1229 | /babel-plugin-istanbul@6.1.1:
1230 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
1231 | engines: {node: '>=8'}
1232 | dependencies:
1233 | '@babel/helper-plugin-utils': 7.20.2
1234 | '@istanbuljs/load-nyc-config': 1.1.0
1235 | '@istanbuljs/schema': 0.1.3
1236 | istanbul-lib-instrument: 5.2.1
1237 | test-exclude: 6.0.0
1238 | transitivePeerDependencies:
1239 | - supports-color
1240 | dev: true
1241 |
1242 | /babel-plugin-jest-hoist@27.5.1:
1243 | resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==}
1244 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1245 | dependencies:
1246 | '@babel/template': 7.18.10
1247 | '@babel/types': 7.20.5
1248 | '@types/babel__core': 7.1.20
1249 | '@types/babel__traverse': 7.18.3
1250 | dev: true
1251 |
1252 | /babel-preset-current-node-syntax@1.0.1(@babel/core@7.20.5):
1253 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
1254 | peerDependencies:
1255 | '@babel/core': ^7.0.0
1256 | dependencies:
1257 | '@babel/core': 7.20.5
1258 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.5)
1259 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.5)
1260 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.5)
1261 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.5)
1262 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.5)
1263 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.5)
1264 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.5)
1265 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.5)
1266 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.5)
1267 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.5)
1268 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.5)
1269 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.5)
1270 | dev: true
1271 |
1272 | /babel-preset-jest@27.5.1(@babel/core@7.20.5):
1273 | resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==}
1274 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1275 | peerDependencies:
1276 | '@babel/core': ^7.0.0
1277 | dependencies:
1278 | '@babel/core': 7.20.5
1279 | babel-plugin-jest-hoist: 27.5.1
1280 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5)
1281 | dev: true
1282 |
1283 | /balanced-match@1.0.2:
1284 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1285 | dev: true
1286 |
1287 | /base@0.11.2:
1288 | resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
1289 | engines: {node: '>=0.10.0'}
1290 | dependencies:
1291 | cache-base: 1.0.1
1292 | class-utils: 0.3.6
1293 | component-emitter: 1.3.0
1294 | define-property: 1.0.0
1295 | isobject: 3.0.1
1296 | mixin-deep: 1.3.2
1297 | pascalcase: 0.1.1
1298 | dev: true
1299 |
1300 | /binary-extensions@2.2.0:
1301 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
1302 | engines: {node: '>=8'}
1303 | dev: true
1304 |
1305 | /brace-expansion@1.1.11:
1306 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1307 | dependencies:
1308 | balanced-match: 1.0.2
1309 | concat-map: 0.0.1
1310 | dev: true
1311 |
1312 | /braces@2.3.2:
1313 | resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
1314 | engines: {node: '>=0.10.0'}
1315 | dependencies:
1316 | arr-flatten: 1.1.0
1317 | array-unique: 0.3.2
1318 | extend-shallow: 2.0.1
1319 | fill-range: 4.0.0
1320 | isobject: 3.0.1
1321 | repeat-element: 1.1.4
1322 | snapdragon: 0.8.2
1323 | snapdragon-node: 2.1.1
1324 | split-string: 3.1.0
1325 | to-regex: 3.0.2
1326 | transitivePeerDependencies:
1327 | - supports-color
1328 | dev: true
1329 |
1330 | /braces@3.0.2:
1331 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1332 | engines: {node: '>=8'}
1333 | dependencies:
1334 | fill-range: 7.0.1
1335 | dev: true
1336 |
1337 | /browser-process-hrtime@1.0.0:
1338 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
1339 | dev: true
1340 |
1341 | /browserslist@4.21.4:
1342 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==}
1343 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1344 | hasBin: true
1345 | dependencies:
1346 | caniuse-lite: 1.0.30001441
1347 | electron-to-chromium: 1.4.284
1348 | node-releases: 2.0.8
1349 | update-browserslist-db: 1.0.10(browserslist@4.21.4)
1350 | dev: true
1351 |
1352 | /bser@2.1.1:
1353 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
1354 | dependencies:
1355 | node-int64: 0.4.0
1356 | dev: true
1357 |
1358 | /buffer-from@1.1.2:
1359 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
1360 | dev: true
1361 |
1362 | /bundle-require@3.1.2(esbuild@0.15.18):
1363 | resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==}
1364 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1365 | peerDependencies:
1366 | esbuild: '>=0.13'
1367 | dependencies:
1368 | esbuild: 0.15.18
1369 | load-tsconfig: 0.2.3
1370 | dev: true
1371 |
1372 | /cac@6.7.14:
1373 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
1374 | engines: {node: '>=8'}
1375 | dev: true
1376 |
1377 | /cache-base@1.0.1:
1378 | resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
1379 | engines: {node: '>=0.10.0'}
1380 | dependencies:
1381 | collection-visit: 1.0.0
1382 | component-emitter: 1.3.0
1383 | get-value: 2.0.6
1384 | has-value: 1.0.0
1385 | isobject: 3.0.1
1386 | set-value: 2.0.1
1387 | to-object-path: 0.3.0
1388 | union-value: 1.0.1
1389 | unset-value: 1.0.0
1390 | dev: true
1391 |
1392 | /callsites@3.1.0:
1393 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
1394 | engines: {node: '>=6'}
1395 | dev: true
1396 |
1397 | /camelcase@5.3.1:
1398 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
1399 | engines: {node: '>=6'}
1400 | dev: true
1401 |
1402 | /camelcase@6.3.0:
1403 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
1404 | engines: {node: '>=10'}
1405 | dev: true
1406 |
1407 | /caniuse-lite@1.0.30001441:
1408 | resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==}
1409 | dev: true
1410 |
1411 | /chalk@2.4.2:
1412 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
1413 | engines: {node: '>=4'}
1414 | dependencies:
1415 | ansi-styles: 3.2.1
1416 | escape-string-regexp: 1.0.5
1417 | supports-color: 5.5.0
1418 | dev: true
1419 |
1420 | /chalk@4.1.2:
1421 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1422 | engines: {node: '>=10'}
1423 | dependencies:
1424 | ansi-styles: 4.3.0
1425 | supports-color: 7.2.0
1426 | dev: true
1427 |
1428 | /char-regex@1.0.2:
1429 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
1430 | engines: {node: '>=10'}
1431 | dev: true
1432 |
1433 | /chokidar@3.5.3:
1434 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
1435 | engines: {node: '>= 8.10.0'}
1436 | dependencies:
1437 | anymatch: 3.1.3
1438 | braces: 3.0.2
1439 | glob-parent: 5.1.2
1440 | is-binary-path: 2.1.0
1441 | is-glob: 4.0.3
1442 | normalize-path: 3.0.0
1443 | readdirp: 3.6.0
1444 | optionalDependencies:
1445 | fsevents: 2.3.2
1446 | dev: true
1447 |
1448 | /ci-info@3.7.0:
1449 | resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==}
1450 | engines: {node: '>=8'}
1451 | dev: true
1452 |
1453 | /cjs-module-lexer@1.2.2:
1454 | resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
1455 | dev: true
1456 |
1457 | /class-utils@0.3.6:
1458 | resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
1459 | engines: {node: '>=0.10.0'}
1460 | dependencies:
1461 | arr-union: 3.1.0
1462 | define-property: 0.2.5
1463 | isobject: 3.0.1
1464 | static-extend: 0.1.2
1465 | dev: true
1466 |
1467 | /cliui@7.0.4:
1468 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
1469 | dependencies:
1470 | string-width: 4.2.3
1471 | strip-ansi: 6.0.1
1472 | wrap-ansi: 7.0.0
1473 | dev: true
1474 |
1475 | /co@4.6.0:
1476 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
1477 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
1478 | dev: true
1479 |
1480 | /collect-v8-coverage@1.0.1:
1481 | resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
1482 | dev: true
1483 |
1484 | /collection-visit@1.0.0:
1485 | resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
1486 | engines: {node: '>=0.10.0'}
1487 | dependencies:
1488 | map-visit: 1.0.0
1489 | object-visit: 1.0.1
1490 | dev: true
1491 |
1492 | /color-convert@1.9.3:
1493 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
1494 | dependencies:
1495 | color-name: 1.1.3
1496 | dev: true
1497 |
1498 | /color-convert@2.0.1:
1499 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1500 | engines: {node: '>=7.0.0'}
1501 | dependencies:
1502 | color-name: 1.1.4
1503 | dev: true
1504 |
1505 | /color-name@1.1.3:
1506 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
1507 | dev: true
1508 |
1509 | /color-name@1.1.4:
1510 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1511 | dev: true
1512 |
1513 | /combined-stream@1.0.8:
1514 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
1515 | engines: {node: '>= 0.8'}
1516 | dependencies:
1517 | delayed-stream: 1.0.0
1518 | dev: true
1519 |
1520 | /commander@4.1.1:
1521 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
1522 | engines: {node: '>= 6'}
1523 | dev: true
1524 |
1525 | /component-emitter@1.3.0:
1526 | resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
1527 | dev: true
1528 |
1529 | /concat-map@0.0.1:
1530 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1531 | dev: true
1532 |
1533 | /convert-source-map@1.9.0:
1534 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
1535 | dev: true
1536 |
1537 | /copy-descriptor@0.1.1:
1538 | resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
1539 | engines: {node: '>=0.10.0'}
1540 | dev: true
1541 |
1542 | /cross-spawn@7.0.3:
1543 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1544 | engines: {node: '>= 8'}
1545 | dependencies:
1546 | path-key: 3.1.1
1547 | shebang-command: 2.0.0
1548 | which: 2.0.2
1549 | dev: true
1550 |
1551 | /cssom@0.3.8:
1552 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
1553 | dev: true
1554 |
1555 | /cssom@0.4.4:
1556 | resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==}
1557 | dev: true
1558 |
1559 | /cssstyle@2.3.0:
1560 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
1561 | engines: {node: '>=8'}
1562 | dependencies:
1563 | cssom: 0.3.8
1564 | dev: true
1565 |
1566 | /data-urls@2.0.0:
1567 | resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==}
1568 | engines: {node: '>=10'}
1569 | dependencies:
1570 | abab: 2.0.6
1571 | whatwg-mimetype: 2.3.0
1572 | whatwg-url: 8.7.0
1573 | dev: true
1574 |
1575 | /debug@2.6.9:
1576 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
1577 | peerDependencies:
1578 | supports-color: '*'
1579 | peerDependenciesMeta:
1580 | supports-color:
1581 | optional: true
1582 | dependencies:
1583 | ms: 2.0.0
1584 | dev: true
1585 |
1586 | /debug@4.3.4:
1587 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1588 | engines: {node: '>=6.0'}
1589 | peerDependencies:
1590 | supports-color: '*'
1591 | peerDependenciesMeta:
1592 | supports-color:
1593 | optional: true
1594 | dependencies:
1595 | ms: 2.1.2
1596 | dev: true
1597 |
1598 | /decimal.js@10.4.3:
1599 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
1600 | dev: true
1601 |
1602 | /decode-uri-component@0.2.2:
1603 | resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
1604 | engines: {node: '>=0.10'}
1605 | dev: true
1606 |
1607 | /dedent@0.7.0:
1608 | resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
1609 | dev: true
1610 |
1611 | /deep-is@0.1.4:
1612 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1613 | dev: true
1614 |
1615 | /deepmerge@4.2.2:
1616 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
1617 | engines: {node: '>=0.10.0'}
1618 | dev: true
1619 |
1620 | /define-property@0.2.5:
1621 | resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
1622 | engines: {node: '>=0.10.0'}
1623 | dependencies:
1624 | is-descriptor: 0.1.6
1625 | dev: true
1626 |
1627 | /define-property@1.0.0:
1628 | resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
1629 | engines: {node: '>=0.10.0'}
1630 | dependencies:
1631 | is-descriptor: 1.0.2
1632 | dev: true
1633 |
1634 | /define-property@2.0.2:
1635 | resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
1636 | engines: {node: '>=0.10.0'}
1637 | dependencies:
1638 | is-descriptor: 1.0.2
1639 | isobject: 3.0.1
1640 | dev: true
1641 |
1642 | /delayed-stream@1.0.0:
1643 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
1644 | engines: {node: '>=0.4.0'}
1645 | dev: true
1646 |
1647 | /detect-newline@3.1.0:
1648 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
1649 | engines: {node: '>=8'}
1650 | dev: true
1651 |
1652 | /diff-sequences@24.9.0:
1653 | resolution: {integrity: sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==}
1654 | engines: {node: '>= 6'}
1655 | dev: true
1656 |
1657 | /diff-sequences@26.6.2:
1658 | resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==}
1659 | engines: {node: '>= 10.14.2'}
1660 | dev: true
1661 |
1662 | /diff-sequences@27.5.1:
1663 | resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
1664 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1665 | dev: true
1666 |
1667 | /dir-glob@3.0.1:
1668 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1669 | engines: {node: '>=8'}
1670 | dependencies:
1671 | path-type: 4.0.0
1672 | dev: true
1673 |
1674 | /domexception@2.0.1:
1675 | resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==}
1676 | engines: {node: '>=8'}
1677 | dependencies:
1678 | webidl-conversions: 5.0.0
1679 | dev: true
1680 |
1681 | /electron-to-chromium@1.4.284:
1682 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==}
1683 | dev: true
1684 |
1685 | /emittery@0.8.1:
1686 | resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==}
1687 | engines: {node: '>=10'}
1688 | dev: true
1689 |
1690 | /emoji-regex@8.0.0:
1691 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1692 | dev: true
1693 |
1694 | /error-ex@1.3.2:
1695 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1696 | dependencies:
1697 | is-arrayish: 0.2.1
1698 | dev: true
1699 |
1700 | /esbuild-android-64@0.15.18:
1701 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
1702 | engines: {node: '>=12'}
1703 | cpu: [x64]
1704 | os: [android]
1705 | requiresBuild: true
1706 | dev: true
1707 | optional: true
1708 |
1709 | /esbuild-android-arm64@0.15.18:
1710 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
1711 | engines: {node: '>=12'}
1712 | cpu: [arm64]
1713 | os: [android]
1714 | requiresBuild: true
1715 | dev: true
1716 | optional: true
1717 |
1718 | /esbuild-darwin-64@0.15.18:
1719 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
1720 | engines: {node: '>=12'}
1721 | cpu: [x64]
1722 | os: [darwin]
1723 | requiresBuild: true
1724 | dev: true
1725 | optional: true
1726 |
1727 | /esbuild-darwin-arm64@0.15.18:
1728 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
1729 | engines: {node: '>=12'}
1730 | cpu: [arm64]
1731 | os: [darwin]
1732 | requiresBuild: true
1733 | dev: true
1734 | optional: true
1735 |
1736 | /esbuild-freebsd-64@0.15.18:
1737 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
1738 | engines: {node: '>=12'}
1739 | cpu: [x64]
1740 | os: [freebsd]
1741 | requiresBuild: true
1742 | dev: true
1743 | optional: true
1744 |
1745 | /esbuild-freebsd-arm64@0.15.18:
1746 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
1747 | engines: {node: '>=12'}
1748 | cpu: [arm64]
1749 | os: [freebsd]
1750 | requiresBuild: true
1751 | dev: true
1752 | optional: true
1753 |
1754 | /esbuild-linux-32@0.15.18:
1755 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
1756 | engines: {node: '>=12'}
1757 | cpu: [ia32]
1758 | os: [linux]
1759 | requiresBuild: true
1760 | dev: true
1761 | optional: true
1762 |
1763 | /esbuild-linux-64@0.15.18:
1764 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
1765 | engines: {node: '>=12'}
1766 | cpu: [x64]
1767 | os: [linux]
1768 | requiresBuild: true
1769 | dev: true
1770 | optional: true
1771 |
1772 | /esbuild-linux-arm64@0.15.18:
1773 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
1774 | engines: {node: '>=12'}
1775 | cpu: [arm64]
1776 | os: [linux]
1777 | requiresBuild: true
1778 | dev: true
1779 | optional: true
1780 |
1781 | /esbuild-linux-arm@0.15.18:
1782 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
1783 | engines: {node: '>=12'}
1784 | cpu: [arm]
1785 | os: [linux]
1786 | requiresBuild: true
1787 | dev: true
1788 | optional: true
1789 |
1790 | /esbuild-linux-mips64le@0.15.18:
1791 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
1792 | engines: {node: '>=12'}
1793 | cpu: [mips64el]
1794 | os: [linux]
1795 | requiresBuild: true
1796 | dev: true
1797 | optional: true
1798 |
1799 | /esbuild-linux-ppc64le@0.15.18:
1800 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
1801 | engines: {node: '>=12'}
1802 | cpu: [ppc64]
1803 | os: [linux]
1804 | requiresBuild: true
1805 | dev: true
1806 | optional: true
1807 |
1808 | /esbuild-linux-riscv64@0.15.18:
1809 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
1810 | engines: {node: '>=12'}
1811 | cpu: [riscv64]
1812 | os: [linux]
1813 | requiresBuild: true
1814 | dev: true
1815 | optional: true
1816 |
1817 | /esbuild-linux-s390x@0.15.18:
1818 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
1819 | engines: {node: '>=12'}
1820 | cpu: [s390x]
1821 | os: [linux]
1822 | requiresBuild: true
1823 | dev: true
1824 | optional: true
1825 |
1826 | /esbuild-netbsd-64@0.15.18:
1827 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
1828 | engines: {node: '>=12'}
1829 | cpu: [x64]
1830 | os: [netbsd]
1831 | requiresBuild: true
1832 | dev: true
1833 | optional: true
1834 |
1835 | /esbuild-openbsd-64@0.15.18:
1836 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
1837 | engines: {node: '>=12'}
1838 | cpu: [x64]
1839 | os: [openbsd]
1840 | requiresBuild: true
1841 | dev: true
1842 | optional: true
1843 |
1844 | /esbuild-sunos-64@0.15.18:
1845 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
1846 | engines: {node: '>=12'}
1847 | cpu: [x64]
1848 | os: [sunos]
1849 | requiresBuild: true
1850 | dev: true
1851 | optional: true
1852 |
1853 | /esbuild-windows-32@0.15.18:
1854 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
1855 | engines: {node: '>=12'}
1856 | cpu: [ia32]
1857 | os: [win32]
1858 | requiresBuild: true
1859 | dev: true
1860 | optional: true
1861 |
1862 | /esbuild-windows-64@0.15.18:
1863 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
1864 | engines: {node: '>=12'}
1865 | cpu: [x64]
1866 | os: [win32]
1867 | requiresBuild: true
1868 | dev: true
1869 | optional: true
1870 |
1871 | /esbuild-windows-arm64@0.15.18:
1872 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
1873 | engines: {node: '>=12'}
1874 | cpu: [arm64]
1875 | os: [win32]
1876 | requiresBuild: true
1877 | dev: true
1878 | optional: true
1879 |
1880 | /esbuild@0.15.18:
1881 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
1882 | engines: {node: '>=12'}
1883 | hasBin: true
1884 | requiresBuild: true
1885 | optionalDependencies:
1886 | '@esbuild/android-arm': 0.15.18
1887 | '@esbuild/linux-loong64': 0.15.18
1888 | esbuild-android-64: 0.15.18
1889 | esbuild-android-arm64: 0.15.18
1890 | esbuild-darwin-64: 0.15.18
1891 | esbuild-darwin-arm64: 0.15.18
1892 | esbuild-freebsd-64: 0.15.18
1893 | esbuild-freebsd-arm64: 0.15.18
1894 | esbuild-linux-32: 0.15.18
1895 | esbuild-linux-64: 0.15.18
1896 | esbuild-linux-arm: 0.15.18
1897 | esbuild-linux-arm64: 0.15.18
1898 | esbuild-linux-mips64le: 0.15.18
1899 | esbuild-linux-ppc64le: 0.15.18
1900 | esbuild-linux-riscv64: 0.15.18
1901 | esbuild-linux-s390x: 0.15.18
1902 | esbuild-netbsd-64: 0.15.18
1903 | esbuild-openbsd-64: 0.15.18
1904 | esbuild-sunos-64: 0.15.18
1905 | esbuild-windows-32: 0.15.18
1906 | esbuild-windows-64: 0.15.18
1907 | esbuild-windows-arm64: 0.15.18
1908 | dev: true
1909 |
1910 | /escalade@3.1.1:
1911 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1912 | engines: {node: '>=6'}
1913 | dev: true
1914 |
1915 | /escape-string-regexp@1.0.5:
1916 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1917 | engines: {node: '>=0.8.0'}
1918 | dev: true
1919 |
1920 | /escape-string-regexp@2.0.0:
1921 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
1922 | engines: {node: '>=8'}
1923 | dev: true
1924 |
1925 | /escodegen@2.0.0:
1926 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
1927 | engines: {node: '>=6.0'}
1928 | hasBin: true
1929 | dependencies:
1930 | esprima: 4.0.1
1931 | estraverse: 5.3.0
1932 | esutils: 2.0.3
1933 | optionator: 0.8.3
1934 | optionalDependencies:
1935 | source-map: 0.6.1
1936 | dev: true
1937 |
1938 | /esprima@4.0.1:
1939 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1940 | engines: {node: '>=4'}
1941 | hasBin: true
1942 | dev: true
1943 |
1944 | /estraverse@5.3.0:
1945 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1946 | engines: {node: '>=4.0'}
1947 | dev: true
1948 |
1949 | /esutils@2.0.3:
1950 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1951 | engines: {node: '>=0.10.0'}
1952 | dev: true
1953 |
1954 | /execa@5.1.1:
1955 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1956 | engines: {node: '>=10'}
1957 | dependencies:
1958 | cross-spawn: 7.0.3
1959 | get-stream: 6.0.1
1960 | human-signals: 2.1.0
1961 | is-stream: 2.0.1
1962 | merge-stream: 2.0.0
1963 | npm-run-path: 4.0.1
1964 | onetime: 5.1.2
1965 | signal-exit: 3.0.7
1966 | strip-final-newline: 2.0.0
1967 | dev: true
1968 |
1969 | /exit@0.1.2:
1970 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
1971 | engines: {node: '>= 0.8.0'}
1972 | dev: true
1973 |
1974 | /expand-brackets@2.1.4:
1975 | resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
1976 | engines: {node: '>=0.10.0'}
1977 | dependencies:
1978 | debug: 2.6.9
1979 | define-property: 0.2.5
1980 | extend-shallow: 2.0.1
1981 | posix-character-classes: 0.1.1
1982 | regex-not: 1.0.2
1983 | snapdragon: 0.8.2
1984 | to-regex: 3.0.2
1985 | transitivePeerDependencies:
1986 | - supports-color
1987 | dev: true
1988 |
1989 | /expect@24.9.0:
1990 | resolution: {integrity: sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==}
1991 | engines: {node: '>= 6'}
1992 | dependencies:
1993 | '@jest/types': 24.9.0
1994 | ansi-styles: 3.2.1
1995 | jest-get-type: 24.9.0
1996 | jest-matcher-utils: 24.9.0
1997 | jest-message-util: 24.9.0
1998 | jest-regex-util: 24.9.0
1999 | transitivePeerDependencies:
2000 | - supports-color
2001 | dev: true
2002 |
2003 | /expect@27.5.1:
2004 | resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==}
2005 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2006 | dependencies:
2007 | '@jest/types': 27.5.1
2008 | jest-get-type: 27.5.1
2009 | jest-matcher-utils: 27.5.1
2010 | jest-message-util: 27.5.1
2011 | dev: true
2012 |
2013 | /extend-shallow@2.0.1:
2014 | resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
2015 | engines: {node: '>=0.10.0'}
2016 | dependencies:
2017 | is-extendable: 0.1.1
2018 | dev: true
2019 |
2020 | /extend-shallow@3.0.2:
2021 | resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
2022 | engines: {node: '>=0.10.0'}
2023 | dependencies:
2024 | assign-symbols: 1.0.0
2025 | is-extendable: 1.0.1
2026 | dev: true
2027 |
2028 | /extglob@2.0.4:
2029 | resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
2030 | engines: {node: '>=0.10.0'}
2031 | dependencies:
2032 | array-unique: 0.3.2
2033 | define-property: 1.0.0
2034 | expand-brackets: 2.1.4
2035 | extend-shallow: 2.0.1
2036 | fragment-cache: 0.2.1
2037 | regex-not: 1.0.2
2038 | snapdragon: 0.8.2
2039 | to-regex: 3.0.2
2040 | transitivePeerDependencies:
2041 | - supports-color
2042 | dev: true
2043 |
2044 | /fast-glob@3.2.12:
2045 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
2046 | engines: {node: '>=8.6.0'}
2047 | dependencies:
2048 | '@nodelib/fs.stat': 2.0.5
2049 | '@nodelib/fs.walk': 1.2.8
2050 | glob-parent: 5.1.2
2051 | merge2: 1.4.1
2052 | micromatch: 4.0.5
2053 | dev: true
2054 |
2055 | /fast-json-stable-stringify@2.1.0:
2056 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
2057 | dev: true
2058 |
2059 | /fast-levenshtein@2.0.6:
2060 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
2061 | dev: true
2062 |
2063 | /fastq@1.14.0:
2064 | resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==}
2065 | dependencies:
2066 | reusify: 1.0.4
2067 | dev: true
2068 |
2069 | /fb-watchman@2.0.2:
2070 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
2071 | dependencies:
2072 | bser: 2.1.1
2073 | dev: true
2074 |
2075 | /fill-range@4.0.0:
2076 | resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
2077 | engines: {node: '>=0.10.0'}
2078 | dependencies:
2079 | extend-shallow: 2.0.1
2080 | is-number: 3.0.0
2081 | repeat-string: 1.6.1
2082 | to-regex-range: 2.1.1
2083 | dev: true
2084 |
2085 | /fill-range@7.0.1:
2086 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
2087 | engines: {node: '>=8'}
2088 | dependencies:
2089 | to-regex-range: 5.0.1
2090 | dev: true
2091 |
2092 | /find-up@4.1.0:
2093 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
2094 | engines: {node: '>=8'}
2095 | dependencies:
2096 | locate-path: 5.0.0
2097 | path-exists: 4.0.0
2098 | dev: true
2099 |
2100 | /for-in@1.0.2:
2101 | resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
2102 | engines: {node: '>=0.10.0'}
2103 | dev: true
2104 |
2105 | /form-data@3.0.1:
2106 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
2107 | engines: {node: '>= 6'}
2108 | dependencies:
2109 | asynckit: 0.4.0
2110 | combined-stream: 1.0.8
2111 | mime-types: 2.1.35
2112 | dev: true
2113 |
2114 | /fragment-cache@0.2.1:
2115 | resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
2116 | engines: {node: '>=0.10.0'}
2117 | dependencies:
2118 | map-cache: 0.2.2
2119 | dev: true
2120 |
2121 | /fs.realpath@1.0.0:
2122 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
2123 | dev: true
2124 |
2125 | /fsevents@2.3.2:
2126 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
2127 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
2128 | os: [darwin]
2129 | requiresBuild: true
2130 | dev: true
2131 | optional: true
2132 |
2133 | /function-bind@1.1.1:
2134 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
2135 | dev: true
2136 |
2137 | /gensync@1.0.0-beta.2:
2138 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
2139 | engines: {node: '>=6.9.0'}
2140 | dev: true
2141 |
2142 | /get-caller-file@2.0.5:
2143 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
2144 | engines: {node: 6.* || 8.* || >= 10.*}
2145 | dev: true
2146 |
2147 | /get-package-type@0.1.0:
2148 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
2149 | engines: {node: '>=8.0.0'}
2150 | dev: true
2151 |
2152 | /get-stream@6.0.1:
2153 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
2154 | engines: {node: '>=10'}
2155 | dev: true
2156 |
2157 | /get-value@2.0.6:
2158 | resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
2159 | engines: {node: '>=0.10.0'}
2160 | dev: true
2161 |
2162 | /glob-parent@5.1.2:
2163 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
2164 | engines: {node: '>= 6'}
2165 | dependencies:
2166 | is-glob: 4.0.3
2167 | dev: true
2168 |
2169 | /glob@7.1.6:
2170 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
2171 | dependencies:
2172 | fs.realpath: 1.0.0
2173 | inflight: 1.0.6
2174 | inherits: 2.0.4
2175 | minimatch: 3.1.2
2176 | once: 1.4.0
2177 | path-is-absolute: 1.0.1
2178 | dev: true
2179 |
2180 | /glob@7.2.3:
2181 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
2182 | dependencies:
2183 | fs.realpath: 1.0.0
2184 | inflight: 1.0.6
2185 | inherits: 2.0.4
2186 | minimatch: 3.1.2
2187 | once: 1.4.0
2188 | path-is-absolute: 1.0.1
2189 | dev: true
2190 |
2191 | /globals@11.12.0:
2192 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
2193 | engines: {node: '>=4'}
2194 | dev: true
2195 |
2196 | /globby@11.1.0:
2197 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
2198 | engines: {node: '>=10'}
2199 | dependencies:
2200 | array-union: 2.1.0
2201 | dir-glob: 3.0.1
2202 | fast-glob: 3.2.12
2203 | ignore: 5.2.4
2204 | merge2: 1.4.1
2205 | slash: 3.0.0
2206 | dev: true
2207 |
2208 | /graceful-fs@4.2.10:
2209 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
2210 | dev: true
2211 |
2212 | /has-flag@3.0.0:
2213 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
2214 | engines: {node: '>=4'}
2215 | dev: true
2216 |
2217 | /has-flag@4.0.0:
2218 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
2219 | engines: {node: '>=8'}
2220 | dev: true
2221 |
2222 | /has-value@0.3.1:
2223 | resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
2224 | engines: {node: '>=0.10.0'}
2225 | dependencies:
2226 | get-value: 2.0.6
2227 | has-values: 0.1.4
2228 | isobject: 2.1.0
2229 | dev: true
2230 |
2231 | /has-value@1.0.0:
2232 | resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
2233 | engines: {node: '>=0.10.0'}
2234 | dependencies:
2235 | get-value: 2.0.6
2236 | has-values: 1.0.0
2237 | isobject: 3.0.1
2238 | dev: true
2239 |
2240 | /has-values@0.1.4:
2241 | resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
2242 | engines: {node: '>=0.10.0'}
2243 | dev: true
2244 |
2245 | /has-values@1.0.0:
2246 | resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
2247 | engines: {node: '>=0.10.0'}
2248 | dependencies:
2249 | is-number: 3.0.0
2250 | kind-of: 4.0.0
2251 | dev: true
2252 |
2253 | /has@1.0.3:
2254 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
2255 | engines: {node: '>= 0.4.0'}
2256 | dependencies:
2257 | function-bind: 1.1.1
2258 | dev: true
2259 |
2260 | /html-encoding-sniffer@2.0.1:
2261 | resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
2262 | engines: {node: '>=10'}
2263 | dependencies:
2264 | whatwg-encoding: 1.0.5
2265 | dev: true
2266 |
2267 | /html-escaper@2.0.2:
2268 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
2269 | dev: true
2270 |
2271 | /http-proxy-agent@4.0.1:
2272 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
2273 | engines: {node: '>= 6'}
2274 | dependencies:
2275 | '@tootallnate/once': 1.1.2
2276 | agent-base: 6.0.2
2277 | debug: 4.3.4
2278 | transitivePeerDependencies:
2279 | - supports-color
2280 | dev: true
2281 |
2282 | /https-proxy-agent@5.0.1:
2283 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
2284 | engines: {node: '>= 6'}
2285 | dependencies:
2286 | agent-base: 6.0.2
2287 | debug: 4.3.4
2288 | transitivePeerDependencies:
2289 | - supports-color
2290 | dev: true
2291 |
2292 | /human-signals@2.1.0:
2293 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
2294 | engines: {node: '>=10.17.0'}
2295 | dev: true
2296 |
2297 | /iconv-lite@0.4.24:
2298 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
2299 | engines: {node: '>=0.10.0'}
2300 | dependencies:
2301 | safer-buffer: 2.1.2
2302 | dev: true
2303 |
2304 | /ignore@5.2.4:
2305 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
2306 | engines: {node: '>= 4'}
2307 | dev: true
2308 |
2309 | /import-local@3.1.0:
2310 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
2311 | engines: {node: '>=8'}
2312 | hasBin: true
2313 | dependencies:
2314 | pkg-dir: 4.2.0
2315 | resolve-cwd: 3.0.0
2316 | dev: true
2317 |
2318 | /imurmurhash@0.1.4:
2319 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
2320 | engines: {node: '>=0.8.19'}
2321 | dev: true
2322 |
2323 | /inflight@1.0.6:
2324 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
2325 | dependencies:
2326 | once: 1.4.0
2327 | wrappy: 1.0.2
2328 | dev: true
2329 |
2330 | /inherits@2.0.4:
2331 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
2332 | dev: true
2333 |
2334 | /is-accessor-descriptor@0.1.6:
2335 | resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
2336 | engines: {node: '>=0.10.0'}
2337 | dependencies:
2338 | kind-of: 3.2.2
2339 | dev: true
2340 |
2341 | /is-accessor-descriptor@1.0.0:
2342 | resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==}
2343 | engines: {node: '>=0.10.0'}
2344 | dependencies:
2345 | kind-of: 6.0.3
2346 | dev: true
2347 |
2348 | /is-arrayish@0.2.1:
2349 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
2350 | dev: true
2351 |
2352 | /is-binary-path@2.1.0:
2353 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
2354 | engines: {node: '>=8'}
2355 | dependencies:
2356 | binary-extensions: 2.2.0
2357 | dev: true
2358 |
2359 | /is-buffer@1.1.6:
2360 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
2361 | dev: true
2362 |
2363 | /is-core-module@2.11.0:
2364 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
2365 | dependencies:
2366 | has: 1.0.3
2367 | dev: true
2368 |
2369 | /is-data-descriptor@0.1.4:
2370 | resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==}
2371 | engines: {node: '>=0.10.0'}
2372 | dependencies:
2373 | kind-of: 3.2.2
2374 | dev: true
2375 |
2376 | /is-data-descriptor@1.0.0:
2377 | resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==}
2378 | engines: {node: '>=0.10.0'}
2379 | dependencies:
2380 | kind-of: 6.0.3
2381 | dev: true
2382 |
2383 | /is-descriptor@0.1.6:
2384 | resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
2385 | engines: {node: '>=0.10.0'}
2386 | dependencies:
2387 | is-accessor-descriptor: 0.1.6
2388 | is-data-descriptor: 0.1.4
2389 | kind-of: 5.1.0
2390 | dev: true
2391 |
2392 | /is-descriptor@1.0.2:
2393 | resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==}
2394 | engines: {node: '>=0.10.0'}
2395 | dependencies:
2396 | is-accessor-descriptor: 1.0.0
2397 | is-data-descriptor: 1.0.0
2398 | kind-of: 6.0.3
2399 | dev: true
2400 |
2401 | /is-extendable@0.1.1:
2402 | resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
2403 | engines: {node: '>=0.10.0'}
2404 | dev: true
2405 |
2406 | /is-extendable@1.0.1:
2407 | resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
2408 | engines: {node: '>=0.10.0'}
2409 | dependencies:
2410 | is-plain-object: 2.0.4
2411 | dev: true
2412 |
2413 | /is-extglob@2.1.1:
2414 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
2415 | engines: {node: '>=0.10.0'}
2416 | dev: true
2417 |
2418 | /is-fullwidth-code-point@3.0.0:
2419 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
2420 | engines: {node: '>=8'}
2421 | dev: true
2422 |
2423 | /is-generator-fn@2.1.0:
2424 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
2425 | engines: {node: '>=6'}
2426 | dev: true
2427 |
2428 | /is-glob@4.0.3:
2429 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
2430 | engines: {node: '>=0.10.0'}
2431 | dependencies:
2432 | is-extglob: 2.1.1
2433 | dev: true
2434 |
2435 | /is-number@3.0.0:
2436 | resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
2437 | engines: {node: '>=0.10.0'}
2438 | dependencies:
2439 | kind-of: 3.2.2
2440 | dev: true
2441 |
2442 | /is-number@7.0.0:
2443 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
2444 | engines: {node: '>=0.12.0'}
2445 | dev: true
2446 |
2447 | /is-plain-object@2.0.4:
2448 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
2449 | engines: {node: '>=0.10.0'}
2450 | dependencies:
2451 | isobject: 3.0.1
2452 | dev: true
2453 |
2454 | /is-potential-custom-element-name@1.0.1:
2455 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
2456 | dev: true
2457 |
2458 | /is-stream@2.0.1:
2459 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
2460 | engines: {node: '>=8'}
2461 | dev: true
2462 |
2463 | /is-typedarray@1.0.0:
2464 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
2465 | dev: true
2466 |
2467 | /is-windows@1.0.2:
2468 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
2469 | engines: {node: '>=0.10.0'}
2470 | dev: true
2471 |
2472 | /isarray@1.0.0:
2473 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
2474 | dev: true
2475 |
2476 | /isexe@2.0.0:
2477 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
2478 | dev: true
2479 |
2480 | /isobject@2.1.0:
2481 | resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
2482 | engines: {node: '>=0.10.0'}
2483 | dependencies:
2484 | isarray: 1.0.0
2485 | dev: true
2486 |
2487 | /isobject@3.0.1:
2488 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
2489 | engines: {node: '>=0.10.0'}
2490 | dev: true
2491 |
2492 | /istanbul-lib-coverage@3.2.0:
2493 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
2494 | engines: {node: '>=8'}
2495 | dev: true
2496 |
2497 | /istanbul-lib-instrument@5.2.1:
2498 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
2499 | engines: {node: '>=8'}
2500 | dependencies:
2501 | '@babel/core': 7.20.5
2502 | '@babel/parser': 7.20.5
2503 | '@istanbuljs/schema': 0.1.3
2504 | istanbul-lib-coverage: 3.2.0
2505 | semver: 6.3.0
2506 | transitivePeerDependencies:
2507 | - supports-color
2508 | dev: true
2509 |
2510 | /istanbul-lib-report@3.0.0:
2511 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
2512 | engines: {node: '>=8'}
2513 | dependencies:
2514 | istanbul-lib-coverage: 3.2.0
2515 | make-dir: 3.1.0
2516 | supports-color: 7.2.0
2517 | dev: true
2518 |
2519 | /istanbul-lib-source-maps@4.0.1:
2520 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
2521 | engines: {node: '>=10'}
2522 | dependencies:
2523 | debug: 4.3.4
2524 | istanbul-lib-coverage: 3.2.0
2525 | source-map: 0.6.1
2526 | transitivePeerDependencies:
2527 | - supports-color
2528 | dev: true
2529 |
2530 | /istanbul-reports@3.1.5:
2531 | resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==}
2532 | engines: {node: '>=8'}
2533 | dependencies:
2534 | html-escaper: 2.0.2
2535 | istanbul-lib-report: 3.0.0
2536 | dev: true
2537 |
2538 | /jest-changed-files@27.5.1:
2539 | resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==}
2540 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2541 | dependencies:
2542 | '@jest/types': 27.5.1
2543 | execa: 5.1.1
2544 | throat: 6.0.1
2545 | dev: true
2546 |
2547 | /jest-circus@27.5.1:
2548 | resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==}
2549 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2550 | dependencies:
2551 | '@jest/environment': 27.5.1
2552 | '@jest/test-result': 27.5.1
2553 | '@jest/types': 27.5.1
2554 | '@types/node': 16.18.10
2555 | chalk: 4.1.2
2556 | co: 4.6.0
2557 | dedent: 0.7.0
2558 | expect: 27.5.1
2559 | is-generator-fn: 2.1.0
2560 | jest-each: 27.5.1
2561 | jest-matcher-utils: 27.5.1
2562 | jest-message-util: 27.5.1
2563 | jest-runtime: 27.5.1
2564 | jest-snapshot: 27.5.1
2565 | jest-util: 27.5.1
2566 | pretty-format: 27.5.1
2567 | slash: 3.0.0
2568 | stack-utils: 2.0.6
2569 | throat: 6.0.1
2570 | transitivePeerDependencies:
2571 | - supports-color
2572 | dev: true
2573 |
2574 | /jest-cli@27.5.1:
2575 | resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==}
2576 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2577 | hasBin: true
2578 | peerDependencies:
2579 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
2580 | peerDependenciesMeta:
2581 | node-notifier:
2582 | optional: true
2583 | dependencies:
2584 | '@jest/core': 27.5.1
2585 | '@jest/test-result': 27.5.1
2586 | '@jest/types': 27.5.1
2587 | chalk: 4.1.2
2588 | exit: 0.1.2
2589 | graceful-fs: 4.2.10
2590 | import-local: 3.1.0
2591 | jest-config: 27.5.1
2592 | jest-util: 27.5.1
2593 | jest-validate: 27.5.1
2594 | prompts: 2.4.2
2595 | yargs: 16.2.0
2596 | transitivePeerDependencies:
2597 | - bufferutil
2598 | - canvas
2599 | - supports-color
2600 | - ts-node
2601 | - utf-8-validate
2602 | dev: true
2603 |
2604 | /jest-config@27.5.1:
2605 | resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==}
2606 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2607 | peerDependencies:
2608 | ts-node: '>=9.0.0'
2609 | peerDependenciesMeta:
2610 | ts-node:
2611 | optional: true
2612 | dependencies:
2613 | '@babel/core': 7.20.5
2614 | '@jest/test-sequencer': 27.5.1
2615 | '@jest/types': 27.5.1
2616 | babel-jest: 27.5.1(@babel/core@7.20.5)
2617 | chalk: 4.1.2
2618 | ci-info: 3.7.0
2619 | deepmerge: 4.2.2
2620 | glob: 7.2.3
2621 | graceful-fs: 4.2.10
2622 | jest-circus: 27.5.1
2623 | jest-environment-jsdom: 27.5.1
2624 | jest-environment-node: 27.5.1
2625 | jest-get-type: 27.5.1
2626 | jest-jasmine2: 27.5.1
2627 | jest-regex-util: 27.5.1
2628 | jest-resolve: 27.5.1
2629 | jest-runner: 27.5.1
2630 | jest-util: 27.5.1
2631 | jest-validate: 27.5.1
2632 | micromatch: 4.0.5
2633 | parse-json: 5.2.0
2634 | pretty-format: 27.5.1
2635 | slash: 3.0.0
2636 | strip-json-comments: 3.1.1
2637 | transitivePeerDependencies:
2638 | - bufferutil
2639 | - canvas
2640 | - supports-color
2641 | - utf-8-validate
2642 | dev: true
2643 |
2644 | /jest-diff@24.9.0:
2645 | resolution: {integrity: sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==}
2646 | engines: {node: '>= 6'}
2647 | dependencies:
2648 | chalk: 2.4.2
2649 | diff-sequences: 24.9.0
2650 | jest-get-type: 24.9.0
2651 | pretty-format: 24.9.0
2652 | dev: true
2653 |
2654 | /jest-diff@26.6.2:
2655 | resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==}
2656 | engines: {node: '>= 10.14.2'}
2657 | dependencies:
2658 | chalk: 4.1.2
2659 | diff-sequences: 26.6.2
2660 | jest-get-type: 26.3.0
2661 | pretty-format: 26.6.2
2662 | dev: true
2663 |
2664 | /jest-diff@27.5.1:
2665 | resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==}
2666 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2667 | dependencies:
2668 | chalk: 4.1.2
2669 | diff-sequences: 27.5.1
2670 | jest-get-type: 27.5.1
2671 | pretty-format: 27.5.1
2672 | dev: true
2673 |
2674 | /jest-docblock@27.5.1:
2675 | resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==}
2676 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2677 | dependencies:
2678 | detect-newline: 3.1.0
2679 | dev: true
2680 |
2681 | /jest-each@27.5.1:
2682 | resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==}
2683 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2684 | dependencies:
2685 | '@jest/types': 27.5.1
2686 | chalk: 4.1.2
2687 | jest-get-type: 27.5.1
2688 | jest-util: 27.5.1
2689 | pretty-format: 27.5.1
2690 | dev: true
2691 |
2692 | /jest-environment-jsdom@27.5.1:
2693 | resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==}
2694 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2695 | dependencies:
2696 | '@jest/environment': 27.5.1
2697 | '@jest/fake-timers': 27.5.1
2698 | '@jest/types': 27.5.1
2699 | '@types/node': 16.18.10
2700 | jest-mock: 27.5.1
2701 | jest-util: 27.5.1
2702 | jsdom: 16.7.0
2703 | transitivePeerDependencies:
2704 | - bufferutil
2705 | - canvas
2706 | - supports-color
2707 | - utf-8-validate
2708 | dev: true
2709 |
2710 | /jest-environment-node@27.5.1:
2711 | resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==}
2712 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2713 | dependencies:
2714 | '@jest/environment': 27.5.1
2715 | '@jest/fake-timers': 27.5.1
2716 | '@jest/types': 27.5.1
2717 | '@types/node': 16.18.10
2718 | jest-mock: 27.5.1
2719 | jest-util: 27.5.1
2720 | dev: true
2721 |
2722 | /jest-extended@0.11.5:
2723 | resolution: {integrity: sha512-3RsdFpLWKScpsLD6hJuyr/tV5iFOrw7v6YjA3tPdda9sJwoHwcMROws5gwiIZfcwhHlJRwFJB2OUvGmF3evV/Q==}
2724 | dependencies:
2725 | expect: 24.9.0
2726 | jest-get-type: 22.4.3
2727 | jest-matcher-utils: 22.4.3
2728 | transitivePeerDependencies:
2729 | - supports-color
2730 | dev: true
2731 |
2732 | /jest-get-type@22.4.3:
2733 | resolution: {integrity: sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==}
2734 | dev: true
2735 |
2736 | /jest-get-type@24.9.0:
2737 | resolution: {integrity: sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==}
2738 | engines: {node: '>= 6'}
2739 | dev: true
2740 |
2741 | /jest-get-type@26.3.0:
2742 | resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==}
2743 | engines: {node: '>= 10.14.2'}
2744 | dev: true
2745 |
2746 | /jest-get-type@27.5.1:
2747 | resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==}
2748 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2749 | dev: true
2750 |
2751 | /jest-haste-map@27.5.1:
2752 | resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==}
2753 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2754 | dependencies:
2755 | '@jest/types': 27.5.1
2756 | '@types/graceful-fs': 4.1.5
2757 | '@types/node': 16.18.10
2758 | anymatch: 3.1.3
2759 | fb-watchman: 2.0.2
2760 | graceful-fs: 4.2.10
2761 | jest-regex-util: 27.5.1
2762 | jest-serializer: 27.5.1
2763 | jest-util: 27.5.1
2764 | jest-worker: 27.5.1
2765 | micromatch: 4.0.5
2766 | walker: 1.0.8
2767 | optionalDependencies:
2768 | fsevents: 2.3.2
2769 | dev: true
2770 |
2771 | /jest-jasmine2@27.5.1:
2772 | resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==}
2773 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2774 | dependencies:
2775 | '@jest/environment': 27.5.1
2776 | '@jest/source-map': 27.5.1
2777 | '@jest/test-result': 27.5.1
2778 | '@jest/types': 27.5.1
2779 | '@types/node': 16.18.10
2780 | chalk: 4.1.2
2781 | co: 4.6.0
2782 | expect: 27.5.1
2783 | is-generator-fn: 2.1.0
2784 | jest-each: 27.5.1
2785 | jest-matcher-utils: 27.5.1
2786 | jest-message-util: 27.5.1
2787 | jest-runtime: 27.5.1
2788 | jest-snapshot: 27.5.1
2789 | jest-util: 27.5.1
2790 | pretty-format: 27.5.1
2791 | throat: 6.0.1
2792 | transitivePeerDependencies:
2793 | - supports-color
2794 | dev: true
2795 |
2796 | /jest-leak-detector@27.5.1:
2797 | resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==}
2798 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2799 | dependencies:
2800 | jest-get-type: 27.5.1
2801 | pretty-format: 27.5.1
2802 | dev: true
2803 |
2804 | /jest-matcher-utils@22.4.3:
2805 | resolution: {integrity: sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==}
2806 | dependencies:
2807 | chalk: 2.4.2
2808 | jest-get-type: 22.4.3
2809 | pretty-format: 22.4.3
2810 | dev: true
2811 |
2812 | /jest-matcher-utils@24.9.0:
2813 | resolution: {integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==}
2814 | engines: {node: '>= 6'}
2815 | dependencies:
2816 | chalk: 2.4.2
2817 | jest-diff: 24.9.0
2818 | jest-get-type: 24.9.0
2819 | pretty-format: 24.9.0
2820 | dev: true
2821 |
2822 | /jest-matcher-utils@27.5.1:
2823 | resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==}
2824 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2825 | dependencies:
2826 | chalk: 4.1.2
2827 | jest-diff: 27.5.1
2828 | jest-get-type: 27.5.1
2829 | pretty-format: 27.5.1
2830 | dev: true
2831 |
2832 | /jest-message-util@24.9.0:
2833 | resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==}
2834 | engines: {node: '>= 6'}
2835 | dependencies:
2836 | '@babel/code-frame': 7.18.6
2837 | '@jest/test-result': 24.9.0
2838 | '@jest/types': 24.9.0
2839 | '@types/stack-utils': 1.0.1
2840 | chalk: 2.4.2
2841 | micromatch: 3.1.10
2842 | slash: 2.0.0
2843 | stack-utils: 1.0.5
2844 | transitivePeerDependencies:
2845 | - supports-color
2846 | dev: true
2847 |
2848 | /jest-message-util@27.5.1:
2849 | resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==}
2850 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2851 | dependencies:
2852 | '@babel/code-frame': 7.18.6
2853 | '@jest/types': 27.5.1
2854 | '@types/stack-utils': 2.0.1
2855 | chalk: 4.1.2
2856 | graceful-fs: 4.2.10
2857 | micromatch: 4.0.5
2858 | pretty-format: 27.5.1
2859 | slash: 3.0.0
2860 | stack-utils: 2.0.6
2861 | dev: true
2862 |
2863 | /jest-mock@27.5.1:
2864 | resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
2865 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2866 | dependencies:
2867 | '@jest/types': 27.5.1
2868 | '@types/node': 16.18.10
2869 | dev: true
2870 |
2871 | /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1):
2872 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
2873 | engines: {node: '>=6'}
2874 | peerDependencies:
2875 | jest-resolve: '*'
2876 | peerDependenciesMeta:
2877 | jest-resolve:
2878 | optional: true
2879 | dependencies:
2880 | jest-resolve: 27.5.1
2881 | dev: true
2882 |
2883 | /jest-regex-util@24.9.0:
2884 | resolution: {integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==}
2885 | engines: {node: '>= 6'}
2886 | dev: true
2887 |
2888 | /jest-regex-util@27.5.1:
2889 | resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==}
2890 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2891 | dev: true
2892 |
2893 | /jest-resolve-dependencies@27.5.1:
2894 | resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==}
2895 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2896 | dependencies:
2897 | '@jest/types': 27.5.1
2898 | jest-regex-util: 27.5.1
2899 | jest-snapshot: 27.5.1
2900 | transitivePeerDependencies:
2901 | - supports-color
2902 | dev: true
2903 |
2904 | /jest-resolve@27.5.1:
2905 | resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==}
2906 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2907 | dependencies:
2908 | '@jest/types': 27.5.1
2909 | chalk: 4.1.2
2910 | graceful-fs: 4.2.10
2911 | jest-haste-map: 27.5.1
2912 | jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1)
2913 | jest-util: 27.5.1
2914 | jest-validate: 27.5.1
2915 | resolve: 1.22.1
2916 | resolve.exports: 1.1.0
2917 | slash: 3.0.0
2918 | dev: true
2919 |
2920 | /jest-runner@27.5.1:
2921 | resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==}
2922 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2923 | dependencies:
2924 | '@jest/console': 27.5.1
2925 | '@jest/environment': 27.5.1
2926 | '@jest/test-result': 27.5.1
2927 | '@jest/transform': 27.5.1
2928 | '@jest/types': 27.5.1
2929 | '@types/node': 16.18.10
2930 | chalk: 4.1.2
2931 | emittery: 0.8.1
2932 | graceful-fs: 4.2.10
2933 | jest-docblock: 27.5.1
2934 | jest-environment-jsdom: 27.5.1
2935 | jest-environment-node: 27.5.1
2936 | jest-haste-map: 27.5.1
2937 | jest-leak-detector: 27.5.1
2938 | jest-message-util: 27.5.1
2939 | jest-resolve: 27.5.1
2940 | jest-runtime: 27.5.1
2941 | jest-util: 27.5.1
2942 | jest-worker: 27.5.1
2943 | source-map-support: 0.5.21
2944 | throat: 6.0.1
2945 | transitivePeerDependencies:
2946 | - bufferutil
2947 | - canvas
2948 | - supports-color
2949 | - utf-8-validate
2950 | dev: true
2951 |
2952 | /jest-runtime@27.5.1:
2953 | resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==}
2954 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2955 | dependencies:
2956 | '@jest/environment': 27.5.1
2957 | '@jest/fake-timers': 27.5.1
2958 | '@jest/globals': 27.5.1
2959 | '@jest/source-map': 27.5.1
2960 | '@jest/test-result': 27.5.1
2961 | '@jest/transform': 27.5.1
2962 | '@jest/types': 27.5.1
2963 | chalk: 4.1.2
2964 | cjs-module-lexer: 1.2.2
2965 | collect-v8-coverage: 1.0.1
2966 | execa: 5.1.1
2967 | glob: 7.2.3
2968 | graceful-fs: 4.2.10
2969 | jest-haste-map: 27.5.1
2970 | jest-message-util: 27.5.1
2971 | jest-mock: 27.5.1
2972 | jest-regex-util: 27.5.1
2973 | jest-resolve: 27.5.1
2974 | jest-snapshot: 27.5.1
2975 | jest-util: 27.5.1
2976 | slash: 3.0.0
2977 | strip-bom: 4.0.0
2978 | transitivePeerDependencies:
2979 | - supports-color
2980 | dev: true
2981 |
2982 | /jest-serializer@27.5.1:
2983 | resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==}
2984 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2985 | dependencies:
2986 | '@types/node': 16.18.10
2987 | graceful-fs: 4.2.10
2988 | dev: true
2989 |
2990 | /jest-snapshot@27.5.1:
2991 | resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==}
2992 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
2993 | dependencies:
2994 | '@babel/core': 7.20.5
2995 | '@babel/generator': 7.20.5
2996 | '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.20.5)
2997 | '@babel/traverse': 7.20.5
2998 | '@babel/types': 7.20.5
2999 | '@jest/transform': 27.5.1
3000 | '@jest/types': 27.5.1
3001 | '@types/babel__traverse': 7.18.3
3002 | '@types/prettier': 2.7.2
3003 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5)
3004 | chalk: 4.1.2
3005 | expect: 27.5.1
3006 | graceful-fs: 4.2.10
3007 | jest-diff: 27.5.1
3008 | jest-get-type: 27.5.1
3009 | jest-haste-map: 27.5.1
3010 | jest-matcher-utils: 27.5.1
3011 | jest-message-util: 27.5.1
3012 | jest-util: 27.5.1
3013 | natural-compare: 1.4.0
3014 | pretty-format: 27.5.1
3015 | semver: 7.3.8
3016 | transitivePeerDependencies:
3017 | - supports-color
3018 | dev: true
3019 |
3020 | /jest-ts-webcompat-resolver@1.0.0(jest-resolve@27.5.1):
3021 | resolution: {integrity: sha512-BFoaU7LeYqZNnTYEr6iMRf87xdCQntNc/Wk8YpzDBcuz+CIZ0JsTtzuMAMnKiEgTRTC1wRWLUo2RlVjVijBcHQ==}
3022 | peerDependencies:
3023 | jest-resolve: '*'
3024 | dependencies:
3025 | jest-resolve: 27.5.1
3026 | dev: true
3027 |
3028 | /jest-util@27.5.1:
3029 | resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==}
3030 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
3031 | dependencies:
3032 | '@jest/types': 27.5.1
3033 | '@types/node': 16.18.10
3034 | chalk: 4.1.2
3035 | ci-info: 3.7.0
3036 | graceful-fs: 4.2.10
3037 | picomatch: 2.3.1
3038 | dev: true
3039 |
3040 | /jest-validate@27.5.1:
3041 | resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==}
3042 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
3043 | dependencies:
3044 | '@jest/types': 27.5.1
3045 | camelcase: 6.3.0
3046 | chalk: 4.1.2
3047 | jest-get-type: 27.5.1
3048 | leven: 3.1.0
3049 | pretty-format: 27.5.1
3050 | dev: true
3051 |
3052 | /jest-watcher@27.5.1:
3053 | resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==}
3054 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
3055 | dependencies:
3056 | '@jest/test-result': 27.5.1
3057 | '@jest/types': 27.5.1
3058 | '@types/node': 16.18.10
3059 | ansi-escapes: 4.3.2
3060 | chalk: 4.1.2
3061 | jest-util: 27.5.1
3062 | string-length: 4.0.2
3063 | dev: true
3064 |
3065 | /jest-worker@27.5.1:
3066 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
3067 | engines: {node: '>= 10.13.0'}
3068 | dependencies:
3069 | '@types/node': 16.18.10
3070 | merge-stream: 2.0.0
3071 | supports-color: 8.1.1
3072 | dev: true
3073 |
3074 | /jest@27.5.1:
3075 | resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==}
3076 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
3077 | hasBin: true
3078 | peerDependencies:
3079 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
3080 | peerDependenciesMeta:
3081 | node-notifier:
3082 | optional: true
3083 | dependencies:
3084 | '@jest/core': 27.5.1
3085 | import-local: 3.1.0
3086 | jest-cli: 27.5.1
3087 | transitivePeerDependencies:
3088 | - bufferutil
3089 | - canvas
3090 | - supports-color
3091 | - ts-node
3092 | - utf-8-validate
3093 | dev: true
3094 |
3095 | /joycon@3.1.1:
3096 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
3097 | engines: {node: '>=10'}
3098 | dev: true
3099 |
3100 | /js-tokens@4.0.0:
3101 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
3102 | dev: true
3103 |
3104 | /js-yaml@3.14.1:
3105 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
3106 | hasBin: true
3107 | dependencies:
3108 | argparse: 1.0.10
3109 | esprima: 4.0.1
3110 | dev: true
3111 |
3112 | /jsdom@16.7.0:
3113 | resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==}
3114 | engines: {node: '>=10'}
3115 | peerDependencies:
3116 | canvas: ^2.5.0
3117 | peerDependenciesMeta:
3118 | canvas:
3119 | optional: true
3120 | dependencies:
3121 | abab: 2.0.6
3122 | acorn: 8.8.1
3123 | acorn-globals: 6.0.0
3124 | cssom: 0.4.4
3125 | cssstyle: 2.3.0
3126 | data-urls: 2.0.0
3127 | decimal.js: 10.4.3
3128 | domexception: 2.0.1
3129 | escodegen: 2.0.0
3130 | form-data: 3.0.1
3131 | html-encoding-sniffer: 2.0.1
3132 | http-proxy-agent: 4.0.1
3133 | https-proxy-agent: 5.0.1
3134 | is-potential-custom-element-name: 1.0.1
3135 | nwsapi: 2.2.2
3136 | parse5: 6.0.1
3137 | saxes: 5.0.1
3138 | symbol-tree: 3.2.4
3139 | tough-cookie: 4.1.2
3140 | w3c-hr-time: 1.0.2
3141 | w3c-xmlserializer: 2.0.0
3142 | webidl-conversions: 6.1.0
3143 | whatwg-encoding: 1.0.5
3144 | whatwg-mimetype: 2.3.0
3145 | whatwg-url: 8.7.0
3146 | ws: 7.5.9
3147 | xml-name-validator: 3.0.0
3148 | transitivePeerDependencies:
3149 | - bufferutil
3150 | - supports-color
3151 | - utf-8-validate
3152 | dev: true
3153 |
3154 | /jsesc@2.5.2:
3155 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
3156 | engines: {node: '>=4'}
3157 | hasBin: true
3158 | dev: true
3159 |
3160 | /json-parse-even-better-errors@2.3.1:
3161 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
3162 | dev: true
3163 |
3164 | /json5@2.2.2:
3165 | resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==}
3166 | engines: {node: '>=6'}
3167 | hasBin: true
3168 | dev: true
3169 |
3170 | /jsonc-parser@3.2.0:
3171 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
3172 | dev: true
3173 |
3174 | /kind-of@3.2.2:
3175 | resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
3176 | engines: {node: '>=0.10.0'}
3177 | dependencies:
3178 | is-buffer: 1.1.6
3179 | dev: true
3180 |
3181 | /kind-of@4.0.0:
3182 | resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
3183 | engines: {node: '>=0.10.0'}
3184 | dependencies:
3185 | is-buffer: 1.1.6
3186 | dev: true
3187 |
3188 | /kind-of@5.1.0:
3189 | resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
3190 | engines: {node: '>=0.10.0'}
3191 | dev: true
3192 |
3193 | /kind-of@6.0.3:
3194 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
3195 | engines: {node: '>=0.10.0'}
3196 | dev: true
3197 |
3198 | /kleur@3.0.3:
3199 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
3200 | engines: {node: '>=6'}
3201 | dev: true
3202 |
3203 | /leven@3.1.0:
3204 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
3205 | engines: {node: '>=6'}
3206 | dev: true
3207 |
3208 | /levn@0.3.0:
3209 | resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==}
3210 | engines: {node: '>= 0.8.0'}
3211 | dependencies:
3212 | prelude-ls: 1.1.2
3213 | type-check: 0.3.2
3214 | dev: true
3215 |
3216 | /lilconfig@2.0.6:
3217 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
3218 | engines: {node: '>=10'}
3219 | dev: true
3220 |
3221 | /lines-and-columns@1.2.4:
3222 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
3223 | dev: true
3224 |
3225 | /load-tsconfig@0.2.3:
3226 | resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==}
3227 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
3228 | dev: true
3229 |
3230 | /locate-path@5.0.0:
3231 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
3232 | engines: {node: '>=8'}
3233 | dependencies:
3234 | p-locate: 4.1.0
3235 | dev: true
3236 |
3237 | /lodash.sortby@4.7.0:
3238 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
3239 | dev: true
3240 |
3241 | /lodash@4.17.21:
3242 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
3243 | dev: true
3244 |
3245 | /loose-envify@1.4.0:
3246 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
3247 | hasBin: true
3248 | dependencies:
3249 | js-tokens: 4.0.0
3250 | dev: true
3251 |
3252 | /lru-cache@6.0.0:
3253 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
3254 | engines: {node: '>=10'}
3255 | dependencies:
3256 | yallist: 4.0.0
3257 | dev: true
3258 |
3259 | /make-dir@3.1.0:
3260 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
3261 | engines: {node: '>=8'}
3262 | dependencies:
3263 | semver: 6.3.0
3264 | dev: true
3265 |
3266 | /makeerror@1.0.12:
3267 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
3268 | dependencies:
3269 | tmpl: 1.0.5
3270 | dev: true
3271 |
3272 | /map-cache@0.2.2:
3273 | resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
3274 | engines: {node: '>=0.10.0'}
3275 | dev: true
3276 |
3277 | /map-visit@1.0.0:
3278 | resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
3279 | engines: {node: '>=0.10.0'}
3280 | dependencies:
3281 | object-visit: 1.0.1
3282 | dev: true
3283 |
3284 | /merge-stream@2.0.0:
3285 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
3286 | dev: true
3287 |
3288 | /merge2@1.4.1:
3289 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
3290 | engines: {node: '>= 8'}
3291 | dev: true
3292 |
3293 | /micromatch@3.1.10:
3294 | resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
3295 | engines: {node: '>=0.10.0'}
3296 | dependencies:
3297 | arr-diff: 4.0.0
3298 | array-unique: 0.3.2
3299 | braces: 2.3.2
3300 | define-property: 2.0.2
3301 | extend-shallow: 3.0.2
3302 | extglob: 2.0.4
3303 | fragment-cache: 0.2.1
3304 | kind-of: 6.0.3
3305 | nanomatch: 1.2.13
3306 | object.pick: 1.3.0
3307 | regex-not: 1.0.2
3308 | snapdragon: 0.8.2
3309 | to-regex: 3.0.2
3310 | transitivePeerDependencies:
3311 | - supports-color
3312 | dev: true
3313 |
3314 | /micromatch@4.0.5:
3315 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
3316 | engines: {node: '>=8.6'}
3317 | dependencies:
3318 | braces: 3.0.2
3319 | picomatch: 2.3.1
3320 | dev: true
3321 |
3322 | /mime-db@1.52.0:
3323 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
3324 | engines: {node: '>= 0.6'}
3325 | dev: true
3326 |
3327 | /mime-types@2.1.35:
3328 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
3329 | engines: {node: '>= 0.6'}
3330 | dependencies:
3331 | mime-db: 1.52.0
3332 | dev: true
3333 |
3334 | /mimic-fn@2.1.0:
3335 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
3336 | engines: {node: '>=6'}
3337 | dev: true
3338 |
3339 | /minimatch@3.1.2:
3340 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
3341 | dependencies:
3342 | brace-expansion: 1.1.11
3343 | dev: true
3344 |
3345 | /mixin-deep@1.3.2:
3346 | resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
3347 | engines: {node: '>=0.10.0'}
3348 | dependencies:
3349 | for-in: 1.0.2
3350 | is-extendable: 1.0.1
3351 | dev: true
3352 |
3353 | /ms@2.0.0:
3354 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
3355 | dev: true
3356 |
3357 | /ms@2.1.2:
3358 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
3359 | dev: true
3360 |
3361 | /mz@2.7.0:
3362 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
3363 | dependencies:
3364 | any-promise: 1.3.0
3365 | object-assign: 4.1.1
3366 | thenify-all: 1.6.0
3367 | dev: true
3368 |
3369 | /nanoid@3.3.4:
3370 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
3371 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
3372 | hasBin: true
3373 | dev: true
3374 |
3375 | /nanomatch@1.2.13:
3376 | resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
3377 | engines: {node: '>=0.10.0'}
3378 | dependencies:
3379 | arr-diff: 4.0.0
3380 | array-unique: 0.3.2
3381 | define-property: 2.0.2
3382 | extend-shallow: 3.0.2
3383 | fragment-cache: 0.2.1
3384 | is-windows: 1.0.2
3385 | kind-of: 6.0.3
3386 | object.pick: 1.3.0
3387 | regex-not: 1.0.2
3388 | snapdragon: 0.8.2
3389 | to-regex: 3.0.2
3390 | transitivePeerDependencies:
3391 | - supports-color
3392 | dev: true
3393 |
3394 | /natural-compare@1.4.0:
3395 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
3396 | dev: true
3397 |
3398 | /next@12.3.4(@babel/core@7.20.5)(react-dom@18.2.0)(react@18.2.0):
3399 | resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==}
3400 | engines: {node: '>=12.22.0'}
3401 | hasBin: true
3402 | peerDependencies:
3403 | fibers: '>= 3.1.0'
3404 | node-sass: ^6.0.0 || ^7.0.0
3405 | react: ^17.0.2 || ^18.0.0-0
3406 | react-dom: ^17.0.2 || ^18.0.0-0
3407 | sass: ^1.3.0
3408 | peerDependenciesMeta:
3409 | fibers:
3410 | optional: true
3411 | node-sass:
3412 | optional: true
3413 | sass:
3414 | optional: true
3415 | dependencies:
3416 | '@next/env': 12.3.4
3417 | '@swc/helpers': 0.4.11
3418 | caniuse-lite: 1.0.30001441
3419 | postcss: 8.4.14
3420 | react: 18.2.0
3421 | react-dom: 18.2.0(react@18.2.0)
3422 | styled-jsx: 5.0.7(@babel/core@7.20.5)(react@18.2.0)
3423 | use-sync-external-store: 1.2.0(react@18.2.0)
3424 | optionalDependencies:
3425 | '@next/swc-android-arm-eabi': 12.3.4
3426 | '@next/swc-android-arm64': 12.3.4
3427 | '@next/swc-darwin-arm64': 12.3.4
3428 | '@next/swc-darwin-x64': 12.3.4
3429 | '@next/swc-freebsd-x64': 12.3.4
3430 | '@next/swc-linux-arm-gnueabihf': 12.3.4
3431 | '@next/swc-linux-arm64-gnu': 12.3.4
3432 | '@next/swc-linux-arm64-musl': 12.3.4
3433 | '@next/swc-linux-x64-gnu': 12.3.4
3434 | '@next/swc-linux-x64-musl': 12.3.4
3435 | '@next/swc-win32-arm64-msvc': 12.3.4
3436 | '@next/swc-win32-ia32-msvc': 12.3.4
3437 | '@next/swc-win32-x64-msvc': 12.3.4
3438 | transitivePeerDependencies:
3439 | - '@babel/core'
3440 | - babel-plugin-macros
3441 | dev: true
3442 |
3443 | /node-int64@0.4.0:
3444 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
3445 | dev: true
3446 |
3447 | /node-releases@2.0.8:
3448 | resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==}
3449 | dev: true
3450 |
3451 | /normalize-path@3.0.0:
3452 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
3453 | engines: {node: '>=0.10.0'}
3454 | dev: true
3455 |
3456 | /npm-run-path@4.0.1:
3457 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
3458 | engines: {node: '>=8'}
3459 | dependencies:
3460 | path-key: 3.1.1
3461 | dev: true
3462 |
3463 | /nwsapi@2.2.2:
3464 | resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==}
3465 | dev: true
3466 |
3467 | /object-assign@4.1.1:
3468 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
3469 | engines: {node: '>=0.10.0'}
3470 | dev: true
3471 |
3472 | /object-copy@0.1.0:
3473 | resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
3474 | engines: {node: '>=0.10.0'}
3475 | dependencies:
3476 | copy-descriptor: 0.1.1
3477 | define-property: 0.2.5
3478 | kind-of: 3.2.2
3479 | dev: true
3480 |
3481 | /object-visit@1.0.1:
3482 | resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
3483 | engines: {node: '>=0.10.0'}
3484 | dependencies:
3485 | isobject: 3.0.1
3486 | dev: true
3487 |
3488 | /object.pick@1.3.0:
3489 | resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
3490 | engines: {node: '>=0.10.0'}
3491 | dependencies:
3492 | isobject: 3.0.1
3493 | dev: true
3494 |
3495 | /once@1.4.0:
3496 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
3497 | dependencies:
3498 | wrappy: 1.0.2
3499 | dev: true
3500 |
3501 | /onetime@5.1.2:
3502 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
3503 | engines: {node: '>=6'}
3504 | dependencies:
3505 | mimic-fn: 2.1.0
3506 | dev: true
3507 |
3508 | /optionator@0.8.3:
3509 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
3510 | engines: {node: '>= 0.8.0'}
3511 | dependencies:
3512 | deep-is: 0.1.4
3513 | fast-levenshtein: 2.0.6
3514 | levn: 0.3.0
3515 | prelude-ls: 1.1.2
3516 | type-check: 0.3.2
3517 | word-wrap: 1.2.3
3518 | dev: true
3519 |
3520 | /p-limit@2.3.0:
3521 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
3522 | engines: {node: '>=6'}
3523 | dependencies:
3524 | p-try: 2.2.0
3525 | dev: true
3526 |
3527 | /p-locate@4.1.0:
3528 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
3529 | engines: {node: '>=8'}
3530 | dependencies:
3531 | p-limit: 2.3.0
3532 | dev: true
3533 |
3534 | /p-try@2.2.0:
3535 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
3536 | engines: {node: '>=6'}
3537 | dev: true
3538 |
3539 | /parse-json@5.2.0:
3540 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
3541 | engines: {node: '>=8'}
3542 | dependencies:
3543 | '@babel/code-frame': 7.18.6
3544 | error-ex: 1.3.2
3545 | json-parse-even-better-errors: 2.3.1
3546 | lines-and-columns: 1.2.4
3547 | dev: true
3548 |
3549 | /parse5@6.0.1:
3550 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
3551 | dev: true
3552 |
3553 | /pascalcase@0.1.1:
3554 | resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
3555 | engines: {node: '>=0.10.0'}
3556 | dev: true
3557 |
3558 | /path-exists@4.0.0:
3559 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
3560 | engines: {node: '>=8'}
3561 | dev: true
3562 |
3563 | /path-is-absolute@1.0.1:
3564 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
3565 | engines: {node: '>=0.10.0'}
3566 | dev: true
3567 |
3568 | /path-key@3.1.1:
3569 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
3570 | engines: {node: '>=8'}
3571 | dev: true
3572 |
3573 | /path-parse@1.0.7:
3574 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
3575 | dev: true
3576 |
3577 | /path-type@4.0.0:
3578 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
3579 | engines: {node: '>=8'}
3580 | dev: true
3581 |
3582 | /picocolors@1.0.0:
3583 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
3584 | dev: true
3585 |
3586 | /picomatch@2.3.1:
3587 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
3588 | engines: {node: '>=8.6'}
3589 | dev: true
3590 |
3591 | /pirates@4.0.5:
3592 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
3593 | engines: {node: '>= 6'}
3594 | dev: true
3595 |
3596 | /pkg-dir@4.2.0:
3597 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
3598 | engines: {node: '>=8'}
3599 | dependencies:
3600 | find-up: 4.1.0
3601 | dev: true
3602 |
3603 | /posix-character-classes@0.1.1:
3604 | resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
3605 | engines: {node: '>=0.10.0'}
3606 | dev: true
3607 |
3608 | /postcss-load-config@3.1.4:
3609 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
3610 | engines: {node: '>= 10'}
3611 | peerDependencies:
3612 | postcss: '>=8.0.9'
3613 | ts-node: '>=9.0.0'
3614 | peerDependenciesMeta:
3615 | postcss:
3616 | optional: true
3617 | ts-node:
3618 | optional: true
3619 | dependencies:
3620 | lilconfig: 2.0.6
3621 | yaml: 1.10.2
3622 | dev: true
3623 |
3624 | /postcss@8.4.14:
3625 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
3626 | engines: {node: ^10 || ^12 || >=14}
3627 | dependencies:
3628 | nanoid: 3.3.4
3629 | picocolors: 1.0.0
3630 | source-map-js: 1.0.2
3631 | dev: true
3632 |
3633 | /prelude-ls@1.1.2:
3634 | resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
3635 | engines: {node: '>= 0.8.0'}
3636 | dev: true
3637 |
3638 | /pretty-format@22.4.3:
3639 | resolution: {integrity: sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==}
3640 | dependencies:
3641 | ansi-regex: 3.0.1
3642 | ansi-styles: 3.2.1
3643 | dev: true
3644 |
3645 | /pretty-format@24.9.0:
3646 | resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==}
3647 | engines: {node: '>= 6'}
3648 | dependencies:
3649 | '@jest/types': 24.9.0
3650 | ansi-regex: 4.1.1
3651 | ansi-styles: 3.2.1
3652 | react-is: 16.13.1
3653 | dev: true
3654 |
3655 | /pretty-format@26.6.2:
3656 | resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
3657 | engines: {node: '>= 10'}
3658 | dependencies:
3659 | '@jest/types': 26.6.2
3660 | ansi-regex: 5.0.1
3661 | ansi-styles: 4.3.0
3662 | react-is: 17.0.2
3663 | dev: true
3664 |
3665 | /pretty-format@27.5.1:
3666 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
3667 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
3668 | dependencies:
3669 | ansi-regex: 5.0.1
3670 | ansi-styles: 5.2.0
3671 | react-is: 17.0.2
3672 | dev: true
3673 |
3674 | /prompts@2.4.2:
3675 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
3676 | engines: {node: '>= 6'}
3677 | dependencies:
3678 | kleur: 3.0.3
3679 | sisteransi: 1.0.5
3680 | dev: true
3681 |
3682 | /psl@1.9.0:
3683 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
3684 | dev: true
3685 |
3686 | /punycode@2.1.1:
3687 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
3688 | engines: {node: '>=6'}
3689 | dev: true
3690 |
3691 | /querystringify@2.2.0:
3692 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
3693 | dev: true
3694 |
3695 | /queue-microtask@1.2.3:
3696 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
3697 | dev: true
3698 |
3699 | /react-dom@18.2.0(react@18.2.0):
3700 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
3701 | peerDependencies:
3702 | react: ^18.2.0
3703 | dependencies:
3704 | loose-envify: 1.4.0
3705 | react: 18.2.0
3706 | scheduler: 0.23.0
3707 | dev: true
3708 |
3709 | /react-is@16.13.1:
3710 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
3711 | dev: true
3712 |
3713 | /react-is@17.0.2:
3714 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
3715 | dev: true
3716 |
3717 | /react@18.2.0:
3718 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
3719 | engines: {node: '>=0.10.0'}
3720 | dependencies:
3721 | loose-envify: 1.4.0
3722 | dev: true
3723 |
3724 | /readdirp@3.6.0:
3725 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
3726 | engines: {node: '>=8.10.0'}
3727 | dependencies:
3728 | picomatch: 2.3.1
3729 | dev: true
3730 |
3731 | /regex-not@1.0.2:
3732 | resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
3733 | engines: {node: '>=0.10.0'}
3734 | dependencies:
3735 | extend-shallow: 3.0.2
3736 | safe-regex: 1.1.0
3737 | dev: true
3738 |
3739 | /repeat-element@1.1.4:
3740 | resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
3741 | engines: {node: '>=0.10.0'}
3742 | dev: true
3743 |
3744 | /repeat-string@1.6.1:
3745 | resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
3746 | engines: {node: '>=0.10'}
3747 | dev: true
3748 |
3749 | /require-directory@2.1.1:
3750 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
3751 | engines: {node: '>=0.10.0'}
3752 | dev: true
3753 |
3754 | /requires-port@1.0.0:
3755 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
3756 | dev: true
3757 |
3758 | /resolve-cwd@3.0.0:
3759 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
3760 | engines: {node: '>=8'}
3761 | dependencies:
3762 | resolve-from: 5.0.0
3763 | dev: true
3764 |
3765 | /resolve-from@5.0.0:
3766 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
3767 | engines: {node: '>=8'}
3768 | dev: true
3769 |
3770 | /resolve-url@0.2.1:
3771 | resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
3772 | deprecated: https://github.com/lydell/resolve-url#deprecated
3773 | dev: true
3774 |
3775 | /resolve.exports@1.1.0:
3776 | resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==}
3777 | engines: {node: '>=10'}
3778 | dev: true
3779 |
3780 | /resolve@1.22.1:
3781 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
3782 | hasBin: true
3783 | dependencies:
3784 | is-core-module: 2.11.0
3785 | path-parse: 1.0.7
3786 | supports-preserve-symlinks-flag: 1.0.0
3787 | dev: true
3788 |
3789 | /ret@0.1.15:
3790 | resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
3791 | engines: {node: '>=0.12'}
3792 | dev: true
3793 |
3794 | /reusify@1.0.4:
3795 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
3796 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
3797 | dev: true
3798 |
3799 | /rimraf@3.0.2:
3800 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
3801 | hasBin: true
3802 | dependencies:
3803 | glob: 7.2.3
3804 | dev: true
3805 |
3806 | /rollup@3.7.5:
3807 | resolution: {integrity: sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==}
3808 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
3809 | hasBin: true
3810 | optionalDependencies:
3811 | fsevents: 2.3.2
3812 | dev: true
3813 |
3814 | /run-parallel@1.2.0:
3815 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
3816 | dependencies:
3817 | queue-microtask: 1.2.3
3818 | dev: true
3819 |
3820 | /safe-regex@1.1.0:
3821 | resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
3822 | dependencies:
3823 | ret: 0.1.15
3824 | dev: true
3825 |
3826 | /safer-buffer@2.1.2:
3827 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
3828 | dev: true
3829 |
3830 | /saxes@5.0.1:
3831 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
3832 | engines: {node: '>=10'}
3833 | dependencies:
3834 | xmlchars: 2.2.0
3835 | dev: true
3836 |
3837 | /scheduler@0.23.0:
3838 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
3839 | dependencies:
3840 | loose-envify: 1.4.0
3841 | dev: true
3842 |
3843 | /semver@6.3.0:
3844 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
3845 | hasBin: true
3846 | dev: true
3847 |
3848 | /semver@7.3.8:
3849 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
3850 | engines: {node: '>=10'}
3851 | hasBin: true
3852 | dependencies:
3853 | lru-cache: 6.0.0
3854 | dev: true
3855 |
3856 | /set-value@2.0.1:
3857 | resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
3858 | engines: {node: '>=0.10.0'}
3859 | dependencies:
3860 | extend-shallow: 2.0.1
3861 | is-extendable: 0.1.1
3862 | is-plain-object: 2.0.4
3863 | split-string: 3.1.0
3864 | dev: true
3865 |
3866 | /shebang-command@2.0.0:
3867 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
3868 | engines: {node: '>=8'}
3869 | dependencies:
3870 | shebang-regex: 3.0.0
3871 | dev: true
3872 |
3873 | /shebang-regex@3.0.0:
3874 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
3875 | engines: {node: '>=8'}
3876 | dev: true
3877 |
3878 | /signal-exit@3.0.7:
3879 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
3880 | dev: true
3881 |
3882 | /sisteransi@1.0.5:
3883 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
3884 | dev: true
3885 |
3886 | /slash@2.0.0:
3887 | resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
3888 | engines: {node: '>=6'}
3889 | dev: true
3890 |
3891 | /slash@3.0.0:
3892 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
3893 | engines: {node: '>=8'}
3894 | dev: true
3895 |
3896 | /snapdragon-node@2.1.1:
3897 | resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
3898 | engines: {node: '>=0.10.0'}
3899 | dependencies:
3900 | define-property: 1.0.0
3901 | isobject: 3.0.1
3902 | snapdragon-util: 3.0.1
3903 | dev: true
3904 |
3905 | /snapdragon-util@3.0.1:
3906 | resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
3907 | engines: {node: '>=0.10.0'}
3908 | dependencies:
3909 | kind-of: 3.2.2
3910 | dev: true
3911 |
3912 | /snapdragon@0.8.2:
3913 | resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
3914 | engines: {node: '>=0.10.0'}
3915 | dependencies:
3916 | base: 0.11.2
3917 | debug: 2.6.9
3918 | define-property: 0.2.5
3919 | extend-shallow: 2.0.1
3920 | map-cache: 0.2.2
3921 | source-map: 0.5.7
3922 | source-map-resolve: 0.5.3
3923 | use: 3.1.1
3924 | transitivePeerDependencies:
3925 | - supports-color
3926 | dev: true
3927 |
3928 | /source-map-js@1.0.2:
3929 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
3930 | engines: {node: '>=0.10.0'}
3931 | dev: true
3932 |
3933 | /source-map-resolve@0.5.3:
3934 | resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
3935 | deprecated: See https://github.com/lydell/source-map-resolve#deprecated
3936 | dependencies:
3937 | atob: 2.1.2
3938 | decode-uri-component: 0.2.2
3939 | resolve-url: 0.2.1
3940 | source-map-url: 0.4.1
3941 | urix: 0.1.0
3942 | dev: true
3943 |
3944 | /source-map-support@0.5.21:
3945 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
3946 | dependencies:
3947 | buffer-from: 1.1.2
3948 | source-map: 0.6.1
3949 | dev: true
3950 |
3951 | /source-map-url@0.4.1:
3952 | resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
3953 | deprecated: See https://github.com/lydell/source-map-url#deprecated
3954 | dev: true
3955 |
3956 | /source-map@0.5.7:
3957 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
3958 | engines: {node: '>=0.10.0'}
3959 | dev: true
3960 |
3961 | /source-map@0.6.1:
3962 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
3963 | engines: {node: '>=0.10.0'}
3964 | dev: true
3965 |
3966 | /source-map@0.7.4:
3967 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
3968 | engines: {node: '>= 8'}
3969 | dev: true
3970 |
3971 | /source-map@0.8.0-beta.0:
3972 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
3973 | engines: {node: '>= 8'}
3974 | dependencies:
3975 | whatwg-url: 7.1.0
3976 | dev: true
3977 |
3978 | /split-string@3.1.0:
3979 | resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
3980 | engines: {node: '>=0.10.0'}
3981 | dependencies:
3982 | extend-shallow: 3.0.2
3983 | dev: true
3984 |
3985 | /sprintf-js@1.0.3:
3986 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
3987 | dev: true
3988 |
3989 | /stack-utils@1.0.5:
3990 | resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==}
3991 | engines: {node: '>=8'}
3992 | dependencies:
3993 | escape-string-regexp: 2.0.0
3994 | dev: true
3995 |
3996 | /stack-utils@2.0.6:
3997 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
3998 | engines: {node: '>=10'}
3999 | dependencies:
4000 | escape-string-regexp: 2.0.0
4001 | dev: true
4002 |
4003 | /static-extend@0.1.2:
4004 | resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
4005 | engines: {node: '>=0.10.0'}
4006 | dependencies:
4007 | define-property: 0.2.5
4008 | object-copy: 0.1.0
4009 | dev: true
4010 |
4011 | /string-length@4.0.2:
4012 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
4013 | engines: {node: '>=10'}
4014 | dependencies:
4015 | char-regex: 1.0.2
4016 | strip-ansi: 6.0.1
4017 | dev: true
4018 |
4019 | /string-width@4.2.3:
4020 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
4021 | engines: {node: '>=8'}
4022 | dependencies:
4023 | emoji-regex: 8.0.0
4024 | is-fullwidth-code-point: 3.0.0
4025 | strip-ansi: 6.0.1
4026 | dev: true
4027 |
4028 | /strip-ansi@6.0.1:
4029 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
4030 | engines: {node: '>=8'}
4031 | dependencies:
4032 | ansi-regex: 5.0.1
4033 | dev: true
4034 |
4035 | /strip-bom@4.0.0:
4036 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
4037 | engines: {node: '>=8'}
4038 | dev: true
4039 |
4040 | /strip-final-newline@2.0.0:
4041 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
4042 | engines: {node: '>=6'}
4043 | dev: true
4044 |
4045 | /strip-json-comments@3.1.1:
4046 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
4047 | engines: {node: '>=8'}
4048 | dev: true
4049 |
4050 | /styled-jsx@5.0.7(@babel/core@7.20.5)(react@18.2.0):
4051 | resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==}
4052 | engines: {node: '>= 12.0.0'}
4053 | peerDependencies:
4054 | '@babel/core': '*'
4055 | babel-plugin-macros: '*'
4056 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
4057 | peerDependenciesMeta:
4058 | '@babel/core':
4059 | optional: true
4060 | babel-plugin-macros:
4061 | optional: true
4062 | dependencies:
4063 | '@babel/core': 7.20.5
4064 | react: 18.2.0
4065 | dev: true
4066 |
4067 | /sucrase@3.29.0:
4068 | resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==}
4069 | engines: {node: '>=8'}
4070 | hasBin: true
4071 | dependencies:
4072 | commander: 4.1.1
4073 | glob: 7.1.6
4074 | lines-and-columns: 1.2.4
4075 | mz: 2.7.0
4076 | pirates: 4.0.5
4077 | ts-interface-checker: 0.1.13
4078 | dev: true
4079 |
4080 | /supports-color@5.5.0:
4081 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
4082 | engines: {node: '>=4'}
4083 | dependencies:
4084 | has-flag: 3.0.0
4085 | dev: true
4086 |
4087 | /supports-color@7.2.0:
4088 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
4089 | engines: {node: '>=8'}
4090 | dependencies:
4091 | has-flag: 4.0.0
4092 | dev: true
4093 |
4094 | /supports-color@8.1.1:
4095 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
4096 | engines: {node: '>=10'}
4097 | dependencies:
4098 | has-flag: 4.0.0
4099 | dev: true
4100 |
4101 | /supports-hyperlinks@2.3.0:
4102 | resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
4103 | engines: {node: '>=8'}
4104 | dependencies:
4105 | has-flag: 4.0.0
4106 | supports-color: 7.2.0
4107 | dev: true
4108 |
4109 | /supports-preserve-symlinks-flag@1.0.0:
4110 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
4111 | engines: {node: '>= 0.4'}
4112 | dev: true
4113 |
4114 | /symbol-tree@3.2.4:
4115 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
4116 | dev: true
4117 |
4118 | /terminal-link@2.1.1:
4119 | resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
4120 | engines: {node: '>=8'}
4121 | dependencies:
4122 | ansi-escapes: 4.3.2
4123 | supports-hyperlinks: 2.3.0
4124 | dev: true
4125 |
4126 | /test-exclude@6.0.0:
4127 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
4128 | engines: {node: '>=8'}
4129 | dependencies:
4130 | '@istanbuljs/schema': 0.1.3
4131 | glob: 7.2.3
4132 | minimatch: 3.1.2
4133 | dev: true
4134 |
4135 | /thenify-all@1.6.0:
4136 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
4137 | engines: {node: '>=0.8'}
4138 | dependencies:
4139 | thenify: 3.3.1
4140 | dev: true
4141 |
4142 | /thenify@3.3.1:
4143 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
4144 | dependencies:
4145 | any-promise: 1.3.0
4146 | dev: true
4147 |
4148 | /throat@6.0.1:
4149 | resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==}
4150 | dev: true
4151 |
4152 | /tmpl@1.0.5:
4153 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
4154 | dev: true
4155 |
4156 | /to-fast-properties@2.0.0:
4157 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
4158 | engines: {node: '>=4'}
4159 | dev: true
4160 |
4161 | /to-object-path@0.3.0:
4162 | resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
4163 | engines: {node: '>=0.10.0'}
4164 | dependencies:
4165 | kind-of: 3.2.2
4166 | dev: true
4167 |
4168 | /to-regex-range@2.1.1:
4169 | resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
4170 | engines: {node: '>=0.10.0'}
4171 | dependencies:
4172 | is-number: 3.0.0
4173 | repeat-string: 1.6.1
4174 | dev: true
4175 |
4176 | /to-regex-range@5.0.1:
4177 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
4178 | engines: {node: '>=8.0'}
4179 | dependencies:
4180 | is-number: 7.0.0
4181 | dev: true
4182 |
4183 | /to-regex@3.0.2:
4184 | resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
4185 | engines: {node: '>=0.10.0'}
4186 | dependencies:
4187 | define-property: 2.0.2
4188 | extend-shallow: 3.0.2
4189 | regex-not: 1.0.2
4190 | safe-regex: 1.1.0
4191 | dev: true
4192 |
4193 | /tough-cookie@4.1.2:
4194 | resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==}
4195 | engines: {node: '>=6'}
4196 | dependencies:
4197 | psl: 1.9.0
4198 | punycode: 2.1.1
4199 | universalify: 0.2.0
4200 | url-parse: 1.5.10
4201 | dev: true
4202 |
4203 | /tr46@1.0.1:
4204 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
4205 | dependencies:
4206 | punycode: 2.1.1
4207 | dev: true
4208 |
4209 | /tr46@2.1.0:
4210 | resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==}
4211 | engines: {node: '>=8'}
4212 | dependencies:
4213 | punycode: 2.1.1
4214 | dev: true
4215 |
4216 | /tree-kill@1.2.2:
4217 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
4218 | hasBin: true
4219 | dev: true
4220 |
4221 | /ts-interface-checker@0.1.13:
4222 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
4223 | dev: true
4224 |
4225 | /tslib@2.4.1:
4226 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
4227 | dev: true
4228 |
4229 | /tsup@6.5.0(@swc/core@1.3.24)(typescript@4.9.4):
4230 | resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==}
4231 | engines: {node: '>=14'}
4232 | hasBin: true
4233 | peerDependencies:
4234 | '@swc/core': ^1
4235 | postcss: ^8.4.12
4236 | typescript: ^4.1.0
4237 | peerDependenciesMeta:
4238 | '@swc/core':
4239 | optional: true
4240 | postcss:
4241 | optional: true
4242 | typescript:
4243 | optional: true
4244 | dependencies:
4245 | '@swc/core': 1.3.24
4246 | bundle-require: 3.1.2(esbuild@0.15.18)
4247 | cac: 6.7.14
4248 | chokidar: 3.5.3
4249 | debug: 4.3.4
4250 | esbuild: 0.15.18
4251 | execa: 5.1.1
4252 | globby: 11.1.0
4253 | joycon: 3.1.1
4254 | postcss-load-config: 3.1.4
4255 | resolve-from: 5.0.0
4256 | rollup: 3.7.5
4257 | source-map: 0.8.0-beta.0
4258 | sucrase: 3.29.0
4259 | tree-kill: 1.2.2
4260 | typescript: 4.9.4
4261 | transitivePeerDependencies:
4262 | - supports-color
4263 | - ts-node
4264 | dev: true
4265 |
4266 | /type-check@0.3.2:
4267 | resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
4268 | engines: {node: '>= 0.8.0'}
4269 | dependencies:
4270 | prelude-ls: 1.1.2
4271 | dev: true
4272 |
4273 | /type-detect@4.0.8:
4274 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
4275 | engines: {node: '>=4'}
4276 | dev: true
4277 |
4278 | /type-fest@0.21.3:
4279 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
4280 | engines: {node: '>=10'}
4281 | dev: true
4282 |
4283 | /typedarray-to-buffer@3.1.5:
4284 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
4285 | dependencies:
4286 | is-typedarray: 1.0.0
4287 | dev: true
4288 |
4289 | /typescript@4.9.4:
4290 | resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
4291 | engines: {node: '>=4.2.0'}
4292 | hasBin: true
4293 | dev: true
4294 |
4295 | /union-value@1.0.1:
4296 | resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
4297 | engines: {node: '>=0.10.0'}
4298 | dependencies:
4299 | arr-union: 3.1.0
4300 | get-value: 2.0.6
4301 | is-extendable: 0.1.1
4302 | set-value: 2.0.1
4303 | dev: true
4304 |
4305 | /universalify@0.2.0:
4306 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
4307 | engines: {node: '>= 4.0.0'}
4308 | dev: true
4309 |
4310 | /unset-value@1.0.0:
4311 | resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
4312 | engines: {node: '>=0.10.0'}
4313 | dependencies:
4314 | has-value: 0.3.1
4315 | isobject: 3.0.1
4316 | dev: true
4317 |
4318 | /update-browserslist-db@1.0.10(browserslist@4.21.4):
4319 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==}
4320 | hasBin: true
4321 | peerDependencies:
4322 | browserslist: '>= 4.21.0'
4323 | dependencies:
4324 | browserslist: 4.21.4
4325 | escalade: 3.1.1
4326 | picocolors: 1.0.0
4327 | dev: true
4328 |
4329 | /urix@0.1.0:
4330 | resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
4331 | deprecated: Please see https://github.com/lydell/urix#deprecated
4332 | dev: true
4333 |
4334 | /url-parse@1.5.10:
4335 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
4336 | dependencies:
4337 | querystringify: 2.2.0
4338 | requires-port: 1.0.0
4339 | dev: true
4340 |
4341 | /use-sync-external-store@1.2.0(react@18.2.0):
4342 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
4343 | peerDependencies:
4344 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
4345 | dependencies:
4346 | react: 18.2.0
4347 | dev: true
4348 |
4349 | /use@3.1.1:
4350 | resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
4351 | engines: {node: '>=0.10.0'}
4352 | dev: true
4353 |
4354 | /v8-to-istanbul@8.1.1:
4355 | resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==}
4356 | engines: {node: '>=10.12.0'}
4357 | dependencies:
4358 | '@types/istanbul-lib-coverage': 2.0.4
4359 | convert-source-map: 1.9.0
4360 | source-map: 0.7.4
4361 | dev: true
4362 |
4363 | /w3c-hr-time@1.0.2:
4364 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
4365 | deprecated: Use your platform's native performance.now() and performance.timeOrigin.
4366 | dependencies:
4367 | browser-process-hrtime: 1.0.0
4368 | dev: true
4369 |
4370 | /w3c-xmlserializer@2.0.0:
4371 | resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==}
4372 | engines: {node: '>=10'}
4373 | dependencies:
4374 | xml-name-validator: 3.0.0
4375 | dev: true
4376 |
4377 | /walker@1.0.8:
4378 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
4379 | dependencies:
4380 | makeerror: 1.0.12
4381 | dev: true
4382 |
4383 | /webidl-conversions@4.0.2:
4384 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
4385 | dev: true
4386 |
4387 | /webidl-conversions@5.0.0:
4388 | resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
4389 | engines: {node: '>=8'}
4390 | dev: true
4391 |
4392 | /webidl-conversions@6.1.0:
4393 | resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==}
4394 | engines: {node: '>=10.4'}
4395 | dev: true
4396 |
4397 | /whatwg-encoding@1.0.5:
4398 | resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==}
4399 | dependencies:
4400 | iconv-lite: 0.4.24
4401 | dev: true
4402 |
4403 | /whatwg-mimetype@2.3.0:
4404 | resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
4405 | dev: true
4406 |
4407 | /whatwg-url@7.1.0:
4408 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
4409 | dependencies:
4410 | lodash.sortby: 4.7.0
4411 | tr46: 1.0.1
4412 | webidl-conversions: 4.0.2
4413 | dev: true
4414 |
4415 | /whatwg-url@8.7.0:
4416 | resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==}
4417 | engines: {node: '>=10'}
4418 | dependencies:
4419 | lodash: 4.17.21
4420 | tr46: 2.1.0
4421 | webidl-conversions: 6.1.0
4422 | dev: true
4423 |
4424 | /which@2.0.2:
4425 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
4426 | engines: {node: '>= 8'}
4427 | hasBin: true
4428 | dependencies:
4429 | isexe: 2.0.0
4430 | dev: true
4431 |
4432 | /word-wrap@1.2.3:
4433 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
4434 | engines: {node: '>=0.10.0'}
4435 | dev: true
4436 |
4437 | /wrap-ansi@7.0.0:
4438 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
4439 | engines: {node: '>=10'}
4440 | dependencies:
4441 | ansi-styles: 4.3.0
4442 | string-width: 4.2.3
4443 | strip-ansi: 6.0.1
4444 | dev: true
4445 |
4446 | /wrappy@1.0.2:
4447 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
4448 | dev: true
4449 |
4450 | /write-file-atomic@3.0.3:
4451 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
4452 | dependencies:
4453 | imurmurhash: 0.1.4
4454 | is-typedarray: 1.0.0
4455 | signal-exit: 3.0.7
4456 | typedarray-to-buffer: 3.1.5
4457 | dev: true
4458 |
4459 | /ws@7.5.9:
4460 | resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
4461 | engines: {node: '>=8.3.0'}
4462 | peerDependencies:
4463 | bufferutil: ^4.0.1
4464 | utf-8-validate: ^5.0.2
4465 | peerDependenciesMeta:
4466 | bufferutil:
4467 | optional: true
4468 | utf-8-validate:
4469 | optional: true
4470 | dev: true
4471 |
4472 | /xml-name-validator@3.0.0:
4473 | resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
4474 | dev: true
4475 |
4476 | /xmlchars@2.2.0:
4477 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
4478 | dev: true
4479 |
4480 | /y18n@5.0.8:
4481 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
4482 | engines: {node: '>=10'}
4483 | dev: true
4484 |
4485 | /yallist@4.0.0:
4486 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
4487 | dev: true
4488 |
4489 | /yaml@1.10.2:
4490 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
4491 | engines: {node: '>= 6'}
4492 | dev: true
4493 |
4494 | /yargs-parser@20.2.9:
4495 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
4496 | engines: {node: '>=10'}
4497 | dev: true
4498 |
4499 | /yargs@16.2.0:
4500 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
4501 | engines: {node: '>=10'}
4502 | dependencies:
4503 | cliui: 7.0.4
4504 | escalade: 3.1.1
4505 | get-caller-file: 2.0.5
4506 | require-directory: 2.1.1
4507 | string-width: 4.2.3
4508 | y18n: 5.0.8
4509 | yargs-parser: 20.2.9
4510 | dev: true
4511 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2019",
4 | "lib": ["ES2020"],
5 | "module": "ES2020",
6 | "moduleResolution": "node",
7 | "outDir": "dist",
8 | "rootDir": "lib",
9 | "sourceMap": true,
10 | "declaration": true,
11 | "strict": true,
12 | "noImplicitAny": true,
13 | "allowSyntheticDefaultImports": true,
14 | "isolatedModules": true,
15 | "skipLibCheck": true
16 | },
17 | "include": ["lib"],
18 | "exclude": ["node_modules", "lib/**/*.spec.ts"]
19 | }
20 |
--------------------------------------------------------------------------------
/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig, Options } from "tsup";
2 |
3 | const shared: Options = {
4 | entry: ["lib/index.ts"],
5 | clean: true,
6 | };
7 |
8 | export default defineConfig([
9 | {
10 | ...shared,
11 | format: "esm",
12 | target: "node16",
13 | dts: true,
14 | },
15 | {
16 | ...shared,
17 | format: "cjs",
18 | target: "node14",
19 | },
20 | ]);
21 |
--------------------------------------------------------------------------------