diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 7faaf9d..088389f 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,46 +1,119 @@ /* eslint-env node */ 'use strict' const { defineConfig } = require('@sixxgate/lint') +const { memo } = require('radash') module.exports = defineConfig(({ useVue, useNode, useTypeScript }) => { useVue({ version: '3.4', style: 'sass' }) useNode() useTypeScript() + /** @type {() => Partial} */ + const useCommonJsDocRules = memo(() => ({ + // Only require the parameters if we want them. + 'jsdoc/require-param': ['error', { ignoreWhenAllParamsMissing: true }], + // Don't require all sections to be filled out. + 'jsdoc/require-returns': 'off', + 'jsdoc/require-yields': 'off', + // Requires too much configuration to worry about. + 'jsdoc/tag-lines': 'off', + // Don't require DocComments. + 'jsdoc/require-jsdoc': 'off' + })) + + /** @type {() => Partial} */ + const useJsDocRules = memo(() => ({ + ...useCommonJsDocRules() + })) + + /** @type {() => Partial} */ + const useTsDocRules = memo(() => ({ + ...useCommonJsDocRules(), + // Only require the parameters if we want them. + 'jsdoc/require-param': [ + 'error', + { + ignoreWhenAllParamsMissing: true, + // Has issues with TSDoc + checkDestructuredRoots: false + } + ], + // Has issues with JSDOc. + 'jsdoc/check-param-names': ['error', { checkDestructured: false }], + // TSDoc itself. + 'tsdoc/syntax': 'error' + })) + return { root: true, env: { es2023: true }, + plugins: ['eslint-plugin-tsdoc'], reportUnusedDisableDirectives: true, overrides: [ + // CommonJS JavaScript { files: ['*.cjs'], + extends: ['plugin:jsdoc/recommended-error'], rules: { - '@typescript-eslint/no-require-imports': 'off' + '@typescript-eslint/no-require-imports': 'off', + ...useJsDocRules() }, parserOptions: { project: './tsconfig.config.json' } }, + // Main and preload { files: ['src/core/**/*.ts', 'src/main/**/*.ts', 'src/main/**/*.js', 'src/preload/**/*.ts'], parserOptions: { project: './tsconfig.node.json' } }, + // Main and preload TypeScript + { + files: ['src/core/**/*.ts', 'src/main/**/*.ts', 'src/preload/**/*.ts'], + extends: ['plugin:jsdoc/recommended-typescript-error'], + rules: { ...useTsDocRules() } + }, + // Main and preload JavaScript + { + files: ['src/main/**/*.js'], + extends: ['plugin:jsdoc/recommended-error'], + rules: { ...useJsDocRules() } + }, + // Renderer { files: ['src/renderer/**/*.ts', 'src/renderer/**/*.tsx', 'src/renderer/**/*.js', 'src/renderer/**/*.vue'], parserOptions: { project: './tsconfig.web.json' } }, + // Renderer TypeScript + { + files: ['src/renderer/**/*.ts', 'src/renderer/**/*.tsx', 'src/renderer/**/*.vue'], + extends: ['plugin:jsdoc/recommended-typescript-error'], + rules: { ...useTsDocRules() } + }, + // Renderer JavaScript + { + files: ['src/renderer/**/*.js'], + extends: ['plugin:jsdoc/recommended-error'], + rules: { ...useJsDocRules() } + }, + // Vite configuration { files: ['electron.vite.config.ts', 'vite.config.ts'], + extends: ['plugin:jsdoc/recommended-typescript-error'], + rules: { ...useTsDocRules() }, parserOptions: { project: './tsconfig.config.json' } }, + // Tests { files: ['src/tests/**/*.ts'], + extends: ['plugin:jsdoc/recommended-typescript-error'], + rules: { ...useTsDocRules() }, parserOptions: { project: './tsconfig.test.json' } diff --git a/PLAN.md b/PLAN.md index b4d676c..1417aee 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,7 +1,4 @@ - Milestones - - v2.2 - - Move more modules to core. - - (#74) Rearrangeable dashboard icons. - v2.3 - Determine which drivers are being using by the public at large to remove the experimental mark; options: - Add a opt-in telemetry feature to see which drivers are being used, should be an ask to send survey sort of thing. diff --git a/package.json b/package.json index 66c5f4f..f12b124 100644 --- a/package.json +++ b/package.json @@ -102,9 +102,11 @@ "eslint-import-resolver-node": "^0.3.9", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsdoc": "^50.6.0", "eslint-plugin-n": "^17.14.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-promise": "^7.2.0", + "eslint-plugin-tsdoc": "^0.4.0", "eslint-plugin-vue": "^9.31.0", "execa": "^9.5.1", "husky": "^9.1.7", diff --git a/src/core/location.ts b/src/core/location.ts index 13d6d8b..7e69d21 100644 --- a/src/core/location.ts +++ b/src/core/location.ts @@ -67,26 +67,26 @@ export const hostSchema = z.string().refine(isHost) // #endregion /** - Is it a valid hostname? - - From RFC-952 (with relaxation stated in RFC-1123 2.1) - - ``` - Hostname is - = *["."] - = [*[ = /[\p{N}\p{L}](?:[\p{N}\p{L}-]*[\p{N}\p{L}])?/gu - /^(?:\.)*$/gu - ``` - - Fully rendered in hostNamePattern, with non-capture groups - to capturing converted for better readability. -*/ + * Is it a valid hostname? + * + * From RFC-952 (with relaxation stated in RFC-1123 2.1) + * + * ``` + * Hostname is + * = *["."] + * = [*[ = /[\p{N}\p{L}](?:[\p{N}\p{L}-]*[\p{N}\p{L}])?/gu + * /^(?:\.)*$/gu + * ``` + * + * Fully rendered in hostNamePattern, with non-capture groups + * to capturing converted for better readability. + */ const hostNamePattern = /^[\p{N}\p{L}]([\p{N}\p{L}-]*[\p{N}\p{L}])?(\.[\p{N}\p{L}]([\p{N}\p{L}-]*[\p{N}\p{L}])?)*$/u /** Determines whether a string is a hostname. */ export const isHostName = (value: string) => hostNamePattern.test(value) @@ -95,15 +95,15 @@ export const hostNameSchema = z.string().regex(hostNamePattern) // #region IPv4 /** - Zod's IP pattern allows some invalid address strings, such as double-zero, `00`. - These days IPv4 is generally always in decimal, not octal. It seems Zod was - aiming for this. With this in mind, the definition is as follows. - - ``` -
= 3 * ("." ) - = /(25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|[0-9]/ # 0 - 255 - ``` -*/ + * Zod's IP pattern allows some invalid address strings, such as double-zero, `00`. + * These days IPv4 is generally always in decimal, not octal. It seems Zod was + * aiming for this. With this in mind, the definition is as follows. + * + * ``` + *
= 3 * ("." ) + * = /(25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|[0-9]/ # 0 - 255 + * ``` + */ const ipV4Pattern = /^((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|[0-9])(\.((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|[0-9])){3}$/u /** Determines whether a string is an IPv4 address */ @@ -116,46 +116,46 @@ export const ipV4AddressSchema = z.string().regex(ipV4Pattern) // #region IPv6 /** - Zod's IPv6 pattern allows a lot of invalid and misses some valid addresses. - See {@link https://github.com/colinhacks/zod/issues/2339}. - The RFCs seems indicate the following pattern. - - IPv6 - - ``` - | - - = | - = | - - = (7 * (":" )) - = "::" # Zero address - | ":" 7 * (":" ) - | ":" 1-6 * (":" ) - | 1-2 * ( ":") 1-5 * (":" ) - | 1-3 * ( ":") 1-4 * (":" ) - | 1-4 * ( ":") 1-3 * (":" ) - | 1-5 * ( ":") 1-2 * (":" ) - | 1-6 * ( ":") ":" - | 7 * ( ":") ":" - - = /[0-9A-Fa-f]{1,3}/ | /[0-9A-F]{1,3}/i | /[0-9a-f]{1,3}/i - - = (5 * (":" )) - - = "::" # Zero prefix - | ":" 5 * (":" ) ":" - | ":" 1-4 * (":" ) ":" - | 1-2 * ( ":") 1-3 * (":" ) ":" - | 1-3 * ( ":") 1-2 * (":" ) ":" - | 1-4 * ( ":") ":" ":" - | 5 * ( ":") ":" - - = (3 * ("." )) - - = /(25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|[0-9]/ # 0 - 255 - ``` -*/ + * Zod's IPv6 pattern allows a lot of invalid and misses some valid addresses. + * See {@link https://github.com/colinhacks/zod/issues/2339}. + * The RFCs seems indicate the following pattern. + * + * IPv6 + * + * ``` + * | + * + * = | + * = | + * + * = (7 * (":" )) + * = "::" # Zero address + * | ":" 7 * (":" ) + * | ":" 1-6 * (":" ) + * | 1-2 * ( ":") 1-5 * (":" ) + * | 1-3 * ( ":") 1-4 * (":" ) + * | 1-4 * ( ":") 1-3 * (":" ) + * | 1-5 * ( ":") 1-2 * (":" ) + * | 1-6 * ( ":") ":" + * | 7 * ( ":") ":" + * + * = /[0-9A-Fa-f]{1,3}/ | /[0-9A-F]{1,3}/i | /[0-9a-f]{1,3}/i + * + * = (5 * (":" )) + * + * = "::" # Zero prefix + * | ":" 5 * (":" ) ":" + * | ":" 1-4 * (":" ) ":" + * | 1-2 * ( ":") 1-3 * (":" ) ":" + * | 1-3 * ( ":") 1-2 * (":" ) ":" + * | 1-4 * ( ":") ":" ":" + * | 5 * ( ":") ":" + * + * = (3 * ("." )) + * + * = /(25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|[0-9]/ # 0 - 255 + * ``` + */ const ipPairPattern = /^[0-9A-Fa-f]{1,4}$/u function parsePossibleIpString(value: string) { diff --git a/src/main/services/level.js b/src/main/services/level.js index 6ca3ca7..4ef40aa 100644 --- a/src/main/services/level.js +++ b/src/main/services/level.js @@ -7,6 +7,8 @@ import levelUp from 'levelup' import LevelPouch from 'pouchdb-adapter-leveldb-core' import { memo } from 'radash' +/* globals PouchDB */ // Fixes PouchDB undefined in JSDoc. + // // NOTE: While PouchDB has a built-in LevelDB adapter, we want to have // as minimum of an external footprint as possible. This will be @@ -21,7 +23,7 @@ import { memo } from 'radash' export const useLevelDb = memo(function useLevelDb() { const leveldown = memo( /** - * @param {string} name + * @param {string} name The name of the database. */ function leveldown(name) { const path = resolvePath(app.getPath('userData'), name) @@ -39,18 +41,20 @@ export const useLevelDb = memo(function useLevelDb() { const levelup = memo( /** - * @param {string} name + * @param {string} name The name of the database. */ async function levelup(name) { const db = leveldown(name) return await new Promise( + /* eslint-disable jsdoc/no-undefined-types -- Has issue with generics. */ /** - * @param {(db: LevelUp) => void} resolve - * @param {(error: Error) => void} reject + * @param {(db: LevelUp) => void} resolve Resolver + * @param {(error: Error) => void} reject Rejecter */ + /* eslint-enable jsdoc/no-undefined-types */ (resolve, reject) => { /** - * @param {Error|undefined} error + * @param {Error|undefined} error Error */ const cb = (error) => { /* v8 ignore next 2 */ // No way to spy or mock this deep in. @@ -77,8 +81,8 @@ export const useLevelAdapter = memo(function useLevelAdapter() { /** * @this {Partial} - * @param {Record} opts - * @param {ErrorCallback} cb + * @param {Record} opts Plugin options + * @param {ErrorCallback} cb Error callback */ function MainDown(opts, cb) { // eslint-disable-next-line -- Everything is messed up with no typings. diff --git a/src/renderer/services/driver.ts b/src/renderer/services/driver.ts index 75a7e0a..f82c9f9 100644 --- a/src/renderer/services/driver.ts +++ b/src/renderer/services/driver.ts @@ -31,9 +31,9 @@ export interface Driver extends DriverInformation { /** * Sets input and output ties. * - * @param input The input channel to tie. - * @param videoOutput The output video channel to tie. - * @param audioOutput The output audio channel to tie. + * @param input - The input channel to tie. + * @param videoOutput - The output video channel to tie. + * @param audioOutput - The output audio channel to tie. */ readonly activate: (input: number, videoOutput: number, audioOutput: number) => Promise /** Powers on the switch or monitor. */ diff --git a/yarn.lock b/yarn.lock index 9d9fa47..3aeb30f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -354,6 +354,15 @@ minimatch "^3.0.4" plist "^3.0.4" +"@es-joy/jsdoccomment@~0.49.0": + version "0.49.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz#e5ec1eda837c802eca67d3b29e577197f14ba1db" + integrity sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q== + dependencies: + comment-parser "1.4.1" + esquery "^1.6.0" + jsdoc-type-pratt-parser "~4.1.0" + "@esbuild/aix-ppc64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" @@ -692,6 +701,21 @@ resolved "https://registry.yarnpkg.com/@mdi/svg/-/svg-7.4.47.tgz#f8e5516aae129764a76d1bb2f27e55bee03e6e90" integrity sha512-WQ2gDll12T9WD34fdRFgQVgO8bag3gavrAgJ0frN4phlwdJARpE6gO1YvLEMJR0KKgoc+/Ea/A0Pp11I00xBvw== +"@microsoft/tsdoc-config@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz#e0f0b50628f4ad7fe121ca616beacfe6a25b9335" + integrity sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw== + dependencies: + "@microsoft/tsdoc" "0.15.1" + ajv "~8.12.0" + jju "~1.4.0" + resolve "~1.22.2" + +"@microsoft/tsdoc@0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz#d4f6937353bc4568292654efb0a0e0532adbcba2" + integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1762,6 +1786,16 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@~8.12.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alien-signals@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/alien-signals/-/alien-signals-0.2.2.tgz#439d09b363dc4d609c0f6ce69362dce068d23197" @@ -1827,6 +1861,11 @@ app-builder-lib@24.13.3: tar "^6.1.12" temp-file "^3.4.0" +are-docs-informative@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" + integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -2266,6 +2305,11 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +comment-parser@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + compare-version@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" @@ -2369,7 +2413,7 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -2777,7 +2821,7 @@ es-errors@^1.2.1, es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^1.5.4: +es-module-lexer@^1.5.3, es-module-lexer@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== @@ -2950,6 +2994,23 @@ eslint-plugin-import@^2.31.0: string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" +eslint-plugin-jsdoc@^50.6.0: + version "50.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.0.tgz#2c6049a40305313174a30212bc360e775b797a0a" + integrity sha512-tCNp4fR79Le3dYTPB0dKEv7yFyvGkUCa+Z3yuTrrNGGOxBlXo9Pn0PEgroOZikUQOGjxoGMVKNjrOHcYEdfszg== + dependencies: + "@es-joy/jsdoccomment" "~0.49.0" + are-docs-informative "^0.0.2" + comment-parser "1.4.1" + debug "^4.3.6" + escape-string-regexp "^4.0.0" + espree "^10.1.0" + esquery "^1.6.0" + parse-imports "^2.1.1" + semver "^7.6.3" + spdx-expression-parse "^4.0.0" + synckit "^0.9.1" + eslint-plugin-n@^17.14.0: version "17.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.14.0.tgz#162a7c17a7ce7e3834af537bca68ab8b6aa26edc" @@ -2979,6 +3040,14 @@ eslint-plugin-promise@^7.2.0: dependencies: "@eslint-community/eslint-utils" "^4.4.0" +eslint-plugin-tsdoc@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.4.0.tgz#b14104e96ceb8add2054bf39e0cfc12b9a9586e6" + integrity sha512-MT/8b4aKLdDClnS8mP3R/JNjg29i0Oyqd/0ym6NnQf+gfKbJJ4ZcSh2Bs1H0YiUMTBwww5JwXGTWot/RwyJ7aQ== + dependencies: + "@microsoft/tsdoc" "0.15.1" + "@microsoft/tsdoc-config" "0.17.1" + eslint-plugin-vue@^9.31.0: version "9.31.0" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.31.0.tgz#5da53c2826f8efd8a62835aad596826053b1085e" @@ -3055,7 +3124,7 @@ eslint@^8.57.1: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^10.0.1: +espree@^10.0.1, espree@^10.1.0: version "10.3.0" resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== @@ -3078,7 +3147,7 @@ esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0, esquery@^1.4.2: +esquery@^1.4.0, esquery@^1.4.2, esquery@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -4124,6 +4193,11 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4136,6 +4210,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsdoc-type-pratt-parser@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113" + integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg== + jsesc@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" @@ -4161,6 +4240,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -4828,6 +4912,14 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-imports@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-2.2.1.tgz#0a6e8b5316beb5c9905f50eb2bbb8c64a4805642" + integrity sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ== + dependencies: + es-module-lexer "^1.5.3" + slashes "^3.0.12" + parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -5294,6 +5386,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -5314,7 +5411,7 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^1.10.0, resolve@^1.22.4: +resolve@^1.10.0, resolve@^1.22.4, resolve@~1.22.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -5730,6 +5827,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slashes@^3.0.12: + version "3.0.12" + resolved "https://registry.yarnpkg.com/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" + integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== + slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" @@ -5788,6 +5890,14 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" + integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.20" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89"