diff --git a/eslint.config.mjs b/eslint.config.mjs index cdc3b02..65f70e2 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,9 +1,12 @@ import eslint from '@eslint/js'; import stylistic from '@stylistic/eslint-plugin'; +import importPlugin from 'eslint-plugin-import'; import tseslint from 'typescript-eslint'; export default tseslint.config( eslint.configs.recommended, + importPlugin.flatConfigs.recommended, + importPlugin.flatConfigs.typescript, tseslint.configs.strict, tseslint.configs.stylistic, stylistic.configs.customize({ @@ -16,6 +19,8 @@ export default tseslint.config( { rules: { '@typescript-eslint/explicit-member-accessibility': 'error', + 'import/no-unresolved': ['error', { ignore: ['typescript-eslint', 'stremio-addon-sdk'] }], + 'import/order': ['error', { 'alphabetize': { order: 'asc', caseInsensitive: true }, 'named': { enabled: true }, 'newlines-between': 'never' }], }, }, ); diff --git a/package-lock.json b/package-lock.json index 05310b1..c5c5fda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "@types/stremio-addon-sdk": "^1.6.11", "babel-jest": "^30.0.0", "eslint": "^9.26.0", + "eslint-plugin-import": "^2.32.0", "fetch-mock": "^12.5.2", "jest": "^30.0.0", "nodemon": "^3.1.10", @@ -1464,6 +1465,13 @@ "url": "https://opencollective.com/pkgr" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@sinclair/typebox": { "version": "0.34.35", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.35.tgz", @@ -1729,6 +1737,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/make-fetch-happen": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/@types/make-fetch-happen/-/make-fetch-happen-10.0.4.tgz", @@ -2542,12 +2557,144 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/async-mutex": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", @@ -2564,6 +2711,22 @@ "dev": true, "license": "MIT" }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-jest": { "version": "30.0.2", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.2.tgz", @@ -2803,6 +2966,25 @@ "node": ">= 0.8" } }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -3279,6 +3461,60 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -3328,6 +3564,42 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3377,6 +3649,19 @@ "node": ">=0.3.1" } }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -3552,6 +3837,75 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -3598,6 +3952,37 @@ "node": ">= 0.4" } }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -3688,6 +4073,124 @@ } } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", @@ -4189,6 +4692,22 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -4295,6 +4814,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4375,6 +4925,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -4426,6 +4994,23 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -4452,6 +5037,19 @@ "dev": true, "license": "MIT" }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4462,6 +5060,35 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -4676,6 +5303,21 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -4704,6 +5346,24 @@ "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4711,6 +5371,42 @@ "dev": true, "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -4724,6 +5420,87 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4734,6 +5511,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -4754,6 +5547,25 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4767,6 +5579,32 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4777,12 +5615,77 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -4795,6 +5698,110 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5886,6 +6893,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -6084,6 +7101,90 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -6148,6 +7249,24 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6330,6 +7449,13 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -6406,6 +7532,16 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6622,6 +7758,50 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexparam": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", @@ -6642,6 +7822,27 @@ "node": ">=0.10.0" } }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -6716,6 +7917,26 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6736,6 +7957,41 @@ ], "license": "MIT" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -6798,6 +8054,55 @@ "node": ">= 18" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -7065,6 +8370,20 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7175,6 +8494,65 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -7261,6 +8639,19 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/synckit": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", @@ -7558,6 +8949,42 @@ } } }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7614,6 +9041,84 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -7651,6 +9156,25 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -7862,6 +9386,95 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/winston": { "version": "3.17.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", diff --git a/package.json b/package.json index 1815f64..56e73b3 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "@types/stremio-addon-sdk": "^1.6.11", "babel-jest": "^30.0.0", "eslint": "^9.26.0", + "eslint-plugin-import": "^2.32.0", "fetch-mock": "^12.5.2", "jest": "^30.0.0", "nodemon": "^3.1.10", diff --git a/src/controller/ConfigureController.ts b/src/controller/ConfigureController.ts index 251ba55..e13ee5d 100644 --- a/src/controller/ConfigureController.ts +++ b/src/controller/ConfigureController.ts @@ -1,8 +1,8 @@ import { Request, Response, Router } from 'express'; import { landingTemplate } from '../landingTemplate'; -import { buildManifest, getDefaultConfig } from '../utils'; import { Source } from '../source'; import { Config } from '../types'; +import { buildManifest, getDefaultConfig } from '../utils'; export class ConfigureController { public readonly router: Router; diff --git a/src/controller/ManifestController.ts b/src/controller/ManifestController.ts index 971032a..cfc437d 100644 --- a/src/controller/ManifestController.ts +++ b/src/controller/ManifestController.ts @@ -1,7 +1,7 @@ import { Request, Response, Router } from 'express'; -import { buildManifest, getDefaultConfig } from '../utils'; import { Source } from '../source'; import { Config } from '../types'; +import { buildManifest, getDefaultConfig } from '../utils'; export class ManifestController { public readonly router: Router; diff --git a/src/controller/StreamController.ts b/src/controller/StreamController.ts index 4604685..3ceda43 100644 --- a/src/controller/StreamController.ts +++ b/src/controller/StreamController.ts @@ -1,9 +1,9 @@ import { Request, Response, Router } from 'express'; +import { ContentType } from 'stremio-addon-sdk'; import winston from 'winston'; import { Source } from '../source'; import { Config, Context } from '../types'; import { envIsProd, getDefaultConfig, ImdbId, StreamResolver } from '../utils'; -import { ContentType } from 'stremio-addon-sdk'; export class StreamController { public readonly router: Router; diff --git a/src/extractor/DoodStream.test.ts b/src/extractor/DoodStream.test.ts index 2215308..105f868 100644 --- a/src/extractor/DoodStream.test.ts +++ b/src/extractor/DoodStream.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; -import { CountryCode } from '../types'; -import { ExtractorRegistry } from './ExtractorRegistry'; -import { DoodStream } from './DoodStream'; import { createTestContext } from '../test'; +import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; +import { DoodStream } from './DoodStream'; +import { ExtractorRegistry } from './ExtractorRegistry'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new DoodStream(new FetcherMock(`${__dirname}/__fixtures__/DoodStream`))]); diff --git a/src/extractor/DoodStream.ts b/src/extractor/DoodStream.ts index 5c4f7c7..26ebcdd 100644 --- a/src/extractor/DoodStream.ts +++ b/src/extractor/DoodStream.ts @@ -1,9 +1,9 @@ -import randomstring from 'randomstring'; import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; -import { Fetcher } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; +import randomstring from 'randomstring'; import { NotFoundError } from '../error'; +import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Fetcher } from '../utils'; +import { Extractor } from './Extractor'; export class DoodStream extends Extractor { public readonly id = 'doodstream'; diff --git a/src/extractor/Dropload.test.ts b/src/extractor/Dropload.test.ts index 958fcbc..25a6cef 100644 --- a/src/extractor/Dropload.test.ts +++ b/src/extractor/Dropload.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; -import { CountryCode } from '../types'; -import { ExtractorRegistry } from './ExtractorRegistry'; -import { Dropload } from './Dropload'; import { createTestContext } from '../test'; +import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; +import { Dropload } from './Dropload'; +import { ExtractorRegistry } from './ExtractorRegistry'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new Dropload(new FetcherMock(`${__dirname}/__fixtures__/Dropload`))]); diff --git a/src/extractor/Dropload.ts b/src/extractor/Dropload.ts index c199e72..eba8d22 100644 --- a/src/extractor/Dropload.ts +++ b/src/extractor/Dropload.ts @@ -1,9 +1,9 @@ import bytes from 'bytes'; import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; -import { extractUrlFromPacked, Fetcher } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; import { NotFoundError } from '../error'; +import { Context, CountryCode, Format, UrlResult } from '../types'; +import { extractUrlFromPacked, Fetcher } from '../utils'; +import { Extractor } from './Extractor'; export class Dropload extends Extractor { public readonly id = 'dropload'; diff --git a/src/extractor/ExternalUrl.test.ts b/src/extractor/ExternalUrl.test.ts index 4ae6201..bbe1820 100644 --- a/src/extractor/ExternalUrl.test.ts +++ b/src/extractor/ExternalUrl.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; -import { CountryCode } from '../types'; -import { ExtractorRegistry } from './ExtractorRegistry'; -import { ExternalUrl } from './ExternalUrl'; import { createTestContext } from '../test'; +import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; +import { ExternalUrl } from './ExternalUrl'; +import { ExtractorRegistry } from './ExtractorRegistry'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new ExternalUrl(new FetcherMock(`${__dirname}/__fixtures__/ExternalUrl`))]); diff --git a/src/extractor/ExternalUrl.ts b/src/extractor/ExternalUrl.ts index 86b28ba..b51104b 100644 --- a/src/extractor/ExternalUrl.ts +++ b/src/extractor/ExternalUrl.ts @@ -1,6 +1,6 @@ -import { Extractor } from './Extractor'; -import { Fetcher, showExternalUrls } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Fetcher, showExternalUrls } from '../utils'; +import { Extractor } from './Extractor'; export class ExternalUrl extends Extractor { public readonly id = 'external'; diff --git a/src/extractor/Extractor.ts b/src/extractor/Extractor.ts index 5e89ce2..a7e5455 100644 --- a/src/extractor/Extractor.ts +++ b/src/extractor/Extractor.ts @@ -1,5 +1,5 @@ -import { Context, CountryCode, Format, UrlResult } from '../types'; import { NotFoundError } from '../error'; +import { Context, CountryCode, Format, UrlResult } from '../types'; import { guessHeightFromTitle } from '../utils'; export abstract class Extractor { diff --git a/src/extractor/ExtractorRegistry.test.ts b/src/extractor/ExtractorRegistry.test.ts index 999a0bc..7ea76e5 100644 --- a/src/extractor/ExtractorRegistry.test.ts +++ b/src/extractor/ExtractorRegistry.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { ExtractorRegistry } from './ExtractorRegistry'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; import { FetcherMock } from '../utils'; +import { ExtractorRegistry } from './ExtractorRegistry'; import { createExtractors } from './index'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, createExtractors(new FetcherMock(`${__dirname}/__fixtures__/ExtractorRegistry`))); diff --git a/src/extractor/ExtractorRegistry.ts b/src/extractor/ExtractorRegistry.ts index dce8c78..bccdc27 100644 --- a/src/extractor/ExtractorRegistry.ts +++ b/src/extractor/ExtractorRegistry.ts @@ -1,7 +1,7 @@ import TTLCache from '@isaacs/ttlcache'; import winston from 'winston'; -import { Extractor } from './Extractor'; import { Context, CountryCode, UrlResult } from '../types'; +import { Extractor } from './Extractor'; export class ExtractorRegistry { private readonly logger: winston.Logger; diff --git a/src/extractor/Fsst.test.ts b/src/extractor/Fsst.test.ts index fc0450d..085285d 100644 --- a/src/extractor/Fsst.test.ts +++ b/src/extractor/Fsst.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { Fsst } from './Fsst'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new Fsst(new FetcherMock(`${__dirname}/__fixtures__/Fsst`))]); diff --git a/src/extractor/Fsst.ts b/src/extractor/Fsst.ts index 2e3cdac..c34aae1 100644 --- a/src/extractor/Fsst.ts +++ b/src/extractor/Fsst.ts @@ -1,7 +1,7 @@ import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; -import { Fetcher } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Fetcher } from '../utils'; +import { Extractor } from './Extractor'; export class Fsst extends Extractor { public readonly id = 'fsst'; diff --git a/src/extractor/KinoGer.test.ts b/src/extractor/KinoGer.test.ts index dcca1fc..9b5ad1a 100644 --- a/src/extractor/KinoGer.test.ts +++ b/src/extractor/KinoGer.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { KinoGer } from './KinoGer'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new KinoGer(new FetcherMock(`${__dirname}/__fixtures__/KinoGer`))]); diff --git a/src/extractor/KinoGer.ts b/src/extractor/KinoGer.ts index f60e149..e6d7b4c 100644 --- a/src/extractor/KinoGer.ts +++ b/src/extractor/KinoGer.ts @@ -1,7 +1,7 @@ import crypto from 'crypto'; -import { Extractor } from './Extractor'; -import { Fetcher } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Fetcher } from '../utils'; +import { Extractor } from './Extractor'; /** @see https://github.com/Gujal00/ResolveURL/blob/master/script.module.resolveurl/lib/resolveurl/plugins/kinoger.py */ export class KinoGer extends Extractor { diff --git a/src/extractor/Mixdrop.test.ts b/src/extractor/Mixdrop.test.ts index 4151823..78035df 100644 --- a/src/extractor/Mixdrop.test.ts +++ b/src/extractor/Mixdrop.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { Mixdrop } from './Mixdrop'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new Mixdrop(new FetcherMock(`${__dirname}/__fixtures__/Mixdrop`))]); diff --git a/src/extractor/Mixdrop.ts b/src/extractor/Mixdrop.ts index 6179a97..437c6ba 100644 --- a/src/extractor/Mixdrop.ts +++ b/src/extractor/Mixdrop.ts @@ -1,9 +1,9 @@ import bytes from 'bytes'; import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; -import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; import { NotFoundError } from '../error'; +import { Context, CountryCode, Format, UrlResult } from '../types'; +import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy } from '../utils'; +import { Extractor } from './Extractor'; export class Mixdrop extends Extractor { public readonly id = 'mixdrop'; diff --git a/src/extractor/Soaper.test.ts b/src/extractor/Soaper.test.ts index ba6fee3..6330a22 100644 --- a/src/extractor/Soaper.test.ts +++ b/src/extractor/Soaper.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { Soaper } from './Soaper'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new Soaper(new FetcherMock(`${__dirname}/__fixtures__/Soaper`))]); diff --git a/src/extractor/Soaper.ts b/src/extractor/Soaper.ts index 88f76a3..0042d1e 100644 --- a/src/extractor/Soaper.ts +++ b/src/extractor/Soaper.ts @@ -1,6 +1,6 @@ -import { Extractor } from './Extractor'; -import { Fetcher, guessHeightFromPlaylist } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Fetcher, guessHeightFromPlaylist } from '../utils'; +import { Extractor } from './Extractor'; interface SoaperInfoResponsePartial { val: string; diff --git a/src/extractor/Streamtape.test.ts b/src/extractor/Streamtape.test.ts index 29b1969..21eef6b 100644 --- a/src/extractor/Streamtape.test.ts +++ b/src/extractor/Streamtape.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { Streamtape } from './Streamtape'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new Streamtape(new FetcherMock(`${__dirname}/__fixtures__/Streamtape`))]); diff --git a/src/extractor/Streamtape.ts b/src/extractor/Streamtape.ts index 7489a83..95b4a20 100644 --- a/src/extractor/Streamtape.ts +++ b/src/extractor/Streamtape.ts @@ -1,11 +1,11 @@ import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; +import { Context, CountryCode, Format, UrlResult } from '../types'; import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy, } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Extractor } from './Extractor'; export class Streamtape extends Extractor { public readonly id = 'streamtape'; diff --git a/src/extractor/SuperVideo.test.ts b/src/extractor/SuperVideo.test.ts index 25e4cb7..cafd877 100644 --- a/src/extractor/SuperVideo.test.ts +++ b/src/extractor/SuperVideo.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { SuperVideo } from './SuperVideo'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new SuperVideo(new FetcherMock(`${__dirname}/__fixtures__/SuperVideo`))]); diff --git a/src/extractor/SuperVideo.ts b/src/extractor/SuperVideo.ts index 0f71698..1d6b3d4 100644 --- a/src/extractor/SuperVideo.ts +++ b/src/extractor/SuperVideo.ts @@ -1,9 +1,9 @@ import bytes from 'bytes'; import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; -import { extractUrlFromPacked, Fetcher } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; import { NotFoundError } from '../error'; +import { Context, CountryCode, Format, UrlResult } from '../types'; +import { extractUrlFromPacked, Fetcher } from '../utils'; +import { Extractor } from './Extractor'; export class SuperVideo extends Extractor { public readonly id = 'supervideo'; diff --git a/src/extractor/Uqload.test.ts b/src/extractor/Uqload.test.ts index 615d6e5..1634aa8 100644 --- a/src/extractor/Uqload.test.ts +++ b/src/extractor/Uqload.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { Uqload } from './Uqload'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new Uqload(new FetcherMock(`${__dirname}/__fixtures__/Uqload`))]); diff --git a/src/extractor/Uqload.ts b/src/extractor/Uqload.ts index 5af6a30..058da6a 100644 --- a/src/extractor/Uqload.ts +++ b/src/extractor/Uqload.ts @@ -1,7 +1,7 @@ import * as cheerio from 'cheerio'; -import { Extractor } from './Extractor'; -import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy } from '../utils'; import { Context, CountryCode, Format, UrlResult } from '../types'; +import { buildMediaFlowProxyExtractorRedirectUrl, Fetcher, supportsMediaFlowProxy } from '../utils'; +import { Extractor } from './Extractor'; export class Uqload extends Extractor { public readonly id = 'uqload'; diff --git a/src/extractor/VidSrc.test.ts b/src/extractor/VidSrc.test.ts index 2171c51..314bc0a 100644 --- a/src/extractor/VidSrc.test.ts +++ b/src/extractor/VidSrc.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { VidSrc } from './VidSrc'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new VidSrc(new FetcherMock(`${__dirname}/__fixtures__/VidSrc`))]); diff --git a/src/extractor/VidSrc.ts b/src/extractor/VidSrc.ts index fb6952f..d310c14 100644 --- a/src/extractor/VidSrc.ts +++ b/src/extractor/VidSrc.ts @@ -1,9 +1,9 @@ import * as cheerio from 'cheerio'; import slugify from 'slugify'; -import { Extractor } from './Extractor'; -import { Fetcher, guessHeightFromPlaylist } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; import { NotFoundError } from '../error'; +import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Fetcher, guessHeightFromPlaylist } from '../utils'; +import { Extractor } from './Extractor'; export class VidSrc extends Extractor { public readonly id = 'vidsrc'; diff --git a/src/extractor/VixSrc.test.ts b/src/extractor/VixSrc.test.ts index c373408..9393e6f 100644 --- a/src/extractor/VixSrc.test.ts +++ b/src/extractor/VixSrc.test.ts @@ -1,9 +1,9 @@ import winston from 'winston'; -import { FetcherMock } from '../utils'; +import { createTestContext } from '../test'; import { CountryCode } from '../types'; +import { FetcherMock } from '../utils'; import { ExtractorRegistry } from './ExtractorRegistry'; import { VixSrc } from './VixSrc'; -import { createTestContext } from '../test'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const extractorRegistry = new ExtractorRegistry(logger, [new VixSrc(new FetcherMock(`${__dirname}/__fixtures__/VixSrc`))]); diff --git a/src/extractor/VixSrc.ts b/src/extractor/VixSrc.ts index d7f599c..c74b744 100644 --- a/src/extractor/VixSrc.ts +++ b/src/extractor/VixSrc.ts @@ -1,5 +1,5 @@ import bytes from 'bytes'; -import { Extractor } from './Extractor'; +import { Context, CountryCode, Format, UrlResult } from '../types'; import { buildMediaFlowProxyExtractorStreamUrl, Fetcher, @@ -7,7 +7,7 @@ import { iso639FromCountryCode, supportsMediaFlowProxy, } from '../utils'; -import { Context, CountryCode, Format, UrlResult } from '../types'; +import { Extractor } from './Extractor'; export class VixSrc extends Extractor { public readonly id = 'vixsrc'; diff --git a/src/extractor/index.ts b/src/extractor/index.ts index 6fa3445..6f19bdc 100644 --- a/src/extractor/index.ts +++ b/src/extractor/index.ts @@ -1,8 +1,8 @@ +import { Fetcher } from '../utils'; import { DoodStream } from './DoodStream'; import { Dropload } from './Dropload'; import { ExternalUrl } from './ExternalUrl'; import { Extractor } from './Extractor'; -import { Fetcher } from '../utils'; import { KinoGer } from './KinoGer'; import { Mixdrop } from './Mixdrop'; import { Soaper } from './Soaper'; diff --git a/src/index.ts b/src/index.ts index ded9c08..62b1127 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,9 @@ import express, { NextFunction, Request, Response } from 'express'; import { v4 as uuidv4 } from 'uuid'; import winston from 'winston'; -import { CineHDPlus, Cuevana, Eurostreaming, Frembed, FrenchCloud, Source, KinoGer, MeineCloud, MostraGuarda, Soaper, StreamKiste, VerHdLink, VidSrc, VixSrc } from './source'; -import { createExtractors, ExtractorRegistry } from './extractor'; import { ConfigureController, ManifestController, StreamController } from './controller'; +import { createExtractors, ExtractorRegistry } from './extractor'; +import { CineHDPlus, Cuevana, Eurostreaming, Frembed, FrenchCloud, KinoGer, MeineCloud, MostraGuarda, Soaper, Source, StreamKiste, VerHdLink, VidSrc, VixSrc } from './source'; import { envGet, envIsProd, Fetcher, StreamResolver } from './utils'; const logger = winston.createLogger({ diff --git a/src/source/CineHDPlus.test.ts b/src/source/CineHDPlus.test.ts index 22dce1b..bf7f41c 100644 --- a/src/source/CineHDPlus.test.ts +++ b/src/source/CineHDPlus.test.ts @@ -1,6 +1,6 @@ -import { CineHDPlus } from './CineHDPlus'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { CineHDPlus } from './CineHDPlus'; const ctx = createTestContext({ es: 'on', mx: 'on' }); diff --git a/src/source/CineHDPlus.ts b/src/source/CineHDPlus.ts index d4ef7a4..75f3420 100644 --- a/src/source/CineHDPlus.ts +++ b/src/source/CineHDPlus.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getImdbId, Id, ImdbId } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id, ImdbId } from '../utils'; +import { Source, SourceResult } from './types'; export class CineHDPlus implements Source { public readonly id = 'cinehdplus'; diff --git a/src/source/Cuevana.test.ts b/src/source/Cuevana.test.ts index 3a7e90b..0200739 100644 --- a/src/source/Cuevana.test.ts +++ b/src/source/Cuevana.test.ts @@ -1,6 +1,6 @@ -import { Cuevana } from './Cuevana'; -import { FetcherMock, TmdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, TmdbId } from '../utils'; +import { Cuevana } from './Cuevana'; const ctx = createTestContext({ es: 'on', mx: 'on' }); diff --git a/src/source/Cuevana.ts b/src/source/Cuevana.ts index d20767a..6e0e660 100644 --- a/src/source/Cuevana.ts +++ b/src/source/Cuevana.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getTmdbId, getTmdbMovieDetails, getTmdbTvDetails, Id, TmdbId } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getTmdbId, getTmdbMovieDetails, getTmdbTvDetails, Id, TmdbId } from '../utils'; +import { Source, SourceResult } from './types'; export class Cuevana implements Source { public readonly id = 'cuevana'; diff --git a/src/source/Eurostreaming.test.ts b/src/source/Eurostreaming.test.ts index 65c06af..eacf153 100644 --- a/src/source/Eurostreaming.test.ts +++ b/src/source/Eurostreaming.test.ts @@ -1,6 +1,6 @@ -import { Eurostreaming } from './Eurostreaming'; -import { FetcherMock, TmdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, TmdbId } from '../utils'; +import { Eurostreaming } from './Eurostreaming'; const ctx = createTestContext({ it: 'on' }); diff --git a/src/source/Eurostreaming.ts b/src/source/Eurostreaming.ts index 14bf686..689d231 100644 --- a/src/source/Eurostreaming.ts +++ b/src/source/Eurostreaming.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getTmdbId, getTmdbTvDetails, Id } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getTmdbId, getTmdbTvDetails, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class Eurostreaming implements Source { public readonly id = 'eurostreaming'; diff --git a/src/source/Frembed.test.ts b/src/source/Frembed.test.ts index ffa509c..8cc092e 100644 --- a/src/source/Frembed.test.ts +++ b/src/source/Frembed.test.ts @@ -1,6 +1,6 @@ -import { Frembed } from './Frembed'; -import { FetcherMock, ImdbId, TmdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId, TmdbId } from '../utils'; +import { Frembed } from './Frembed'; const ctx = createTestContext({ fr: 'on' }); diff --git a/src/source/Frembed.ts b/src/source/Frembed.ts index 4924055..a3490bc 100644 --- a/src/source/Frembed.ts +++ b/src/source/Frembed.ts @@ -1,7 +1,7 @@ import { ContentType } from 'stremio-addon-sdk'; -import { Source, SourceResult } from './types'; -import { Fetcher, getTmdbId, Id } from '../utils'; import { Context, CountryCode } from '../types'; +import { Fetcher, getTmdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class Frembed implements Source { public readonly id = 'frembed'; diff --git a/src/source/FrenchCloud.test.ts b/src/source/FrenchCloud.test.ts index ee18620..2c9ebe0 100644 --- a/src/source/FrenchCloud.test.ts +++ b/src/source/FrenchCloud.test.ts @@ -1,6 +1,6 @@ -import { FrenchCloud } from './FrenchCloud'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { FrenchCloud } from './FrenchCloud'; const ctx = createTestContext({ fr: 'on' }); diff --git a/src/source/FrenchCloud.ts b/src/source/FrenchCloud.ts index 84c56ab..b8ed6df 100644 --- a/src/source/FrenchCloud.ts +++ b/src/source/FrenchCloud.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getImdbId, Id } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class FrenchCloud implements Source { public readonly id = 'frenchcloud'; diff --git a/src/source/KinoGer.test.ts b/src/source/KinoGer.test.ts index ec76f64..f351a5f 100644 --- a/src/source/KinoGer.test.ts +++ b/src/source/KinoGer.test.ts @@ -1,6 +1,6 @@ -import { KinoGer } from './KinoGer'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { KinoGer } from './KinoGer'; const ctx = createTestContext({ de: 'on' }); diff --git a/src/source/KinoGer.ts b/src/source/KinoGer.ts index 2a18244..465f484 100644 --- a/src/source/KinoGer.ts +++ b/src/source/KinoGer.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getTmdbId, getTmdbMovieDetails, getTmdbTvDetails, Id, TmdbId } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getTmdbId, getTmdbMovieDetails, getTmdbTvDetails, Id, TmdbId } from '../utils'; +import { Source, SourceResult } from './types'; export class KinoGer implements Source { public readonly id = 'kinoger'; diff --git a/src/source/MeineCloud.test.ts b/src/source/MeineCloud.test.ts index 0dac210..e3a6e72 100644 --- a/src/source/MeineCloud.test.ts +++ b/src/source/MeineCloud.test.ts @@ -1,6 +1,6 @@ -import { MeineCloud } from './MeineCloud'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { MeineCloud } from './MeineCloud'; const ctx = createTestContext({ de: 'on' }); diff --git a/src/source/MeineCloud.ts b/src/source/MeineCloud.ts index 1886c39..614d42e 100644 --- a/src/source/MeineCloud.ts +++ b/src/source/MeineCloud.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getImdbId, Id } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class MeineCloud implements Source { public readonly id = 'meinecloud'; diff --git a/src/source/MostraGuarda.test.ts b/src/source/MostraGuarda.test.ts index f8d4434..84e0596 100644 --- a/src/source/MostraGuarda.test.ts +++ b/src/source/MostraGuarda.test.ts @@ -1,6 +1,6 @@ -import { MostraGuarda } from './MostraGuarda'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { MostraGuarda } from './MostraGuarda'; const ctx = createTestContext({ it: 'on' }); diff --git a/src/source/MostraGuarda.ts b/src/source/MostraGuarda.ts index 7953ed7..8c1488e 100644 --- a/src/source/MostraGuarda.ts +++ b/src/source/MostraGuarda.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getImdbId, Id } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class MostraGuarda implements Source { public readonly id = 'mostraguarda'; diff --git a/src/source/Soaper.test.ts b/src/source/Soaper.test.ts index b5c47ff..bd3ce4d 100644 --- a/src/source/Soaper.test.ts +++ b/src/source/Soaper.test.ts @@ -1,6 +1,6 @@ -import { Soaper } from './Soaper'; -import { FetcherMock, ImdbId, TmdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId, TmdbId } from '../utils'; +import { Soaper } from './Soaper'; const ctx = createTestContext(); diff --git a/src/source/Soaper.ts b/src/source/Soaper.ts index 2ab9de0..5541544 100644 --- a/src/source/Soaper.ts +++ b/src/source/Soaper.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getTmdbId, getTmdbMovieDetails, getTmdbTvDetails, Id, TmdbId } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getTmdbId, getTmdbMovieDetails, getTmdbTvDetails, Id, TmdbId } from '../utils'; +import { Source, SourceResult } from './types'; export class Soaper implements Source { public readonly id = 'soaper'; diff --git a/src/source/StreamKiste.test.ts b/src/source/StreamKiste.test.ts index ac55bd9..a7b8808 100644 --- a/src/source/StreamKiste.test.ts +++ b/src/source/StreamKiste.test.ts @@ -1,6 +1,6 @@ -import { StreamKiste } from './StreamKiste'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { StreamKiste } from './StreamKiste'; const ctx = createTestContext({ de: 'on' }); diff --git a/src/source/StreamKiste.ts b/src/source/StreamKiste.ts index 7320ca6..b75cfd5 100644 --- a/src/source/StreamKiste.ts +++ b/src/source/StreamKiste.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { ImdbId, Fetcher, getImdbId, Id } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id, ImdbId } from '../utils'; +import { Source, SourceResult } from './types'; export class StreamKiste implements Source { public readonly id = 'streamkiste'; diff --git a/src/source/VerHdLink.test.ts b/src/source/VerHdLink.test.ts index 8e9fc8f..ff85d08 100644 --- a/src/source/VerHdLink.test.ts +++ b/src/source/VerHdLink.test.ts @@ -1,6 +1,6 @@ -import { VerHdLink } from './VerHdLink'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { VerHdLink } from './VerHdLink'; const ctx = createTestContext({ es: 'on', mx: 'on' }); diff --git a/src/source/VerHdLink.ts b/src/source/VerHdLink.ts index 1e0f85c..b61f180 100644 --- a/src/source/VerHdLink.ts +++ b/src/source/VerHdLink.ts @@ -1,8 +1,8 @@ -import { ContentType } from 'stremio-addon-sdk'; import * as cheerio from 'cheerio'; -import { Source, SourceResult } from './types'; -import { Fetcher, getImdbId, Id } from '../utils'; +import { ContentType } from 'stremio-addon-sdk'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class VerHdLink implements Source { public readonly id = 'verhdlink'; diff --git a/src/source/VidSrc.test.ts b/src/source/VidSrc.test.ts index 94dbad0..4bfccce 100644 --- a/src/source/VidSrc.test.ts +++ b/src/source/VidSrc.test.ts @@ -1,6 +1,6 @@ -import { VidSrc } from './VidSrc'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { VidSrc } from './VidSrc'; const ctx = createTestContext(); diff --git a/src/source/VidSrc.ts b/src/source/VidSrc.ts index ba9f8ca..2026beb 100644 --- a/src/source/VidSrc.ts +++ b/src/source/VidSrc.ts @@ -1,7 +1,7 @@ import { ContentType } from 'stremio-addon-sdk'; -import { Source, SourceResult } from './types'; -import { Fetcher, getImdbId, Id } from '../utils'; import { Context, CountryCode } from '../types'; +import { Fetcher, getImdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class VidSrc implements Source { public readonly id = 'vidsrc'; diff --git a/src/source/VixSrc.test.ts b/src/source/VixSrc.test.ts index 677a099..74e0db7 100644 --- a/src/source/VixSrc.test.ts +++ b/src/source/VixSrc.test.ts @@ -1,6 +1,6 @@ -import { VixSrc } from './VixSrc'; -import { FetcherMock, ImdbId } from '../utils'; import { createTestContext } from '../test'; +import { FetcherMock, ImdbId } from '../utils'; +import { VixSrc } from './VixSrc'; const ctx = createTestContext(); diff --git a/src/source/VixSrc.ts b/src/source/VixSrc.ts index ee01ce7..824b997 100644 --- a/src/source/VixSrc.ts +++ b/src/source/VixSrc.ts @@ -1,7 +1,7 @@ import { ContentType } from 'stremio-addon-sdk'; -import { Source, SourceResult } from './types'; -import { Fetcher, getTmdbId, Id } from '../utils'; import { Context, CountryCode } from '../types'; +import { Fetcher, getTmdbId, Id } from '../utils'; +import { Source, SourceResult } from './types'; export class VixSrc implements Source { public readonly id = 'vixsrc'; diff --git a/src/utils/Fetcher.test.ts b/src/utils/Fetcher.test.ts index 721e046..31501d2 100644 --- a/src/utils/Fetcher.test.ts +++ b/src/utils/Fetcher.test.ts @@ -1,10 +1,10 @@ +import fetchMock from 'fetch-mock'; import { Agent, ProxyAgent } from 'undici'; import winston from 'winston'; -import fetchMock from 'fetch-mock'; -import { Fetcher } from './Fetcher'; import { BlockedError, HttpError, NotFoundError, QueueIsFullError, TimeoutError, TooManyRequestsError, TooManyTimeoutsError } from '../error'; import { createTestContext } from '../test'; import { BlockedReason } from '../types'; +import { Fetcher } from './Fetcher'; fetchMock.mockGlobal(); const fetcher = new Fetcher(winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] })); diff --git a/src/utils/Fetcher.ts b/src/utils/Fetcher.ts index 0de4aa9..1ca621d 100644 --- a/src/utils/Fetcher.ts +++ b/src/utils/Fetcher.ts @@ -1,15 +1,15 @@ -import { Dispatcher, ProxyAgent } from 'undici'; +import { clearTimeout } from 'node:timers'; +import { gunzipSync, gzipSync } from 'zlib'; +import TTLCache from '@isaacs/ttlcache'; +import { Mutex, Semaphore, SemaphoreInterface, withTimeout } from 'async-mutex'; import { socksDispatcher } from 'fetch-socks'; import CachePolicy from 'http-cache-semantics'; -import { gzipSync, gunzipSync } from 'zlib'; import { LRUCache } from 'lru-cache'; -import TTLCache from '@isaacs/ttlcache'; -import winston from 'winston'; -import { Mutex, Semaphore, SemaphoreInterface, withTimeout } from 'async-mutex'; import { Cookie, CookieJar } from 'tough-cookie'; +import { Dispatcher, ProxyAgent } from 'undici'; +import winston from 'winston'; +import { BlockedError, HttpError, NotFoundError, QueueIsFullError, TimeoutError, TooManyRequestsError, TooManyTimeoutsError } from '../error'; import { BlockedReason, Context } from '../types'; -import { BlockedError, HttpError, NotFoundError, QueueIsFullError, TimeoutError, TooManyTimeoutsError, TooManyRequestsError } from '../error'; -import { clearTimeout } from 'node:timers'; import { envGet } from './env'; interface HttpCacheItem { diff --git a/src/utils/FetcherMock.ts b/src/utils/FetcherMock.ts index b180701..78f9bca 100644 --- a/src/utils/FetcherMock.ts +++ b/src/utils/FetcherMock.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ +import crypto from 'crypto'; import fs from 'node:fs'; +import CachePolicy from 'http-cache-semantics'; import slugify from 'slugify'; import winston from 'winston'; -import crypto from 'crypto'; -import CachePolicy from 'http-cache-semantics'; import { Context } from '../types'; import { envGet } from './env'; import { Fetcher } from './Fetcher'; diff --git a/src/utils/StreamResolver.test.ts b/src/utils/StreamResolver.test.ts index fc29578..dd6ba01 100644 --- a/src/utils/StreamResolver.test.ts +++ b/src/utils/StreamResolver.test.ts @@ -1,13 +1,13 @@ import { ContentType } from 'stremio-addon-sdk'; import winston from 'winston'; -import { createExtractors, Extractor, ExtractorRegistry } from '../extractor'; -import { StreamResolver } from './StreamResolver'; -import { MeineCloud, MostraGuarda, Source, SourceResult } from '../source'; -import { BlockedReason, CountryCode, Format, UrlResult } from '../types'; import { BlockedError, HttpError, NotFoundError, QueueIsFullError, TimeoutError, TooManyRequestsError, TooManyTimeoutsError } from '../error'; -import { ImdbId } from './id'; -import { FetcherMock } from './FetcherMock'; +import { createExtractors, Extractor, ExtractorRegistry } from '../extractor'; +import { MeineCloud, MostraGuarda, Source, SourceResult } from '../source'; import { createTestContext } from '../test'; +import { BlockedReason, CountryCode, Format, UrlResult } from '../types'; +import { FetcherMock } from './FetcherMock'; +import { ImdbId } from './id'; +import { StreamResolver } from './StreamResolver'; const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const fetcher = new FetcherMock(`${__dirname}/__fixtures__/StreamResolver`); diff --git a/src/utils/StreamResolver.ts b/src/utils/StreamResolver.ts index 2edbd09..6d7d5fc 100644 --- a/src/utils/StreamResolver.ts +++ b/src/utils/StreamResolver.ts @@ -1,8 +1,6 @@ +import bytes from 'bytes'; import { ContentType, Stream } from 'stremio-addon-sdk'; import winston from 'winston'; -import bytes from 'bytes'; -import { BlockedReason, Context, Format, UrlResult } from '../types'; -import { Source } from '../source'; import { BlockedError, HttpError, @@ -12,11 +10,13 @@ import { TooManyRequestsError, TooManyTimeoutsError, } from '../error'; -import { flagFromCountryCode } from './language'; +import { ExtractorRegistry } from '../extractor'; +import { Source } from '../source'; +import { BlockedReason, Context, Format, UrlResult } from '../types'; +import { showExternalUrls } from './config'; import { envGetAppName } from './env'; import { Id } from './id'; -import { ExtractorRegistry } from '../extractor'; -import { showExternalUrls } from './config'; +import { flagFromCountryCode } from './language'; interface ResolveResponse { streams: Stream[]; diff --git a/src/utils/height.ts b/src/utils/height.ts index 21165d7..bb74ba6 100644 --- a/src/utils/height.ts +++ b/src/utils/height.ts @@ -1,5 +1,5 @@ -import { CustomRequestInit, Fetcher } from './Fetcher'; import { Context } from '../types'; +import { CustomRequestInit, Fetcher } from './Fetcher'; export const guessHeightFromTitle = (title: string): number | undefined => { const heightMatch = title.match(/([0-9]+)p/); diff --git a/src/utils/id/index.ts b/src/utils/id/index.ts index e466d1c..90886bb 100644 --- a/src/utils/id/index.ts +++ b/src/utils/id/index.ts @@ -1,8 +1,8 @@ +import { Context } from '../../types'; +import { Fetcher } from '../Fetcher'; +import { getImdbIdFromTmdbId, getTmdbIdFromImdbId } from '../tmdb'; import { ImdbId } from './ImdbId'; import { TmdbId } from './TmdbId'; -import { getImdbIdFromTmdbId, getTmdbIdFromImdbId } from '../tmdb'; -import { Fetcher } from '../Fetcher'; -import { Context } from '../../types'; export * from './ImdbId'; export * from './TmdbId'; diff --git a/src/utils/manifest.test.ts b/src/utils/manifest.test.ts index 9c4a708..86e5e03 100644 --- a/src/utils/manifest.test.ts +++ b/src/utils/manifest.test.ts @@ -1,6 +1,6 @@ -import { buildManifest } from './manifest'; -import { StreamKiste, MeineCloud, VerHdLink, VixSrc } from '../source'; +import { MeineCloud, StreamKiste, VerHdLink, VixSrc } from '../source'; import { FetcherMock } from './FetcherMock'; +import { buildManifest } from './manifest'; const fetcher = new FetcherMock('/dev/null'); diff --git a/src/utils/tmdb.test.ts b/src/utils/tmdb.test.ts index 2e00575..cf59c5d 100644 --- a/src/utils/tmdb.test.ts +++ b/src/utils/tmdb.test.ts @@ -1,7 +1,7 @@ -import { getImdbIdFromTmdbId, getTmdbIdFromImdbId } from './tmdb'; -import { ImdbId, TmdbId } from './id'; -import { FetcherMock } from './FetcherMock'; import { createTestContext } from '../test'; +import { FetcherMock } from './FetcherMock'; +import { ImdbId, TmdbId } from './id'; +import { getImdbIdFromTmdbId, getTmdbIdFromImdbId } from './tmdb'; const fetcher = new FetcherMock(`${__dirname}/__fixtures__/tmdb`); const ctx = createTestContext(); diff --git a/src/utils/tmdb.ts b/src/utils/tmdb.ts index 5a70cdd..adf8880 100644 --- a/src/utils/tmdb.ts +++ b/src/utils/tmdb.ts @@ -1,8 +1,8 @@ -import { ImdbId, TmdbId } from './id'; -import { Context } from '../types'; -import { CustomRequestInit, Fetcher } from './Fetcher'; -import { envGet } from './env'; import { NotFoundError } from '../error'; +import { Context } from '../types'; +import { envGet } from './env'; +import { CustomRequestInit, Fetcher } from './Fetcher'; +import { ImdbId, TmdbId } from './id'; interface FindResponsePartial { movie_results: {