├── .github
├── dependabot.yml
└── workflows
│ ├── codelimit.yml
│ ├── main.yml
│ └── stale.yml
├── .gitignore
├── README.md
├── serverless
├── .env.dev
├── api
│ └── capture.js
├── package.json
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── config.js
│ ├── helpers.js
│ └── helpers.test.js
├── vercel.json
└── yarn.lock
├── standalone
├── .dockerignore
├── .env.example
├── Dockerfile
├── package.json
├── src
│ ├── config.js
│ ├── helpers.js
│ ├── helpers.test.js
│ └── index.js
├── test
│ └── loadtest.sh
└── yarn.lock
└── static
├── logo_256x256.png
└── screenshot.png
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: npm
4 | directory: "/serverless"
5 | schedule:
6 | interval: weekly
7 | time: "04:00"
8 | open-pull-requests-limit: 10
9 | - package-ecosystem: npm
10 | directory: "/standalone"
11 | schedule:
12 | interval: weekly
13 | time: "04:00"
14 | open-pull-requests-limit: 10
15 |
--------------------------------------------------------------------------------
/.github/workflows/codelimit.yml:
--------------------------------------------------------------------------------
1 | name: 'codelimit'
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 | branches:
9 | - main
10 |
11 | jobs:
12 | ci:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - name: 'Checkout sources'
16 | uses: actions/checkout@v4
17 |
18 | - name: 'Run CodeLimit'
19 | uses: getcodelimit/codelimit-action@v1
20 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: 'main'
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 | banches:
9 | - main
10 |
11 | jobs:
12 | serverless:
13 | runs-on: ubuntu-latest
14 | env:
15 | CI: true
16 | defaults:
17 | run:
18 | working-directory: serverless
19 | steps:
20 | - name: 'Checkout sources'
21 | uses: actions/checkout@v4
22 |
23 | - name: 'Setup NodeJS'
24 | uses: actions/setup-node@v3
25 | with:
26 | node-version: '18.x'
27 |
28 | - name: 'Install dependencies'
29 | run: yarn install
30 |
31 | - name: 'Run tests'
32 | run: yarn test
33 |
34 | standalone:
35 | runs-on: ubuntu-latest
36 | env:
37 | CI: true
38 | defaults:
39 | run:
40 | working-directory: standalone
41 | steps:
42 | - name: 'Checkout repository'
43 | uses: actions/checkout@v4
44 |
45 | - name: 'Setup NodeJS'
46 | uses: actions/setup-node@v3
47 | with:
48 | node-version: '18.x'
49 |
50 | - name: 'Install dependencies'
51 | run: yarn install
52 |
53 | - name: 'Run tests'
54 | run: yarn test
55 |
56 | - name: 'Set up QEMU'
57 | if: ${{ github.actor != 'dependabot[bot]' &&
58 | github.event_name == 'push' }}
59 | uses: docker/setup-qemu-action@v3
60 |
61 | - name: 'Set up Docker Buildx'
62 | if: ${{ github.actor != 'dependabot[bot]' &&
63 | github.event_name == 'push' }}
64 | uses: docker/setup-buildx-action@v3
65 |
66 | - name: 'Login to DockerHub'
67 | if: ${{ github.actor != 'dependabot[bot]' &&
68 | github.event_name == 'push' }}
69 | uses: docker/login-action@v3
70 | with:
71 | username: ${{ secrets.DOCKERHUB_USERNAME }}
72 | password: ${{ secrets.DOCKERHUB_TOKEN }}
73 |
74 | - name: 'Build and push Docker image'
75 | if: ${{ github.actor != 'dependabot[bot]' &&
76 | github.event_name == 'push' }}
77 | uses: docker/build-push-action@v6
78 | with:
79 | platforms: linux/amd64,linux/arm64
80 | context: ./standalone/
81 | file: ./standalone/Dockerfile
82 | push: true
83 | tags: robvanderleek/capture-website-api:latest
84 |
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | name: 'Close stale issues and PRs'
2 | on:
3 | schedule:
4 | - cron: '30 1 * * *'
5 |
6 | jobs:
7 | stale:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/stale@v9
11 | with:
12 | stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
13 | days-before-stale: 30
14 | days-before-close: 7
15 | exempt-issue-labels: 'pinned,security'
16 | stale-issue-label: 'wontfix'
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .env
3 | **/node_modules/
4 | **/test/*.png
5 |
6 | # Local Netlify folder
7 | serverless/.netlify
8 | .vercel
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Capture website API
2 |
3 |
4 |
5 | [](https://www.freepik.com/icon/capture_6276243)
6 |
7 |
8 |
9 |
10 |
11 | 
12 |
13 |
14 |
15 |
16 |
17 | [](https://github.com/robvanderleek/capture-website-api/actions)
18 | [](https://github.com/robvanderleek/capture-website-api/blob/_codelimit_reports/add-codelimit/codelimit.md)
19 | [](https://dependabot.com/)
20 | [](https://hub.docker.com/r/robvanderleek/capture-website-api/)
21 | 
22 |
23 |
24 |
25 | Capture screenshots of websites as a (host it yourself) API. This project is a
26 | wrapper around this library: https://github.com/sindresorhus/capture-website
27 |
28 | # Installation
29 |
30 | ## Docker
31 |
32 | ### Run pre-built container from Docker Hub
33 |
34 | 1. Pull the image:
35 | ```
36 | docker pull robvanderleek/capture-website-api
37 | ```
38 |
39 | 2. Start the container:
40 | ```
41 | docker run -it -p 8080:8080 robvanderleek/capture-website-api
42 | ```
43 |
44 | 3. Make screenshot test request:
45 | ```
46 | curl 'localhost:8080/capture?url=https://news.ycombinator.com/' -o screenshot.png
47 | ```
48 |
49 | ### Build the docker image and run it
50 |
51 | 1. Clone the repo:
52 | ```shell
53 | git clone git@github.com:robvanderleek/capture-website-api.git
54 | ```
55 |
56 | 2. Go to the `standalone` directory:
57 | ```shell
58 | cd capture-website-api/standalone
59 | ```
60 |
61 | 3. Build the image:
62 | ```shell
63 | docker build -t cwa .
64 | ```
65 |
66 | 4. Start the container:
67 | ```shell
68 | docker run -it -p 8080:8080 cwa
69 | ```
70 |
71 | 5. Do screenshot test request:
72 | ```shell
73 | curl 'localhost:8080/capture?url=https://www.youtube.com' -o screenshot.png
74 | ```
75 |
76 | ## Yarn
77 |
78 | Run in a terminal:
79 |
80 | 1. Clone the repo:
81 | ```shell
82 | git clone git@github.com:robvanderleek/capture-website-api.git
83 | ```
84 |
85 | 2. Go to the `standalone` directory:
86 | ```shell
87 | cd capture-website-api/standalone
88 | ```
89 |
90 | 3. Install dependencies:
91 | ```shell
92 | yarn
93 | ```
94 |
95 | 4. Start the server:
96 | ```shell
97 | yarn start
98 | ```
99 |
100 | 5. Do screenshot test request:
101 | ```shell
102 | curl 'localhost:8080/capture?url=https://www.reddit.com' -o screenshot.png
103 | ```
104 |
105 | ## Vercel
106 |
107 | Deploy and run on Vercel:
108 |
109 | 1. Clone the repo:
110 | ```
111 | git clone git@github.com:robvanderleek/capture-website-api.git && cd capture-website-api/serverless
112 | ```
113 |
114 | 2. Deploy to Vercel:
115 | ```shell
116 | vercel deploy
117 | ```
118 |
119 | 3. Get site URL:
120 | ```shell
121 | vercel ls
122 | ```
123 |
124 | 7. Make screenshot test request:
125 | ```
126 | curl "${SITE_URL}/api/capture?url=https://www.linkedin.com" -o screenshot.png
127 | ```
128 |
129 | # Usage
130 |
131 | Call the `/capture` endpoint and pass the site URL using the query parameters `url`:
132 | ```shell
133 | curl 'https://capture-website-api.vercel.app/api/capture?url=http://gmail.com' -o screenshot.png
134 | ```
135 | Simple as that.
136 |
137 | # Configuration
138 |
139 | ## Application options
140 |
141 | Application configuration options can be set as environment veriables or in
142 | a `.env` file in the root folder. There's an example `.env` file in the codebase: [`.env.example`](https://github.com/robvanderleek/capture-website-api/blob/main/.env.example)
143 |
144 | Supported options are:
145 |
146 | | Name | Descrition | Default |
147 | |---|---|---|
148 | | TIMEOUT | Timeout in seconds for loading a web page | 20 |
149 | | CONCURRENCY | Number of captures that run in parallel, more memory allows more captures to run in parallel | 2 |
150 | | MAX_QUEUE_LENGTH | Requests that can't be handled directly are queued until the queue is full | 6 |
151 | | SHOW_RESULTS | Enable web endpoint to show latest capture | false |
152 | | SECRET | Secret string to prevent undesired usage on public endpoints | "" |
153 |
154 | ## Capturing options
155 |
156 | Most of the configuration options from the wrapped `capture-website` library are supported using query parameters.
157 | For example, to capture a site with a 650x350 viewport, no default background and animations disabled use:
158 | ```
159 | curl 'https://capture-website-api.vercel.app/api/capture?url=http://amazon.com&width=650&height=350&scaleFactor=1&defaultBackground=false&disableAnimations=true&wait_before_screenshot_ms=300' -o screenshot.png
160 | ```
161 |
162 | See https://github.com/sindresorhus/capture-website for a full list of options.
163 |
164 | ### Capture Delay
165 |
166 | You may require to wait for async requests or animations to finish before capturing the screenshot. There are two ways of doing this, both specified in the query parameters:
167 |
168 | 1. `wait_before_screenshot_ms` (in ms, defaults to `300`) will wait before capturing a screenshot.
169 | 2. For standalone: `capture-website` library's [`delay`](https://github.com/sindresorhus/capture-website#delay) (in seconds)
170 |
171 | ## Use plain Puppeteer
172 |
173 | Sometimes the `capture-website` library has problems capturing sites. You can
174 | try to capture these sites with plain Puppeteer by supplying the query
175 | parameter `plainPuppeteer=true`
176 |
177 | ## Environment variables
178 |
179 | This app looks at two environment variables:
180 |
181 | * `SHOW_RESULTS`: if `true` the latest capture result can be viewed in the
182 | browser by browsing the base url
183 | * `SECRET`: when set all capture requests need to contain a query parameter
184 | `secret` whose value matches the value of this environment variable
185 |
186 | # Development
187 |
188 | To run the serverless version locally, execute `vercel dev` in the root folder
189 | of the repository.
190 |
191 | # Contributing
192 |
193 | If you have suggestions for improvements, or want to report a bug, [open an
194 | issue](https://github.com/robvanderleek/capture-website-api/issues)!
195 |
196 | # License
197 |
198 | [ISC](LICENSE) © 2019 Rob van der Leek
199 | (https://twitter.com/robvanderleek)
200 |
--------------------------------------------------------------------------------
/serverless/.env.dev:
--------------------------------------------------------------------------------
1 | CHROME_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
2 |
--------------------------------------------------------------------------------
/serverless/api/capture.js:
--------------------------------------------------------------------------------
1 | const {allowedRequest, doCaptureWork} = require('../src/helpers.js');
2 |
3 | const handler = async function (request, response) {
4 | if (!allowedRequest(request.query)) {
5 | response.status(403).json({message: 'Go away please'})
6 | }
7 | const result = await doCaptureWork(request.query);
8 | if (result.statusCode === 200) {
9 | response.status(200).setHeader("Content-Type", `image/${result.responseType}`).send(result.buffer)
10 | } else {
11 | response.status(result.statusCode).json({message: result.message})
12 | }
13 | }
14 |
15 | module.exports = handler
16 |
--------------------------------------------------------------------------------
/serverless/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "capture-website-api-serverless",
3 | "version": "1.0.0",
4 | "description": "",
5 | "exports": "./src/index.js",
6 | "scripts": {
7 | "test": "NODE_OPTIONS=--experimental-vm-modules jest"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "@sparticuz/chromium": "^122.0.0",
13 | "dotenv": "^16.0.3",
14 | "puppeteer-core": "^22.5.0"
15 | },
16 | "devDependencies": {
17 | "@jest/globals": "^28.1.3",
18 | "@types/jest": "^28.1.6",
19 | "@types/node": "^22.13.11",
20 | "jest": "^28.1.3"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/serverless/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robvanderleek/capture-website-api/7d1b8e2c0e5cfadc6f5d079debaa386c66824656/serverless/public/favicon.ico
--------------------------------------------------------------------------------
/serverless/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Capture Website API
7 |
23 |
24 |
25 | Capture Website API
26 |
27 |
28 |
--------------------------------------------------------------------------------
/serverless/src/config.js:
--------------------------------------------------------------------------------
1 | const getSecret = () => process.env.SECRET;
2 |
3 | module.exports = {
4 | getSecret: getSecret
5 | }
--------------------------------------------------------------------------------
/serverless/src/helpers.js:
--------------------------------------------------------------------------------
1 | const {getSecret} = require('./config.js');
2 | const puppeteer = require('puppeteer-core');
3 | const chromium = require("@sparticuz/chromium");
4 |
5 | async function doCaptureWork(queryParameters) {
6 | const options = await getOptions(queryParameters);
7 | const url = options.url;
8 | console.info('Capturing URL: ' + url + ' ...');
9 | return await tryWithPuppeteer(url, options);
10 | }
11 |
12 | function allowedRequest(queryParameters) {
13 | const secret = getSecret();
14 | if (!secret) {
15 | return true;
16 | }
17 | if (!queryParameters || !queryParameters.secret) {
18 | return false;
19 | }
20 | return queryParameters.secret === secret;
21 | }
22 |
23 | async function getOptions(queryParameters) {
24 | const result = parseQueryParameters(queryParameters);
25 | result.launchOptions = {
26 | headless: true,
27 | args: [
28 | ...chromium.args,
29 | '--no-sandbox',
30 | '--disable-setuid-sandbox',
31 | '--hide-scrollbars',
32 | '--mute-audio',
33 | "--disable-gpu",
34 | "--disable-dev-shm-usage",
35 | "--disable-setuid-sandbox",
36 | "--no-first-run",
37 | "--no-zygote",
38 | '--use-fake-ui-for-media-stream' // Pages that ask for webcam/microphone access
39 | ],
40 | executablePath: process.env.CHROME_EXECUTABLE_PATH || await chromium.executablePath(),
41 | };
42 | fieldValuesToNumber(result, 'width', 'height', 'quality', 'scaleFactor', 'timeout', 'delay', 'offset');
43 | return result;
44 | }
45 |
46 | function parseQueryParameters(queryParameters) {
47 | return Object.keys(queryParameters).reduce((params, key) => {
48 | const q = queryParameters[key];
49 | let value;
50 | try {
51 | value = JSON.parse(q);
52 | } catch {
53 | value = q
54 | }
55 | return {
56 | ...params,
57 | [key]: value
58 | }
59 | }, queryParameters || {});
60 | }
61 |
62 | async function tryWithPuppeteer(url, options) {
63 | try {
64 | const buffer = await takePlainPuppeteerScreenshot(url, options);
65 | console.info(`Successfully captured URL: ${url}`);
66 | return {
67 | statusCode: 200,
68 | responseType: getResponseType(options),
69 | buffer: buffer
70 | }
71 | } catch (e) {
72 | console.log('Capture failed due to: ' + e.message);
73 | return {
74 | statusCode: 500,
75 | message: e.message
76 | }
77 | }
78 | }
79 |
80 | async function takePlainPuppeteerScreenshot(url, options) {
81 | options.encoding = 'binary';
82 | options.wait_before_screenshot_ms = options.wait_before_screenshot_ms || 300;
83 | let browser;
84 | let page;
85 | let buffer;
86 | try {
87 | browser = await puppeteer.launch(options.launchOptions);
88 | page = await browser.newPage();
89 | await page.goto(url);
90 | await setViewport(page, options);
91 | await new Promise(r => setTimeout(r, options.wait_before_screenshot_ms));
92 | const array = await page.screenshot();
93 | buffer = Buffer.from(array);
94 | } finally {
95 | await browser.close();
96 | }
97 | return buffer;
98 | }
99 |
100 | async function setViewport(page, options) {
101 | if (options.width && options.height) {
102 | const viewportOptions = {
103 | width: options.width,
104 | height: options.height,
105 | deviceScaleFactor: options.scaleFactor ? options.scaleFactor : 1
106 | };
107 | await page.setViewport(viewportOptions);
108 | }
109 | }
110 |
111 | function getResponseType(queryParams) {
112 | if (queryParams.type && queryParams.type === 'jpeg') {
113 | return 'jpg';
114 | }
115 | return 'png';
116 | }
117 |
118 | function fieldValuesToNumber(obj, ...fields) {
119 | fields.forEach(f => {
120 | if (obj[f]) {
121 | const val = Number(obj[f]);
122 | obj[f] = Number.isNaN(val) ? obj[f] : val;
123 | }
124 | });
125 | }
126 |
127 | module.exports = {
128 | doCaptureWork: doCaptureWork,
129 | allowedRequest: allowedRequest,
130 | getResponseType: getResponseType,
131 | fieldValuesToNumber: fieldValuesToNumber
132 | }
133 |
--------------------------------------------------------------------------------
/serverless/src/helpers.test.js:
--------------------------------------------------------------------------------
1 | const {allowedRequest, fieldValuesToNumber, getResponseType} = require("./helpers");
2 | const {expect} = require('@jest/globals');
3 |
4 | test('all requests are allowed by default', () => {
5 | expect(allowedRequest({})).toBeTruthy();
6 | });
7 |
8 | test('all requests are rejected if secret is set and request contains no secret value', () => {
9 | process.env.SECRET = 'hello';
10 |
11 | expect(allowedRequest({})).toBeFalsy();
12 | expect(allowedRequest({query: {}})).toBeFalsy();
13 |
14 | delete process.env.SECRET;
15 | });
16 |
17 | test('all requests are allowed when secrets match', () => {
18 | process.env.SECRET = 'hello';
19 |
20 | expect(allowedRequest({secret: 'world'})).toBeFalsy();
21 | expect(allowedRequest({secret: 'hello'})).toBeTruthy();
22 |
23 | delete process.env.SECRET;
24 | });
25 |
26 | test('field values to number', () => {
27 | const obj = {aap: '5', noot: '6', mies: 'seven'};
28 |
29 | fieldValuesToNumber(obj, 'aap');
30 |
31 | expect(typeof obj.aap).toBe('number');
32 | expect(typeof obj.noot).toBe('string');
33 | expect(typeof obj.mies).toBe('string');
34 | });
35 |
36 | test('field values to number, multiple fields', () => {
37 | const obj = {aap: '5', noot: '6', mies: 'seven'};
38 |
39 | fieldValuesToNumber(obj, 'aap', 'noot');
40 |
41 | expect(typeof obj.aap).toBe('number');
42 | expect(typeof obj.noot).toBe('number');
43 | expect(typeof obj.mies).toBe('string');
44 | });
45 |
46 | test('field values to number, no number value', () => {
47 | const obj = {aap: '5', noot: '6', mies: 'seven'};
48 |
49 | fieldValuesToNumber(obj, 'mies');
50 |
51 | expect(typeof obj.mies).toBe('string');
52 | expect(obj.mies).toBe('seven');
53 | });
54 |
55 | test('get response type', () => {
56 | expect(getResponseType({})).toBe('png');
57 | expect(getResponseType({type: 'jpeg'})).toBe('jpg');
58 | expect(getResponseType({type: 'png'})).toBe('png');
59 | });
--------------------------------------------------------------------------------
/serverless/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "functions": {
3 | "api/capture.js": {
4 | "maxDuration": 60,
5 | "memory": 1024
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/serverless/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@ampproject/remapping@^2.2.0":
6 | version "2.3.0"
7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
9 | dependencies:
10 | "@jridgewell/gen-mapping" "^0.3.5"
11 | "@jridgewell/trace-mapping" "^0.3.24"
12 |
13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.26.2":
14 | version "7.26.2"
15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
16 | integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
17 | dependencies:
18 | "@babel/helper-validator-identifier" "^7.25.9"
19 | js-tokens "^4.0.0"
20 | picocolors "^1.0.0"
21 |
22 | "@babel/compat-data@^7.26.8":
23 | version "7.26.8"
24 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367"
25 | integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
26 |
27 | "@babel/core@^7.11.6", "@babel/core@^7.12.3":
28 | version "7.26.10"
29 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9"
30 | integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==
31 | dependencies:
32 | "@ampproject/remapping" "^2.2.0"
33 | "@babel/code-frame" "^7.26.2"
34 | "@babel/generator" "^7.26.10"
35 | "@babel/helper-compilation-targets" "^7.26.5"
36 | "@babel/helper-module-transforms" "^7.26.0"
37 | "@babel/helpers" "^7.26.10"
38 | "@babel/parser" "^7.26.10"
39 | "@babel/template" "^7.26.9"
40 | "@babel/traverse" "^7.26.10"
41 | "@babel/types" "^7.26.10"
42 | convert-source-map "^2.0.0"
43 | debug "^4.1.0"
44 | gensync "^1.0.0-beta.2"
45 | json5 "^2.2.3"
46 | semver "^6.3.1"
47 |
48 | "@babel/generator@^7.26.10", "@babel/generator@^7.27.0", "@babel/generator@^7.7.2":
49 | version "7.27.0"
50 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c"
51 | integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==
52 | dependencies:
53 | "@babel/parser" "^7.27.0"
54 | "@babel/types" "^7.27.0"
55 | "@jridgewell/gen-mapping" "^0.3.5"
56 | "@jridgewell/trace-mapping" "^0.3.25"
57 | jsesc "^3.0.2"
58 |
59 | "@babel/helper-compilation-targets@^7.26.5":
60 | version "7.27.0"
61 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880"
62 | integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==
63 | dependencies:
64 | "@babel/compat-data" "^7.26.8"
65 | "@babel/helper-validator-option" "^7.25.9"
66 | browserslist "^4.24.0"
67 | lru-cache "^5.1.1"
68 | semver "^6.3.1"
69 |
70 | "@babel/helper-module-imports@^7.25.9":
71 | version "7.25.9"
72 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
73 | integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
74 | dependencies:
75 | "@babel/traverse" "^7.25.9"
76 | "@babel/types" "^7.25.9"
77 |
78 | "@babel/helper-module-transforms@^7.26.0":
79 | version "7.26.0"
80 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
81 | integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
82 | dependencies:
83 | "@babel/helper-module-imports" "^7.25.9"
84 | "@babel/helper-validator-identifier" "^7.25.9"
85 | "@babel/traverse" "^7.25.9"
86 |
87 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0":
88 | version "7.26.5"
89 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35"
90 | integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==
91 |
92 | "@babel/helper-string-parser@^7.25.9":
93 | version "7.25.9"
94 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
95 | integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
96 |
97 | "@babel/helper-validator-identifier@^7.25.9":
98 | version "7.25.9"
99 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
100 | integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
101 |
102 | "@babel/helper-validator-option@^7.25.9":
103 | version "7.25.9"
104 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
105 | integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
106 |
107 | "@babel/helpers@^7.26.10":
108 | version "7.27.0"
109 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808"
110 | integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==
111 | dependencies:
112 | "@babel/template" "^7.27.0"
113 | "@babel/types" "^7.27.0"
114 |
115 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0":
116 | version "7.27.0"
117 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec"
118 | integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
119 | dependencies:
120 | "@babel/types" "^7.27.0"
121 |
122 | "@babel/plugin-syntax-async-generators@^7.8.4":
123 | version "7.8.4"
124 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
125 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
126 | dependencies:
127 | "@babel/helper-plugin-utils" "^7.8.0"
128 |
129 | "@babel/plugin-syntax-bigint@^7.8.3":
130 | version "7.8.3"
131 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
132 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
133 | dependencies:
134 | "@babel/helper-plugin-utils" "^7.8.0"
135 |
136 | "@babel/plugin-syntax-class-properties@^7.12.13":
137 | version "7.12.13"
138 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
139 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
140 | dependencies:
141 | "@babel/helper-plugin-utils" "^7.12.13"
142 |
143 | "@babel/plugin-syntax-class-static-block@^7.14.5":
144 | version "7.14.5"
145 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
146 | integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
147 | dependencies:
148 | "@babel/helper-plugin-utils" "^7.14.5"
149 |
150 | "@babel/plugin-syntax-import-attributes@^7.24.7":
151 | version "7.26.0"
152 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7"
153 | integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==
154 | dependencies:
155 | "@babel/helper-plugin-utils" "^7.25.9"
156 |
157 | "@babel/plugin-syntax-import-meta@^7.10.4":
158 | version "7.10.4"
159 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
160 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
161 | dependencies:
162 | "@babel/helper-plugin-utils" "^7.10.4"
163 |
164 | "@babel/plugin-syntax-json-strings@^7.8.3":
165 | version "7.8.3"
166 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
167 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
168 | dependencies:
169 | "@babel/helper-plugin-utils" "^7.8.0"
170 |
171 | "@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
172 | version "7.10.4"
173 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
174 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
175 | dependencies:
176 | "@babel/helper-plugin-utils" "^7.10.4"
177 |
178 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
179 | version "7.8.3"
180 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
181 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
182 | dependencies:
183 | "@babel/helper-plugin-utils" "^7.8.0"
184 |
185 | "@babel/plugin-syntax-numeric-separator@^7.10.4":
186 | version "7.10.4"
187 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
188 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
189 | dependencies:
190 | "@babel/helper-plugin-utils" "^7.10.4"
191 |
192 | "@babel/plugin-syntax-object-rest-spread@^7.8.3":
193 | version "7.8.3"
194 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
195 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
196 | dependencies:
197 | "@babel/helper-plugin-utils" "^7.8.0"
198 |
199 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
200 | version "7.8.3"
201 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
202 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
203 | dependencies:
204 | "@babel/helper-plugin-utils" "^7.8.0"
205 |
206 | "@babel/plugin-syntax-optional-chaining@^7.8.3":
207 | version "7.8.3"
208 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
209 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
210 | dependencies:
211 | "@babel/helper-plugin-utils" "^7.8.0"
212 |
213 | "@babel/plugin-syntax-private-property-in-object@^7.14.5":
214 | version "7.14.5"
215 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
216 | integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
217 | dependencies:
218 | "@babel/helper-plugin-utils" "^7.14.5"
219 |
220 | "@babel/plugin-syntax-top-level-await@^7.14.5":
221 | version "7.14.5"
222 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
223 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
224 | dependencies:
225 | "@babel/helper-plugin-utils" "^7.14.5"
226 |
227 | "@babel/plugin-syntax-typescript@^7.7.2":
228 | version "7.25.9"
229 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399"
230 | integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==
231 | dependencies:
232 | "@babel/helper-plugin-utils" "^7.25.9"
233 |
234 | "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.3.3":
235 | version "7.27.0"
236 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4"
237 | integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==
238 | dependencies:
239 | "@babel/code-frame" "^7.26.2"
240 | "@babel/parser" "^7.27.0"
241 | "@babel/types" "^7.27.0"
242 |
243 | "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.7.2":
244 | version "7.27.0"
245 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70"
246 | integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==
247 | dependencies:
248 | "@babel/code-frame" "^7.26.2"
249 | "@babel/generator" "^7.27.0"
250 | "@babel/parser" "^7.27.0"
251 | "@babel/template" "^7.27.0"
252 | "@babel/types" "^7.27.0"
253 | debug "^4.3.1"
254 | globals "^11.1.0"
255 |
256 | "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.3.3":
257 | version "7.27.0"
258 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559"
259 | integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==
260 | dependencies:
261 | "@babel/helper-string-parser" "^7.25.9"
262 | "@babel/helper-validator-identifier" "^7.25.9"
263 |
264 | "@bcoe/v8-coverage@^0.2.3":
265 | version "0.2.3"
266 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
267 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
268 |
269 | "@istanbuljs/load-nyc-config@^1.0.0":
270 | version "1.1.0"
271 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
272 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
273 | dependencies:
274 | camelcase "^5.3.1"
275 | find-up "^4.1.0"
276 | get-package-type "^0.1.0"
277 | js-yaml "^3.13.1"
278 | resolve-from "^5.0.0"
279 |
280 | "@istanbuljs/schema@^0.1.2":
281 | version "0.1.3"
282 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
283 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
284 |
285 | "@jest/console@^28.1.3":
286 | version "28.1.3"
287 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df"
288 | integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==
289 | dependencies:
290 | "@jest/types" "^28.1.3"
291 | "@types/node" "*"
292 | chalk "^4.0.0"
293 | jest-message-util "^28.1.3"
294 | jest-util "^28.1.3"
295 | slash "^3.0.0"
296 |
297 | "@jest/core@^28.1.3":
298 | version "28.1.3"
299 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7"
300 | integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==
301 | dependencies:
302 | "@jest/console" "^28.1.3"
303 | "@jest/reporters" "^28.1.3"
304 | "@jest/test-result" "^28.1.3"
305 | "@jest/transform" "^28.1.3"
306 | "@jest/types" "^28.1.3"
307 | "@types/node" "*"
308 | ansi-escapes "^4.2.1"
309 | chalk "^4.0.0"
310 | ci-info "^3.2.0"
311 | exit "^0.1.2"
312 | graceful-fs "^4.2.9"
313 | jest-changed-files "^28.1.3"
314 | jest-config "^28.1.3"
315 | jest-haste-map "^28.1.3"
316 | jest-message-util "^28.1.3"
317 | jest-regex-util "^28.0.2"
318 | jest-resolve "^28.1.3"
319 | jest-resolve-dependencies "^28.1.3"
320 | jest-runner "^28.1.3"
321 | jest-runtime "^28.1.3"
322 | jest-snapshot "^28.1.3"
323 | jest-util "^28.1.3"
324 | jest-validate "^28.1.3"
325 | jest-watcher "^28.1.3"
326 | micromatch "^4.0.4"
327 | pretty-format "^28.1.3"
328 | rimraf "^3.0.0"
329 | slash "^3.0.0"
330 | strip-ansi "^6.0.0"
331 |
332 | "@jest/environment@^28.1.3":
333 | version "28.1.3"
334 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e"
335 | integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==
336 | dependencies:
337 | "@jest/fake-timers" "^28.1.3"
338 | "@jest/types" "^28.1.3"
339 | "@types/node" "*"
340 | jest-mock "^28.1.3"
341 |
342 | "@jest/expect-utils@^28.1.3":
343 | version "28.1.3"
344 | resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525"
345 | integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==
346 | dependencies:
347 | jest-get-type "^28.0.2"
348 |
349 | "@jest/expect@^28.1.3":
350 | version "28.1.3"
351 | resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72"
352 | integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==
353 | dependencies:
354 | expect "^28.1.3"
355 | jest-snapshot "^28.1.3"
356 |
357 | "@jest/fake-timers@^28.1.3":
358 | version "28.1.3"
359 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e"
360 | integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==
361 | dependencies:
362 | "@jest/types" "^28.1.3"
363 | "@sinonjs/fake-timers" "^9.1.2"
364 | "@types/node" "*"
365 | jest-message-util "^28.1.3"
366 | jest-mock "^28.1.3"
367 | jest-util "^28.1.3"
368 |
369 | "@jest/globals@^28.1.3":
370 | version "28.1.3"
371 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333"
372 | integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==
373 | dependencies:
374 | "@jest/environment" "^28.1.3"
375 | "@jest/expect" "^28.1.3"
376 | "@jest/types" "^28.1.3"
377 |
378 | "@jest/reporters@^28.1.3":
379 | version "28.1.3"
380 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a"
381 | integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==
382 | dependencies:
383 | "@bcoe/v8-coverage" "^0.2.3"
384 | "@jest/console" "^28.1.3"
385 | "@jest/test-result" "^28.1.3"
386 | "@jest/transform" "^28.1.3"
387 | "@jest/types" "^28.1.3"
388 | "@jridgewell/trace-mapping" "^0.3.13"
389 | "@types/node" "*"
390 | chalk "^4.0.0"
391 | collect-v8-coverage "^1.0.0"
392 | exit "^0.1.2"
393 | glob "^7.1.3"
394 | graceful-fs "^4.2.9"
395 | istanbul-lib-coverage "^3.0.0"
396 | istanbul-lib-instrument "^5.1.0"
397 | istanbul-lib-report "^3.0.0"
398 | istanbul-lib-source-maps "^4.0.0"
399 | istanbul-reports "^3.1.3"
400 | jest-message-util "^28.1.3"
401 | jest-util "^28.1.3"
402 | jest-worker "^28.1.3"
403 | slash "^3.0.0"
404 | string-length "^4.0.1"
405 | strip-ansi "^6.0.0"
406 | terminal-link "^2.0.0"
407 | v8-to-istanbul "^9.0.1"
408 |
409 | "@jest/schemas@^28.1.3":
410 | version "28.1.3"
411 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905"
412 | integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==
413 | dependencies:
414 | "@sinclair/typebox" "^0.24.1"
415 |
416 | "@jest/source-map@^28.1.2":
417 | version "28.1.2"
418 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24"
419 | integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==
420 | dependencies:
421 | "@jridgewell/trace-mapping" "^0.3.13"
422 | callsites "^3.0.0"
423 | graceful-fs "^4.2.9"
424 |
425 | "@jest/test-result@^28.1.3":
426 | version "28.1.3"
427 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5"
428 | integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==
429 | dependencies:
430 | "@jest/console" "^28.1.3"
431 | "@jest/types" "^28.1.3"
432 | "@types/istanbul-lib-coverage" "^2.0.0"
433 | collect-v8-coverage "^1.0.0"
434 |
435 | "@jest/test-sequencer@^28.1.3":
436 | version "28.1.3"
437 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3"
438 | integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==
439 | dependencies:
440 | "@jest/test-result" "^28.1.3"
441 | graceful-fs "^4.2.9"
442 | jest-haste-map "^28.1.3"
443 | slash "^3.0.0"
444 |
445 | "@jest/transform@^28.1.3":
446 | version "28.1.3"
447 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0"
448 | integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==
449 | dependencies:
450 | "@babel/core" "^7.11.6"
451 | "@jest/types" "^28.1.3"
452 | "@jridgewell/trace-mapping" "^0.3.13"
453 | babel-plugin-istanbul "^6.1.1"
454 | chalk "^4.0.0"
455 | convert-source-map "^1.4.0"
456 | fast-json-stable-stringify "^2.0.0"
457 | graceful-fs "^4.2.9"
458 | jest-haste-map "^28.1.3"
459 | jest-regex-util "^28.0.2"
460 | jest-util "^28.1.3"
461 | micromatch "^4.0.4"
462 | pirates "^4.0.4"
463 | slash "^3.0.0"
464 | write-file-atomic "^4.0.1"
465 |
466 | "@jest/types@^28.1.3":
467 | version "28.1.3"
468 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b"
469 | integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
470 | dependencies:
471 | "@jest/schemas" "^28.1.3"
472 | "@types/istanbul-lib-coverage" "^2.0.0"
473 | "@types/istanbul-reports" "^3.0.0"
474 | "@types/node" "*"
475 | "@types/yargs" "^17.0.8"
476 | chalk "^4.0.0"
477 |
478 | "@jridgewell/gen-mapping@^0.3.5":
479 | version "0.3.8"
480 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
481 | integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
482 | dependencies:
483 | "@jridgewell/set-array" "^1.2.1"
484 | "@jridgewell/sourcemap-codec" "^1.4.10"
485 | "@jridgewell/trace-mapping" "^0.3.24"
486 |
487 | "@jridgewell/resolve-uri@^3.1.0":
488 | version "3.1.2"
489 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
490 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
491 |
492 | "@jridgewell/set-array@^1.2.1":
493 | version "1.2.1"
494 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
495 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
496 |
497 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
498 | version "1.5.0"
499 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
500 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
501 |
502 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
503 | version "0.3.25"
504 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
505 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
506 | dependencies:
507 | "@jridgewell/resolve-uri" "^3.1.0"
508 | "@jridgewell/sourcemap-codec" "^1.4.14"
509 |
510 | "@puppeteer/browsers@2.8.0":
511 | version "2.8.0"
512 | resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.8.0.tgz#9d592933cbefc66c37823770844b8cbac52607dd"
513 | integrity sha512-yTwt2KWRmCQAfhvbCRjebaSX8pV1//I0Y3g+A7f/eS7gf0l4eRJoUCvcYdVtboeU4CTOZQuqYbZNS8aBYb8ROQ==
514 | dependencies:
515 | debug "^4.4.0"
516 | extract-zip "^2.0.1"
517 | progress "^2.0.3"
518 | proxy-agent "^6.5.0"
519 | semver "^7.7.1"
520 | tar-fs "^3.0.8"
521 | yargs "^17.7.2"
522 |
523 | "@sinclair/typebox@^0.24.1":
524 | version "0.24.51"
525 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f"
526 | integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
527 |
528 | "@sinonjs/commons@^1.7.0":
529 | version "1.8.6"
530 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9"
531 | integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==
532 | dependencies:
533 | type-detect "4.0.8"
534 |
535 | "@sinonjs/fake-timers@^9.1.2":
536 | version "9.1.2"
537 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c"
538 | integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==
539 | dependencies:
540 | "@sinonjs/commons" "^1.7.0"
541 |
542 | "@sparticuz/chromium@^133.0.0":
543 | version "133.0.0"
544 | resolved "https://registry.yarnpkg.com/@sparticuz/chromium/-/chromium-133.0.0.tgz#515bb917d470828c0ffa5644eced95830f9ce83c"
545 | integrity sha512-wioNxMtSxRI+Y6ymc/UFPX9lY7A1SDgBezjFITH6arwe5CONfWosNDGpgflUGYajxxGktb1k3kjJ83jWzbccBw==
546 | dependencies:
547 | follow-redirects "^1.15.9"
548 | tar-fs "^3.0.8"
549 |
550 | "@tootallnate/quickjs-emscripten@^0.23.0":
551 | version "0.23.0"
552 | resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c"
553 | integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
554 |
555 | "@types/babel__core@^7.1.14":
556 | version "7.20.5"
557 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
558 | integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
559 | dependencies:
560 | "@babel/parser" "^7.20.7"
561 | "@babel/types" "^7.20.7"
562 | "@types/babel__generator" "*"
563 | "@types/babel__template" "*"
564 | "@types/babel__traverse" "*"
565 |
566 | "@types/babel__generator@*":
567 | version "7.6.8"
568 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
569 | integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
570 | dependencies:
571 | "@babel/types" "^7.0.0"
572 |
573 | "@types/babel__template@*":
574 | version "7.4.4"
575 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
576 | integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
577 | dependencies:
578 | "@babel/parser" "^7.1.0"
579 | "@babel/types" "^7.0.0"
580 |
581 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
582 | version "7.20.7"
583 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2"
584 | integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==
585 | dependencies:
586 | "@babel/types" "^7.20.7"
587 |
588 | "@types/graceful-fs@^4.1.3":
589 | version "4.1.9"
590 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4"
591 | integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==
592 | dependencies:
593 | "@types/node" "*"
594 |
595 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
596 | version "2.0.6"
597 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7"
598 | integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==
599 |
600 | "@types/istanbul-lib-report@*":
601 | version "3.0.3"
602 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf"
603 | integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==
604 | dependencies:
605 | "@types/istanbul-lib-coverage" "*"
606 |
607 | "@types/istanbul-reports@^3.0.0":
608 | version "3.0.4"
609 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54"
610 | integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==
611 | dependencies:
612 | "@types/istanbul-lib-report" "*"
613 |
614 | "@types/jest@^28.1.6":
615 | version "28.1.8"
616 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b"
617 | integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==
618 | dependencies:
619 | expect "^28.0.0"
620 | pretty-format "^28.0.0"
621 |
622 | "@types/node@*", "@types/node@^22.13.11":
623 | version "22.13.14"
624 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.14.tgz#70d84ec91013dcd2ba2de35532a5a14c2b4cc912"
625 | integrity sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==
626 | dependencies:
627 | undici-types "~6.20.0"
628 |
629 | "@types/prettier@^2.1.5":
630 | version "2.7.3"
631 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
632 | integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
633 |
634 | "@types/stack-utils@^2.0.0":
635 | version "2.0.3"
636 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
637 | integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
638 |
639 | "@types/yargs-parser@*":
640 | version "21.0.3"
641 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
642 | integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
643 |
644 | "@types/yargs@^17.0.8":
645 | version "17.0.33"
646 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d"
647 | integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==
648 | dependencies:
649 | "@types/yargs-parser" "*"
650 |
651 | "@types/yauzl@^2.9.1":
652 | version "2.10.3"
653 | resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
654 | integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
655 | dependencies:
656 | "@types/node" "*"
657 |
658 | agent-base@^7.1.0, agent-base@^7.1.2:
659 | version "7.1.3"
660 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1"
661 | integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==
662 |
663 | ansi-escapes@^4.2.1:
664 | version "4.3.2"
665 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
666 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
667 | dependencies:
668 | type-fest "^0.21.3"
669 |
670 | ansi-regex@^5.0.1:
671 | version "5.0.1"
672 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
673 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
674 |
675 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
676 | version "4.3.0"
677 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
678 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
679 | dependencies:
680 | color-convert "^2.0.1"
681 |
682 | ansi-styles@^5.0.0:
683 | version "5.2.0"
684 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
685 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
686 |
687 | anymatch@^3.0.3:
688 | version "3.1.3"
689 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
690 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
691 | dependencies:
692 | normalize-path "^3.0.0"
693 | picomatch "^2.0.4"
694 |
695 | argparse@^1.0.7:
696 | version "1.0.10"
697 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
698 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
699 | dependencies:
700 | sprintf-js "~1.0.2"
701 |
702 | ast-types@^0.13.4:
703 | version "0.13.4"
704 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
705 | integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==
706 | dependencies:
707 | tslib "^2.0.1"
708 |
709 | b4a@^1.6.4:
710 | version "1.6.7"
711 | resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4"
712 | integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==
713 |
714 | babel-jest@^28.1.3:
715 | version "28.1.3"
716 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5"
717 | integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==
718 | dependencies:
719 | "@jest/transform" "^28.1.3"
720 | "@types/babel__core" "^7.1.14"
721 | babel-plugin-istanbul "^6.1.1"
722 | babel-preset-jest "^28.1.3"
723 | chalk "^4.0.0"
724 | graceful-fs "^4.2.9"
725 | slash "^3.0.0"
726 |
727 | babel-plugin-istanbul@^6.1.1:
728 | version "6.1.1"
729 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
730 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
731 | dependencies:
732 | "@babel/helper-plugin-utils" "^7.0.0"
733 | "@istanbuljs/load-nyc-config" "^1.0.0"
734 | "@istanbuljs/schema" "^0.1.2"
735 | istanbul-lib-instrument "^5.0.4"
736 | test-exclude "^6.0.0"
737 |
738 | babel-plugin-jest-hoist@^28.1.3:
739 | version "28.1.3"
740 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe"
741 | integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==
742 | dependencies:
743 | "@babel/template" "^7.3.3"
744 | "@babel/types" "^7.3.3"
745 | "@types/babel__core" "^7.1.14"
746 | "@types/babel__traverse" "^7.0.6"
747 |
748 | babel-preset-current-node-syntax@^1.0.0:
749 | version "1.1.0"
750 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30"
751 | integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==
752 | dependencies:
753 | "@babel/plugin-syntax-async-generators" "^7.8.4"
754 | "@babel/plugin-syntax-bigint" "^7.8.3"
755 | "@babel/plugin-syntax-class-properties" "^7.12.13"
756 | "@babel/plugin-syntax-class-static-block" "^7.14.5"
757 | "@babel/plugin-syntax-import-attributes" "^7.24.7"
758 | "@babel/plugin-syntax-import-meta" "^7.10.4"
759 | "@babel/plugin-syntax-json-strings" "^7.8.3"
760 | "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
761 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
762 | "@babel/plugin-syntax-numeric-separator" "^7.10.4"
763 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
764 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
765 | "@babel/plugin-syntax-optional-chaining" "^7.8.3"
766 | "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
767 | "@babel/plugin-syntax-top-level-await" "^7.14.5"
768 |
769 | babel-preset-jest@^28.1.3:
770 | version "28.1.3"
771 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d"
772 | integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==
773 | dependencies:
774 | babel-plugin-jest-hoist "^28.1.3"
775 | babel-preset-current-node-syntax "^1.0.0"
776 |
777 | balanced-match@^1.0.0:
778 | version "1.0.2"
779 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
780 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
781 |
782 | bare-events@^2.2.0, bare-events@^2.5.4:
783 | version "2.5.4"
784 | resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.5.4.tgz#16143d435e1ed9eafd1ab85f12b89b3357a41745"
785 | integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==
786 |
787 | bare-fs@^4.0.1:
788 | version "4.0.2"
789 | resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.0.2.tgz#a879c7b5d9242663ef80d75d6b99c2c6701664d6"
790 | integrity sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==
791 | dependencies:
792 | bare-events "^2.5.4"
793 | bare-path "^3.0.0"
794 | bare-stream "^2.6.4"
795 |
796 | bare-os@^3.0.1:
797 | version "3.6.1"
798 | resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-3.6.1.tgz#9921f6f59edbe81afa9f56910658422c0f4858d4"
799 | integrity sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==
800 |
801 | bare-path@^3.0.0:
802 | version "3.0.0"
803 | resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-3.0.0.tgz#b59d18130ba52a6af9276db3e96a2e3d3ea52178"
804 | integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==
805 | dependencies:
806 | bare-os "^3.0.1"
807 |
808 | bare-stream@^2.6.4:
809 | version "2.6.5"
810 | resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.6.5.tgz#bba8e879674c4c27f7e27805df005c15d7a2ca07"
811 | integrity sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==
812 | dependencies:
813 | streamx "^2.21.0"
814 |
815 | basic-ftp@^5.0.2:
816 | version "5.0.5"
817 | resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0"
818 | integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
819 |
820 | brace-expansion@^1.1.7:
821 | version "1.1.11"
822 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
823 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
824 | dependencies:
825 | balanced-match "^1.0.0"
826 | concat-map "0.0.1"
827 |
828 | braces@^3.0.3:
829 | version "3.0.3"
830 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
831 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
832 | dependencies:
833 | fill-range "^7.1.1"
834 |
835 | browserslist@^4.24.0:
836 | version "4.24.4"
837 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
838 | integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
839 | dependencies:
840 | caniuse-lite "^1.0.30001688"
841 | electron-to-chromium "^1.5.73"
842 | node-releases "^2.0.19"
843 | update-browserslist-db "^1.1.1"
844 |
845 | bser@2.1.1:
846 | version "2.1.1"
847 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
848 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
849 | dependencies:
850 | node-int64 "^0.4.0"
851 |
852 | buffer-crc32@~0.2.3:
853 | version "0.2.13"
854 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
855 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
856 |
857 | buffer-from@^1.0.0:
858 | version "1.1.2"
859 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
860 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
861 |
862 | callsites@^3.0.0:
863 | version "3.1.0"
864 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
865 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
866 |
867 | camelcase@^5.3.1:
868 | version "5.3.1"
869 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
870 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
871 |
872 | camelcase@^6.2.0:
873 | version "6.3.0"
874 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
875 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
876 |
877 | caniuse-lite@^1.0.30001688:
878 | version "1.0.30001707"
879 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz#c5e104d199e6f4355a898fcd995a066c7eb9bf41"
880 | integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==
881 |
882 | chalk@^4.0.0:
883 | version "4.1.2"
884 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
885 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
886 | dependencies:
887 | ansi-styles "^4.1.0"
888 | supports-color "^7.1.0"
889 |
890 | char-regex@^1.0.2:
891 | version "1.0.2"
892 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
893 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
894 |
895 | chromium-bidi@2.1.2:
896 | version "2.1.2"
897 | resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-2.1.2.tgz#b0710279f993128d4e0b41c892209ea093217d97"
898 | integrity sha512-vtRWBK2uImo5/W2oG6/cDkkHSm+2t6VHgnj+Rcwhb0pP74OoUb4GipyRX/T/y39gYQPhioP0DPShn+A7P6CHNw==
899 | dependencies:
900 | mitt "^3.0.1"
901 | zod "^3.24.1"
902 |
903 | ci-info@^3.2.0:
904 | version "3.9.0"
905 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
906 | integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
907 |
908 | cjs-module-lexer@^1.0.0:
909 | version "1.4.3"
910 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d"
911 | integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==
912 |
913 | cliui@^8.0.1:
914 | version "8.0.1"
915 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
916 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
917 | dependencies:
918 | string-width "^4.2.0"
919 | strip-ansi "^6.0.1"
920 | wrap-ansi "^7.0.0"
921 |
922 | co@^4.6.0:
923 | version "4.6.0"
924 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
925 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
926 |
927 | collect-v8-coverage@^1.0.0:
928 | version "1.0.2"
929 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
930 | integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==
931 |
932 | color-convert@^2.0.1:
933 | version "2.0.1"
934 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
935 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
936 | dependencies:
937 | color-name "~1.1.4"
938 |
939 | color-name@~1.1.4:
940 | version "1.1.4"
941 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
942 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
943 |
944 | concat-map@0.0.1:
945 | version "0.0.1"
946 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
947 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
948 |
949 | convert-source-map@^1.4.0:
950 | version "1.9.0"
951 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
952 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
953 |
954 | convert-source-map@^2.0.0:
955 | version "2.0.0"
956 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
957 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
958 |
959 | cross-spawn@^7.0.3:
960 | version "7.0.6"
961 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
962 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
963 | dependencies:
964 | path-key "^3.1.0"
965 | shebang-command "^2.0.0"
966 | which "^2.0.1"
967 |
968 | data-uri-to-buffer@^6.0.2:
969 | version "6.0.2"
970 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b"
971 | integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
972 |
973 | debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.4.0:
974 | version "4.4.0"
975 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
976 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
977 | dependencies:
978 | ms "^2.1.3"
979 |
980 | dedent@^0.7.0:
981 | version "0.7.0"
982 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
983 | integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
984 |
985 | deepmerge@^4.2.2:
986 | version "4.3.1"
987 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
988 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
989 |
990 | degenerator@^5.0.0:
991 | version "5.0.1"
992 | resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5"
993 | integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==
994 | dependencies:
995 | ast-types "^0.13.4"
996 | escodegen "^2.1.0"
997 | esprima "^4.0.1"
998 |
999 | detect-newline@^3.0.0:
1000 | version "3.1.0"
1001 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
1002 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
1003 |
1004 | devtools-protocol@0.0.1413902:
1005 | version "0.0.1413902"
1006 | resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1413902.tgz#a0f00fe9eb25ab337a8f9656a29e0a1a69f42401"
1007 | integrity sha512-yRtvFD8Oyk7C9Os3GmnFZLu53yAfsnyw1s+mLmHHUK0GQEc9zthHWvS1r67Zqzm5t7v56PILHIVZ7kmFMaL2yQ==
1008 |
1009 | diff-sequences@^28.1.1:
1010 | version "28.1.1"
1011 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6"
1012 | integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==
1013 |
1014 | dotenv@^16.0.3:
1015 | version "16.4.7"
1016 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
1017 | integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
1018 |
1019 | electron-to-chromium@^1.5.73:
1020 | version "1.5.128"
1021 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz#8ea537b369c32527b3cc47df7973bffe5d3c2980"
1022 | integrity sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==
1023 |
1024 | emittery@^0.10.2:
1025 | version "0.10.2"
1026 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933"
1027 | integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==
1028 |
1029 | emoji-regex@^8.0.0:
1030 | version "8.0.0"
1031 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
1032 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
1033 |
1034 | end-of-stream@^1.1.0:
1035 | version "1.4.4"
1036 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
1037 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
1038 | dependencies:
1039 | once "^1.4.0"
1040 |
1041 | error-ex@^1.3.1:
1042 | version "1.3.2"
1043 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1044 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1045 | dependencies:
1046 | is-arrayish "^0.2.1"
1047 |
1048 | escalade@^3.1.1, escalade@^3.2.0:
1049 | version "3.2.0"
1050 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
1051 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
1052 |
1053 | escape-string-regexp@^2.0.0:
1054 | version "2.0.0"
1055 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
1056 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
1057 |
1058 | escodegen@^2.1.0:
1059 | version "2.1.0"
1060 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
1061 | integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
1062 | dependencies:
1063 | esprima "^4.0.1"
1064 | estraverse "^5.2.0"
1065 | esutils "^2.0.2"
1066 | optionalDependencies:
1067 | source-map "~0.6.1"
1068 |
1069 | esprima@^4.0.0, esprima@^4.0.1:
1070 | version "4.0.1"
1071 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1072 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
1073 |
1074 | estraverse@^5.2.0:
1075 | version "5.3.0"
1076 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
1077 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
1078 |
1079 | esutils@^2.0.2:
1080 | version "2.0.3"
1081 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1082 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1083 |
1084 | execa@^5.0.0:
1085 | version "5.1.1"
1086 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
1087 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
1088 | dependencies:
1089 | cross-spawn "^7.0.3"
1090 | get-stream "^6.0.0"
1091 | human-signals "^2.1.0"
1092 | is-stream "^2.0.0"
1093 | merge-stream "^2.0.0"
1094 | npm-run-path "^4.0.1"
1095 | onetime "^5.1.2"
1096 | signal-exit "^3.0.3"
1097 | strip-final-newline "^2.0.0"
1098 |
1099 | exit@^0.1.2:
1100 | version "0.1.2"
1101 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
1102 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
1103 |
1104 | expect@^28.0.0, expect@^28.1.3:
1105 | version "28.1.3"
1106 | resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec"
1107 | integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==
1108 | dependencies:
1109 | "@jest/expect-utils" "^28.1.3"
1110 | jest-get-type "^28.0.2"
1111 | jest-matcher-utils "^28.1.3"
1112 | jest-message-util "^28.1.3"
1113 | jest-util "^28.1.3"
1114 |
1115 | extract-zip@^2.0.1:
1116 | version "2.0.1"
1117 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
1118 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
1119 | dependencies:
1120 | debug "^4.1.1"
1121 | get-stream "^5.1.0"
1122 | yauzl "^2.10.0"
1123 | optionalDependencies:
1124 | "@types/yauzl" "^2.9.1"
1125 |
1126 | fast-fifo@^1.2.0, fast-fifo@^1.3.2:
1127 | version "1.3.2"
1128 | resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
1129 | integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
1130 |
1131 | fast-json-stable-stringify@^2.0.0:
1132 | version "2.1.0"
1133 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1134 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1135 |
1136 | fb-watchman@^2.0.0:
1137 | version "2.0.2"
1138 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
1139 | integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
1140 | dependencies:
1141 | bser "2.1.1"
1142 |
1143 | fd-slicer@~1.1.0:
1144 | version "1.1.0"
1145 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
1146 | integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
1147 | dependencies:
1148 | pend "~1.2.0"
1149 |
1150 | fill-range@^7.1.1:
1151 | version "7.1.1"
1152 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
1153 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
1154 | dependencies:
1155 | to-regex-range "^5.0.1"
1156 |
1157 | find-up@^4.0.0, find-up@^4.1.0:
1158 | version "4.1.0"
1159 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1160 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1161 | dependencies:
1162 | locate-path "^5.0.0"
1163 | path-exists "^4.0.0"
1164 |
1165 | follow-redirects@^1.15.9:
1166 | version "1.15.9"
1167 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
1168 | integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
1169 |
1170 | fs.realpath@^1.0.0:
1171 | version "1.0.0"
1172 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1173 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1174 |
1175 | fsevents@^2.3.2:
1176 | version "2.3.3"
1177 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
1178 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
1179 |
1180 | function-bind@^1.1.2:
1181 | version "1.1.2"
1182 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
1183 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
1184 |
1185 | gensync@^1.0.0-beta.2:
1186 | version "1.0.0-beta.2"
1187 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1188 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
1189 |
1190 | get-caller-file@^2.0.5:
1191 | version "2.0.5"
1192 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1193 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
1194 |
1195 | get-package-type@^0.1.0:
1196 | version "0.1.0"
1197 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
1198 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
1199 |
1200 | get-stream@^5.1.0:
1201 | version "5.2.0"
1202 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
1203 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
1204 | dependencies:
1205 | pump "^3.0.0"
1206 |
1207 | get-stream@^6.0.0:
1208 | version "6.0.1"
1209 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1210 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1211 |
1212 | get-uri@^6.0.1:
1213 | version "6.0.4"
1214 | resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.4.tgz#6daaee9e12f9759e19e55ba313956883ef50e0a7"
1215 | integrity sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==
1216 | dependencies:
1217 | basic-ftp "^5.0.2"
1218 | data-uri-to-buffer "^6.0.2"
1219 | debug "^4.3.4"
1220 |
1221 | glob@^7.1.3, glob@^7.1.4:
1222 | version "7.2.3"
1223 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
1224 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1225 | dependencies:
1226 | fs.realpath "^1.0.0"
1227 | inflight "^1.0.4"
1228 | inherits "2"
1229 | minimatch "^3.1.1"
1230 | once "^1.3.0"
1231 | path-is-absolute "^1.0.0"
1232 |
1233 | globals@^11.1.0:
1234 | version "11.12.0"
1235 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1236 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1237 |
1238 | graceful-fs@^4.2.9:
1239 | version "4.2.11"
1240 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
1241 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
1242 |
1243 | has-flag@^4.0.0:
1244 | version "4.0.0"
1245 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1246 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1247 |
1248 | hasown@^2.0.2:
1249 | version "2.0.2"
1250 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
1251 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
1252 | dependencies:
1253 | function-bind "^1.1.2"
1254 |
1255 | html-escaper@^2.0.0:
1256 | version "2.0.2"
1257 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
1258 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
1259 |
1260 | http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1:
1261 | version "7.0.2"
1262 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
1263 | integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
1264 | dependencies:
1265 | agent-base "^7.1.0"
1266 | debug "^4.3.4"
1267 |
1268 | https-proxy-agent@^7.0.6:
1269 | version "7.0.6"
1270 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9"
1271 | integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==
1272 | dependencies:
1273 | agent-base "^7.1.2"
1274 | debug "4"
1275 |
1276 | human-signals@^2.1.0:
1277 | version "2.1.0"
1278 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1279 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1280 |
1281 | import-local@^3.0.2:
1282 | version "3.2.0"
1283 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260"
1284 | integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==
1285 | dependencies:
1286 | pkg-dir "^4.2.0"
1287 | resolve-cwd "^3.0.0"
1288 |
1289 | imurmurhash@^0.1.4:
1290 | version "0.1.4"
1291 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1292 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
1293 |
1294 | inflight@^1.0.4:
1295 | version "1.0.6"
1296 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1297 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
1298 | dependencies:
1299 | once "^1.3.0"
1300 | wrappy "1"
1301 |
1302 | inherits@2:
1303 | version "2.0.4"
1304 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1305 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1306 |
1307 | ip-address@^9.0.5:
1308 | version "9.0.5"
1309 | resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
1310 | integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==
1311 | dependencies:
1312 | jsbn "1.1.0"
1313 | sprintf-js "^1.1.3"
1314 |
1315 | is-arrayish@^0.2.1:
1316 | version "0.2.1"
1317 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1318 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
1319 |
1320 | is-core-module@^2.16.0:
1321 | version "2.16.1"
1322 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
1323 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
1324 | dependencies:
1325 | hasown "^2.0.2"
1326 |
1327 | is-fullwidth-code-point@^3.0.0:
1328 | version "3.0.0"
1329 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1330 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1331 |
1332 | is-generator-fn@^2.0.0:
1333 | version "2.1.0"
1334 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
1335 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
1336 |
1337 | is-number@^7.0.0:
1338 | version "7.0.0"
1339 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1340 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1341 |
1342 | is-stream@^2.0.0:
1343 | version "2.0.1"
1344 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1345 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1346 |
1347 | isexe@^2.0.0:
1348 | version "2.0.0"
1349 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1350 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1351 |
1352 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
1353 | version "3.2.2"
1354 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756"
1355 | integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==
1356 |
1357 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
1358 | version "5.2.1"
1359 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
1360 | integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
1361 | dependencies:
1362 | "@babel/core" "^7.12.3"
1363 | "@babel/parser" "^7.14.7"
1364 | "@istanbuljs/schema" "^0.1.2"
1365 | istanbul-lib-coverage "^3.2.0"
1366 | semver "^6.3.0"
1367 |
1368 | istanbul-lib-report@^3.0.0:
1369 | version "3.0.1"
1370 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d"
1371 | integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==
1372 | dependencies:
1373 | istanbul-lib-coverage "^3.0.0"
1374 | make-dir "^4.0.0"
1375 | supports-color "^7.1.0"
1376 |
1377 | istanbul-lib-source-maps@^4.0.0:
1378 | version "4.0.1"
1379 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
1380 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
1381 | dependencies:
1382 | debug "^4.1.1"
1383 | istanbul-lib-coverage "^3.0.0"
1384 | source-map "^0.6.1"
1385 |
1386 | istanbul-reports@^3.1.3:
1387 | version "3.1.7"
1388 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b"
1389 | integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==
1390 | dependencies:
1391 | html-escaper "^2.0.0"
1392 | istanbul-lib-report "^3.0.0"
1393 |
1394 | jest-changed-files@^28.1.3:
1395 | version "28.1.3"
1396 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831"
1397 | integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==
1398 | dependencies:
1399 | execa "^5.0.0"
1400 | p-limit "^3.1.0"
1401 |
1402 | jest-circus@^28.1.3:
1403 | version "28.1.3"
1404 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4"
1405 | integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==
1406 | dependencies:
1407 | "@jest/environment" "^28.1.3"
1408 | "@jest/expect" "^28.1.3"
1409 | "@jest/test-result" "^28.1.3"
1410 | "@jest/types" "^28.1.3"
1411 | "@types/node" "*"
1412 | chalk "^4.0.0"
1413 | co "^4.6.0"
1414 | dedent "^0.7.0"
1415 | is-generator-fn "^2.0.0"
1416 | jest-each "^28.1.3"
1417 | jest-matcher-utils "^28.1.3"
1418 | jest-message-util "^28.1.3"
1419 | jest-runtime "^28.1.3"
1420 | jest-snapshot "^28.1.3"
1421 | jest-util "^28.1.3"
1422 | p-limit "^3.1.0"
1423 | pretty-format "^28.1.3"
1424 | slash "^3.0.0"
1425 | stack-utils "^2.0.3"
1426 |
1427 | jest-cli@^28.1.3:
1428 | version "28.1.3"
1429 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2"
1430 | integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==
1431 | dependencies:
1432 | "@jest/core" "^28.1.3"
1433 | "@jest/test-result" "^28.1.3"
1434 | "@jest/types" "^28.1.3"
1435 | chalk "^4.0.0"
1436 | exit "^0.1.2"
1437 | graceful-fs "^4.2.9"
1438 | import-local "^3.0.2"
1439 | jest-config "^28.1.3"
1440 | jest-util "^28.1.3"
1441 | jest-validate "^28.1.3"
1442 | prompts "^2.0.1"
1443 | yargs "^17.3.1"
1444 |
1445 | jest-config@^28.1.3:
1446 | version "28.1.3"
1447 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60"
1448 | integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==
1449 | dependencies:
1450 | "@babel/core" "^7.11.6"
1451 | "@jest/test-sequencer" "^28.1.3"
1452 | "@jest/types" "^28.1.3"
1453 | babel-jest "^28.1.3"
1454 | chalk "^4.0.0"
1455 | ci-info "^3.2.0"
1456 | deepmerge "^4.2.2"
1457 | glob "^7.1.3"
1458 | graceful-fs "^4.2.9"
1459 | jest-circus "^28.1.3"
1460 | jest-environment-node "^28.1.3"
1461 | jest-get-type "^28.0.2"
1462 | jest-regex-util "^28.0.2"
1463 | jest-resolve "^28.1.3"
1464 | jest-runner "^28.1.3"
1465 | jest-util "^28.1.3"
1466 | jest-validate "^28.1.3"
1467 | micromatch "^4.0.4"
1468 | parse-json "^5.2.0"
1469 | pretty-format "^28.1.3"
1470 | slash "^3.0.0"
1471 | strip-json-comments "^3.1.1"
1472 |
1473 | jest-diff@^28.1.3:
1474 | version "28.1.3"
1475 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f"
1476 | integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==
1477 | dependencies:
1478 | chalk "^4.0.0"
1479 | diff-sequences "^28.1.1"
1480 | jest-get-type "^28.0.2"
1481 | pretty-format "^28.1.3"
1482 |
1483 | jest-docblock@^28.1.1:
1484 | version "28.1.1"
1485 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8"
1486 | integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==
1487 | dependencies:
1488 | detect-newline "^3.0.0"
1489 |
1490 | jest-each@^28.1.3:
1491 | version "28.1.3"
1492 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81"
1493 | integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==
1494 | dependencies:
1495 | "@jest/types" "^28.1.3"
1496 | chalk "^4.0.0"
1497 | jest-get-type "^28.0.2"
1498 | jest-util "^28.1.3"
1499 | pretty-format "^28.1.3"
1500 |
1501 | jest-environment-node@^28.1.3:
1502 | version "28.1.3"
1503 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5"
1504 | integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==
1505 | dependencies:
1506 | "@jest/environment" "^28.1.3"
1507 | "@jest/fake-timers" "^28.1.3"
1508 | "@jest/types" "^28.1.3"
1509 | "@types/node" "*"
1510 | jest-mock "^28.1.3"
1511 | jest-util "^28.1.3"
1512 |
1513 | jest-get-type@^28.0.2:
1514 | version "28.0.2"
1515 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203"
1516 | integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==
1517 |
1518 | jest-haste-map@^28.1.3:
1519 | version "28.1.3"
1520 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b"
1521 | integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==
1522 | dependencies:
1523 | "@jest/types" "^28.1.3"
1524 | "@types/graceful-fs" "^4.1.3"
1525 | "@types/node" "*"
1526 | anymatch "^3.0.3"
1527 | fb-watchman "^2.0.0"
1528 | graceful-fs "^4.2.9"
1529 | jest-regex-util "^28.0.2"
1530 | jest-util "^28.1.3"
1531 | jest-worker "^28.1.3"
1532 | micromatch "^4.0.4"
1533 | walker "^1.0.8"
1534 | optionalDependencies:
1535 | fsevents "^2.3.2"
1536 |
1537 | jest-leak-detector@^28.1.3:
1538 | version "28.1.3"
1539 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d"
1540 | integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==
1541 | dependencies:
1542 | jest-get-type "^28.0.2"
1543 | pretty-format "^28.1.3"
1544 |
1545 | jest-matcher-utils@^28.1.3:
1546 | version "28.1.3"
1547 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e"
1548 | integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==
1549 | dependencies:
1550 | chalk "^4.0.0"
1551 | jest-diff "^28.1.3"
1552 | jest-get-type "^28.0.2"
1553 | pretty-format "^28.1.3"
1554 |
1555 | jest-message-util@^28.1.3:
1556 | version "28.1.3"
1557 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d"
1558 | integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==
1559 | dependencies:
1560 | "@babel/code-frame" "^7.12.13"
1561 | "@jest/types" "^28.1.3"
1562 | "@types/stack-utils" "^2.0.0"
1563 | chalk "^4.0.0"
1564 | graceful-fs "^4.2.9"
1565 | micromatch "^4.0.4"
1566 | pretty-format "^28.1.3"
1567 | slash "^3.0.0"
1568 | stack-utils "^2.0.3"
1569 |
1570 | jest-mock@^28.1.3:
1571 | version "28.1.3"
1572 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da"
1573 | integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==
1574 | dependencies:
1575 | "@jest/types" "^28.1.3"
1576 | "@types/node" "*"
1577 |
1578 | jest-pnp-resolver@^1.2.2:
1579 | version "1.2.3"
1580 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
1581 | integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
1582 |
1583 | jest-regex-util@^28.0.2:
1584 | version "28.0.2"
1585 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead"
1586 | integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
1587 |
1588 | jest-resolve-dependencies@^28.1.3:
1589 | version "28.1.3"
1590 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66"
1591 | integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==
1592 | dependencies:
1593 | jest-regex-util "^28.0.2"
1594 | jest-snapshot "^28.1.3"
1595 |
1596 | jest-resolve@^28.1.3:
1597 | version "28.1.3"
1598 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8"
1599 | integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==
1600 | dependencies:
1601 | chalk "^4.0.0"
1602 | graceful-fs "^4.2.9"
1603 | jest-haste-map "^28.1.3"
1604 | jest-pnp-resolver "^1.2.2"
1605 | jest-util "^28.1.3"
1606 | jest-validate "^28.1.3"
1607 | resolve "^1.20.0"
1608 | resolve.exports "^1.1.0"
1609 | slash "^3.0.0"
1610 |
1611 | jest-runner@^28.1.3:
1612 | version "28.1.3"
1613 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1"
1614 | integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==
1615 | dependencies:
1616 | "@jest/console" "^28.1.3"
1617 | "@jest/environment" "^28.1.3"
1618 | "@jest/test-result" "^28.1.3"
1619 | "@jest/transform" "^28.1.3"
1620 | "@jest/types" "^28.1.3"
1621 | "@types/node" "*"
1622 | chalk "^4.0.0"
1623 | emittery "^0.10.2"
1624 | graceful-fs "^4.2.9"
1625 | jest-docblock "^28.1.1"
1626 | jest-environment-node "^28.1.3"
1627 | jest-haste-map "^28.1.3"
1628 | jest-leak-detector "^28.1.3"
1629 | jest-message-util "^28.1.3"
1630 | jest-resolve "^28.1.3"
1631 | jest-runtime "^28.1.3"
1632 | jest-util "^28.1.3"
1633 | jest-watcher "^28.1.3"
1634 | jest-worker "^28.1.3"
1635 | p-limit "^3.1.0"
1636 | source-map-support "0.5.13"
1637 |
1638 | jest-runtime@^28.1.3:
1639 | version "28.1.3"
1640 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f"
1641 | integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==
1642 | dependencies:
1643 | "@jest/environment" "^28.1.3"
1644 | "@jest/fake-timers" "^28.1.3"
1645 | "@jest/globals" "^28.1.3"
1646 | "@jest/source-map" "^28.1.2"
1647 | "@jest/test-result" "^28.1.3"
1648 | "@jest/transform" "^28.1.3"
1649 | "@jest/types" "^28.1.3"
1650 | chalk "^4.0.0"
1651 | cjs-module-lexer "^1.0.0"
1652 | collect-v8-coverage "^1.0.0"
1653 | execa "^5.0.0"
1654 | glob "^7.1.3"
1655 | graceful-fs "^4.2.9"
1656 | jest-haste-map "^28.1.3"
1657 | jest-message-util "^28.1.3"
1658 | jest-mock "^28.1.3"
1659 | jest-regex-util "^28.0.2"
1660 | jest-resolve "^28.1.3"
1661 | jest-snapshot "^28.1.3"
1662 | jest-util "^28.1.3"
1663 | slash "^3.0.0"
1664 | strip-bom "^4.0.0"
1665 |
1666 | jest-snapshot@^28.1.3:
1667 | version "28.1.3"
1668 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668"
1669 | integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==
1670 | dependencies:
1671 | "@babel/core" "^7.11.6"
1672 | "@babel/generator" "^7.7.2"
1673 | "@babel/plugin-syntax-typescript" "^7.7.2"
1674 | "@babel/traverse" "^7.7.2"
1675 | "@babel/types" "^7.3.3"
1676 | "@jest/expect-utils" "^28.1.3"
1677 | "@jest/transform" "^28.1.3"
1678 | "@jest/types" "^28.1.3"
1679 | "@types/babel__traverse" "^7.0.6"
1680 | "@types/prettier" "^2.1.5"
1681 | babel-preset-current-node-syntax "^1.0.0"
1682 | chalk "^4.0.0"
1683 | expect "^28.1.3"
1684 | graceful-fs "^4.2.9"
1685 | jest-diff "^28.1.3"
1686 | jest-get-type "^28.0.2"
1687 | jest-haste-map "^28.1.3"
1688 | jest-matcher-utils "^28.1.3"
1689 | jest-message-util "^28.1.3"
1690 | jest-util "^28.1.3"
1691 | natural-compare "^1.4.0"
1692 | pretty-format "^28.1.3"
1693 | semver "^7.3.5"
1694 |
1695 | jest-util@^28.1.3:
1696 | version "28.1.3"
1697 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0"
1698 | integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==
1699 | dependencies:
1700 | "@jest/types" "^28.1.3"
1701 | "@types/node" "*"
1702 | chalk "^4.0.0"
1703 | ci-info "^3.2.0"
1704 | graceful-fs "^4.2.9"
1705 | picomatch "^2.2.3"
1706 |
1707 | jest-validate@^28.1.3:
1708 | version "28.1.3"
1709 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df"
1710 | integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==
1711 | dependencies:
1712 | "@jest/types" "^28.1.3"
1713 | camelcase "^6.2.0"
1714 | chalk "^4.0.0"
1715 | jest-get-type "^28.0.2"
1716 | leven "^3.1.0"
1717 | pretty-format "^28.1.3"
1718 |
1719 | jest-watcher@^28.1.3:
1720 | version "28.1.3"
1721 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4"
1722 | integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==
1723 | dependencies:
1724 | "@jest/test-result" "^28.1.3"
1725 | "@jest/types" "^28.1.3"
1726 | "@types/node" "*"
1727 | ansi-escapes "^4.2.1"
1728 | chalk "^4.0.0"
1729 | emittery "^0.10.2"
1730 | jest-util "^28.1.3"
1731 | string-length "^4.0.1"
1732 |
1733 | jest-worker@^28.1.3:
1734 | version "28.1.3"
1735 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98"
1736 | integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==
1737 | dependencies:
1738 | "@types/node" "*"
1739 | merge-stream "^2.0.0"
1740 | supports-color "^8.0.0"
1741 |
1742 | jest@^28.1.3:
1743 | version "28.1.3"
1744 | resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b"
1745 | integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==
1746 | dependencies:
1747 | "@jest/core" "^28.1.3"
1748 | "@jest/types" "^28.1.3"
1749 | import-local "^3.0.2"
1750 | jest-cli "^28.1.3"
1751 |
1752 | js-tokens@^4.0.0:
1753 | version "4.0.0"
1754 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1755 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1756 |
1757 | js-yaml@^3.13.1:
1758 | version "3.14.1"
1759 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
1760 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
1761 | dependencies:
1762 | argparse "^1.0.7"
1763 | esprima "^4.0.0"
1764 |
1765 | jsbn@1.1.0:
1766 | version "1.1.0"
1767 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
1768 | integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
1769 |
1770 | jsesc@^3.0.2:
1771 | version "3.1.0"
1772 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
1773 | integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
1774 |
1775 | json-parse-even-better-errors@^2.3.0:
1776 | version "2.3.1"
1777 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
1778 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
1779 |
1780 | json5@^2.2.3:
1781 | version "2.2.3"
1782 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
1783 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
1784 |
1785 | kleur@^3.0.3:
1786 | version "3.0.3"
1787 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
1788 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
1789 |
1790 | leven@^3.1.0:
1791 | version "3.1.0"
1792 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
1793 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
1794 |
1795 | lines-and-columns@^1.1.6:
1796 | version "1.2.4"
1797 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
1798 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
1799 |
1800 | locate-path@^5.0.0:
1801 | version "5.0.0"
1802 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1803 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1804 | dependencies:
1805 | p-locate "^4.1.0"
1806 |
1807 | lru-cache@^5.1.1:
1808 | version "5.1.1"
1809 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
1810 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
1811 | dependencies:
1812 | yallist "^3.0.2"
1813 |
1814 | lru-cache@^7.14.1:
1815 | version "7.18.3"
1816 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
1817 | integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
1818 |
1819 | make-dir@^4.0.0:
1820 | version "4.0.0"
1821 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
1822 | integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==
1823 | dependencies:
1824 | semver "^7.5.3"
1825 |
1826 | makeerror@1.0.12:
1827 | version "1.0.12"
1828 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
1829 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
1830 | dependencies:
1831 | tmpl "1.0.5"
1832 |
1833 | merge-stream@^2.0.0:
1834 | version "2.0.0"
1835 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1836 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1837 |
1838 | micromatch@^4.0.4:
1839 | version "4.0.8"
1840 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
1841 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
1842 | dependencies:
1843 | braces "^3.0.3"
1844 | picomatch "^2.3.1"
1845 |
1846 | mimic-fn@^2.1.0:
1847 | version "2.1.0"
1848 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1849 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1850 |
1851 | minimatch@^3.0.4, minimatch@^3.1.1:
1852 | version "3.1.2"
1853 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1854 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1855 | dependencies:
1856 | brace-expansion "^1.1.7"
1857 |
1858 | mitt@^3.0.1:
1859 | version "3.0.1"
1860 | resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
1861 | integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
1862 |
1863 | ms@^2.1.3:
1864 | version "2.1.3"
1865 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1866 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1867 |
1868 | natural-compare@^1.4.0:
1869 | version "1.4.0"
1870 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1871 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
1872 |
1873 | netmask@^2.0.2:
1874 | version "2.0.2"
1875 | resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
1876 | integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
1877 |
1878 | node-int64@^0.4.0:
1879 | version "0.4.0"
1880 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
1881 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
1882 |
1883 | node-releases@^2.0.19:
1884 | version "2.0.19"
1885 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
1886 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
1887 |
1888 | normalize-path@^3.0.0:
1889 | version "3.0.0"
1890 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1891 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1892 |
1893 | npm-run-path@^4.0.1:
1894 | version "4.0.1"
1895 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1896 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
1897 | dependencies:
1898 | path-key "^3.0.0"
1899 |
1900 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
1901 | version "1.4.0"
1902 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1903 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1904 | dependencies:
1905 | wrappy "1"
1906 |
1907 | onetime@^5.1.2:
1908 | version "5.1.2"
1909 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1910 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1911 | dependencies:
1912 | mimic-fn "^2.1.0"
1913 |
1914 | p-limit@^2.2.0:
1915 | version "2.3.0"
1916 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1917 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1918 | dependencies:
1919 | p-try "^2.0.0"
1920 |
1921 | p-limit@^3.1.0:
1922 | version "3.1.0"
1923 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1924 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1925 | dependencies:
1926 | yocto-queue "^0.1.0"
1927 |
1928 | p-locate@^4.1.0:
1929 | version "4.1.0"
1930 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1931 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1932 | dependencies:
1933 | p-limit "^2.2.0"
1934 |
1935 | p-try@^2.0.0:
1936 | version "2.2.0"
1937 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1938 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1939 |
1940 | pac-proxy-agent@^7.1.0:
1941 | version "7.2.0"
1942 | resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df"
1943 | integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==
1944 | dependencies:
1945 | "@tootallnate/quickjs-emscripten" "^0.23.0"
1946 | agent-base "^7.1.2"
1947 | debug "^4.3.4"
1948 | get-uri "^6.0.1"
1949 | http-proxy-agent "^7.0.0"
1950 | https-proxy-agent "^7.0.6"
1951 | pac-resolver "^7.0.1"
1952 | socks-proxy-agent "^8.0.5"
1953 |
1954 | pac-resolver@^7.0.1:
1955 | version "7.0.1"
1956 | resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6"
1957 | integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==
1958 | dependencies:
1959 | degenerator "^5.0.0"
1960 | netmask "^2.0.2"
1961 |
1962 | parse-json@^5.2.0:
1963 | version "5.2.0"
1964 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
1965 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
1966 | dependencies:
1967 | "@babel/code-frame" "^7.0.0"
1968 | error-ex "^1.3.1"
1969 | json-parse-even-better-errors "^2.3.0"
1970 | lines-and-columns "^1.1.6"
1971 |
1972 | path-exists@^4.0.0:
1973 | version "4.0.0"
1974 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1975 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1976 |
1977 | path-is-absolute@^1.0.0:
1978 | version "1.0.1"
1979 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1980 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1981 |
1982 | path-key@^3.0.0, path-key@^3.1.0:
1983 | version "3.1.1"
1984 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1985 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1986 |
1987 | path-parse@^1.0.7:
1988 | version "1.0.7"
1989 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1990 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1991 |
1992 | pend@~1.2.0:
1993 | version "1.2.0"
1994 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
1995 | integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
1996 |
1997 | picocolors@^1.0.0, picocolors@^1.1.1:
1998 | version "1.1.1"
1999 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
2000 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
2001 |
2002 | picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1:
2003 | version "2.3.1"
2004 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
2005 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
2006 |
2007 | pirates@^4.0.4:
2008 | version "4.0.7"
2009 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22"
2010 | integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==
2011 |
2012 | pkg-dir@^4.2.0:
2013 | version "4.2.0"
2014 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
2015 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
2016 | dependencies:
2017 | find-up "^4.0.0"
2018 |
2019 | pretty-format@^28.0.0, pretty-format@^28.1.3:
2020 | version "28.1.3"
2021 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5"
2022 | integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==
2023 | dependencies:
2024 | "@jest/schemas" "^28.1.3"
2025 | ansi-regex "^5.0.1"
2026 | ansi-styles "^5.0.0"
2027 | react-is "^18.0.0"
2028 |
2029 | progress@^2.0.3:
2030 | version "2.0.3"
2031 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
2032 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
2033 |
2034 | prompts@^2.0.1:
2035 | version "2.4.2"
2036 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
2037 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
2038 | dependencies:
2039 | kleur "^3.0.3"
2040 | sisteransi "^1.0.5"
2041 |
2042 | proxy-agent@^6.5.0:
2043 | version "6.5.0"
2044 | resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d"
2045 | integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==
2046 | dependencies:
2047 | agent-base "^7.1.2"
2048 | debug "^4.3.4"
2049 | http-proxy-agent "^7.0.1"
2050 | https-proxy-agent "^7.0.6"
2051 | lru-cache "^7.14.1"
2052 | pac-proxy-agent "^7.1.0"
2053 | proxy-from-env "^1.1.0"
2054 | socks-proxy-agent "^8.0.5"
2055 |
2056 | proxy-from-env@^1.1.0:
2057 | version "1.1.0"
2058 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
2059 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
2060 |
2061 | pump@^3.0.0:
2062 | version "3.0.2"
2063 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8"
2064 | integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
2065 | dependencies:
2066 | end-of-stream "^1.1.0"
2067 | once "^1.3.1"
2068 |
2069 | puppeteer-core@^24.4.0:
2070 | version "24.4.0"
2071 | resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-24.4.0.tgz#a301c58344fe939b487704593681ea9f913fe6f8"
2072 | integrity sha512-eFw66gCnWo0X8Hyf9KxxJtms7a61NJVMiSaWfItsFPzFBsjsWdmcNlBdsA1WVwln6neoHhsG+uTVesKmTREn/g==
2073 | dependencies:
2074 | "@puppeteer/browsers" "2.8.0"
2075 | chromium-bidi "2.1.2"
2076 | debug "^4.4.0"
2077 | devtools-protocol "0.0.1413902"
2078 | typed-query-selector "^2.12.0"
2079 | ws "^8.18.1"
2080 |
2081 | react-is@^18.0.0:
2082 | version "18.3.1"
2083 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
2084 | integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
2085 |
2086 | require-directory@^2.1.1:
2087 | version "2.1.1"
2088 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2089 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
2090 |
2091 | resolve-cwd@^3.0.0:
2092 | version "3.0.0"
2093 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
2094 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
2095 | dependencies:
2096 | resolve-from "^5.0.0"
2097 |
2098 | resolve-from@^5.0.0:
2099 | version "5.0.0"
2100 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
2101 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
2102 |
2103 | resolve.exports@^1.1.0:
2104 | version "1.1.1"
2105 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999"
2106 | integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==
2107 |
2108 | resolve@^1.20.0:
2109 | version "1.22.10"
2110 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
2111 | integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
2112 | dependencies:
2113 | is-core-module "^2.16.0"
2114 | path-parse "^1.0.7"
2115 | supports-preserve-symlinks-flag "^1.0.0"
2116 |
2117 | rimraf@^3.0.0:
2118 | version "3.0.2"
2119 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
2120 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
2121 | dependencies:
2122 | glob "^7.1.3"
2123 |
2124 | semver@^6.3.0, semver@^6.3.1:
2125 | version "6.3.1"
2126 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
2127 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
2128 |
2129 | semver@^7.3.5, semver@^7.5.3, semver@^7.7.1:
2130 | version "7.7.1"
2131 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
2132 | integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
2133 |
2134 | shebang-command@^2.0.0:
2135 | version "2.0.0"
2136 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2137 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2138 | dependencies:
2139 | shebang-regex "^3.0.0"
2140 |
2141 | shebang-regex@^3.0.0:
2142 | version "3.0.0"
2143 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2144 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2145 |
2146 | signal-exit@^3.0.3, signal-exit@^3.0.7:
2147 | version "3.0.7"
2148 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
2149 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
2150 |
2151 | sisteransi@^1.0.5:
2152 | version "1.0.5"
2153 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
2154 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
2155 |
2156 | slash@^3.0.0:
2157 | version "3.0.0"
2158 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
2159 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
2160 |
2161 | smart-buffer@^4.2.0:
2162 | version "4.2.0"
2163 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
2164 | integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
2165 |
2166 | socks-proxy-agent@^8.0.5:
2167 | version "8.0.5"
2168 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee"
2169 | integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==
2170 | dependencies:
2171 | agent-base "^7.1.2"
2172 | debug "^4.3.4"
2173 | socks "^2.8.3"
2174 |
2175 | socks@^2.8.3:
2176 | version "2.8.4"
2177 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc"
2178 | integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==
2179 | dependencies:
2180 | ip-address "^9.0.5"
2181 | smart-buffer "^4.2.0"
2182 |
2183 | source-map-support@0.5.13:
2184 | version "0.5.13"
2185 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
2186 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
2187 | dependencies:
2188 | buffer-from "^1.0.0"
2189 | source-map "^0.6.0"
2190 |
2191 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
2192 | version "0.6.1"
2193 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2194 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2195 |
2196 | sprintf-js@^1.1.3:
2197 | version "1.1.3"
2198 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
2199 | integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
2200 |
2201 | sprintf-js@~1.0.2:
2202 | version "1.0.3"
2203 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
2204 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
2205 |
2206 | stack-utils@^2.0.3:
2207 | version "2.0.6"
2208 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
2209 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
2210 | dependencies:
2211 | escape-string-regexp "^2.0.0"
2212 |
2213 | streamx@^2.15.0, streamx@^2.21.0:
2214 | version "2.22.0"
2215 | resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.22.0.tgz#cd7b5e57c95aaef0ff9b2aef7905afa62ec6e4a7"
2216 | integrity sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==
2217 | dependencies:
2218 | fast-fifo "^1.3.2"
2219 | text-decoder "^1.1.0"
2220 | optionalDependencies:
2221 | bare-events "^2.2.0"
2222 |
2223 | string-length@^4.0.1:
2224 | version "4.0.2"
2225 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
2226 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
2227 | dependencies:
2228 | char-regex "^1.0.2"
2229 | strip-ansi "^6.0.0"
2230 |
2231 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
2232 | version "4.2.3"
2233 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2234 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2235 | dependencies:
2236 | emoji-regex "^8.0.0"
2237 | is-fullwidth-code-point "^3.0.0"
2238 | strip-ansi "^6.0.1"
2239 |
2240 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
2241 | version "6.0.1"
2242 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2243 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2244 | dependencies:
2245 | ansi-regex "^5.0.1"
2246 |
2247 | strip-bom@^4.0.0:
2248 | version "4.0.0"
2249 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
2250 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
2251 |
2252 | strip-final-newline@^2.0.0:
2253 | version "2.0.0"
2254 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2255 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2256 |
2257 | strip-json-comments@^3.1.1:
2258 | version "3.1.1"
2259 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2260 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2261 |
2262 | supports-color@^7.0.0, supports-color@^7.1.0:
2263 | version "7.2.0"
2264 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2265 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2266 | dependencies:
2267 | has-flag "^4.0.0"
2268 |
2269 | supports-color@^8.0.0:
2270 | version "8.1.1"
2271 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2272 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2273 | dependencies:
2274 | has-flag "^4.0.0"
2275 |
2276 | supports-hyperlinks@^2.0.0:
2277 | version "2.3.0"
2278 | resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
2279 | integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
2280 | dependencies:
2281 | has-flag "^4.0.0"
2282 | supports-color "^7.0.0"
2283 |
2284 | supports-preserve-symlinks-flag@^1.0.0:
2285 | version "1.0.0"
2286 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
2287 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
2288 |
2289 | tar-fs@^3.0.8:
2290 | version "3.0.8"
2291 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.8.tgz#8f62012537d5ff89252d01e48690dc4ebed33ab7"
2292 | integrity sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==
2293 | dependencies:
2294 | pump "^3.0.0"
2295 | tar-stream "^3.1.5"
2296 | optionalDependencies:
2297 | bare-fs "^4.0.1"
2298 | bare-path "^3.0.0"
2299 |
2300 | tar-stream@^3.1.5:
2301 | version "3.1.7"
2302 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b"
2303 | integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==
2304 | dependencies:
2305 | b4a "^1.6.4"
2306 | fast-fifo "^1.2.0"
2307 | streamx "^2.15.0"
2308 |
2309 | terminal-link@^2.0.0:
2310 | version "2.1.1"
2311 | resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
2312 | integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
2313 | dependencies:
2314 | ansi-escapes "^4.2.1"
2315 | supports-hyperlinks "^2.0.0"
2316 |
2317 | test-exclude@^6.0.0:
2318 | version "6.0.0"
2319 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
2320 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
2321 | dependencies:
2322 | "@istanbuljs/schema" "^0.1.2"
2323 | glob "^7.1.4"
2324 | minimatch "^3.0.4"
2325 |
2326 | text-decoder@^1.1.0:
2327 | version "1.2.3"
2328 | resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.3.tgz#b19da364d981b2326d5f43099c310cc80d770c65"
2329 | integrity sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==
2330 | dependencies:
2331 | b4a "^1.6.4"
2332 |
2333 | tmpl@1.0.5:
2334 | version "1.0.5"
2335 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
2336 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
2337 |
2338 | to-regex-range@^5.0.1:
2339 | version "5.0.1"
2340 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2341 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2342 | dependencies:
2343 | is-number "^7.0.0"
2344 |
2345 | tslib@^2.0.1:
2346 | version "2.8.1"
2347 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
2348 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
2349 |
2350 | type-detect@4.0.8:
2351 | version "4.0.8"
2352 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
2353 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
2354 |
2355 | type-fest@^0.21.3:
2356 | version "0.21.3"
2357 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
2358 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
2359 |
2360 | typed-query-selector@^2.12.0:
2361 | version "2.12.0"
2362 | resolved "https://registry.yarnpkg.com/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2"
2363 | integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==
2364 |
2365 | undici-types@~6.20.0:
2366 | version "6.20.0"
2367 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
2368 | integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
2369 |
2370 | update-browserslist-db@^1.1.1:
2371 | version "1.1.3"
2372 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
2373 | integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
2374 | dependencies:
2375 | escalade "^3.2.0"
2376 | picocolors "^1.1.1"
2377 |
2378 | v8-to-istanbul@^9.0.1:
2379 | version "9.3.0"
2380 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175"
2381 | integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==
2382 | dependencies:
2383 | "@jridgewell/trace-mapping" "^0.3.12"
2384 | "@types/istanbul-lib-coverage" "^2.0.1"
2385 | convert-source-map "^2.0.0"
2386 |
2387 | walker@^1.0.8:
2388 | version "1.0.8"
2389 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
2390 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
2391 | dependencies:
2392 | makeerror "1.0.12"
2393 |
2394 | which@^2.0.1:
2395 | version "2.0.2"
2396 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2397 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2398 | dependencies:
2399 | isexe "^2.0.0"
2400 |
2401 | wrap-ansi@^7.0.0:
2402 | version "7.0.0"
2403 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
2404 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
2405 | dependencies:
2406 | ansi-styles "^4.0.0"
2407 | string-width "^4.1.0"
2408 | strip-ansi "^6.0.0"
2409 |
2410 | wrappy@1:
2411 | version "1.0.2"
2412 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2413 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
2414 |
2415 | write-file-atomic@^4.0.1:
2416 | version "4.0.2"
2417 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
2418 | integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
2419 | dependencies:
2420 | imurmurhash "^0.1.4"
2421 | signal-exit "^3.0.7"
2422 |
2423 | ws@^8.18.1:
2424 | version "8.18.1"
2425 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb"
2426 | integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==
2427 |
2428 | y18n@^5.0.5:
2429 | version "5.0.8"
2430 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
2431 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
2432 |
2433 | yallist@^3.0.2:
2434 | version "3.1.1"
2435 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
2436 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
2437 |
2438 | yargs-parser@^21.1.1:
2439 | version "21.1.1"
2440 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
2441 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
2442 |
2443 | yargs@^17.3.1, yargs@^17.7.2:
2444 | version "17.7.2"
2445 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
2446 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
2447 | dependencies:
2448 | cliui "^8.0.1"
2449 | escalade "^3.1.1"
2450 | get-caller-file "^2.0.5"
2451 | require-directory "^2.1.1"
2452 | string-width "^4.2.3"
2453 | y18n "^5.0.5"
2454 | yargs-parser "^21.1.1"
2455 |
2456 | yauzl@^2.10.0:
2457 | version "2.10.0"
2458 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
2459 | integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
2460 | dependencies:
2461 | buffer-crc32 "~0.2.3"
2462 | fd-slicer "~1.1.0"
2463 |
2464 | yocto-queue@^0.1.0:
2465 | version "0.1.0"
2466 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2467 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2468 |
2469 | zod@^3.24.1:
2470 | version "3.24.2"
2471 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3"
2472 | integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==
2473 |
--------------------------------------------------------------------------------
/standalone/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 |
--------------------------------------------------------------------------------
/standalone/.env.example:
--------------------------------------------------------------------------------
1 | TIMEOUT=20
2 | CONCURRENCY=2
3 | MAX_QUEUE_LENGTH=6
4 | SHOW_RESULTS=true
5 | SECRET=
6 |
--------------------------------------------------------------------------------
/standalone/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:18-slim
2 | RUN apt-get update && \
3 | apt-get install -y \
4 | fonts-ipafont-gothic \
5 | fonts-wqy-zenhei \
6 | fonts-thai-tlwg \
7 | fonts-kacst \
8 | curl \
9 | dumb-init \
10 | chromium
11 | RUN mkdir -p /usr/share/fonts/emoji \
12 | && curl --location --silent --show-error -o \
13 | /usr/share/fonts/emoji/emojione-android.ttf \
14 | https://github.com/emojione/emojione-assets/releases/download/3.1.2/emojione-android.ttf \
15 | && chmod -R +rx /usr/share/fonts/ \
16 | && fc-cache -fv
17 | RUN rm /bin/sh && ln -s /bin/bash /bin/sh
18 | RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
19 | && mkdir -p /home/pptruser/Downloads \
20 | && chown -R pptruser:pptruser /home/pptruser
21 | RUN mkdir /app
22 | COPY package.json yarn.lock app/
23 | WORKDIR /app
24 | RUN yarn
25 | ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
26 | ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
27 | COPY src src
28 | RUN chown -R pptruser:pptruser /app
29 | USER pptruser
30 | ENTRYPOINT ["/usr/bin/dumb-init", "--"]
31 | CMD ["yarn", "start"]
32 |
--------------------------------------------------------------------------------
/standalone/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "capture-website-rest",
3 | "version": "1.0.0",
4 | "description": "",
5 | "type": "module",
6 | "exports": "./src/index.js",
7 | "scripts": {
8 | "start": "node ./src/index.js",
9 | "dev": "nodemon src/index.js",
10 | "test": "NODE_OPTIONS=--experimental-vm-modules jest"
11 | },
12 | "author": "",
13 | "license": "ISC",
14 | "dependencies": {
15 | "capture-website": "^4.2.0",
16 | "dotenv": "^16.4.7",
17 | "express": "^4.21.2",
18 | "p-queue": "^7.3.0"
19 | },
20 | "devDependencies": {
21 | "@jest/globals": "^28.1.3",
22 | "@types/jest": "^28.1.6",
23 | "@types/node": "^22.10.6",
24 | "@types/express": "^5.0.1",
25 | "jest": "^28.1.3",
26 | "nodemon": "^3.1.9"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/standalone/src/config.js:
--------------------------------------------------------------------------------
1 | export const getDefaultTimeoutSeconds = () => parseInt(process.env.TIMEOUT) || 20;
2 | export const getConcurrency = () => parseInt(process.env.CONCURRENCY) || 2;
3 | export const getMaxQueueLength = () => parseInt(process.env.MAX_QUEUE_LENGTH) || 6;
4 | export const getShowResults = () => process.env.SHOW_RESULTS || 'false';
5 | export const getSecret = () => process.env.SECRET;
6 |
--------------------------------------------------------------------------------
/standalone/src/helpers.js:
--------------------------------------------------------------------------------
1 | import captureWebsite from 'capture-website';
2 | import puppeteer from 'puppeteer';
3 | import PQueue from "p-queue";
4 | import {getConcurrency, getDefaultTimeoutSeconds, getSecret, getShowResults} from "./config.js";
5 | import 'dotenv/config';
6 |
7 | export const queue = new PQueue({concurrency: getConcurrency()});
8 |
9 | const latest = {
10 | capture: undefined,
11 | url: undefined,
12 | date: undefined
13 | };
14 |
15 | export function showResults() {
16 | const showResults = getShowResults();
17 | return showResults && showResults === 'true';
18 | }
19 |
20 | export async function doCaptureWork(queryParameters) {
21 | latest.date = new Date();
22 | const options = getOptions(queryParameters);
23 | const url = options.url;
24 | latest.url = url;
25 | console.info('Capturing URL: ' + url + ' ...');
26 | if (options.plainPuppeteer === 'true') {
27 | return await tryWithPuppeteer(url, options);
28 | } else {
29 | try {
30 | const array = await captureWebsite.buffer(url, options);
31 | const buffer = Buffer.from(array);
32 | console.info(`Successfully captured URL: ${url}`);
33 | latest.capture = buffer;
34 | return {
35 | statusCode: 200,
36 | responseType: getResponseType(options),
37 | buffer: buffer
38 | }
39 | } catch (e) {
40 | console.error(e);
41 | console.info(`Capture website failed for URL: ${url}`);
42 | console.info('Retrying with plain Puppeteer...');
43 | return await tryWithPuppeteer(url, options);
44 | }
45 | }
46 | }
47 |
48 | export function allowedRequest(queryParameters) {
49 | const secret = getSecret();
50 | if (!secret) {
51 | return true;
52 | }
53 | if (!queryParameters || !queryParameters.secret) {
54 | return false;
55 | }
56 | return queryParameters.secret === secret;
57 | }
58 |
59 | export function getOptions(queryParameters) {
60 | const result = parseQueryParameters(queryParameters);
61 | result.launchOptions = {
62 | // headless: false,
63 | args: [
64 | '--no-sandbox',
65 | '--disable-setuid-sandbox',
66 | '--hide-scrollbars',
67 | '--mute-audio',
68 | '--use-fake-ui-for-media-stream' // Pages that ask for webcam/microphone access
69 | ]
70 | };
71 | if (!result.timeout) {
72 | result.timeout = getDefaultTimeoutSeconds();
73 | }
74 | fieldValuesToNumber(result, 'width', 'height', 'quality', 'scaleFactor', 'timeout', 'delay', 'offset');
75 | return result;
76 | }
77 |
78 | function parseQueryParameters(queryParameters) {
79 | return Object.keys(queryParameters).reduce((params, key) => {
80 | const q = queryParameters[key];
81 | let value;
82 | try {
83 | value = JSON.parse(q);
84 | } catch {
85 | value = q
86 | }
87 | return {
88 | ...params,
89 | [key]: value
90 | }
91 | }, queryParameters || {});
92 | }
93 |
94 | async function tryWithPuppeteer(url, options) {
95 | try {
96 | const buffer = await takePlainPuppeteerScreenshot(url, options);
97 | console.info(`Successfully captured URL: ${url}`);
98 | latest.capture = buffer;
99 | return {
100 | statusCode: 200,
101 | responseType: getResponseType(options),
102 | buffer: buffer
103 | }
104 | } catch (e) {
105 | console.log('Capture failed due to: ' + e.message);
106 | return {
107 | statusCode: 500,
108 | message: e.message
109 | }
110 | }
111 | }
112 |
113 | async function takePlainPuppeteerScreenshot(url, options) {
114 | options.encoding = 'binary';
115 | options.wait_before_screenshot_ms = options.wait_before_screenshot_ms || 300;
116 | let browser;
117 | let page;
118 | let buffer;
119 | try {
120 | browser = await puppeteer.launch(options.launchOptions);
121 | page = await browser.newPage();
122 | await page.goto(url);
123 | await setViewport(page, options);
124 | await new Promise(r => setTimeout(r, options.wait_before_screenshot_ms));
125 | const array = await page.screenshot();
126 | buffer = Buffer.from(array);
127 | } finally {
128 | await browser.close();
129 | }
130 | return buffer;
131 | }
132 |
133 | async function setViewport(page, options) {
134 | if (options.width && options.height) {
135 | const viewportOptions = {
136 | width: options.width,
137 | height: options.height,
138 | deviceScaleFactor: options.scaleFactor ? options.scaleFactor : 1
139 | };
140 | await page.setViewport(viewportOptions);
141 | }
142 | }
143 |
144 | export function getResponseType(queryParams) {
145 | if (queryParams.type && queryParams.type === 'jpeg') {
146 | return 'jpg';
147 | }
148 | return 'png';
149 | }
150 |
151 | export function fieldValuesToNumber(obj, ...fields) {
152 | fields.forEach(f => {
153 | if (obj[f]) {
154 | const val = Number(obj[f]);
155 | obj[f] = Number.isNaN(val) ? obj[f] : val;
156 | }
157 | });
158 | }
159 |
160 | export function latestCapturePage(req, res) {
161 | let page = '';
162 | page += '\n';
163 | page += '\n';
164 | page += 'Latest capture
';
165 | if (latest.capture) {
166 | const latestEndpoint = '/latest';
167 | page += 'Date: ' + latest.date + '
\n';
168 | page += `
\n`;
169 | } else {
170 | page += 'No capture found!
\n';
171 | }
172 | page += '\n';
173 | page += '\n';
174 | res.send(page);
175 | }
176 |
177 | export function latestCapture(req, res) {
178 | res.type('png');
179 | res.send(latest.capture);
180 | }
181 |
--------------------------------------------------------------------------------
/standalone/src/helpers.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | allowedRequest,
3 | doCaptureWork,
4 | fieldValuesToNumber,
5 | getOptions,
6 | getResponseType,
7 | latestCapturePage,
8 | showResults
9 | } from "./helpers";
10 | import {expect, jest} from '@jest/globals'
11 |
12 |
13 | test('show results default off', () => {
14 | expect(showResults()).toBeFalsy();
15 | });
16 |
17 | test('show results on with environment variable', () => {
18 | process.env.SHOW_RESULTS = 'true';
19 |
20 | expect(showResults()).toBeTruthy();
21 |
22 | process.env.SHOW_RESULTS = undefined;
23 | });
24 |
25 | test('generate homepage', () => {
26 | const res = {send: jest.fn()};
27 |
28 | latestCapturePage({}, res);
29 |
30 | expect(res.send).toBeCalledTimes(1);
31 | });
32 |
33 | test('all requests are allowed by default', () => {
34 | expect(allowedRequest({})).toBeTruthy();
35 | });
36 |
37 | test('all requests are rejected if secret is set and request contains no secret value', () => {
38 | process.env.SECRET = 'hello';
39 |
40 | expect(allowedRequest({})).toBeFalsy();
41 | expect(allowedRequest({query: {}})).toBeFalsy();
42 |
43 | delete process.env.SECRET;
44 | });
45 |
46 | test('all requests are allowed when secrets match', () => {
47 | process.env.SECRET = 'hello';
48 |
49 | expect(allowedRequest({secret: 'world'})).toBeFalsy();
50 | expect(allowedRequest({secret: 'hello'})).toBeTruthy();
51 |
52 | delete process.env.SECRET;
53 | });
54 |
55 | test('field values to number', () => {
56 | const obj = {aap: '5', noot: '6', mies: 'seven'};
57 |
58 | fieldValuesToNumber(obj, 'aap');
59 |
60 | expect(typeof obj.aap).toBe('number');
61 | expect(typeof obj.noot).toBe('string');
62 | expect(typeof obj.mies).toBe('string');
63 | });
64 |
65 | test('field values to number, multiple fields', () => {
66 | const obj = {aap: '5', noot: '6', mies: 'seven'};
67 |
68 | fieldValuesToNumber(obj, 'aap', 'noot');
69 |
70 | expect(typeof obj.aap).toBe('number');
71 | expect(typeof obj.noot).toBe('number');
72 | expect(typeof obj.mies).toBe('string');
73 | });
74 |
75 | test('field values to number, no number value', () => {
76 | const obj = {aap: '5', noot: '6', mies: 'seven'};
77 |
78 | fieldValuesToNumber(obj, 'mies');
79 |
80 | expect(typeof obj.mies).toBe('string');
81 | expect(obj.mies).toBe('seven');
82 | });
83 |
84 | test('get response type', () => {
85 | expect(getResponseType({})).toBe('png');
86 | expect(getResponseType({type: 'jpeg'})).toBe('jpg');
87 | expect(getResponseType({type: 'png'})).toBe('png');
88 | });
89 |
90 | test('do real capture', async () => {
91 | const queryParameters = {url: 'https://robvanderleek.github.io'};
92 | let resultType = undefined;
93 | let resultBuffer = undefined;
94 |
95 | function type(t) {
96 | resultType = t;
97 |
98 | function send(buffer) {
99 | resultBuffer = buffer;
100 | }
101 |
102 | return {send: send};
103 | }
104 |
105 | const res = {type: type};
106 |
107 | const result = await doCaptureWork(queryParameters);
108 | res.type(result.responseType).send(result.buffer);
109 |
110 | expect(resultType).toBe('png');
111 | expect(resultBuffer).toBeDefined();
112 | }, 10000);
113 |
114 | test('get options', () => {
115 | const result = getOptions({
116 | 'url': 'https://amazon.com',
117 | 'width': '650',
118 | 'height': '350',
119 | });
120 | expect(result.width).toBe(650);
121 | expect(result.height).toBe(350);
122 | })
--------------------------------------------------------------------------------
/standalone/src/index.js:
--------------------------------------------------------------------------------
1 | import express from 'express';
2 | import {doCaptureWork, latestCapture, latestCapturePage, queue, showResults, allowedRequest} from "./helpers.js";
3 | import {getConcurrency, getMaxQueueLength} from "./config.js";
4 |
5 | const port = process.env.PORT || 8080;
6 | const app = express();
7 |
8 | async function capture(req, res) {
9 | if (!allowedRequest(req.query)) {
10 | res.status(403).send('Go away please');
11 | return;
12 | }
13 | if (queue.size >= getMaxQueueLength()) {
14 | res.status(429).send('Maximum queue size reached, try again later');
15 | return;
16 | }
17 | if (queue.pending >= getConcurrency()) {
18 | console.log('Queueing request...');
19 | }
20 | await queue.add(async () => {
21 | const result = await doCaptureWork(req.query);
22 | if (result.statusCode === 200) {
23 | res.status(result.statusCode).type(result.responseType).send(result.buffer);
24 | } else {
25 | res.status(result.statusCode).send(result.message);
26 | }
27 | });
28 | }
29 |
30 | app.get('/capture', capture);
31 |
32 | if (showResults()) {
33 | app.get('/', latestCapturePage);
34 | app.get('/latest', latestCapture);
35 | }
36 |
37 | app.listen(port, () => console.log(`listening at port ${port}...`));
--------------------------------------------------------------------------------
/standalone/test/loadtest.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | curl 'localhost:8080/capture?url=https://www.reddit.com' -o 1.png -s &
3 | sleep 1
4 | curl 'localhost:8080/capture?url=https://www.twitter.com' -o 2.png -s &
5 | sleep 1
6 | curl 'localhost:8080/capture?url=https://www.youtube.com' -o 3.png -s &
7 | sleep 1
8 | curl 'localhost:8080/capture?url=https://www.reddit.com' -o 4.png -s &
9 | sleep 1
10 | curl 'localhost:8080/capture?url=https://www.twitter.com' -o 5.png -s &
11 | sleep 1
12 | curl 'localhost:8080/capture?url=https://www.youtube.com' -o 6.png -s &
13 | sleep 1
14 | curl 'localhost:8080/capture?url=https://www.reddit.com' -o 7.png -s &
15 | sleep 1
16 | curl 'localhost:8080/capture?url=https://www.twitter.com' -o 8.png -s &
17 | sleep 1
18 | curl 'localhost:8080/capture?url=https://www.youtube.com' -o 9.png -s &
19 | sleep 1
20 | curl 'localhost:8080/capture?url=https://www.reddit.com' -o 10.png -s &
21 | sleep 1
22 | curl 'localhost:8080/capture?url=https://www.twitter.com' -o 11.png -s &
23 | sleep 1
24 | curl 'localhost:8080/capture?url=https://www.youtube.com' -o 12.png -s &
25 | sleep 1
26 | curl 'localhost:8080/capture?url=https://www.reddit.com' -o 13.png -s &
27 | sleep 1
28 | curl 'localhost:8080/capture?url=https://www.twitter.com' -o 14.png -s &
29 | sleep 1
30 | curl 'localhost:8080/capture?url=https://www.youtube.com' -o 15.png -s &
31 |
--------------------------------------------------------------------------------
/static/logo_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robvanderleek/capture-website-api/7d1b8e2c0e5cfadc6f5d079debaa386c66824656/static/logo_256x256.png
--------------------------------------------------------------------------------
/static/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robvanderleek/capture-website-api/7d1b8e2c0e5cfadc6f5d079debaa386c66824656/static/screenshot.png
--------------------------------------------------------------------------------