From 97a24a3556e963a5a00e9c17bff8cd49a0774f7e Mon Sep 17 00:00:00 2001 From: Borewit Date: Thu, 27 Jan 2022 11:09:40 +0100 Subject: [PATCH] Migrate from `tslint` to `eslint` --- .eslintrc.json | 224 +++++++ example/.eslintrc.json | 8 + lib/ParserFactory.ts | 18 +- lib/apev2/APEv2Parser.ts | 3 +- lib/type.ts | 13 +- package.json | 14 +- test/.eslintrc.json | 14 + test/test-file-mp3.ts | 4 +- test/test-file-mpeg.ts | 5 +- test/test-id3v2-duration-allframes.ts | 10 +- test/test-id3v2.2.ts | 2 +- test/test-id3v2.3.ts | 2 +- test/test-merge-tag-headers.ts | 2 +- test/test-mime.ts | 24 +- test/test-picard-parsing.ts | 2 +- test/test-pr-544.ts | 911 +++++++++----------------- test/test-regress-GH-56.ts | 2 +- tslint.json | 26 - yarn.lock | 552 +++++++++++++++- 19 files changed, 1148 insertions(+), 688 deletions(-) create mode 100644 .eslintrc.json create mode 100644 example/.eslintrc.json create mode 100644 test/.eslintrc.json delete mode 100644 tslint.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..160d9490f --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,224 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": [ + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json", + "sourceType": "module" + }, + "plugins": [ + "eslint-plugin-import", + "eslint-plugin-jsdoc", + "eslint-plugin-unicorn", + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": [ + "error", + { + "default": "array" + } + ], + "@typescript-eslint/ban-types": [ + "error", + { + "types": { + "Object": { + "message": "Avoid using the `Object` type. Did you mean `object`?" + }, + "Function": { + "message": "Avoid using the `Function` type. Prefer a specific function type, like `() => void`." + }, + "Boolean": { + "message": "Avoid using the `Boolean` type. Did you mean `boolean`?" + }, + "Number": { + "message": "Avoid using the `Number` type. Did you mean `number`?" + }, + "String": { + "message": "Avoid using the `String` type. Did you mean `string`?" + }, + "Symbol": { + "message": "Avoid using the `Symbol` type. Did you mean `symbol`?" + } + } + } + ], + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/indent": [ + "error", + 2, + { + "ObjectExpression": "first", + "FunctionDeclaration": { + "parameters": "first" + }, + "FunctionExpression": { + "parameters": "first" + }, + "SwitchCase": 1 + } + ], + "@typescript-eslint/naming-convention": "off", + "@typescript-eslint/no-empty-function": [ + "error", + { + "allow": [ + "constructors" + ] + } + ], + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-parameter-properties": "off", + "@typescript-eslint/no-shadow": [ + "error", + { + "hoist": "all" + } + ], + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-var-requires": "error", + "@typescript-eslint/prefer-for-of": "off", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/quotes": "off", + "@typescript-eslint/semi": [ + "error", + "always" + ], + "@typescript-eslint/triple-slash-reference": [ + "error", + { + "path": "always", + "types": "prefer-import", + "lib": "always" + } + ], + "@typescript-eslint/unified-signatures": "error", + "arrow-parens": [ + "error", + "as-needed" + ], + "comma-dangle": "error", + "complexity": "off", + "constructor-super": "error", + "curly": "off", + "default-case": "off", + "dot-notation": "error", + "eqeqeq": [ + "error", + "smart" + ], + "guard-for-in": "off", + "id-denylist": [ + "error", + "any", + "Number", + "number", + "String", + "string", + "Boolean", + "boolean", + "Undefined", + "undefined" + ], + "id-match": "error", + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": false + } + ], + "import/no-internal-modules": "off", + "import/order": "off", + "indent": "off", + "jsdoc/check-alignment": "error", + "jsdoc/check-indentation": "error", + "jsdoc/newline-after-description": [ + "error", + "never" + ], + "max-classes-per-file": "off", + "max-len": [ + "error", + { + "code": 200 + } + ], + "new-parens": "error", + "no-bitwise": "off", + "no-caller": "error", + "no-cond-assign": "error", + "no-console": "error", + "no-debugger": "error", + "no-duplicate-case": "error", + "no-duplicate-imports": "error", + "no-empty": "error", + "no-empty-function": "off", + "no-eval": "error", + "no-extra-bind": "error", + "no-fallthrough": "off", + "no-invalid-this": "off", + "no-new-func": "error", + "no-new-wrappers": "error", + "no-redeclare": "error", + "no-return-await": "error", + "no-sequences": "error", + "no-shadow": "error", + "no-sparse-arrays": "error", + "no-template-curly-in-string": "error", + "no-throw-literal": "error", + "no-trailing-spaces": "error", + "no-undef-init": "error", + "no-underscore-dangle": "error", + "no-unsafe-finally": "error", + "no-unused-expressions": "error", + "no-unused-labels": "error", + "no-use-before-define": "off", + "no-var": "error", + "object-shorthand": "error", + "one-var": [ + "error", + "never" + ], + "prefer-const": "error", + "prefer-object-spread": "error", + "quote-props": [ + "error", + "as-needed" + ], + "quotes": "off", + "radix": "error", + "semi": "error", + "space-in-parens": [ + "error", + "never" + ], + "spaced-comment": [ + "error", + "always", + { + "markers": [ + "/" + ] + } + ], + "unicorn/prefer-ternary": "error", + "use-isnan": "error", + "valid-typeof": "off" + } +} + diff --git a/example/.eslintrc.json b/example/.eslintrc.json new file mode 100644 index 000000000..b3697d516 --- /dev/null +++ b/example/.eslintrc.json @@ -0,0 +1,8 @@ +/* +ESLint configuration +*/ +{ + "rules": { + "no-console": "off" + } +} diff --git a/lib/ParserFactory.ts b/lib/ParserFactory.ts index a99ca66b2..8a87e60c8 100644 --- a/lib/ParserFactory.ts +++ b/lib/ParserFactory.ts @@ -51,6 +51,14 @@ export function parseHttpContentType(contentType: string): { type: string, subty }; } +async function parse(tokenizer: ITokenizer, parserId: ParserType, opts: IOptions = {}): Promise { + // Parser found, execute parser + const parser = await ParserFactory.loadParser(parserId); + const metadata = new MetadataCollector(opts); + await parser.init(metadata, tokenizer, opts).parse(); + return metadata.toCommonMetadata(); +} + export class ParserFactory { /** @@ -97,7 +105,7 @@ export class ParserFactory { } } // Parser found, execute parser - return this._parse(tokenizer, parserId, opts); + return parse(tokenizer, parserId, opts); } /** @@ -199,14 +207,6 @@ export class ParserFactory { } } - private static async _parse(tokenizer: ITokenizer, parserId: ParserType, opts: IOptions = {}): Promise { - // Parser found, execute parser - const parser = await ParserFactory.loadParser(parserId); - const metadata = new MetadataCollector(opts); - await parser.init(metadata, tokenizer, opts).parse(); - return metadata.toCommonMetadata(); - } - private static getExtension(fname: string): string { const i = fname.lastIndexOf('.'); return i === -1 ? '' : fname.slice(i); diff --git a/lib/apev2/APEv2Parser.ts b/lib/apev2/APEv2Parser.ts index 74d0bd0b9..97e039a46 100644 --- a/lib/apev2/APEv2Parser.ts +++ b/lib/apev2/APEv2Parser.ts @@ -139,11 +139,10 @@ export class APEv2Parser extends BasicParser { bytesRemaining -= key.length + 1; switch (tagItemHeader.flags.dataType) { - case DataType.text_utf8: { // utf-8 textstring + case DataType.text_utf8: { // utf-8 text-string const value = await this.tokenizer.readToken(new StringType(tagItemHeader.size, 'utf8')); const values = value.split(/\x00/g); - /*jshint loopfunc:true */ for (const val of values) { this.metadata.addTag(tagFormat, key, val); } diff --git a/lib/type.ts b/lib/type.ts index 8aaac7a1d..4fa3e82e1 100644 --- a/lib/type.ts +++ b/lib/type.ts @@ -1,5 +1,8 @@ import { GenericTagId, TagType } from './common/GenericTagTypes'; import { IFooter } from './apev2/APEv2Token'; +import { TrackType } from './matroska/types'; + +export { TrackType } from './matroska/types'; /** * Attached picture, typically used for cover art @@ -402,16 +405,6 @@ export interface IVideoTrack { gammaValue?: number; } -export enum TrackType { - video = 0x01, - audio = 0x02, - complex = 0x03, - logo = 0x04, - subtitle = 0x11, - button = 0x12, - control = 0x20 -} - export interface ITrackInfo { type?: TrackType; codecName?: string; diff --git a/package.json b/package.json index c9745ccca..3a3bbd99b 100644 --- a/package.json +++ b/package.json @@ -71,9 +71,9 @@ "compile-test": "tsc -p test", "compile-doc": "tsc -p doc-gen", "compile": "npm run compile-src && npm run compile-test && npm run compile-doc", - "lint-ts": "tslint 'lib/**/*.ts' 'example/typescript/*.ts' --exclude 'lib/**/*.d.ts' 'test/**/*.ts' --exclude 'test/**/*.d.ts' 'doc-gen/**/*.ts'", + "eslint": "eslint lib/*.ts --ignore-pattern lib/*.d.ts example/typescript/*.ts test/*.ts doc-gen/*.ts", "lint-md": "remark -u preset-lint-recommended .", - "lint": "npm run lint-md && npm run lint-ts", + "lint": "npm run lint-md && npm run eslint", "test": "mocha --require ts-node/register --require source-map-support/register --full-trace test/test-*.ts", "build": "npm run clean && npm run compile && npm run doc-gen", "start": "npm-run-all compile lint cover-test", @@ -97,19 +97,25 @@ "@types/file-type": "^10.9.1", "@types/mocha": "^9.1.0", "@types/node": "^17.0.12", + "@typescript-eslint/eslint-plugin": "^5.10.1", + "@typescript-eslint/parser": "^5.10.1", "chai": "^4.3.6", "coveralls": "^3.1.1", "del-cli": "4.0.1", - "eslint": "8.7.0", + "eslint": "^8.7.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jsdoc": "^37.7.0", + "eslint-plugin-unicorn": "^40.1.0", "mime": "^3.0.0", "mocha": "^9.2.0", "npm-run-all": "^4.1.5", "nyc": "^15.1.0", + "prettier": "^2.5.1", "remark-cli": "^10.0.1", "remark-preset-lint-recommended": "^6.1.2", "source-map-support": "^0.5.21", "ts-node": "^10.3.0", - "tslint": "^6.1.3", "typescript": "^4.5.5" }, "engines": { diff --git a/test/.eslintrc.json b/test/.eslintrc.json new file mode 100644 index 000000000..279ff7d39 --- /dev/null +++ b/test/.eslintrc.json @@ -0,0 +1,14 @@ +/* +ESLint configuration +*/ + +{ + "rules": { + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": true + } + ] + } +} diff --git a/test/test-file-mp3.ts b/test/test-file-mp3.ts index 0fb4a68be..9bdbcae2b 100644 --- a/test/test-file-mp3.ts +++ b/test/test-file-mp3.ts @@ -176,7 +176,9 @@ describe('Parse MP3 files', () => { assert.strictEqual(common.album, 'Sanctuary', 'common.album'); assert.strictEqual(common.year, 2005, 'common.year'); - assert.includeDeepMembers(quality.warnings, [{message: 'id3v2.3 type=TLEN header has invalid string value: Expected even number of octets for 16-bit unicode string'}], 'Warning on invalid TLEN field'); + assert.includeDeepMembers(quality.warnings, [{ + message: 'id3v2.3 type=TLEN header has invalid string value: Expected even number of octets for 16-bit unicode string'}], + 'Warning on invalid TLEN field'); }); // https://github.com/Borewit/music-metadata/issues/430 diff --git a/test/test-file-mpeg.ts b/test/test-file-mpeg.ts index f35a21a51..14d64688e 100644 --- a/test/test-file-mpeg.ts +++ b/test/test-file-mpeg.ts @@ -77,7 +77,6 @@ describe('Parse MPEG', () => { describe('mpeg parsing fails for irrelevant attributes #14', () => { - // tslint:disable:only-arrow-functions it('should decode 04 - You Don\'t Know.mp3', async function() { /** @@ -206,7 +205,7 @@ describe('Parse MPEG', () => { it('should handle corrupt frame causing negative frame data left', () => { - /*------------[outofbounds.mp3]------------------------------------------- + /* ------------[outofbounds.mp3]------------------------------------------- Frame 2 header expected at byte 2465, but found at byte 3343. Frame 1 (bytes 2048-3343) was 1295 bytes long (expected 417 bytes). @@ -263,7 +262,7 @@ describe('Parse MPEG', () => { }); /** - * Test on multiple headers: ID3v1, ID3v2.3, ID3v2.4 & ID3v2.4 ( 2x ID3v2.4 !! ) + * Test on multiple headers: ID3v1, ID3v2.3, ID3v2.4 & ID3v2.4 ( 2x ID3v2.4 !! ) */ it('should decode mp3_01 with 2x ID3v2.4 header', async () => { diff --git a/test/test-id3v2-duration-allframes.ts b/test/test-id3v2-duration-allframes.ts index 7a373bf77..f7ddc7a44 100644 --- a/test/test-id3v2-duration-allframes.ts +++ b/test/test-id3v2-duration-allframes.ts @@ -17,11 +17,11 @@ it("should decode id3v2-duration-allframes", () => { * frame_size: 835 * Samples per frame 1152 * - * Summary: - * =============== - * Total number of frames: 57, unpadded: 5, padded: 52 - * File is CBR. Bitrate of each frame is 256 kbps. - * Exact length: 00:01 + * Summary: + * =============== + * Total number of frames: 57, unpadded: 5, padded: 52 + * File is CBR. Bitrate of each frame is 256 kbps. + * Exact length: 00:01 */ const filePath = path.join(samplePath, 'id3v2-duration-allframes.mp3'); diff --git a/test/test-id3v2.2.ts b/test/test-id3v2.2.ts index ebd21ff98..85c8bb20b 100644 --- a/test/test-id3v2.2.ts +++ b/test/test-id3v2.2.ts @@ -83,7 +83,7 @@ describe('ID3v2Parser', () => { assert.deepEqual(id3v22.ULT, [{ description: '', language: 'eng', - // tslint:disable:max-line-length + /* eslint-disable max-len */ text: 'Black rose & a radio fire\nits so contagious\nsuch something changing my mind\nim gonna take whats evil\n\nYour cover melting inside\nwith wide eyes you tremble\nkissing over & over again\nyour god knows his faithful\n\nI try - to digest my pride\nbut passions grip i fear\nwhen i climb - into shallow vats of wine\ni think i almost hear - but its not clear\n\nYou are the one\nyou\'ll never be alone again\nyou\'re more then in my head - your more\n\nSpin faster shouting out loud\nyou cant steal whats paid for\nsuch something hurting again\nmurder son shes painful\n\nYou so believe your own lies\non my skin your fingers\nrunaway until the last time\nwere gonna lose forever\n\nwhen you try - don\'t try to say you wont\ntry to crawl into my head\nwhen you cry - cause it\'s all built up inside\nyour tears already said - already said\n\nYou\'ll never be alone again' }], '[\'ID3v2.2\'].ULT'); }); diff --git a/test/test-id3v2.3.ts b/test/test-id3v2.3.ts index af65646b4..c35e635c5 100644 --- a/test/test-id3v2.3.ts +++ b/test/test-id3v2.3.ts @@ -204,7 +204,7 @@ describe('Extract metadata from ID3v2.3 header', () => { it('4.3.1 WCOM: Commercial information', async () => { const metadata = await mm.parseFile(path.join(samplePath, 'id3v2-lyrics.mp3')); const id3v23 = mm.orderTags(metadata.native['ID3v2.3']); - // tslint:disable:max-line-length + /* eslint-disable max-len */ assert.deepEqual(id3v23.WCOM[0], 'http://www.amazon.com/Rotation-Cute-What-We-Aim/dp/B0018QCXAU%3FSubscriptionId%3D0R6CGKPJ3EKNPQBPYJR2%26tag%3Dsoftpointer-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0018QCXAU'); }); diff --git a/test/test-merge-tag-headers.ts b/test/test-merge-tag-headers.ts index 578980f42..50a1b49ef 100644 --- a/test/test-merge-tag-headers.ts +++ b/test/test-merge-tag-headers.ts @@ -10,7 +10,7 @@ describe('Merge tag headers', () => { /** * issue_77_empty_tag.mp3 (metadata of: 'Like Spinning Plates (Live)'): - * Has an empty ID3v2.3 tag and a ID3v1 tag. + * Has an empty ID3v2.3 tag and a ID3v1 tag. */ it('should ignore empty tag headers', async () => { const metadata = await mm.parseFile(path.join(issueDir, 'issue_77_empty_tag.mp3')); diff --git a/test/test-mime.ts b/test/test-mime.ts index 94d17c70c..d67ba1212 100644 --- a/test/test-mime.ts +++ b/test/test-mime.ts @@ -42,20 +42,16 @@ describe('MIME & extension mapping', () => { it('should map MIME-types', () => { return Promise.all(audioExtension.map(extension => { - - const streamReader = new SourceStream(buf); - // Convert extension to MIME-Type - const mimeType = mime.getType(extension); - t.isNotNull(mimeType, 'extension: ' + extension); - - const res = mm.parseStream(streamReader, mimeType) - .catch(err => { - handleError(extension, err); - }); - - return res; - }) - ); + const streamReader = new SourceStream(buf); + // Convert extension to MIME-Type + const mimeType = mime.getType(extension); + t.isNotNull(mimeType, 'extension: ' + extension); + + return mm.parseStream(streamReader, mimeType) + .catch(err => { + handleError(extension, err); + }); + })); }); diff --git a/test/test-picard-parsing.ts b/test/test-picard-parsing.ts index 964d46fd2..aa6d0d377 100644 --- a/test/test-picard-parsing.ts +++ b/test/test-picard-parsing.ts @@ -1,4 +1,4 @@ -/* tslint:disable:no-string-literal */ +/* eslint-disable dot-notation, @typescript-eslint/dot-notation */ import { assert } from 'chai'; import * as path from 'path'; import * as crypto from 'crypto'; diff --git a/test/test-pr-544.ts b/test/test-pr-544.ts index 1731dd61f..15915c245 100644 --- a/test/test-pr-544.ts +++ b/test/test-pr-544.ts @@ -1,4 +1,4 @@ -import {assert} from 'chai'; +import { assert } from 'chai'; import * as path from 'path'; import * as mm from '../lib'; @@ -10,731 +10,446 @@ const t = assert; describe('Add, change and fix some mappings #pr-544', () => { - describe('Movement Name', () => { + describe('Movement Name', () => { - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.movement, 'Movement Name', 'metadata.common.movement'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.movement, 'Movement Name', 'metadata.common.movement'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.movement, 'Movement Name', 'metadata.common.movement'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.movement, 'Movement Name', 'metadata.common.movement'); + }); }); - describe('Movement Index', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.movementIndex, {no: 1, of: 4}, 'metadata.common.movementIndex'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.movementIndex, {no: 1, of: 4}, 'metadata.common.movementIndex'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.movementIndex, {no: 1, of: 4}, 'metadata.common.movementIndex'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.movement, 'Movement Name', 'metadata.common.movement'); + }); }); + }); - describe('Show Movement', () => { - - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + describe('Movement Index', () => { - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.showMovement, true, 'metadata.common.showMovement'); - }); - });*/ + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.showMovement, true, 'metadata.common.showMovement'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.showMovement, true, 'metadata.common.showMovement'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.movementIndex, {no: 1, of: 4}, 'metadata.common.movementIndex'); + }); }); - describe('Work', () => { - - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.work, 'Work', 'metadata.common.work'); - }); - });*/ + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.work, 'Work', 'metadata.common.work'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.work, 'Work', 'metadata.common.work'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.movementIndex, {no: 1, of: 4}, 'metadata.common.movementIndex'); + }); }); + }); - describe('Podcast', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + describe('Show Movement', () => { - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcast, true, 'metadata.common.podcast'); - }); - }); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcast, true, 'metadata.common.podcast'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcast, true, 'metadata.common.podcast'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.showMovement, true, 'metadata.common.showMovement'); + }); }); + }); - describe('Podcast Category', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.category, ['Podcast Category'], 'metadata.common.category'); - }); - }); + describe('Work', () => { - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.category, ['Podcast Category'], 'metadata.common.category'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.category, ['Podcast Category'], 'metadata.common.category'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.work, 'Work', 'metadata.common.work'); + }); }); + }); - describe('Podcast Identifier', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcastId, '1234', 'metadata.common.podcastId'); - }); - }); + describe('Podcast', () => { - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcastId, '1234', 'metadata.common.podcastId'); - }); - });*/ - - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcastId, '1234', 'metadata.common.podcastId'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.podcast, true, 'metadata.common.podcast'); + }); }); - describe('Podcast Keywords', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.keywords, ['Podcast Keywords'], 'metadata.common.keywords'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.podcast, true, 'metadata.common.podcast'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.keywords, ['Podcast Keywords'], 'metadata.common.keywords'); - }); - });*/ + describe('Podcast Category', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.keywords, ['Podcast Keywords'], 'metadata.common.keywords'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.category, ['Podcast Category'], 'metadata.common.category'); + }); }); - describe('Podcast Url', () => { + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcasturl, 'http://podcast.url', 'metadata.common.podcasturl'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.category, ['Podcast Category'], 'metadata.common.category'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcasturl, 'http://podcast.url', 'metadata.common.podcasturl'); - }); - });*/ + describe('Podcast Identifier', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.podcasturl, 'http://podcast.url', 'metadata.common.podcasturl'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.podcastId, '1234', 'metadata.common.podcastId'); + }); }); - describe('Short Description', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.subtitle, ['Short Description'], 'metadata.common.subscription'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.podcastId, '1234', 'metadata.common.podcastId'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.subtitle, ['Short Description'], 'metadata.common.subtitle'); - }); - });*/ + describe('Podcast Keywords', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.description, ['Short Description'], 'metadata.common.subscription'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.keywords, ['Podcast Keywords'], 'metadata.common.keywords'); + }); }); - describe('Long Description', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.description, ['Long Description'], 'metadata.common.description'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.keywords, ['Podcast Keywords'], 'metadata.common.keywords'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.description, ['Long Description'], 'metadata.common.description'); - }); - });*/ + describe('Podcast Url', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.longDescription, 'Long Description', 'metadata.common.description'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.podcasturl, 'http://podcast.url', 'metadata.common.podcasturl'); + }); }); - describe('Album Artist Sort', () => { + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.albumartistsort, 'Album Artist Sort', 'metadata.common.albumartistsort'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.podcasturl, 'http://podcast.url', 'metadata.common.podcasturl'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.albumartistsort, 'Album Artist Sort', 'metadata.common.albumartistsort'); - }); - });*/ + describe('Short Description', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.albumartistsort, 'Album Artist Sort', 'metadata.common.albumartistsort'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.subtitle, ['Short Description'], 'metadata.common.subscription'); + }); }); - describe('Album Sort', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.albumsort, 'Album Sort', 'metadata.common.albumsort'); - }); - }); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.description, ['Short Description'], 'metadata.common.subscription'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.albumsort, 'Album Sort', 'metadata.common.albumsort'); - }); - });*/ + describe('Long Description', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.albumsort, 'Album Sort', 'metadata.common.albumsort'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.description, ['Long Description'], 'metadata.common.description'); + }); }); - describe('Artist Sort', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.artistsort, 'Artist Sort', 'metadata.common.artistsort'); - }); - }); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.longDescription, 'Long Description', 'metadata.common.description'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.artistsort, 'Artist Sort', 'metadata.common.artistsort'); - }); - });*/ + describe('Album Artist Sort', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.artistsort, 'Artist Sort', 'metadata.common.artistsort'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.albumartistsort, 'Album Artist Sort', 'metadata.common.albumartistsort'); + }); }); - describe('Composer Sort', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.composersort, 'Composer Sort', 'metadata.common.composersort'); - }); - }); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.albumartistsort, 'Album Artist Sort', 'metadata.common.albumartistsort'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.composersort, 'Composer Sort', 'metadata.common.composersort'); - }); - });*/ + describe('Album Sort', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.composersort, 'Composer Sort', 'metadata.common.composersort'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.albumsort, 'Album Sort', 'metadata.common.albumsort'); + }); }); - describe('Title Sort', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.titlesort, 'Title Sort', 'metadata.common.titlesort'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.albumsort, 'Album Sort', 'metadata.common.albumsort'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.titlesort, 'Title Sort', 'metadata.common.titlesort'); - }); - });*/ + describe('Artist Sort', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.titlesort, 'Title Sort', 'metadata.common.titlesort'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.artistsort, 'Artist Sort', 'metadata.common.artistsort'); + }); }); - describe('Copyright', () => { + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.copyright, 'Copyright', 'metadata.common.copyright'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.artistsort, 'Artist Sort', 'metadata.common.artistsort'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.copyright, 'Copyright', 'metadata.common.copyright'); - }); - });*/ + describe('Composer Sort', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.copyright, 'Copyright', 'metadata.common.copyright'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.composersort, 'Composer Sort', 'metadata.common.composersort'); + }); }); - describe('Compilation', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.compilation, true, 'metadata.common.compilation'); - }); - }); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.composersort, 'Composer Sort', 'metadata.common.composersort'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.compilation, true, 'metadata.common.compilation'); - }); - });*/ + describe('Title Sort', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.compilation, true, 'metadata.common.compilation'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.titlesort, 'Title Sort', 'metadata.common.titlesort'); + }); }); - describe('Comment', () => { - - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.comment, ['Tagged with Mp3tag v3.01'], 'metadata.common.comment'); - }); - }); - - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.titlesort, 'Title Sort', 'metadata.common.titlesort'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.comment, ['Tagged with Mp3tag v3.01'], 'metadata.common.comment'); - }); - });*/ + describe('Copyright', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.deepEqual(metadata.common.comment, ['Tagged with Mp3tag v3.01'], 'metadata.common.comment'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.copyright, 'Copyright', 'metadata.common.copyright'); + }); }); - describe('Release time', () => { + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.copyright, 'Copyright', 'metadata.common.copyright'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.date, '2020-06-29T00:00:00.000Z', 'metadata.common.date'); + describe('Compilation', () => { - t.strictEqual(metadata.common.year, 2020, 'metadata.common.year'); - }); - }); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.compilation, true, 'metadata.common.compilation'); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.date, '2020-06-29T00:00:00.000Z', 'metadata.common.date'); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - t.strictEqual(metadata.common.year, 2020, 'metadata.common.year'); - }); - });*/ + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.compilation, true, 'metadata.common.compilation'); + }); + }); + }); - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + describe('Comment', () => { - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.date, '2020-06-29T00:00:00.000Z', 'metadata.common.date'); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - t.strictEqual(metadata.common.year, 2020, 'metadata.common.year'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.comment, ['Tagged with Mp3tag v3.01'], 'metadata.common.comment'); + }); }); - describe('Original Album', () => { + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); - - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.originalalbum, 'Original Album', 'metadata.common.originalalbum'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.deepEqual(metadata.common.comment, ['Tagged with Mp3tag v3.01'], 'metadata.common.comment'); + }); + }); + }); - // No possibility found to write id3v22 test file - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + describe('Release time', () => { - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.originalalbum, 'Original Album', 'metadata.common.originalalbum'); - }); - });*/ + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - // Not exists in MP4 (Written as comment) - /*it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.date, '2020-06-29T00:00:00.000Z', 'metadata.common.date'); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.originalalbum, 'Original Album', 'metadata.common.originalalbum'); - }); - });*/ + t.strictEqual(metadata.common.year, 2020, 'metadata.common.year'); + }); }); - describe('iTunes Video Quality', () => { + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.date, '2020-06-29T00:00:00.000Z', 'metadata.common.date'); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.hdVideo, 2, 'metadata.common.hdVideo'); - }); - });*/ - - // No possibility found to write id3v22 test file - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + t.strictEqual(metadata.common.year, 2020, 'metadata.common.year'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.hdVideo, 2, 'metadata.common.hdVideo'); - }); - });*/ + describe('Original Album', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp3-id3v24', () => { + const filename = 'mp3/pr-544-id3v24.mp3'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.hdVideo, 2, 'metadata.common.hdVideo'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.originalalbum, 'Original Album', 'metadata.common.originalalbum'); + }); }); + }); - describe('iTunes Media Type', () => { + describe('iTunes Video Quality', () => { - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v24', () => { - const filename = 'mp3/pr-544-id3v24.mp3'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.stik, 9, 'metadata.common.stik'); - }); - });*/ - - // No possibility found to write id3v22 test file - // Not exists in MP3 (Written as comment) - /*it('mp3-id3v22', () => { - const filename = 'mp3/pr-544-id3v22.mp3'; - const filePath = path.join(samplePath, filename); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.hdVideo, 2, 'metadata.common.hdVideo'); + }); + }); + }); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.stik, 9, 'metadata.common.stik'); - }); - });*/ + describe('iTunes Media Type', () => { - it('mp4', () => { - const filename = 'mp4/pr-544.m4a'; - const filePath = path.join(samplePath, filename); + it('mp4', () => { + const filename = 'mp4/pr-544.m4a'; + const filePath = path.join(samplePath, filename); - return mm.parseFile(filePath).then(metadata => { - t.strictEqual(metadata.common.stik, 9, 'metadata.common.stik'); - }); - }); + return mm.parseFile(filePath).then(metadata => { + t.strictEqual(metadata.common.stik, 9, 'metadata.common.stik'); + }); }); + }); }); diff --git a/test/test-regress-GH-56.ts b/test/test-regress-GH-56.ts index 02f3f16cc..c82d4492a 100644 --- a/test/test-regress-GH-56.ts +++ b/test/test-regress-GH-56.ts @@ -8,7 +8,7 @@ const t = assert; describe('should calculate duration for a CBR encoded MP3', () => { - /*-------------------------------------------------------- + /* -------------------------------------------------------- TAG headers: - ID3v2.3 at position 0, length is 191 bytes - APE v2.0 at position 5973245, length is 206 bytes diff --git a/tslint.json b/tslint.json deleted file mode 100644 index b22dd9187..000000000 --- a/tslint.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "tslint:latest", - "rules": { - "curly": false, - "max-classes-per-file": [false], - "semicolon": [true, "always", "ignore-interfaces"], - "quotemark": false, - "no-bitwise": false, - "trailing-comma": [true, {"multiline": "never", "singleline": "never"}], - "object-literal-key-quotes": [true, "as-needed"], - "variable-name": [true, "ban-keywords"], - "object-literal-sort-keys": false, - "max-line-length": [true, 200], - "switch-default": false, - "prefer-for-of": false, - "ordered-imports": false, - "forin": false, - "arrow-parens": [true, "ban-single-arg-parens"], - "no-implicit-dependencies": [true, "dev"], - "no-submodule-imports": [true, "strtok3", "file-type"], - "no-var-requires": true - }, - "jsRules": { - "curly": false - } -} diff --git a/yarn.lock b/yarn.lock index bbfab7f97..f016d26af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -141,6 +141,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.15.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" @@ -213,6 +218,15 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" +"@es-joy/jsdoccomment@~0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.18.0.tgz#2532b2ecb8576d694011b157c447ed6b12534c70" + integrity sha512-TjT8KJULV4I6ZiwIoKr6eMs+XpRejqwJ/VA+QPDeFGe9j6bZFKmMJ81EeFsGm6JNZhnzm37aoxVROmTh2PZoyA== + dependencies: + comment-parser "1.3.0" + esquery "^1.4.0" + jsdoc-type-pratt-parser "~2.2.2" + "@eslint/eslintrc@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" @@ -347,6 +361,16 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.2.tgz#4117a7a378593a218e9d6f0ef44ce6d5d9edf7fa" integrity sha512-KbeHS/Y4R+k+5sWXEYzAZKuB1yQlZtEghuhRxrVRLaqhtoG5+26JwQsa4HyS3AWX8v1Uwukma5HheduUDskasA== +"@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/mdast@^3.0.0": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.4.tgz#8ee6b5200751b6cadb9a043ca39612693ad6cb9e" @@ -417,6 +441,94 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.5.tgz#fdd299f23205c3455af88ce618dd65c14cb73e22" integrity sha512-wnra4Vw9dopnuybR6HBywJ/URYpYrKLoepBTEtgfJup8Ahoi2zJECPP2cwiXp7btTvOT2CULv87aQRA4eZSP6g== +"@typescript-eslint/eslint-plugin-tslint@^5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.10.1.tgz#9369adbb535a22bdb94777b35e5b6e3d67a71e1b" + integrity sha512-nQUXW+mEv3I9TdpbzST1L9lbyeQL+GL6ovnsnskJ1GoZpKhjuxPKOwcR0SdvZxJfiHRdSEe7TdXtTlnOoF4sew== + dependencies: + "@typescript-eslint/utils" "5.10.1" + lodash "^4.17.21" + +"@typescript-eslint/eslint-plugin@^5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.1.tgz#870195d0f2146b36d11fc71131b75aba52354c69" + integrity sha512-xN3CYqFlyE/qOcy978/L0xLR2HlcAGIyIK5sMOasxaaAPfQRj/MmMV6OC3I7NZO84oEUdWCOju34Z9W8E0pFDQ== + dependencies: + "@typescript-eslint/scope-manager" "5.10.1" + "@typescript-eslint/type-utils" "5.10.1" + "@typescript-eslint/utils" "5.10.1" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd" + integrity sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA== + dependencies: + "@typescript-eslint/scope-manager" "5.10.1" + "@typescript-eslint/types" "5.10.1" + "@typescript-eslint/typescript-estree" "5.10.1" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809" + integrity sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg== + dependencies: + "@typescript-eslint/types" "5.10.1" + "@typescript-eslint/visitor-keys" "5.10.1" + +"@typescript-eslint/type-utils@5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.1.tgz#5e526c00142585e40ab1503e83f1ff608c367405" + integrity sha512-AfVJkV8uck/UIoDqhu+ptEdBoQATON9GXnhOpPLzkQRJcSChkvD//qsz9JVffl2goxX+ybs5klvacE9vmrQyCw== + dependencies: + "@typescript-eslint/utils" "5.10.1" + debug "^4.3.2" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea" + integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q== + +"@typescript-eslint/typescript-estree@5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15" + integrity sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ== + dependencies: + "@typescript-eslint/types" "5.10.1" + "@typescript-eslint/visitor-keys" "5.10.1" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.1.tgz#fa682a33af47080ba2c4368ee0ad2128213a1196" + integrity sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.10.1" + "@typescript-eslint/types" "5.10.1" + "@typescript-eslint/typescript-estree" "5.10.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.10.1": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b" + integrity sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ== + dependencies: + "@typescript-eslint/types" "5.10.1" + eslint-visitor-keys "^3.0.0" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -526,11 +638,31 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array.prototype.flat@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -631,6 +763,11 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= +builtin-modules@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + builtins@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/builtins/-/builtins-4.0.0.tgz#a8345420de82068fdc4d6559d0456403a8fb1905" @@ -766,6 +903,18 @@ chokidar@3.5.3, chokidar@^3.0.0: optionalDependencies: fsevents "~2.3.2" +ci-info@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + +clean-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" + integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= + dependencies: + escape-string-regexp "^1.0.5" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -835,6 +984,11 @@ commander@^2.12.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +comment-parser@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.0.tgz#68beb7dbe0849295309b376406730cd16c719c44" + integrity sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -922,6 +1076,20 @@ debug@4.3.3, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3. dependencies: ms "2.1.2" +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -1015,6 +1183,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1074,6 +1249,32 @@ es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -1103,6 +1304,88 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +eslint-config-prettier@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" + integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-import@^2.25.4: + version "2.25.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" + integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.2" + has "^1.0.3" + is-core-module "^2.8.0" + is-glob "^4.0.3" + minimatch "^3.0.4" + object.values "^1.1.5" + resolve "^1.20.0" + tsconfig-paths "^3.12.0" + +eslint-plugin-jsdoc@^37.7.0: + version "37.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.7.0.tgz#975d9f18cb0520dde7a2b0db5f4421dfee3fdd17" + integrity sha512-vzy3/ltXoGtabRnjLogaEmhGxxIv5B8HK5MJLIrdxFJUvhBppZjuVuLr71DjIBi0jg6bFomwkYKjojt29cN8PA== + dependencies: + "@es-joy/jsdoccomment" "~0.18.0" + comment-parser "1.3.0" + debug "^4.3.3" + escape-string-regexp "^4.0.0" + esquery "^1.4.0" + regextras "^0.8.0" + semver "^7.3.5" + spdx-expression-parse "^3.0.1" + +eslint-plugin-unicorn@^40.1.0: + version "40.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.1.0.tgz#48975360e39d23df726e4b33e8dd5d650e184832" + integrity sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + ci-info "^3.3.0" + clean-regexp "^1.0.0" + eslint-utils "^3.0.0" + esquery "^1.4.0" + indent-string "^4.0.0" + is-builtin-module "^3.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + read-pkg-up "^7.0.1" + regexp-tree "^0.1.24" + safe-regex "^2.1.1" + semver "^7.3.5" + strip-indent "^3.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" @@ -1123,12 +1406,12 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== -eslint@8.7.0: +eslint@^8.7.0: version "8.7.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== @@ -1197,6 +1480,11 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" @@ -1238,6 +1526,17 @@ fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1307,6 +1606,13 @@ find-up@5.0.0, find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -1407,7 +1713,7 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -1421,6 +1727,14 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1478,6 +1792,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -1531,6 +1857,13 @@ has-symbols@^1.0.1, has-symbols@^1.0.2: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1653,7 +1986,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.0, ignore@^5.1.4, ignore@^5.2.0: +ignore@^5.0.0, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -1706,6 +2039,15 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + is-alphabetical@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.0.tgz#ef6e2caea57c63450fffc7abb6cbdafc5eb96e96" @@ -1748,11 +2090,23 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== +is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" @@ -1760,6 +2114,13 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-core-module@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + is-date-object@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" @@ -1850,6 +2211,19 @@ is-regex@^1.1.3: call-bind "^1.0.2" has-symbols "^1.0.2" +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" @@ -1860,6 +2234,13 @@ is-string@^1.0.5, is-string@^1.0.6: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== +is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -1877,6 +2258,13 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -1978,6 +2366,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdoc-type-pratt-parser@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.2.tgz#a85e407ac502b444dc23333aa4d6d0dc83f76187" + integrity sha512-zRokSWcPLSWkoNzsWn9pq7YYSwDhKyEe+cJYT2qaPqLOOJb5sFSi46BPj81vP+e8chvCNdQL9RG86Bi9EI6MDw== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -2013,6 +2406,13 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.0.0, json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -2080,6 +2480,14 @@ load-plugin@^4.0.0: import-meta-resolve "^1.0.0" libnpmconfig "^1.0.0" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -2112,6 +2520,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-driver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" @@ -2239,7 +2652,7 @@ meow@^10.1.0: type-fest "^1.2.2" yargs-parser "^20.2.9" -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -2449,7 +2862,7 @@ mime@^3.0.0: resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== -min-indent@^1.0.1: +min-indent@^1.0.0, min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -2512,12 +2925,17 @@ mocha@^9.2.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -2549,7 +2967,7 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== -normalize-package-data@^2.3.2: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -2632,6 +3050,11 @@ object-inspect@^1.10.3: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -2647,6 +3070,15 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2666,6 +3098,13 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -2680,6 +3119,13 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -2715,6 +3161,11 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -2861,6 +3312,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + process-on-spawn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" @@ -2905,6 +3361,15 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg-up@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-8.0.0.tgz#72f595b65e66110f43b052dd9af4de6b10534670" @@ -2923,6 +3388,16 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + read-pkg@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c" @@ -2965,11 +3440,21 @@ redent@^4.0.0: indent-string "^5.0.0" strip-indent "^4.0.0" +regexp-tree@^0.1.24, regexp-tree@~0.1.1: + version "0.1.24" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" + integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== + regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +regextras@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.8.0.tgz#ec0f99853d4912839321172f608b544814b02217" + integrity sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ== + rehype-parse@^8.0.0: version "8.0.2" resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-8.0.2.tgz#8e8ebe6bff33521a446eacce818a49848d0c1b46" @@ -3343,6 +3828,13 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" + integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== + dependencies: + regexp-tree "~0.1.1" + safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3358,7 +3850,7 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.3.4: +semver@^7.0.0, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -3406,6 +3898,15 @@ shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -3464,7 +3965,7 @@ spdx-exceptions@^2.1.0: resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -spdx-expression-parse@^3.0.0: +spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== @@ -3579,6 +4080,13 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" @@ -3705,6 +4213,16 @@ ts-node@^10.3.0: make-error "^1.1.1" yn "3.1.1" +tsconfig-paths@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" + integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.13.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -3736,6 +4254,13 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -3765,7 +4290,12 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.8.0: +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==