├── .eslintrc.json ├── .github ├── eslint.json └── workflows │ └── node.js.yml ├── .gitignore ├── LICENSE ├── README.md ├── package.json ├── src ├── format.js ├── index.js └── parse.js ├── test ├── .eslintrc.json ├── format-test.js └── parse-test.js └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "sourceType": "module", 5 | "ecmaVersion": 8 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.github/eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "problemMatcher": [ 3 | { 4 | "owner": "eslint-compact", 5 | "pattern": [ 6 | { 7 | "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$", 8 | "file": 1, 9 | "line": 2, 10 | "column": 3, 11 | "severity": 4, 12 | "message": 5, 13 | "code": 6 14 | } 15 | ] 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 2 | 3 | name: Node.js CI 4 | 5 | on: 6 | push: 7 | branches: [ main ] 8 | pull_request: 9 | branches: [ main ] 10 | 11 | jobs: 12 | build: 13 | 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | matrix: 18 | node-version: [15.x] 19 | 20 | steps: 21 | - uses: actions/checkout@v2 22 | - name: Use Node.js ${{ matrix.node-version }} 23 | uses: actions/setup-node@v1 24 | with: 25 | node-version: ${{ matrix.node-version }} 26 | - run: yarn --frozen-lockfile 27 | - run: | 28 | echo ::add-matcher::.github/eslint.json 29 | yarn run eslint . --format=compact 30 | - run: yarn test 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2021 Mike Bostock 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose 4 | with or without fee is hereby granted, provided that the above copyright notice 5 | and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 8 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 9 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 10 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 11 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 12 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 13 | THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # isoformat 2 | 3 | This library implements a concise formatter and parser for ISO 8601 date and date-times. It is intended for use as an interchange format, for example in CSV, that is more human-readable than the full ISO date-time string used by [*date*.toISOString](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString). 4 | 5 | To use: 6 | 7 | ```js 8 | import {format, parse} from "isoformat"; 9 | ``` 10 | 11 | ### format(*date*, *fallback*) 12 | 13 | Given a Date, **format**(*date*) returns the shortest equivalent ISO 8601 UTC string. If *date* is not a Date instance, it is assumed to represent milliseconds since UNIX epoch. If *date* is not a valid date, returns the given *fallback* value, which defaults to undefined; if *fallback* is a function, it is invoked to produce a fallback value if needed, being passed the *date*. 14 | 15 | ```js 16 | format(new Date(Date.UTC(2001, 0, 1))) // "2001-01-01" 17 | format(new Date(Date.UTC(2020, 0, 1, 12, 23))) // "2020-01-01T12:23Z" 18 | ``` 19 | 20 | The following forms may be returned by format: 21 | 22 | * YYYY-MM-DD 23 | * YYYY-MM-DDTHH:MMZ 24 | * YYYY-MM-DDTHH:MM:SSZ 25 | * YYYY-MM-DDTHH:MM:SS.MMMZ 26 | 27 | The year YYYY may also be represented as +YYYYYY or -YYYYYY. Note that while YYYY and YYYY-MM are valid ISO 8601 date strings, these forms are never returned by format; YYYY can be easily misinterpreted as a number, and YYYY-MM… well, I guess that would be okay, but it felt simpler to stop at YYYY-MM-DD to make it more obvious that it was a date. 28 | 29 | ### parse(*date*, *fallback*) 30 | 31 | Given an ISO 8601 date or date-time string, **parse**(*string*) returns an equivalent Date instance. If *string* is not a valid ISO 8601 date or date-time string, returns the given *fallback* value, which defaults to undefined; if *fallback* is a function, it is invoked to produce a fallback value if needed, being passed the *string*. 32 | 33 | ```js 34 | parse("2001-01-01") // new Date(Date.UTC(2001, 0, 1)) 35 | parse("2020-01-01T12:23Z") // new Date(Date.UTC(2020, 0, 1, 12, 23)) 36 | ``` 37 | 38 | The following forms are accepted by parse: 39 | 40 | * YYYY 41 | * YYYY-MM 42 | * YYYY-MM-DD 43 | * YYYY-MM-DDTHH:MM 44 | * YYYY-MM-DDTHH:MMZ 45 | * YYYY-MM-DDTHH:MM:SS 46 | * YYYY-MM-DDTHH:MM:SSZ 47 | * YYYY-MM-DDTHH:MM:SS.MMM 48 | * YYYY-MM-DDTHH:MM:SS.MMMZ 49 | 50 | The year YYYY may also be represented as +YYYYYY or -YYYYYY. The time zone Z may be represented as a literal Z for UTC, or as +HH:MM, -HH:MM, +HHMM, or -HHMM. (The two-digit time zone offset +HH or -HH is not supported; although part of ISO 8601, this format is not recognized by Chrome or Node. And although ISO 8601 does not allow the time zone -00:00, it is allowed here because it is widely supported in implementations.) 51 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "isoformat", 3 | "version": "0.2.1", 4 | "description": "A tidy ISO 8601 date formatter and parser", 5 | "homepage": "https://github.com/mbostock/isoformat/", 6 | "license": "ISC", 7 | "author": { 8 | "name": "Mike Bostock", 9 | "url": "https://bost.ocks.org/mike" 10 | }, 11 | "type": "module", 12 | "main": "src/index.js", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/mbostock/isoformat.git" 16 | }, 17 | "files": [ 18 | "src/**/*.js" 19 | ], 20 | "scripts": { 21 | "test": "mocha test/**/*-test.js && eslint src test", 22 | "prepublishOnly": "yarn test", 23 | "postpublish": "git push && git push --tags" 24 | }, 25 | "sideEffects": false, 26 | "devDependencies": { 27 | "eslint": "^7.32.0", 28 | "mocha": "^9.1.1" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/format.js: -------------------------------------------------------------------------------- 1 | export default function format(date, fallback) { 2 | if (!(date instanceof Date)) date = new Date(+date); 3 | if (isNaN(date)) return typeof fallback === "function" ? fallback(date) : fallback; 4 | const hours = date.getUTCHours(); 5 | const minutes = date.getUTCMinutes(); 6 | const seconds = date.getUTCSeconds(); 7 | const milliseconds = date.getUTCMilliseconds(); 8 | return `${formatYear(date.getUTCFullYear(), 4)}-${pad(date.getUTCMonth() + 1, 2)}-${pad(date.getUTCDate(), 2)}${ 9 | hours || minutes || seconds || milliseconds ? `T${pad(hours, 2)}:${pad(minutes, 2)}${ 10 | seconds || milliseconds ? `:${pad(seconds, 2)}${ 11 | milliseconds ? `.${pad(milliseconds, 3)}` : `` 12 | }` : `` 13 | }Z` : `` 14 | }`; 15 | } 16 | 17 | function formatYear(year) { 18 | return year < 0 ? `-${pad(-year, 6)}` 19 | : year > 9999 ? `+${pad(year, 6)}` 20 | : pad(year, 4); 21 | } 22 | 23 | function pad(value, width) { 24 | return `${value}`.padStart(width, "0"); 25 | } 26 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export {default as format} from "./format.js"; 2 | export {default as parse} from "./parse.js"; 3 | -------------------------------------------------------------------------------- /src/parse.js: -------------------------------------------------------------------------------- 1 | const re = /^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/; 2 | 3 | export default function parse(string, fallback) { 4 | if (!re.test(string += "")) return typeof fallback === "function" ? fallback(string) : fallback; 5 | return new Date(string); 6 | } 7 | -------------------------------------------------------------------------------- /test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "sourceType": "module", 5 | "ecmaVersion": 8 6 | }, 7 | "env": { 8 | "mocha": true 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/format-test.js: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import {format} from "../src/index.js"; 3 | 4 | describe("format", () => { 5 | it("returns the expected value for years", () => { 6 | assert.strictEqual(format(new Date(Date.UTC(1999, 0, 1))), "1999-01-01"); 7 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1))), "2001-01-01"); 8 | assert.strictEqual(format(new Date(Date.UTC(2020, 0, 1))), "2020-01-01"); 9 | }); 10 | it("returns the expected value for years in the distant past", () => { 11 | const d = new Date(Date.UTC(2000, 0, 1)); 12 | d.setUTCFullYear(0); // JavaScript derp 13 | assert.strictEqual(format(d), "0000-01-01"); 14 | assert.strictEqual(format(new Date(Date.UTC(-20, 0, 1))), "-000020-01-01"); 15 | }); 16 | it("returns the expected value for years in the distant future", () => { 17 | assert.strictEqual(format(new Date(Date.UTC(20000, 0, 1))), "+020000-01-01"); 18 | assert.strictEqual(format(new Date(Date.UTC(100000, 0, 1))), "+100000-01-01"); 19 | }); 20 | it("returns the expected value for days", () => { 21 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1))), "2001-01-01"); 22 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2))), "2001-02-02"); 23 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21))), "2001-10-21"); 24 | }); 25 | it("returns the expected value for hours and minutes", () => { 26 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1, 0, 1))), "2001-01-01T00:01Z"); 27 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2, 0, 1))), "2001-02-02T00:01Z"); 28 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21, 0, 1))), "2001-10-21T00:01Z"); 29 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1, 1, 0))), "2001-01-01T01:00Z"); 30 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2, 1, 0))), "2001-02-02T01:00Z"); 31 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21, 1, 0))), "2001-10-21T01:00Z"); 32 | }); 33 | it("returns the expected value for seconds", () => { 34 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1, 0, 0, 1))), "2001-01-01T00:00:01Z"); 35 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2, 0, 0, 1))), "2001-02-02T00:00:01Z"); 36 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21, 0, 0, 1))), "2001-10-21T00:00:01Z"); 37 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1, 1, 0, 1))), "2001-01-01T01:00:01Z"); 38 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2, 1, 0, 1))), "2001-02-02T01:00:01Z"); 39 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21, 1, 0, 1))), "2001-10-21T01:00:01Z"); 40 | }); 41 | it("returns the expected value for milliseconds", () => { 42 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 123))), "2001-01-01T00:00:00.123Z"); 43 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2, 0, 0, 0, 123))), "2001-02-02T00:00:00.123Z"); 44 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21, 0, 0, 0, 123))), "2001-10-21T00:00:00.123Z"); 45 | assert.strictEqual(format(new Date(Date.UTC(2001, 0, 1, 1, 0, 1, 123))), "2001-01-01T01:00:01.123Z"); 46 | assert.strictEqual(format(new Date(Date.UTC(2001, 1, 2, 1, 0, 1, 123))), "2001-02-02T01:00:01.123Z"); 47 | assert.strictEqual(format(new Date(Date.UTC(2001, 9, 21, 1, 0, 1, 123))), "2001-10-21T01:00:01.123Z"); 48 | }); 49 | it("accepts a number as well as a Date", () => { 50 | assert.strictEqual(format(Date.UTC(2020, 0, 1)), "2020-01-01"); 51 | assert.strictEqual(format(Date.UTC(-20, 0, 1)), "-000020-01-01"); 52 | assert.strictEqual(format(Date.UTC(100000, 0, 1)), "+100000-01-01"); 53 | assert.strictEqual(format(Date.UTC(2001, 9, 21)), "2001-10-21"); 54 | assert.strictEqual(format(Date.UTC(2001, 9, 21, 1, 0)), "2001-10-21T01:00Z"); 55 | assert.strictEqual(format(Date.UTC(2001, 9, 21, 1, 0, 1)), "2001-10-21T01:00:01Z"); 56 | assert.strictEqual(format(Date.UTC(2001, 9, 21, 1, 0, 1, 123)), "2001-10-21T01:00:01.123Z"); 57 | }); 58 | it("coerces the input to a number, and then a Date, if needed", () => { 59 | assert.strictEqual(format({valueOf: () => Date.UTC(2020, 0, 1)}), "2020-01-01"); 60 | }); 61 | it("returns the fallback value for noncompliant input", () => { 62 | assert.strictEqual(format(NaN), undefined); 63 | assert.strictEqual(format(new Date(NaN)), undefined); 64 | }); 65 | it("returns the specified fallback value for noncompliant input", () => { 66 | assert.strictEqual(format(NaN, null), null); 67 | assert.strictEqual(format(new Date(NaN), null), null); 68 | assert.strictEqual(format(NaN, "Invalid Date"), "Invalid Date"); 69 | assert.strictEqual(format(new Date(NaN), "Invalid Date"), "Invalid Date"); 70 | }); 71 | it("invokes the fallback function for noncompliant input", () => { 72 | const error = () => { throw new RangeError("invalid date"); }; 73 | assert.throws(() => format(NaN, error)); 74 | assert.throws(() => format(new Date(NaN), error)); 75 | assert.throws(() => format(NaN, error)); 76 | assert.throws(() => format(new Date(NaN), error)); 77 | }); 78 | it("passes the fallback function the input as a Date", () => { 79 | const invalid = new Date(NaN); 80 | assert.strictEqual(format(NaN, x => x.toString()), "Invalid Date"); 81 | assert.strictEqual(format({valueOf: () => NaN}, x => x.toString()), "Invalid Date"); 82 | assert.strictEqual(format(new Date(NaN), x => x.toString()), "Invalid Date"); 83 | assert.strictEqual(format(invalid, x => x), invalid); 84 | }); 85 | }); 86 | -------------------------------------------------------------------------------- /test/parse-test.js: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import {parse} from "../src/index.js"; 3 | 4 | describe("parse", () => { 5 | it("returns the expected value for years", () => { 6 | assert.deepStrictEqual(parse("1999"), new Date(Date.UTC(1999, 0, 1))); 7 | assert.deepStrictEqual(parse("2001"), new Date(Date.UTC(2001, 0, 1))); 8 | assert.deepStrictEqual(parse("2020"), new Date(Date.UTC(2020, 0, 1))); 9 | }); 10 | it("returns the expected value for years and months", () => { 11 | assert.deepStrictEqual(parse("1999-01"), new Date(Date.UTC(1999, 0, 1))); 12 | assert.deepStrictEqual(parse("2001-01"), new Date(Date.UTC(2001, 0, 1))); 13 | assert.deepStrictEqual(parse("2020-01"), new Date(Date.UTC(2020, 0, 1))); 14 | }); 15 | it("returns the expected value for years, months, and dates", () => { 16 | assert.deepStrictEqual(parse("1999-01-01"), new Date(Date.UTC(1999, 0, 1))); 17 | assert.deepStrictEqual(parse("2001-01-01"), new Date(Date.UTC(2001, 0, 1))); 18 | assert.deepStrictEqual(parse("2020-01-01"), new Date(Date.UTC(2020, 0, 1))); 19 | }); 20 | it("returns the expected value for years in the distant past", () => { 21 | const d = new Date(Date.UTC(2000, 0, 1)); 22 | d.setUTCFullYear(0); // JavaScript derp 23 | assert.deepStrictEqual(parse("0000"), d); 24 | assert.deepStrictEqual(parse("0000-01"), d); 25 | assert.deepStrictEqual(parse("0000-01-01"), d); 26 | assert.deepStrictEqual(parse("-000020"), new Date(Date.UTC(-20, 0, 1))); 27 | assert.deepStrictEqual(parse("-000020-01"), new Date(Date.UTC(-20, 0, 1))); 28 | assert.deepStrictEqual(parse("-000020-01-01"), new Date(Date.UTC(-20, 0, 1))); 29 | }); 30 | it("returns the expected value for years in the distant future", () => { 31 | assert.deepStrictEqual(parse("+020000"), new Date(Date.UTC(20000, 0, 1))); 32 | assert.deepStrictEqual(parse("+020000-01"), new Date(Date.UTC(20000, 0, 1))); 33 | assert.deepStrictEqual(parse("+020000-01-01"), new Date(Date.UTC(20000, 0, 1))); 34 | assert.deepStrictEqual(parse("+100000"), new Date(Date.UTC(100000, 0, 1))); 35 | assert.deepStrictEqual(parse("+100000-01"), new Date(Date.UTC(100000, 0, 1))); 36 | assert.deepStrictEqual(parse("+100000-01-01"), new Date(Date.UTC(100000, 0, 1))); 37 | }); 38 | it("returns the expected value for hours and minutes", () => { 39 | assert.deepStrictEqual(parse("2001-01-01T00:01Z"), new Date(Date.UTC(2001, 0, 1, 0, 1))); 40 | assert.deepStrictEqual(parse("2001-02-02T00:01Z"), new Date(Date.UTC(2001, 1, 2, 0, 1))); 41 | assert.deepStrictEqual(parse("2001-10-21T00:01Z"), new Date(Date.UTC(2001, 9, 21, 0, 1))); 42 | assert.deepStrictEqual(parse("2001-01-01T01:00Z"), new Date(Date.UTC(2001, 0, 1, 1, 0))); 43 | assert.deepStrictEqual(parse("2001-02-02T01:00Z"), new Date(Date.UTC(2001, 1, 2, 1, 0))); 44 | assert.deepStrictEqual(parse("2001-10-21T01:00Z"), new Date(Date.UTC(2001, 9, 21, 1, 0))); 45 | }); 46 | it("returns the expected value for seconds", () => { 47 | assert.deepStrictEqual(parse("2001-01-01T00:00:01Z"), new Date(Date.UTC(2001, 0, 1, 0, 0, 1))); 48 | assert.deepStrictEqual(parse("2001-02-02T00:00:01Z"), new Date(Date.UTC(2001, 1, 2, 0, 0, 1))); 49 | assert.deepStrictEqual(parse("2001-10-21T00:00:01Z"), new Date(Date.UTC(2001, 9, 21, 0, 0, 1))); 50 | assert.deepStrictEqual(parse("2001-01-01T01:00:01Z"), new Date(Date.UTC(2001, 0, 1, 1, 0, 1))); 51 | assert.deepStrictEqual(parse("2001-02-02T01:00:01Z"), new Date(Date.UTC(2001, 1, 2, 1, 0, 1))); 52 | assert.deepStrictEqual(parse("2001-10-21T01:00:01Z"), new Date(Date.UTC(2001, 9, 21, 1, 0, 1))); 53 | }); 54 | it("returns the expected value for milliseconds", () => { 55 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123Z"), new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 123))); 56 | assert.deepStrictEqual(parse("2001-02-02T00:00:00.123Z"), new Date(Date.UTC(2001, 1, 2, 0, 0, 0, 123))); 57 | assert.deepStrictEqual(parse("2001-10-21T00:00:00.123Z"), new Date(Date.UTC(2001, 9, 21, 0, 0, 0, 123))); 58 | assert.deepStrictEqual(parse("2001-01-01T01:00:01.123Z"), new Date(Date.UTC(2001, 0, 1, 1, 0, 1, 123))); 59 | assert.deepStrictEqual(parse("2001-02-02T01:00:01.123Z"), new Date(Date.UTC(2001, 1, 2, 1, 0, 1, 123))); 60 | assert.deepStrictEqual(parse("2001-10-21T01:00:01.123Z"), new Date(Date.UTC(2001, 9, 21, 1, 0, 1, 123))); 61 | }); 62 | it("returns the expected value for various timezones", () => { 63 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123+0000"), new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 123))); 64 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123+00:00"), new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 123))); 65 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123+0130"), new Date(Date.UTC(2000, 11, 31, 22, 30, 0, 123))); 66 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123+01:30"), new Date(Date.UTC(2000, 11, 31, 22, 30, 0, 123))); 67 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123-0000"), new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 123))); // RFC 3339, but not ISO 8601 68 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123-00:00"), new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 123))); // RFC 3339, but not ISO 8601 69 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123-0130"), new Date(Date.UTC(2001, 0, 1, 1, 30, 0, 123))); // RFC 3339, but not ISO 8601 70 | assert.deepStrictEqual(parse("2001-01-01T00:00:00.123-01:30"), new Date(Date.UTC(2001, 0, 1, 1, 30, 0, 123))); // RFC 3339, but not ISO 8601 71 | }); 72 | it("returns the fallback value for noncompliant input", () => { 73 | assert.strictEqual(parse("2001-01-01T00:00:00.123+00"), undefined); // ISO 8601, but not Chrome or Node 74 | assert.strictEqual(parse("2001-01-01T00:00:00.123-01"), undefined); // ISO 8601, but not Chrome or Node 75 | assert.strictEqual(parse("2001-01-01 00:00:00.123Z"), undefined); // RFC 3339, but not ISO 8601 76 | assert.strictEqual(parse("2001-01-01t00:00:00.123Z"), undefined); // RFC 3339, but not ISO 8601 77 | assert.strictEqual(parse("2021-W36"), undefined); // ISO 8601 week 78 | assert.strictEqual(parse("2021-W36-1"), undefined); // ISO 8601 week with weekday 79 | assert.strictEqual(parse("--09-06"), undefined); // ISO 8601 date without year 80 | assert.strictEqual(parse("2021-249"), undefined); // ISO 8601 ordinal date 81 | }); 82 | it("returns the specified fallback value for noncompliant input", () => { 83 | assert.strictEqual(parse("2001-01-01T00:00:00.123+00", null), null); // ISO 8601, but not Chrome or Node 84 | assert.strictEqual(parse("2001-01-01T00:00:00.123-01", null), null); // ISO 8601, but not Chrome or Node 85 | assert.strictEqual(parse("2001-01-01 00:00:00.123Z", null), null); // RFC 3339, but not ISO 8601 86 | assert.strictEqual(parse("2001-01-01t00:00:00.123Z", null), null); // RFC 3339, but not ISO 8601 87 | assert.strictEqual(parse("2021-W36", null), null); // ISO 8601 week 88 | assert.strictEqual(parse("2021-W36-1", null), null); // ISO 8601 week with weekday 89 | assert.strictEqual(parse("--09-06", null), null); // ISO 8601 date without year 90 | assert.strictEqual(parse("2021-249", null), null); // ISO 8601 ordinal date 91 | }); 92 | it("invokes the fallback function for noncompliant input", () => { 93 | const error = () => { throw new RangeError("invalid date"); }; 94 | assert.throws(() => parse("2001-01-01T00:00:00.123+00", error)); // ISO 8601, but not Chrome or Node 95 | assert.throws(() => parse("2001-01-01T00:00:00.123-01", error)); // ISO 8601, but not Chrome or Node 96 | assert.throws(() => parse("2001-01-01 00:00:00.123Z", error)); // RFC 3339, but not ISO 8601 97 | assert.throws(() => parse("2001-01-01t00:00:00.123Z", error)); // RFC 3339, but not ISO 8601 98 | assert.throws(() => parse("2021-W36", error)); // ISO 8601 week 99 | assert.throws(() => parse("2021-W36-1", error)); // ISO 8601 week with weekday 100 | assert.throws(() => parse("--09-06", error)); // ISO 8601 date without year 101 | assert.throws(() => parse("2021-249", error)); // ISO 8601 ordinal date 102 | }); 103 | it("passes the fallback function the input as a string", () => { 104 | assert.strictEqual(parse({toString: () => "hello"}, x => x), "hello"); 105 | }); 106 | }); 107 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.14.5": 13 | version "7.14.9" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" 15 | integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.14.5" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 20 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.14.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.3": 27 | version "0.4.3" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 29 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^13.9.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@humanwhocodes/config-array@^0.5.0": 42 | version "0.5.0" 43 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 44 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 45 | dependencies: 46 | "@humanwhocodes/object-schema" "^1.2.0" 47 | debug "^4.1.1" 48 | minimatch "^3.0.4" 49 | 50 | "@humanwhocodes/object-schema@^1.2.0": 51 | version "1.2.0" 52 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" 53 | integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== 54 | 55 | "@ungap/promise-all-settled@1.1.2": 56 | version "1.1.2" 57 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 58 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 59 | 60 | acorn-jsx@^5.3.1: 61 | version "5.3.2" 62 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 63 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 64 | 65 | acorn@^7.4.0: 66 | version "7.4.1" 67 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 68 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 69 | 70 | ajv@^6.10.0, ajv@^6.12.4: 71 | version "6.12.6" 72 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 73 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 74 | dependencies: 75 | fast-deep-equal "^3.1.1" 76 | fast-json-stable-stringify "^2.0.0" 77 | json-schema-traverse "^0.4.1" 78 | uri-js "^4.2.2" 79 | 80 | ajv@^8.0.1: 81 | version "8.6.2" 82 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" 83 | integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== 84 | dependencies: 85 | fast-deep-equal "^3.1.1" 86 | json-schema-traverse "^1.0.0" 87 | require-from-string "^2.0.2" 88 | uri-js "^4.2.2" 89 | 90 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 91 | version "4.1.1" 92 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 93 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 94 | 95 | ansi-regex@^3.0.0: 96 | version "3.0.0" 97 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 98 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 99 | 100 | ansi-regex@^5.0.0: 101 | version "5.0.0" 102 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 103 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 104 | 105 | ansi-styles@^3.2.1: 106 | version "3.2.1" 107 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 108 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 109 | dependencies: 110 | color-convert "^1.9.0" 111 | 112 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 113 | version "4.3.0" 114 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 115 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 116 | dependencies: 117 | color-convert "^2.0.1" 118 | 119 | anymatch@~3.1.2: 120 | version "3.1.2" 121 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 122 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 123 | dependencies: 124 | normalize-path "^3.0.0" 125 | picomatch "^2.0.4" 126 | 127 | argparse@^1.0.7: 128 | version "1.0.10" 129 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 130 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 131 | dependencies: 132 | sprintf-js "~1.0.2" 133 | 134 | argparse@^2.0.1: 135 | version "2.0.1" 136 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 137 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 138 | 139 | astral-regex@^2.0.0: 140 | version "2.0.0" 141 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 142 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 143 | 144 | balanced-match@^1.0.0: 145 | version "1.0.2" 146 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 147 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 148 | 149 | binary-extensions@^2.0.0: 150 | version "2.2.0" 151 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 152 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 153 | 154 | brace-expansion@^1.1.7: 155 | version "1.1.11" 156 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 157 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 158 | dependencies: 159 | balanced-match "^1.0.0" 160 | concat-map "0.0.1" 161 | 162 | braces@~3.0.2: 163 | version "3.0.2" 164 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 165 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 166 | dependencies: 167 | fill-range "^7.0.1" 168 | 169 | browser-stdout@1.3.1: 170 | version "1.3.1" 171 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 172 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 173 | 174 | callsites@^3.0.0: 175 | version "3.1.0" 176 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 177 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 178 | 179 | camelcase@^6.0.0: 180 | version "6.2.0" 181 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 182 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 183 | 184 | chalk@^2.0.0: 185 | version "2.4.2" 186 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 187 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 188 | dependencies: 189 | ansi-styles "^3.2.1" 190 | escape-string-regexp "^1.0.5" 191 | supports-color "^5.3.0" 192 | 193 | chalk@^4.0.0, chalk@^4.1.0: 194 | version "4.1.2" 195 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 196 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 197 | dependencies: 198 | ansi-styles "^4.1.0" 199 | supports-color "^7.1.0" 200 | 201 | chokidar@3.5.2: 202 | version "3.5.2" 203 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" 204 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== 205 | dependencies: 206 | anymatch "~3.1.2" 207 | braces "~3.0.2" 208 | glob-parent "~5.1.2" 209 | is-binary-path "~2.1.0" 210 | is-glob "~4.0.1" 211 | normalize-path "~3.0.0" 212 | readdirp "~3.6.0" 213 | optionalDependencies: 214 | fsevents "~2.3.2" 215 | 216 | cliui@^7.0.2: 217 | version "7.0.4" 218 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 219 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 220 | dependencies: 221 | string-width "^4.2.0" 222 | strip-ansi "^6.0.0" 223 | wrap-ansi "^7.0.0" 224 | 225 | color-convert@^1.9.0: 226 | version "1.9.3" 227 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 228 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 229 | dependencies: 230 | color-name "1.1.3" 231 | 232 | color-convert@^2.0.1: 233 | version "2.0.1" 234 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 235 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 236 | dependencies: 237 | color-name "~1.1.4" 238 | 239 | color-name@1.1.3: 240 | version "1.1.3" 241 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 242 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 243 | 244 | color-name@~1.1.4: 245 | version "1.1.4" 246 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 247 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 248 | 249 | concat-map@0.0.1: 250 | version "0.0.1" 251 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 252 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 253 | 254 | cross-spawn@^7.0.2: 255 | version "7.0.3" 256 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 257 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 258 | dependencies: 259 | path-key "^3.1.0" 260 | shebang-command "^2.0.0" 261 | which "^2.0.1" 262 | 263 | debug@4.3.1: 264 | version "4.3.1" 265 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 266 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 267 | dependencies: 268 | ms "2.1.2" 269 | 270 | debug@^4.0.1, debug@^4.1.1: 271 | version "4.3.2" 272 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 273 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 274 | dependencies: 275 | ms "2.1.2" 276 | 277 | decamelize@^4.0.0: 278 | version "4.0.0" 279 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 280 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 281 | 282 | deep-is@^0.1.3: 283 | version "0.1.4" 284 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 285 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 286 | 287 | diff@5.0.0: 288 | version "5.0.0" 289 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 290 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 291 | 292 | doctrine@^3.0.0: 293 | version "3.0.0" 294 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 295 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 296 | dependencies: 297 | esutils "^2.0.2" 298 | 299 | emoji-regex@^8.0.0: 300 | version "8.0.0" 301 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 302 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 303 | 304 | enquirer@^2.3.5: 305 | version "2.3.6" 306 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 307 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 308 | dependencies: 309 | ansi-colors "^4.1.1" 310 | 311 | escalade@^3.1.1: 312 | version "3.1.1" 313 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 314 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 315 | 316 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: 317 | version "4.0.0" 318 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 319 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 320 | 321 | escape-string-regexp@^1.0.5: 322 | version "1.0.5" 323 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 324 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 325 | 326 | eslint-scope@^5.1.1: 327 | version "5.1.1" 328 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 329 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 330 | dependencies: 331 | esrecurse "^4.3.0" 332 | estraverse "^4.1.1" 333 | 334 | eslint-utils@^2.1.0: 335 | version "2.1.0" 336 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 337 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 338 | dependencies: 339 | eslint-visitor-keys "^1.1.0" 340 | 341 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 342 | version "1.3.0" 343 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 344 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 345 | 346 | eslint-visitor-keys@^2.0.0: 347 | version "2.1.0" 348 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 349 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 350 | 351 | eslint@^7.32.0: 352 | version "7.32.0" 353 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 354 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 355 | dependencies: 356 | "@babel/code-frame" "7.12.11" 357 | "@eslint/eslintrc" "^0.4.3" 358 | "@humanwhocodes/config-array" "^0.5.0" 359 | ajv "^6.10.0" 360 | chalk "^4.0.0" 361 | cross-spawn "^7.0.2" 362 | debug "^4.0.1" 363 | doctrine "^3.0.0" 364 | enquirer "^2.3.5" 365 | escape-string-regexp "^4.0.0" 366 | eslint-scope "^5.1.1" 367 | eslint-utils "^2.1.0" 368 | eslint-visitor-keys "^2.0.0" 369 | espree "^7.3.1" 370 | esquery "^1.4.0" 371 | esutils "^2.0.2" 372 | fast-deep-equal "^3.1.3" 373 | file-entry-cache "^6.0.1" 374 | functional-red-black-tree "^1.0.1" 375 | glob-parent "^5.1.2" 376 | globals "^13.6.0" 377 | ignore "^4.0.6" 378 | import-fresh "^3.0.0" 379 | imurmurhash "^0.1.4" 380 | is-glob "^4.0.0" 381 | js-yaml "^3.13.1" 382 | json-stable-stringify-without-jsonify "^1.0.1" 383 | levn "^0.4.1" 384 | lodash.merge "^4.6.2" 385 | minimatch "^3.0.4" 386 | natural-compare "^1.4.0" 387 | optionator "^0.9.1" 388 | progress "^2.0.0" 389 | regexpp "^3.1.0" 390 | semver "^7.2.1" 391 | strip-ansi "^6.0.0" 392 | strip-json-comments "^3.1.0" 393 | table "^6.0.9" 394 | text-table "^0.2.0" 395 | v8-compile-cache "^2.0.3" 396 | 397 | espree@^7.3.0, espree@^7.3.1: 398 | version "7.3.1" 399 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 400 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 401 | dependencies: 402 | acorn "^7.4.0" 403 | acorn-jsx "^5.3.1" 404 | eslint-visitor-keys "^1.3.0" 405 | 406 | esprima@^4.0.0: 407 | version "4.0.1" 408 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 409 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 410 | 411 | esquery@^1.4.0: 412 | version "1.4.0" 413 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 414 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 415 | dependencies: 416 | estraverse "^5.1.0" 417 | 418 | esrecurse@^4.3.0: 419 | version "4.3.0" 420 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 421 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 422 | dependencies: 423 | estraverse "^5.2.0" 424 | 425 | estraverse@^4.1.1: 426 | version "4.3.0" 427 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 428 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 429 | 430 | estraverse@^5.1.0, estraverse@^5.2.0: 431 | version "5.2.0" 432 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 433 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 434 | 435 | esutils@^2.0.2: 436 | version "2.0.3" 437 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 438 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 439 | 440 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 441 | version "3.1.3" 442 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 443 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 444 | 445 | fast-json-stable-stringify@^2.0.0: 446 | version "2.1.0" 447 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 448 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 449 | 450 | fast-levenshtein@^2.0.6: 451 | version "2.0.6" 452 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 453 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 454 | 455 | file-entry-cache@^6.0.1: 456 | version "6.0.1" 457 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 458 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 459 | dependencies: 460 | flat-cache "^3.0.4" 461 | 462 | fill-range@^7.0.1: 463 | version "7.0.1" 464 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 465 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 466 | dependencies: 467 | to-regex-range "^5.0.1" 468 | 469 | find-up@5.0.0: 470 | version "5.0.0" 471 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 472 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 473 | dependencies: 474 | locate-path "^6.0.0" 475 | path-exists "^4.0.0" 476 | 477 | flat-cache@^3.0.4: 478 | version "3.0.4" 479 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 480 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 481 | dependencies: 482 | flatted "^3.1.0" 483 | rimraf "^3.0.2" 484 | 485 | flat@^5.0.2: 486 | version "5.0.2" 487 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 488 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 489 | 490 | flatted@^3.1.0: 491 | version "3.2.2" 492 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" 493 | integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== 494 | 495 | fs.realpath@^1.0.0: 496 | version "1.0.0" 497 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 498 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 499 | 500 | fsevents@~2.3.2: 501 | version "2.3.2" 502 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 503 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 504 | 505 | functional-red-black-tree@^1.0.1: 506 | version "1.0.1" 507 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 508 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 509 | 510 | get-caller-file@^2.0.5: 511 | version "2.0.5" 512 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 513 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 514 | 515 | glob-parent@^5.1.2, glob-parent@~5.1.2: 516 | version "5.1.2" 517 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 518 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 519 | dependencies: 520 | is-glob "^4.0.1" 521 | 522 | glob@7.1.7, glob@^7.1.3: 523 | version "7.1.7" 524 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 525 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 526 | dependencies: 527 | fs.realpath "^1.0.0" 528 | inflight "^1.0.4" 529 | inherits "2" 530 | minimatch "^3.0.4" 531 | once "^1.3.0" 532 | path-is-absolute "^1.0.0" 533 | 534 | globals@^13.6.0, globals@^13.9.0: 535 | version "13.11.0" 536 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" 537 | integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== 538 | dependencies: 539 | type-fest "^0.20.2" 540 | 541 | growl@1.10.5: 542 | version "1.10.5" 543 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 544 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 545 | 546 | has-flag@^3.0.0: 547 | version "3.0.0" 548 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 549 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 550 | 551 | has-flag@^4.0.0: 552 | version "4.0.0" 553 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 554 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 555 | 556 | he@1.2.0: 557 | version "1.2.0" 558 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 559 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 560 | 561 | ignore@^4.0.6: 562 | version "4.0.6" 563 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 564 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 565 | 566 | import-fresh@^3.0.0, import-fresh@^3.2.1: 567 | version "3.3.0" 568 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 569 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 570 | dependencies: 571 | parent-module "^1.0.0" 572 | resolve-from "^4.0.0" 573 | 574 | imurmurhash@^0.1.4: 575 | version "0.1.4" 576 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 577 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 578 | 579 | inflight@^1.0.4: 580 | version "1.0.6" 581 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 582 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 583 | dependencies: 584 | once "^1.3.0" 585 | wrappy "1" 586 | 587 | inherits@2: 588 | version "2.0.4" 589 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 590 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 591 | 592 | is-binary-path@~2.1.0: 593 | version "2.1.0" 594 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 595 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 596 | dependencies: 597 | binary-extensions "^2.0.0" 598 | 599 | is-extglob@^2.1.1: 600 | version "2.1.1" 601 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 602 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 603 | 604 | is-fullwidth-code-point@^2.0.0: 605 | version "2.0.0" 606 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 607 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 608 | 609 | is-fullwidth-code-point@^3.0.0: 610 | version "3.0.0" 611 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 612 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 613 | 614 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 615 | version "4.0.1" 616 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 617 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 618 | dependencies: 619 | is-extglob "^2.1.1" 620 | 621 | is-number@^7.0.0: 622 | version "7.0.0" 623 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 624 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 625 | 626 | is-plain-obj@^2.1.0: 627 | version "2.1.0" 628 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 629 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 630 | 631 | is-unicode-supported@^0.1.0: 632 | version "0.1.0" 633 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 634 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 635 | 636 | isexe@^2.0.0: 637 | version "2.0.0" 638 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 639 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 640 | 641 | js-tokens@^4.0.0: 642 | version "4.0.0" 643 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 644 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 645 | 646 | js-yaml@4.1.0: 647 | version "4.1.0" 648 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 649 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 650 | dependencies: 651 | argparse "^2.0.1" 652 | 653 | js-yaml@^3.13.1: 654 | version "3.14.1" 655 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 656 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 657 | dependencies: 658 | argparse "^1.0.7" 659 | esprima "^4.0.0" 660 | 661 | json-schema-traverse@^0.4.1: 662 | version "0.4.1" 663 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 664 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 665 | 666 | json-schema-traverse@^1.0.0: 667 | version "1.0.0" 668 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 669 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 670 | 671 | json-stable-stringify-without-jsonify@^1.0.1: 672 | version "1.0.1" 673 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 674 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 675 | 676 | levn@^0.4.1: 677 | version "0.4.1" 678 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 679 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 680 | dependencies: 681 | prelude-ls "^1.2.1" 682 | type-check "~0.4.0" 683 | 684 | locate-path@^6.0.0: 685 | version "6.0.0" 686 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 687 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 688 | dependencies: 689 | p-locate "^5.0.0" 690 | 691 | lodash.clonedeep@^4.5.0: 692 | version "4.5.0" 693 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 694 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 695 | 696 | lodash.merge@^4.6.2: 697 | version "4.6.2" 698 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 699 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 700 | 701 | lodash.truncate@^4.4.2: 702 | version "4.4.2" 703 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 704 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 705 | 706 | log-symbols@4.1.0: 707 | version "4.1.0" 708 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 709 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 710 | dependencies: 711 | chalk "^4.1.0" 712 | is-unicode-supported "^0.1.0" 713 | 714 | lru-cache@^6.0.0: 715 | version "6.0.0" 716 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 717 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 718 | dependencies: 719 | yallist "^4.0.0" 720 | 721 | minimatch@3.0.4, minimatch@^3.0.4: 722 | version "3.0.4" 723 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 724 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 725 | dependencies: 726 | brace-expansion "^1.1.7" 727 | 728 | mocha@^9.1.1: 729 | version "9.1.1" 730 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.1.tgz#33df2eb9c6262434630510c5f4283b36efda9b61" 731 | integrity sha512-0wE74YMgOkCgBUj8VyIDwmLUjTsS13WV1Pg7l0SHea2qzZzlq7MDnfbPsHKcELBRk3+izEVkRofjmClpycudCA== 732 | dependencies: 733 | "@ungap/promise-all-settled" "1.1.2" 734 | ansi-colors "4.1.1" 735 | browser-stdout "1.3.1" 736 | chokidar "3.5.2" 737 | debug "4.3.1" 738 | diff "5.0.0" 739 | escape-string-regexp "4.0.0" 740 | find-up "5.0.0" 741 | glob "7.1.7" 742 | growl "1.10.5" 743 | he "1.2.0" 744 | js-yaml "4.1.0" 745 | log-symbols "4.1.0" 746 | minimatch "3.0.4" 747 | ms "2.1.3" 748 | nanoid "3.1.23" 749 | serialize-javascript "6.0.0" 750 | strip-json-comments "3.1.1" 751 | supports-color "8.1.1" 752 | which "2.0.2" 753 | wide-align "1.1.3" 754 | workerpool "6.1.5" 755 | yargs "16.2.0" 756 | yargs-parser "20.2.4" 757 | yargs-unparser "2.0.0" 758 | 759 | ms@2.1.2: 760 | version "2.1.2" 761 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 762 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 763 | 764 | ms@2.1.3: 765 | version "2.1.3" 766 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 767 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 768 | 769 | nanoid@3.1.23: 770 | version "3.1.23" 771 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" 772 | integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== 773 | 774 | natural-compare@^1.4.0: 775 | version "1.4.0" 776 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 777 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 778 | 779 | normalize-path@^3.0.0, normalize-path@~3.0.0: 780 | version "3.0.0" 781 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 782 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 783 | 784 | once@^1.3.0: 785 | version "1.4.0" 786 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 787 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 788 | dependencies: 789 | wrappy "1" 790 | 791 | optionator@^0.9.1: 792 | version "0.9.1" 793 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 794 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 795 | dependencies: 796 | deep-is "^0.1.3" 797 | fast-levenshtein "^2.0.6" 798 | levn "^0.4.1" 799 | prelude-ls "^1.2.1" 800 | type-check "^0.4.0" 801 | word-wrap "^1.2.3" 802 | 803 | p-limit@^3.0.2: 804 | version "3.1.0" 805 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 806 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 807 | dependencies: 808 | yocto-queue "^0.1.0" 809 | 810 | p-locate@^5.0.0: 811 | version "5.0.0" 812 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 813 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 814 | dependencies: 815 | p-limit "^3.0.2" 816 | 817 | parent-module@^1.0.0: 818 | version "1.0.1" 819 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 820 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 821 | dependencies: 822 | callsites "^3.0.0" 823 | 824 | path-exists@^4.0.0: 825 | version "4.0.0" 826 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 827 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 828 | 829 | path-is-absolute@^1.0.0: 830 | version "1.0.1" 831 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 832 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 833 | 834 | path-key@^3.1.0: 835 | version "3.1.1" 836 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 837 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 838 | 839 | picomatch@^2.0.4, picomatch@^2.2.1: 840 | version "2.3.0" 841 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 842 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 843 | 844 | prelude-ls@^1.2.1: 845 | version "1.2.1" 846 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 847 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 848 | 849 | progress@^2.0.0: 850 | version "2.0.3" 851 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 852 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 853 | 854 | punycode@^2.1.0: 855 | version "2.1.1" 856 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 857 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 858 | 859 | randombytes@^2.1.0: 860 | version "2.1.0" 861 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 862 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 863 | dependencies: 864 | safe-buffer "^5.1.0" 865 | 866 | readdirp@~3.6.0: 867 | version "3.6.0" 868 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 869 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 870 | dependencies: 871 | picomatch "^2.2.1" 872 | 873 | regexpp@^3.1.0: 874 | version "3.2.0" 875 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 876 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 877 | 878 | require-directory@^2.1.1: 879 | version "2.1.1" 880 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 881 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 882 | 883 | require-from-string@^2.0.2: 884 | version "2.0.2" 885 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 886 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 887 | 888 | resolve-from@^4.0.0: 889 | version "4.0.0" 890 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 891 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 892 | 893 | rimraf@^3.0.2: 894 | version "3.0.2" 895 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 896 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 897 | dependencies: 898 | glob "^7.1.3" 899 | 900 | safe-buffer@^5.1.0: 901 | version "5.2.1" 902 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 903 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 904 | 905 | semver@^7.2.1: 906 | version "7.3.5" 907 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 908 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 909 | dependencies: 910 | lru-cache "^6.0.0" 911 | 912 | serialize-javascript@6.0.0: 913 | version "6.0.0" 914 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 915 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 916 | dependencies: 917 | randombytes "^2.1.0" 918 | 919 | shebang-command@^2.0.0: 920 | version "2.0.0" 921 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 922 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 923 | dependencies: 924 | shebang-regex "^3.0.0" 925 | 926 | shebang-regex@^3.0.0: 927 | version "3.0.0" 928 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 929 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 930 | 931 | slice-ansi@^4.0.0: 932 | version "4.0.0" 933 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 934 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 935 | dependencies: 936 | ansi-styles "^4.0.0" 937 | astral-regex "^2.0.0" 938 | is-fullwidth-code-point "^3.0.0" 939 | 940 | sprintf-js@~1.0.2: 941 | version "1.0.3" 942 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 943 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 944 | 945 | "string-width@^1.0.2 || 2": 946 | version "2.1.1" 947 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 948 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 949 | dependencies: 950 | is-fullwidth-code-point "^2.0.0" 951 | strip-ansi "^4.0.0" 952 | 953 | string-width@^4.1.0, string-width@^4.2.0: 954 | version "4.2.2" 955 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 956 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 957 | dependencies: 958 | emoji-regex "^8.0.0" 959 | is-fullwidth-code-point "^3.0.0" 960 | strip-ansi "^6.0.0" 961 | 962 | strip-ansi@^4.0.0: 963 | version "4.0.0" 964 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 965 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 966 | dependencies: 967 | ansi-regex "^3.0.0" 968 | 969 | strip-ansi@^6.0.0: 970 | version "6.0.0" 971 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 972 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 973 | dependencies: 974 | ansi-regex "^5.0.0" 975 | 976 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 977 | version "3.1.1" 978 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 979 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 980 | 981 | supports-color@8.1.1: 982 | version "8.1.1" 983 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 984 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 985 | dependencies: 986 | has-flag "^4.0.0" 987 | 988 | supports-color@^5.3.0: 989 | version "5.5.0" 990 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 991 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 992 | dependencies: 993 | has-flag "^3.0.0" 994 | 995 | supports-color@^7.1.0: 996 | version "7.2.0" 997 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 998 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 999 | dependencies: 1000 | has-flag "^4.0.0" 1001 | 1002 | table@^6.0.9: 1003 | version "6.7.1" 1004 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" 1005 | integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== 1006 | dependencies: 1007 | ajv "^8.0.1" 1008 | lodash.clonedeep "^4.5.0" 1009 | lodash.truncate "^4.4.2" 1010 | slice-ansi "^4.0.0" 1011 | string-width "^4.2.0" 1012 | strip-ansi "^6.0.0" 1013 | 1014 | text-table@^0.2.0: 1015 | version "0.2.0" 1016 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1017 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1018 | 1019 | to-regex-range@^5.0.1: 1020 | version "5.0.1" 1021 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1022 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1023 | dependencies: 1024 | is-number "^7.0.0" 1025 | 1026 | type-check@^0.4.0, type-check@~0.4.0: 1027 | version "0.4.0" 1028 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1029 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1030 | dependencies: 1031 | prelude-ls "^1.2.1" 1032 | 1033 | type-fest@^0.20.2: 1034 | version "0.20.2" 1035 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1036 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1037 | 1038 | uri-js@^4.2.2: 1039 | version "4.4.1" 1040 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1041 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1042 | dependencies: 1043 | punycode "^2.1.0" 1044 | 1045 | v8-compile-cache@^2.0.3: 1046 | version "2.3.0" 1047 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1048 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1049 | 1050 | which@2.0.2, which@^2.0.1: 1051 | version "2.0.2" 1052 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1053 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1054 | dependencies: 1055 | isexe "^2.0.0" 1056 | 1057 | wide-align@1.1.3: 1058 | version "1.1.3" 1059 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1060 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1061 | dependencies: 1062 | string-width "^1.0.2 || 2" 1063 | 1064 | word-wrap@^1.2.3: 1065 | version "1.2.3" 1066 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1067 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1068 | 1069 | workerpool@6.1.5: 1070 | version "6.1.5" 1071 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" 1072 | integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== 1073 | 1074 | wrap-ansi@^7.0.0: 1075 | version "7.0.0" 1076 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1077 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1078 | dependencies: 1079 | ansi-styles "^4.0.0" 1080 | string-width "^4.1.0" 1081 | strip-ansi "^6.0.0" 1082 | 1083 | wrappy@1: 1084 | version "1.0.2" 1085 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1086 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1087 | 1088 | y18n@^5.0.5: 1089 | version "5.0.8" 1090 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1091 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1092 | 1093 | yallist@^4.0.0: 1094 | version "4.0.0" 1095 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1096 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1097 | 1098 | yargs-parser@20.2.4: 1099 | version "20.2.4" 1100 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1101 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1102 | 1103 | yargs-parser@^20.2.2: 1104 | version "20.2.9" 1105 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1106 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1107 | 1108 | yargs-unparser@2.0.0: 1109 | version "2.0.0" 1110 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1111 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1112 | dependencies: 1113 | camelcase "^6.0.0" 1114 | decamelize "^4.0.0" 1115 | flat "^5.0.2" 1116 | is-plain-obj "^2.1.0" 1117 | 1118 | yargs@16.2.0: 1119 | version "16.2.0" 1120 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1121 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1122 | dependencies: 1123 | cliui "^7.0.2" 1124 | escalade "^3.1.1" 1125 | get-caller-file "^2.0.5" 1126 | require-directory "^2.1.1" 1127 | string-width "^4.2.0" 1128 | y18n "^5.0.5" 1129 | yargs-parser "^20.2.2" 1130 | 1131 | yocto-queue@^0.1.0: 1132 | version "0.1.0" 1133 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1134 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1135 | --------------------------------------------------------------------------------