├── .eslintignore
├── .eslintrc
├── .github
└── workflows
│ ├── checks.yml
│ ├── issue-auto-assign.yml
│ └── release.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── CODEOWNERS
├── LICENSE
├── README.md
├── package.json
├── src
├── index.js
├── junit.js
└── text.js
└── yarn.lock
/.eslintignore:
--------------------------------------------------------------------------------
1 | .cache/
2 | public/
3 | node_modules/
4 | build/
5 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parserOptions": {
3 | "ecmaFeatures": {
4 | "jsx": true
5 | },
6 | "ecmaVersion": 2020,
7 | "sourceType": "module"
8 | },
9 | "extends": ["eslint:recommended"],
10 | "plugins": ["prettier"],
11 | "env": {
12 | "browser": true,
13 | "node": true
14 | },
15 | "rules": {
16 | "prettier/prettier": ["error"],
17 | "arrow-body-style": "warn",
18 | "camelcase": 0,
19 | "object-curly-newline": 0,
20 | "operator-linebreak": 0,
21 | "no-shadow": 0,
22 | "max-len": [2, 120],
23 | "no-underscore-dangle": "off"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/.github/workflows/checks.yml:
--------------------------------------------------------------------------------
1 | name: Lint, Check Build
2 |
3 | on:
4 | push:
5 | branches: [main]
6 | pull_request:
7 | branches: [main]
8 |
9 | jobs:
10 | checks:
11 | runs-on: ubuntu-latest
12 | permissions:
13 | contents: read
14 | steps:
15 | - uses: actions/checkout@v4
16 | with:
17 | persist-credentials: false
18 | - name: Use Node.js
19 | uses: actions/setup-node@v4
20 | with:
21 | node-version: '18.x'
22 | - name: Dependencies
23 | run: yarn
24 | - name: Lint Code
25 | run: yarn lint
26 | - name: Check build & archive build
27 | run: yarn build && tar -zcf build.tar.gz build
28 | - name: Created build artifact
29 | uses: actions/upload-artifact@v4
30 | with:
31 | name: build
32 | if-no-files-found: error
33 | path: build.tar.gz
34 | retention-days: 1
35 |
--------------------------------------------------------------------------------
/.github/workflows/issue-auto-assign.yml:
--------------------------------------------------------------------------------
1 | name: "Auto assign maintainer to issue"
2 | on:
3 | issues:
4 | types: [opened]
5 |
6 | permissions:
7 | issues: write
8 |
9 | jobs:
10 | assign-maintainer:
11 | uses: grafana/k6/.github/workflows/issue-auto-assign.yml@master
12 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | tags:
6 | - v*
7 |
8 | jobs:
9 | checks:
10 | runs-on: ubuntu-latest
11 | if: startsWith(github.ref, 'refs/tags/v')
12 | permissions:
13 | contents: write
14 | steps:
15 | - uses: actions/checkout@v4
16 | with:
17 | persist-credentials: false
18 | - name: Use Node.js
19 | uses: actions/setup-node@v4
20 | with:
21 | node-version: '18.x'
22 | - name: Dependencies
23 | run: yarn
24 | - name: Check build & archive build
25 | run: yarn build && tar -zcf build.tar.gz build
26 | - name: Create Release & Upload Asset
27 | env:
28 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29 | run: |
30 | set -x
31 | VERSION="${GITHUB_REF##*/}"
32 | gh release create "$VERSION" build.tar.gz --target "$GITHUB_SHA" --title "Release $VERSION"
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | .cache/
2 | public/
3 | node_modules/
4 | build/
5 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
5 |
--------------------------------------------------------------------------------
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @grafana/k6-core
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # k6-jslib-summary
2 |
3 | This repository contains source code of the functions that can be used to generate different end-of-test summary reports when used in the `handleSummary()` callback: [https://k6.io/docs/results-visualization/end-of-test-summary](https://k6.io/docs/results-visualization/end-of-test-summary/).
4 |
5 | ## Release
6 |
7 | Release happens automatically with the tag push to the `main` branch. The tag should be in the format of `vX.Y.Z`.
8 |
9 | The produced artifacts are build published as artifact and will be hosted in the [https://jslib.k6.io](https://jslib.k6.io/).
10 |
11 | To add a new version to the https://jslib.k6.io/ please follow instructions from the https://github.com/grafana/jslib.k6.io.
12 |
13 | ## Contributing
14 |
15 | ### Building
16 |
17 | To make a local build please use `yarn build` command.
18 |
19 | ### Linting
20 |
21 | To run a linter please execute the following command:
22 |
23 | ```bash
24 | yarn lint
25 | ```
26 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "k6-jslib-summary",
3 | "repository": "https://github.com/grafana/k6-jslib-summary",
4 | "version": "0.0.5",
5 | "description": "Creates a summary of the k6 JS libraries used in a test runs.",
6 | "devDependencies": {
7 | "esbuild": "^0.14.51",
8 | "eslint": "^8.20.0",
9 | "eslint-config-prettier": "^8.5.0",
10 | "eslint-plugin-prettier": "^4.2.1",
11 | "prettier": "^2.7.1"
12 | },
13 | "engines": {},
14 | "scripts": {
15 | "lint": "eslint --max-warnings 0 src",
16 | "fix": "eslint --fix src",
17 | "build": "esbuild ./src/index.js --bundle --sourcemap --minify --format=cjs --legal-comments=none --outfile=./build/index.js"
18 | },
19 | "keywords": [
20 | "k6"
21 | ],
22 | "author": "grafana/k6 team",
23 | "license": "Apache-2.0"
24 | }
25 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | // this is the entry point for the library
2 | // it exports all the functions that are available to the user
3 | // it uses also for the bundling and minifying
4 | // (see package.json's "build" script)
5 | export { jUnit } from './junit.js';
6 | export { humanizeValue, textSummary } from './text.js';
7 |
--------------------------------------------------------------------------------
/src/junit.js:
--------------------------------------------------------------------------------
1 | const replacements = {
2 | '&': '&',
3 | '<': '<',
4 | '>': '>',
5 | "'": ''',
6 | '"': '"',
7 | };
8 |
9 | function escapeHTML(str) {
10 | return str.replace(/[&<>'"]/g, (char) => replacements[char]);
11 | }
12 |
13 | function generateJUnitXML(data, options) {
14 | const name =
15 | options && options.name ? escapeHTML(options.name) : 'k6 thresholds';
16 | const classname =
17 | options && options.classname
18 | ? escapeHTML(options.classname)
19 | : 'Unnamed folder';
20 | let failures = 0;
21 | let cases = [];
22 |
23 | Object.entries(data.metrics).forEach(([metricName, metric]) => {
24 | if (!metric.thresholds) {
25 | return;
26 | }
27 | Object.entries(metric.thresholds).forEach(([thresholdName, threshold]) => {
28 | const testcaseName = `${escapeHTML(metricName)} - ${escapeHTML(
29 | thresholdName,
30 | )}`;
31 |
32 | if (threshold.ok) {
33 | cases.push(
34 | ``,
35 | );
36 | } else {
37 | failures++;
38 | const failureMessage =
39 | `${metric.type} threshold failed: ` +
40 | Object.entries(metric.values)
41 | .map(([key, value]) => `${key} value: ${value}`)
42 | .join(', ');
43 |
44 | cases.push(
45 | ``,
48 | );
49 | }
50 | });
51 | });
52 |
53 | return `
54 |
55 |
56 | ${cases.join('\n')}
57 |
58 | `;
59 | }
60 |
61 | exports.jUnit = generateJUnitXML;
62 |
--------------------------------------------------------------------------------
/src/text.js:
--------------------------------------------------------------------------------
1 | var forEach = function (obj, callback) {
2 | for (var key in obj) {
3 | if (Object.prototype.hasOwnProperty.call(obj, key)) {
4 | if (callback(key, obj[key])) {
5 | break;
6 | }
7 | }
8 | }
9 | };
10 |
11 | var palette = {
12 | bold: 1,
13 | faint: 2,
14 | red: 31,
15 | green: 32,
16 | cyan: 36,
17 | //TODO: add others?
18 | };
19 |
20 | var groupPrefix = '█';
21 | var detailsPrefix = '↳';
22 | var succMark = '✓';
23 | var failMark = '✗';
24 | var defaultOptions = {
25 | indent: ' ',
26 | enableColors: true,
27 | summaryTimeUnit: null,
28 | summaryTrendStats: null,
29 | };
30 |
31 | // strWidth tries to return the actual width the string will take up on the
32 | // screen, without any terminal formatting, unicode ligatures, etc.
33 | function strWidth(s) {
34 | // TODO: determine if NFC or NFKD are not more appropriate? or just give up? https://hsivonen.fi/string-length/
35 | var data = s.normalize('NFKC'); // This used to be NFKD in Go, but this should be better
36 | var inEscSeq = false;
37 | var inLongEscSeq = false;
38 | var width = 0;
39 | for (var char of data) {
40 | if (char.done) {
41 | break;
42 | }
43 |
44 | // Skip over ANSI escape codes.
45 | if (char == '\x1b') {
46 | inEscSeq = true;
47 | continue;
48 | }
49 | if (inEscSeq && char == '[') {
50 | inLongEscSeq = true;
51 | continue;
52 | }
53 | if (
54 | inEscSeq &&
55 | inLongEscSeq &&
56 | char.charCodeAt(0) >= 0x40 &&
57 | char.charCodeAt(0) <= 0x7e
58 | ) {
59 | inEscSeq = false;
60 | inLongEscSeq = false;
61 | continue;
62 | }
63 | if (
64 | inEscSeq &&
65 | !inLongEscSeq &&
66 | char.charCodeAt(0) >= 0x40 &&
67 | char.charCodeAt(0) <= 0x5f
68 | ) {
69 | inEscSeq = false;
70 | continue;
71 | }
72 |
73 | if (!inEscSeq && !inLongEscSeq) {
74 | width++;
75 | }
76 | }
77 | return width;
78 | }
79 |
80 | function summarizeCheck(indent, check, decorate) {
81 | if (check.fails == 0) {
82 | return decorate(indent + succMark + ' ' + check.name, palette.green);
83 | }
84 |
85 | var succPercent = Math.floor(
86 | (100 * check.passes) / (check.passes + check.fails),
87 | );
88 | return decorate(
89 | indent +
90 | failMark +
91 | ' ' +
92 | check.name +
93 | '\n' +
94 | indent +
95 | ' ' +
96 | detailsPrefix +
97 | ' ' +
98 | succPercent +
99 | '% — ' +
100 | succMark +
101 | ' ' +
102 | check.passes +
103 | ' / ' +
104 | failMark +
105 | ' ' +
106 | check.fails,
107 | palette.red,
108 | );
109 | }
110 |
111 | function summarizeGroup(indent, group, decorate) {
112 | var result = [];
113 | if (group.name != '') {
114 | result.push(indent + groupPrefix + ' ' + group.name + '\n');
115 | indent = indent + ' ';
116 | }
117 |
118 | for (let i = 0; i < group.checks.length; i++) {
119 | result.push(summarizeCheck(indent, group.checks[i], decorate));
120 | }
121 | if (group.checks.length > 0) {
122 | result.push('');
123 | }
124 | for (let i = 0; i < group.groups.length; i++) {
125 | Array.prototype.push.apply(
126 | result,
127 | summarizeGroup(indent, group.groups[i], decorate),
128 | );
129 | }
130 |
131 | return result;
132 | }
133 |
134 | function displayNameForMetric(name) {
135 | var subMetricPos = name.indexOf('{');
136 | if (subMetricPos >= 0) {
137 | return '{ ' + name.substring(subMetricPos + 1, name.length - 1) + ' }';
138 | }
139 | return name;
140 | }
141 |
142 | function indentForMetric(name) {
143 | if (name.indexOf('{') >= 0) {
144 | return ' ';
145 | }
146 | return '';
147 | }
148 |
149 | function humanizeBytes(bytes) {
150 | var units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
151 | var base = 1000;
152 | if (bytes < 10) {
153 | return bytes + ' B';
154 | }
155 |
156 | var e = Math.floor(Math.log(bytes) / Math.log(base));
157 | var suffix = units[e | 0];
158 | var val = Math.floor((bytes / Math.pow(base, e)) * 10 + 0.5) / 10;
159 | return val.toFixed(val < 10 ? 1 : 0) + ' ' + suffix;
160 | }
161 |
162 | var unitMap = {
163 | s: { unit: 's', coef: 0.001 },
164 | ms: { unit: 'ms', coef: 1 },
165 | us: { unit: 'µs', coef: 1000 },
166 | };
167 |
168 | function toFixedNoTrailingZeros(val, prec) {
169 | // TODO: figure out something better?
170 | return parseFloat(val.toFixed(prec)).toString();
171 | }
172 |
173 | function toFixedNoTrailingZerosTrunc(val, prec) {
174 | var mult = Math.pow(10, prec);
175 | return toFixedNoTrailingZeros(Math.trunc(mult * val) / mult, prec);
176 | }
177 |
178 | function humanizeGenericDuration(dur) {
179 | if (dur === 0) {
180 | return '0s';
181 | }
182 |
183 | if (dur < 0.001) {
184 | // smaller than a microsecond, print nanoseconds
185 | return Math.trunc(dur * 1000000) + 'ns';
186 | }
187 | if (dur < 1) {
188 | // smaller than a millisecond, print microseconds
189 | return toFixedNoTrailingZerosTrunc(dur * 1000, 2) + 'µs';
190 | }
191 | if (dur < 1000) {
192 | // duration is smaller than a second
193 | return toFixedNoTrailingZerosTrunc(dur, 2) + 'ms';
194 | }
195 |
196 | var result =
197 | toFixedNoTrailingZerosTrunc((dur % 60000) / 1000, dur > 60000 ? 0 : 2) +
198 | 's';
199 | var rem = Math.trunc(dur / 60000);
200 | if (rem < 1) {
201 | // less than a minute
202 | return result;
203 | }
204 | result = (rem % 60) + 'm' + result;
205 | rem = Math.trunc(rem / 60);
206 | if (rem < 1) {
207 | // less than an hour
208 | return result;
209 | }
210 | return rem + 'h' + result;
211 | }
212 |
213 | function humanizeDuration(dur, timeUnit) {
214 | if (
215 | timeUnit !== '' &&
216 | Object.prototype.hasOwnProperty.call(unitMap, timeUnit)
217 | ) {
218 | return (dur * unitMap[timeUnit].coef).toFixed(2) + unitMap[timeUnit].unit;
219 | }
220 |
221 | return humanizeGenericDuration(dur);
222 | }
223 |
224 | function humanizeValue(val, metric, timeUnit) {
225 | if (metric.type == 'rate') {
226 | // Truncate instead of round when decreasing precision to 2 decimal places
227 | return (Math.trunc(val * 100 * 100) / 100).toFixed(2) + '%';
228 | }
229 |
230 | switch (metric.contains) {
231 | case 'data':
232 | return humanizeBytes(val);
233 | case 'time':
234 | return humanizeDuration(val, timeUnit);
235 | default:
236 | return toFixedNoTrailingZeros(val, 6);
237 | }
238 | }
239 |
240 | function nonTrendMetricValueForSum(metric, timeUnit) {
241 | switch (metric.type) {
242 | case 'counter':
243 | return [
244 | humanizeValue(metric.values.count, metric, timeUnit),
245 | humanizeValue(metric.values.rate, metric, timeUnit) + '/s',
246 | ];
247 | case 'gauge':
248 | return [
249 | humanizeValue(metric.values.value, metric, timeUnit),
250 | 'min=' + humanizeValue(metric.values.min, metric, timeUnit),
251 | 'max=' + humanizeValue(metric.values.max, metric, timeUnit),
252 | ];
253 | case 'rate':
254 | return [
255 | humanizeValue(metric.values.rate, metric, timeUnit),
256 | succMark + ' ' + metric.values.passes,
257 | failMark + ' ' + metric.values.fails,
258 | ];
259 | default:
260 | return ['[no data]'];
261 | }
262 | }
263 |
264 | function summarizeMetrics(options, data, decorate) {
265 | var indent = options.indent + ' ';
266 | var result = [];
267 |
268 | var names = [];
269 | var nameLenMax = 0;
270 |
271 | var nonTrendValues = {};
272 | var nonTrendValueMaxLen = 0;
273 | var nonTrendExtras = {};
274 | var nonTrendExtraMaxLens = [0, 0];
275 |
276 | var trendCols = {};
277 | var numTrendColumns = options.summaryTrendStats.length;
278 | var trendColMaxLens = new Array(numTrendColumns).fill(0);
279 | forEach(data.metrics, function (name, metric) {
280 | names.push(name);
281 | // When calculating widths for metrics, account for the indentation on submetrics.
282 | var displayName = indentForMetric(name) + displayNameForMetric(name);
283 | var displayNameWidth = strWidth(displayName);
284 | if (displayNameWidth > nameLenMax) {
285 | nameLenMax = displayNameWidth;
286 | }
287 |
288 | if (metric.type == 'trend') {
289 | var cols = [];
290 | for (let i = 0; i < numTrendColumns; i++) {
291 | var tc = options.summaryTrendStats[i];
292 | var value = metric.values[tc];
293 | if (tc === 'count') {
294 | value = value.toString();
295 | } else {
296 | value = humanizeValue(value, metric, options.summaryTimeUnit);
297 | }
298 | var valLen = strWidth(value);
299 | if (valLen > trendColMaxLens[i]) {
300 | trendColMaxLens[i] = valLen;
301 | }
302 | cols[i] = value;
303 | }
304 | trendCols[name] = cols;
305 | return;
306 | }
307 | var values = nonTrendMetricValueForSum(metric, options.summaryTimeUnit);
308 | nonTrendValues[name] = values[0];
309 | var valueLen = strWidth(values[0]);
310 | if (valueLen > nonTrendValueMaxLen) {
311 | nonTrendValueMaxLen = valueLen;
312 | }
313 | nonTrendExtras[name] = values.slice(1);
314 | for (let i = 1; i < values.length; i++) {
315 | var extraLen = strWidth(values[i]);
316 | if (extraLen > nonTrendExtraMaxLens[i - 1]) {
317 | nonTrendExtraMaxLens[i - 1] = extraLen;
318 | }
319 | }
320 | });
321 |
322 | // sort all metrics but keep sub metrics grouped with their parent metrics
323 | names.sort(function (metric1, metric2) {
324 | var parent1 = metric1.split('{', 1)[0];
325 | var parent2 = metric2.split('{', 1)[0];
326 | var result = parent1.localeCompare(parent2);
327 | if (result !== 0) {
328 | return result;
329 | }
330 | var sub1 = metric1.substring(parent1.length);
331 | var sub2 = metric2.substring(parent2.length);
332 | return sub1.localeCompare(sub2);
333 | });
334 |
335 | var getData = function (name) {
336 | if (Object.prototype.hasOwnProperty.call(trendCols, name)) {
337 | var cols = trendCols[name];
338 | var tmpCols = new Array(numTrendColumns);
339 | for (let i = 0; i < cols.length; i++) {
340 | tmpCols[i] =
341 | options.summaryTrendStats[i] +
342 | '=' +
343 | decorate(cols[i], palette.cyan) +
344 | ' '.repeat(trendColMaxLens[i] - strWidth(cols[i]));
345 | }
346 | return tmpCols.join(' ');
347 | }
348 |
349 | var value = nonTrendValues[name];
350 | var fmtData =
351 | decorate(value, palette.cyan) +
352 | ' '.repeat(nonTrendValueMaxLen - strWidth(value));
353 |
354 | var extras = nonTrendExtras[name];
355 | if (extras.length == 1) {
356 | fmtData =
357 | fmtData + ' ' + decorate(extras[0], palette.cyan, palette.faint);
358 | } else if (extras.length > 1) {
359 | var parts = new Array(extras.length);
360 | for (let i = 0; i < extras.length; i++) {
361 | parts[i] =
362 | decorate(extras[i], palette.cyan, palette.faint) +
363 | ' '.repeat(nonTrendExtraMaxLens[i] - strWidth(extras[i]));
364 | }
365 | fmtData = fmtData + ' ' + parts.join(' ');
366 | }
367 |
368 | return fmtData;
369 | };
370 |
371 | for (var name of names) {
372 | var metric = data.metrics[name];
373 | var mark = ' ';
374 | var markColor = function (text) {
375 | return text;
376 | }; // noop
377 |
378 | if (metric.thresholds) {
379 | mark = succMark;
380 | markColor = function (text) {
381 | return decorate(text, palette.green);
382 | };
383 | forEach(metric.thresholds, function (name, threshold) {
384 | if (!threshold.ok) {
385 | mark = failMark;
386 | markColor = function (text) {
387 | return decorate(text, palette.red);
388 | };
389 | return true; // break
390 | }
391 | });
392 | }
393 | var fmtIndent = indentForMetric(name);
394 | var fmtName = displayNameForMetric(name);
395 | fmtName =
396 | fmtName +
397 | decorate(
398 | '.'.repeat(nameLenMax - strWidth(fmtName) - strWidth(fmtIndent) + 3) +
399 | ':',
400 | palette.faint,
401 | );
402 |
403 | result.push(
404 | indent +
405 | fmtIndent +
406 | markColor(mark) +
407 | ' ' +
408 | fmtName +
409 | ' ' +
410 | getData(name),
411 | );
412 | }
413 |
414 | return result;
415 | }
416 |
417 | function generateTextSummary(data, options) {
418 | var mergedOpts = Object.assign({}, defaultOptions, data.options, options);
419 | var lines = [];
420 |
421 | // TODO: move all of these functions into an object with methods?
422 | var decorate = function (text) {
423 | return text;
424 | };
425 | if (mergedOpts.enableColors) {
426 | decorate = function (text, color /*, ...rest*/) {
427 | var result = '\x1b[' + color;
428 | for (var i = 2; i < arguments.length; i++) {
429 | result += ';' + arguments[i];
430 | }
431 | return result + 'm' + text + '\x1b[0m';
432 | };
433 | }
434 |
435 | Array.prototype.push.apply(
436 | lines,
437 | summarizeGroup(mergedOpts.indent + ' ', data.root_group, decorate),
438 | );
439 |
440 | Array.prototype.push.apply(
441 | lines,
442 | summarizeMetrics(mergedOpts, data, decorate),
443 | );
444 |
445 | return lines.join('\n');
446 | }
447 |
448 | exports.humanizeValue = humanizeValue;
449 | exports.textSummary = generateTextSummary;
450 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@aashutoshrathi/word-wrap@^1.2.3":
6 | version "1.2.6"
7 | resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
8 | integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
9 |
10 | "@esbuild/linux-loong64@0.14.54":
11 | version "0.14.54"
12 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
13 | integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
14 |
15 | "@eslint-community/eslint-utils@^4.2.0":
16 | version "4.4.0"
17 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
18 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
19 | dependencies:
20 | eslint-visitor-keys "^3.3.0"
21 |
22 | "@eslint-community/regexpp@^4.6.1":
23 | version "4.10.0"
24 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
25 | integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
26 |
27 | "@eslint/eslintrc@^2.1.4":
28 | version "2.1.4"
29 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
30 | integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
31 | dependencies:
32 | ajv "^6.12.4"
33 | debug "^4.3.2"
34 | espree "^9.6.0"
35 | globals "^13.19.0"
36 | ignore "^5.2.0"
37 | import-fresh "^3.2.1"
38 | js-yaml "^4.1.0"
39 | minimatch "^3.1.2"
40 | strip-json-comments "^3.1.1"
41 |
42 | "@eslint/js@8.55.0":
43 | version "8.55.0"
44 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6"
45 | integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==
46 |
47 | "@humanwhocodes/config-array@^0.11.13":
48 | version "0.11.13"
49 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
50 | integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
51 | dependencies:
52 | "@humanwhocodes/object-schema" "^2.0.1"
53 | debug "^4.1.1"
54 | minimatch "^3.0.5"
55 |
56 | "@humanwhocodes/module-importer@^1.0.1":
57 | version "1.0.1"
58 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
59 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
60 |
61 | "@humanwhocodes/object-schema@^2.0.1":
62 | version "2.0.1"
63 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
64 | integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
65 |
66 | "@nodelib/fs.scandir@2.1.5":
67 | version "2.1.5"
68 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
69 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
70 | dependencies:
71 | "@nodelib/fs.stat" "2.0.5"
72 | run-parallel "^1.1.9"
73 |
74 | "@nodelib/fs.stat@2.0.5":
75 | version "2.0.5"
76 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
77 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
78 |
79 | "@nodelib/fs.walk@^1.2.8":
80 | version "1.2.8"
81 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
82 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
83 | dependencies:
84 | "@nodelib/fs.scandir" "2.1.5"
85 | fastq "^1.6.0"
86 |
87 | "@ungap/structured-clone@^1.2.0":
88 | version "1.2.0"
89 | resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
90 | integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
91 |
92 | acorn-jsx@^5.3.2:
93 | version "5.3.2"
94 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
95 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
96 |
97 | acorn@^8.9.0:
98 | version "8.11.2"
99 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
100 | integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
101 |
102 | ajv@^6.12.4:
103 | version "6.12.6"
104 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
105 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
106 | dependencies:
107 | fast-deep-equal "^3.1.1"
108 | fast-json-stable-stringify "^2.0.0"
109 | json-schema-traverse "^0.4.1"
110 | uri-js "^4.2.2"
111 |
112 | ansi-regex@^5.0.1:
113 | version "5.0.1"
114 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
115 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
116 |
117 | ansi-styles@^4.1.0:
118 | version "4.3.0"
119 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
120 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
121 | dependencies:
122 | color-convert "^2.0.1"
123 |
124 | argparse@^2.0.1:
125 | version "2.0.1"
126 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
127 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
128 |
129 | balanced-match@^1.0.0:
130 | version "1.0.2"
131 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
132 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
133 |
134 | brace-expansion@^1.1.7:
135 | version "1.1.11"
136 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
137 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
138 | dependencies:
139 | balanced-match "^1.0.0"
140 | concat-map "0.0.1"
141 |
142 | callsites@^3.0.0:
143 | version "3.1.0"
144 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
145 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
146 |
147 | chalk@^4.0.0:
148 | version "4.1.2"
149 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
150 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
151 | dependencies:
152 | ansi-styles "^4.1.0"
153 | supports-color "^7.1.0"
154 |
155 | color-convert@^2.0.1:
156 | version "2.0.1"
157 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
158 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
159 | dependencies:
160 | color-name "~1.1.4"
161 |
162 | color-name@~1.1.4:
163 | version "1.1.4"
164 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
165 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
166 |
167 | concat-map@0.0.1:
168 | version "0.0.1"
169 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
170 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
171 |
172 | cross-spawn@^7.0.2:
173 | version "7.0.3"
174 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
175 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
176 | dependencies:
177 | path-key "^3.1.0"
178 | shebang-command "^2.0.0"
179 | which "^2.0.1"
180 |
181 | debug@^4.1.1, debug@^4.3.2:
182 | version "4.3.4"
183 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
184 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
185 | dependencies:
186 | ms "2.1.2"
187 |
188 | deep-is@^0.1.3:
189 | version "0.1.4"
190 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
191 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
192 |
193 | doctrine@^3.0.0:
194 | version "3.0.0"
195 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
196 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
197 | dependencies:
198 | esutils "^2.0.2"
199 |
200 | esbuild-android-64@0.14.54:
201 | version "0.14.54"
202 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
203 | integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
204 |
205 | esbuild-android-arm64@0.14.54:
206 | version "0.14.54"
207 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
208 | integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
209 |
210 | esbuild-darwin-64@0.14.54:
211 | version "0.14.54"
212 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
213 | integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
214 |
215 | esbuild-darwin-arm64@0.14.54:
216 | version "0.14.54"
217 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
218 | integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
219 |
220 | esbuild-freebsd-64@0.14.54:
221 | version "0.14.54"
222 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
223 | integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
224 |
225 | esbuild-freebsd-arm64@0.14.54:
226 | version "0.14.54"
227 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
228 | integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
229 |
230 | esbuild-linux-32@0.14.54:
231 | version "0.14.54"
232 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
233 | integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
234 |
235 | esbuild-linux-64@0.14.54:
236 | version "0.14.54"
237 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
238 | integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
239 |
240 | esbuild-linux-arm64@0.14.54:
241 | version "0.14.54"
242 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
243 | integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
244 |
245 | esbuild-linux-arm@0.14.54:
246 | version "0.14.54"
247 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
248 | integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
249 |
250 | esbuild-linux-mips64le@0.14.54:
251 | version "0.14.54"
252 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
253 | integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
254 |
255 | esbuild-linux-ppc64le@0.14.54:
256 | version "0.14.54"
257 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
258 | integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
259 |
260 | esbuild-linux-riscv64@0.14.54:
261 | version "0.14.54"
262 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
263 | integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
264 |
265 | esbuild-linux-s390x@0.14.54:
266 | version "0.14.54"
267 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
268 | integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
269 |
270 | esbuild-netbsd-64@0.14.54:
271 | version "0.14.54"
272 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
273 | integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
274 |
275 | esbuild-openbsd-64@0.14.54:
276 | version "0.14.54"
277 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
278 | integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
279 |
280 | esbuild-sunos-64@0.14.54:
281 | version "0.14.54"
282 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
283 | integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
284 |
285 | esbuild-windows-32@0.14.54:
286 | version "0.14.54"
287 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
288 | integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
289 |
290 | esbuild-windows-64@0.14.54:
291 | version "0.14.54"
292 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
293 | integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
294 |
295 | esbuild-windows-arm64@0.14.54:
296 | version "0.14.54"
297 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
298 | integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
299 |
300 | esbuild@^0.14.51:
301 | version "0.14.54"
302 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
303 | integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
304 | optionalDependencies:
305 | "@esbuild/linux-loong64" "0.14.54"
306 | esbuild-android-64 "0.14.54"
307 | esbuild-android-arm64 "0.14.54"
308 | esbuild-darwin-64 "0.14.54"
309 | esbuild-darwin-arm64 "0.14.54"
310 | esbuild-freebsd-64 "0.14.54"
311 | esbuild-freebsd-arm64 "0.14.54"
312 | esbuild-linux-32 "0.14.54"
313 | esbuild-linux-64 "0.14.54"
314 | esbuild-linux-arm "0.14.54"
315 | esbuild-linux-arm64 "0.14.54"
316 | esbuild-linux-mips64le "0.14.54"
317 | esbuild-linux-ppc64le "0.14.54"
318 | esbuild-linux-riscv64 "0.14.54"
319 | esbuild-linux-s390x "0.14.54"
320 | esbuild-netbsd-64 "0.14.54"
321 | esbuild-openbsd-64 "0.14.54"
322 | esbuild-sunos-64 "0.14.54"
323 | esbuild-windows-32 "0.14.54"
324 | esbuild-windows-64 "0.14.54"
325 | esbuild-windows-arm64 "0.14.54"
326 |
327 | escape-string-regexp@^4.0.0:
328 | version "4.0.0"
329 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
330 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
331 |
332 | eslint-config-prettier@^8.5.0:
333 | version "8.10.0"
334 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11"
335 | integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==
336 |
337 | eslint-plugin-prettier@^4.2.1:
338 | version "4.2.1"
339 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
340 | integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
341 | dependencies:
342 | prettier-linter-helpers "^1.0.0"
343 |
344 | eslint-scope@^7.2.2:
345 | version "7.2.2"
346 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
347 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
348 | dependencies:
349 | esrecurse "^4.3.0"
350 | estraverse "^5.2.0"
351 |
352 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
353 | version "3.4.3"
354 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
355 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
356 |
357 | eslint@^8.20.0:
358 | version "8.55.0"
359 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8"
360 | integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==
361 | dependencies:
362 | "@eslint-community/eslint-utils" "^4.2.0"
363 | "@eslint-community/regexpp" "^4.6.1"
364 | "@eslint/eslintrc" "^2.1.4"
365 | "@eslint/js" "8.55.0"
366 | "@humanwhocodes/config-array" "^0.11.13"
367 | "@humanwhocodes/module-importer" "^1.0.1"
368 | "@nodelib/fs.walk" "^1.2.8"
369 | "@ungap/structured-clone" "^1.2.0"
370 | ajv "^6.12.4"
371 | chalk "^4.0.0"
372 | cross-spawn "^7.0.2"
373 | debug "^4.3.2"
374 | doctrine "^3.0.0"
375 | escape-string-regexp "^4.0.0"
376 | eslint-scope "^7.2.2"
377 | eslint-visitor-keys "^3.4.3"
378 | espree "^9.6.1"
379 | esquery "^1.4.2"
380 | esutils "^2.0.2"
381 | fast-deep-equal "^3.1.3"
382 | file-entry-cache "^6.0.1"
383 | find-up "^5.0.0"
384 | glob-parent "^6.0.2"
385 | globals "^13.19.0"
386 | graphemer "^1.4.0"
387 | ignore "^5.2.0"
388 | imurmurhash "^0.1.4"
389 | is-glob "^4.0.0"
390 | is-path-inside "^3.0.3"
391 | js-yaml "^4.1.0"
392 | json-stable-stringify-without-jsonify "^1.0.1"
393 | levn "^0.4.1"
394 | lodash.merge "^4.6.2"
395 | minimatch "^3.1.2"
396 | natural-compare "^1.4.0"
397 | optionator "^0.9.3"
398 | strip-ansi "^6.0.1"
399 | text-table "^0.2.0"
400 |
401 | espree@^9.6.0, espree@^9.6.1:
402 | version "9.6.1"
403 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
404 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
405 | dependencies:
406 | acorn "^8.9.0"
407 | acorn-jsx "^5.3.2"
408 | eslint-visitor-keys "^3.4.1"
409 |
410 | esquery@^1.4.2:
411 | version "1.5.0"
412 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
413 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
414 | dependencies:
415 | estraverse "^5.1.0"
416 |
417 | esrecurse@^4.3.0:
418 | version "4.3.0"
419 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
420 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
421 | dependencies:
422 | estraverse "^5.2.0"
423 |
424 | estraverse@^5.1.0, estraverse@^5.2.0:
425 | version "5.3.0"
426 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
427 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
428 |
429 | esutils@^2.0.2:
430 | version "2.0.3"
431 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
432 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
433 |
434 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
435 | version "3.1.3"
436 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
437 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
438 |
439 | fast-diff@^1.1.2:
440 | version "1.3.0"
441 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
442 | integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
443 |
444 | fast-json-stable-stringify@^2.0.0:
445 | version "2.1.0"
446 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
447 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
448 |
449 | fast-levenshtein@^2.0.6:
450 | version "2.0.6"
451 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
452 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
453 |
454 | fastq@^1.6.0:
455 | version "1.15.0"
456 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
457 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
458 | dependencies:
459 | reusify "^1.0.4"
460 |
461 | file-entry-cache@^6.0.1:
462 | version "6.0.1"
463 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
464 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
465 | dependencies:
466 | flat-cache "^3.0.4"
467 |
468 | find-up@^5.0.0:
469 | version "5.0.0"
470 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
471 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
472 | dependencies:
473 | locate-path "^6.0.0"
474 | path-exists "^4.0.0"
475 |
476 | flat-cache@^3.0.4:
477 | version "3.2.0"
478 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
479 | integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
480 | dependencies:
481 | flatted "^3.2.9"
482 | keyv "^4.5.3"
483 | rimraf "^3.0.2"
484 |
485 | flatted@^3.2.9:
486 | version "3.2.9"
487 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
488 | integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
489 |
490 | fs.realpath@^1.0.0:
491 | version "1.0.0"
492 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
493 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
494 |
495 | glob-parent@^6.0.2:
496 | version "6.0.2"
497 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
498 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
499 | dependencies:
500 | is-glob "^4.0.3"
501 |
502 | glob@^7.1.3:
503 | version "7.2.3"
504 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
505 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
506 | dependencies:
507 | fs.realpath "^1.0.0"
508 | inflight "^1.0.4"
509 | inherits "2"
510 | minimatch "^3.1.1"
511 | once "^1.3.0"
512 | path-is-absolute "^1.0.0"
513 |
514 | globals@^13.19.0:
515 | version "13.23.0"
516 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02"
517 | integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==
518 | dependencies:
519 | type-fest "^0.20.2"
520 |
521 | graphemer@^1.4.0:
522 | version "1.4.0"
523 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
524 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
525 |
526 | has-flag@^4.0.0:
527 | version "4.0.0"
528 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
529 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
530 |
531 | ignore@^5.2.0:
532 | version "5.3.0"
533 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
534 | integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
535 |
536 | import-fresh@^3.2.1:
537 | version "3.3.0"
538 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
539 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
540 | dependencies:
541 | parent-module "^1.0.0"
542 | resolve-from "^4.0.0"
543 |
544 | imurmurhash@^0.1.4:
545 | version "0.1.4"
546 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
547 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
548 |
549 | inflight@^1.0.4:
550 | version "1.0.6"
551 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
552 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
553 | dependencies:
554 | once "^1.3.0"
555 | wrappy "1"
556 |
557 | inherits@2:
558 | version "2.0.4"
559 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
560 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
561 |
562 | is-extglob@^2.1.1:
563 | version "2.1.1"
564 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
565 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
566 |
567 | is-glob@^4.0.0, is-glob@^4.0.3:
568 | version "4.0.3"
569 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
570 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
571 | dependencies:
572 | is-extglob "^2.1.1"
573 |
574 | is-path-inside@^3.0.3:
575 | version "3.0.3"
576 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
577 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
578 |
579 | isexe@^2.0.0:
580 | version "2.0.0"
581 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
582 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
583 |
584 | js-yaml@^4.1.0:
585 | version "4.1.0"
586 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
587 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
588 | dependencies:
589 | argparse "^2.0.1"
590 |
591 | json-buffer@3.0.1:
592 | version "3.0.1"
593 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
594 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
595 |
596 | json-schema-traverse@^0.4.1:
597 | version "0.4.1"
598 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
599 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
600 |
601 | json-stable-stringify-without-jsonify@^1.0.1:
602 | version "1.0.1"
603 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
604 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
605 |
606 | keyv@^4.5.3:
607 | version "4.5.4"
608 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
609 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
610 | dependencies:
611 | json-buffer "3.0.1"
612 |
613 | levn@^0.4.1:
614 | version "0.4.1"
615 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
616 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
617 | dependencies:
618 | prelude-ls "^1.2.1"
619 | type-check "~0.4.0"
620 |
621 | locate-path@^6.0.0:
622 | version "6.0.0"
623 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
624 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
625 | dependencies:
626 | p-locate "^5.0.0"
627 |
628 | lodash.merge@^4.6.2:
629 | version "4.6.2"
630 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
631 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
632 |
633 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
634 | version "3.1.2"
635 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
636 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
637 | dependencies:
638 | brace-expansion "^1.1.7"
639 |
640 | ms@2.1.2:
641 | version "2.1.2"
642 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
643 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
644 |
645 | natural-compare@^1.4.0:
646 | version "1.4.0"
647 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
648 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
649 |
650 | once@^1.3.0:
651 | version "1.4.0"
652 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
653 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
654 | dependencies:
655 | wrappy "1"
656 |
657 | optionator@^0.9.3:
658 | version "0.9.3"
659 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
660 | integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
661 | dependencies:
662 | "@aashutoshrathi/word-wrap" "^1.2.3"
663 | deep-is "^0.1.3"
664 | fast-levenshtein "^2.0.6"
665 | levn "^0.4.1"
666 | prelude-ls "^1.2.1"
667 | type-check "^0.4.0"
668 |
669 | p-limit@^3.0.2:
670 | version "3.1.0"
671 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
672 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
673 | dependencies:
674 | yocto-queue "^0.1.0"
675 |
676 | p-locate@^5.0.0:
677 | version "5.0.0"
678 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
679 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
680 | dependencies:
681 | p-limit "^3.0.2"
682 |
683 | parent-module@^1.0.0:
684 | version "1.0.1"
685 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
686 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
687 | dependencies:
688 | callsites "^3.0.0"
689 |
690 | path-exists@^4.0.0:
691 | version "4.0.0"
692 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
693 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
694 |
695 | path-is-absolute@^1.0.0:
696 | version "1.0.1"
697 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
698 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
699 |
700 | path-key@^3.1.0:
701 | version "3.1.1"
702 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
703 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
704 |
705 | prelude-ls@^1.2.1:
706 | version "1.2.1"
707 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
708 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
709 |
710 | prettier-linter-helpers@^1.0.0:
711 | version "1.0.0"
712 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
713 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
714 | dependencies:
715 | fast-diff "^1.1.2"
716 |
717 | prettier@^2.7.1:
718 | version "2.8.8"
719 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
720 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
721 |
722 | punycode@^2.1.0:
723 | version "2.3.1"
724 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
725 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
726 |
727 | queue-microtask@^1.2.2:
728 | version "1.2.3"
729 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
730 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
731 |
732 | resolve-from@^4.0.0:
733 | version "4.0.0"
734 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
735 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
736 |
737 | reusify@^1.0.4:
738 | version "1.0.4"
739 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
740 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
741 |
742 | rimraf@^3.0.2:
743 | version "3.0.2"
744 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
745 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
746 | dependencies:
747 | glob "^7.1.3"
748 |
749 | run-parallel@^1.1.9:
750 | version "1.2.0"
751 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
752 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
753 | dependencies:
754 | queue-microtask "^1.2.2"
755 |
756 | shebang-command@^2.0.0:
757 | version "2.0.0"
758 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
759 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
760 | dependencies:
761 | shebang-regex "^3.0.0"
762 |
763 | shebang-regex@^3.0.0:
764 | version "3.0.0"
765 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
766 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
767 |
768 | strip-ansi@^6.0.1:
769 | version "6.0.1"
770 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
771 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
772 | dependencies:
773 | ansi-regex "^5.0.1"
774 |
775 | strip-json-comments@^3.1.1:
776 | version "3.1.1"
777 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
778 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
779 |
780 | supports-color@^7.1.0:
781 | version "7.2.0"
782 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
783 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
784 | dependencies:
785 | has-flag "^4.0.0"
786 |
787 | text-table@^0.2.0:
788 | version "0.2.0"
789 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
790 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
791 |
792 | type-check@^0.4.0, type-check@~0.4.0:
793 | version "0.4.0"
794 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
795 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
796 | dependencies:
797 | prelude-ls "^1.2.1"
798 |
799 | type-fest@^0.20.2:
800 | version "0.20.2"
801 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
802 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
803 |
804 | uri-js@^4.2.2:
805 | version "4.4.1"
806 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
807 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
808 | dependencies:
809 | punycode "^2.1.0"
810 |
811 | which@^2.0.1:
812 | version "2.0.2"
813 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
814 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
815 | dependencies:
816 | isexe "^2.0.0"
817 |
818 | wrappy@1:
819 | version "1.0.2"
820 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
821 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
822 |
823 | yocto-queue@^0.1.0:
824 | version "0.1.0"
825 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
826 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
827 |
--------------------------------------------------------------------------------