From d71b8b84cb5e739129c7fda375f333c7d9af942f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20T=C3=B3ta?= Date: Thu, 3 Oct 2024 15:24:48 +0300 Subject: [PATCH] Update eslint jsdoc plugin Merge in EXTENSIONS/browser-extension from fix/eslint-jsdoc-plugin to master Squashed commit of the following: commit 6e29b2a57084af858da014daf67f5d3402a3a0b5 Author: scripthunter7 Date: Tue Oct 1 12:40:03 2024 +0300 update eslint jsdoc plugin --- .eslintrc.js | 1 + Extension/src/background/.eslintrc.js | 3 +- .../src/background/api/document-block.ts | 2 + Extension/src/background/api/filtering-log.ts | 5 +- .../api/filters/annoyances-consent.ts | 2 + .../src/background/api/filters/page-stats.ts | 2 + .../src/background/api/filters/update.ts | 4 +- .../src/background/api/filters/userrules.ts | 4 + Extension/src/background/api/network/main.ts | 10 ++ Extension/src/background/api/safebrowsing.ts | 2 + Extension/src/background/api/settings/main.ts | 2 + .../background/api/ui/promo-notification.ts | 4 + Extension/src/background/engine.ts | 2 + .../src/background/events/context-menu.ts | 2 + Extension/src/background/events/settings.ts | 2 + Extension/src/background/schema/.eslintrc.js | 3 +- .../src/background/services/custom-filter.ts | 4 + .../src/background/services/filtering-log.ts | 2 + Extension/src/background/services/filters.ts | 2 + Extension/src/background/services/settings.ts | 2 + .../src/background/services/userrules.ts | 2 + .../src/background/storages/hybrid-storage.ts | 2 + .../src/background/storages/raw-filters.ts | 2 + .../src/background/storages/safebrowsing.ts | 12 +- Extension/src/background/utils/run-info.ts | 8 + package.json | 2 +- tools/bundle/size-limit-plugin.js | 2 +- .../dangerous-rules/safety-checker.ts | 2 + tools/resources/dangerous-rules/scanner.ts | 2 + yarn.lock | 142 ++++++++++++++---- 30 files changed, 192 insertions(+), 44 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index b81c63734f..ac3a0d5c76 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -158,6 +158,7 @@ module.exports = { 'jsdoc/no-undefined-types': 'off', 'jsdoc/require-returns-check': 'off', 'jsdoc/require-jsdoc': 'off', + 'jsdoc/no-defaults': 'off', }, 'ignorePatterns': [ 'node_modules', diff --git a/Extension/src/background/.eslintrc.js b/Extension/src/background/.eslintrc.js index 537eec0c82..eb3a173c95 100644 --- a/Extension/src/background/.eslintrc.js +++ b/Extension/src/background/.eslintrc.js @@ -34,7 +34,8 @@ module.exports = { 'jsdoc/require-returns-description': 'error', 'jsdoc/require-returns': 'error', 'jsdoc/require-param': 'error', - 'jsdoc/no-undefined-types': 'error', + // TODO: Enable this rule + 'jsdoc/no-undefined-types': 'off', 'jsdoc/require-returns-check': 'error', 'jsdoc/require-description-complete-sentence': ['error'], 'jsdoc/require-jsdoc': [ diff --git a/Extension/src/background/api/document-block.ts b/Extension/src/background/api/document-block.ts index 473134134c..d57ba5d5b7 100644 --- a/Extension/src/background/api/document-block.ts +++ b/Extension/src/background/api/document-block.ts @@ -47,6 +47,8 @@ export class DocumentBlockApi { /** * Returns an array of trusted domains. + * + * @returns An array of trusted domains. */ public static async getTrustedDomains(): Promise { const now = Date.now(); diff --git a/Extension/src/background/api/filtering-log.ts b/Extension/src/background/api/filtering-log.ts index 1ac6125e71..3268425e4e 100644 --- a/Extension/src/background/api/filtering-log.ts +++ b/Extension/src/background/api/filtering-log.ts @@ -262,7 +262,8 @@ export class FilteringLogApi { * Tries to sync the cached filter data with the storage. * * @param filterId Filter id. - * @returns Returns false if the filter was synced within the last {@link SYNC_ATTEMPTS_INTERVAL_MS} milliseconds. + * @returns Returns false if the filter was synced within the last + * {@link FilteringLogApi.SYNC_ATTEMPTS_INTERVAL_MS} milliseconds. * Otherwise, returns true. */ private attemptToSyncFilter(filterId: number): boolean { @@ -545,6 +546,8 @@ export class FilteringLogApi { /** * Synchronizes currently opened tabs with out state. + * + * @returns Array of {@link FilteringLogTabInfo} with data about opened tabs. */ public async synchronizeOpenTabs(): Promise { const tabs = await TabsApi.getAll(); diff --git a/Extension/src/background/api/filters/annoyances-consent.ts b/Extension/src/background/api/filters/annoyances-consent.ts index f6ec8356d2..67bea13c6c 100644 --- a/Extension/src/background/api/filters/annoyances-consent.ts +++ b/Extension/src/background/api/filters/annoyances-consent.ts @@ -61,6 +61,8 @@ export class AnnoyancesConsentApi { /** * Restores consented annoyances filter ids from storage. + * + * @returns Set of consented annoyances filter ids. */ private static async getConsentFromStorage(): Promise> { const storedConsentedFilterIds = await AnnoyancesConsentApi.getFromStorage(); diff --git a/Extension/src/background/api/filters/page-stats.ts b/Extension/src/background/api/filters/page-stats.ts index 79e195ad5d..5e1d3e1daf 100644 --- a/Extension/src/background/api/filters/page-stats.ts +++ b/Extension/src/background/api/filters/page-stats.ts @@ -108,6 +108,8 @@ export class PageStatsApi { * * @param filterId Filter id. * @param blocked Count of blocked requests. + * + * @returns Promise, resolved when stats are updated. */ public static async updateStats( filterId: number, diff --git a/Extension/src/background/api/filters/update.ts b/Extension/src/background/api/filters/update.ts index 61beb515e9..56c6295723 100644 --- a/Extension/src/background/api/filters/update.ts +++ b/Extension/src/background/api/filters/update.ts @@ -61,7 +61,7 @@ export class FilterUpdateApi { private static readonly RECENTLY_CHECKED_FILTER_TIMEOUT_MS = 1000 * 60 * 5; /** - * Filters the provided filter list with {@link selectFiltersIdsToUpdate}, + * Filters the provided filter list with {@link FilterUpdateApi.selectFiltersIdsToUpdate}, * then gets fresh metadata from the remote server for all filters (it * cannot be updated selectively), and, after updating, refreshes * lastCheckTime for each of those selected for checking filters. @@ -111,6 +111,8 @@ export class FilterUpdateApi { * * @param forceUpdate Is it a force manual check by user action or first run * or not. + * + * @returns List of metadata for updated filters. */ public static async autoUpdateFilters(forceUpdate = false): Promise { const startUpdateLogMessage = forceUpdate diff --git a/Extension/src/background/api/filters/userrules.ts b/Extension/src/background/api/filters/userrules.ts index 82a553cd4b..4f1cdd6d16 100644 --- a/Extension/src/background/api/filters/userrules.ts +++ b/Extension/src/background/api/filters/userrules.ts @@ -87,6 +87,8 @@ export class UserRulesApi { /** * Returns rules from user list. + * + * @returns User rules list. */ public static async getUserRules(): Promise { const data = await FiltersStorage.getAllFilterData(AntiBannerFiltersId.UserFilterId); @@ -110,6 +112,8 @@ export class UserRulesApi { * but when user opens the editor, we need to show their original rules. * User rules is a bit special because for that list we store the whole original filter list. * This method return that original list and we use it to load content in the editor. + * + * @returns User rules list. */ public static async getOriginalUserRules(): Promise { return FiltersStorage.getOriginalRules(AntiBannerFiltersId.UserFilterId); diff --git a/Extension/src/background/api/network/main.ts b/Extension/src/background/api/network/main.ts index be3aaec112..9903c4e897 100644 --- a/Extension/src/background/api/network/main.ts +++ b/Extension/src/background/api/network/main.ts @@ -116,6 +116,8 @@ export class Network { * @param useOptimizedFilters Download optimized filters flag. * @param rawFilter Raw filter rules. * + * @returns Downloaded filter rules. + * * @throws An error if FiltersDownloader.downloadWithRaw() fails. */ public async downloadFilterRules( @@ -179,6 +181,8 @@ export class Network { * @param url Subscription url. * @param rawFilter Raw filter rules. * @param force Boolean flag to download filter fully or by patches. + * + * @returns Downloaded filter rules. */ public async downloadFilterRulesBySubscriptionUrl( url: string, @@ -328,6 +332,8 @@ export class Network { /** * Downloads metadata from backend. * + * @returns Object of {@link Metadata}. + * * @throws Error if metadata is invalid. */ public async downloadMetadataFromBackend(): Promise { @@ -374,6 +380,8 @@ export class Network { * Checks specified host hashes with our safebrowsing service. * * @param hashes Host hashes. + * + * @returns Response from the safebrowsing service. */ public async lookupSafebrowsing(hashes: string[]): Promise { const url = `${this.settings.safebrowsingLookupUrl}?prefixes=${encodeURIComponent(hashes.join('/'))}`; @@ -451,6 +459,8 @@ export class Network { * * @param url Url. * @param contentType Content type. + * + * @returns Promise with XMLHttpRequest. */ private static async executeRequestAsync(url: string, contentType: string): Promise { return new Promise((resolve, reject) => { diff --git a/Extension/src/background/api/safebrowsing.ts b/Extension/src/background/api/safebrowsing.ts index 786a334c28..cf8bdaf521 100644 --- a/Extension/src/background/api/safebrowsing.ts +++ b/Extension/src/background/api/safebrowsing.ts @@ -86,6 +86,8 @@ export class SafebrowsingApi { * * @param requestUrl Request URL. * @param referrerUrl Referrer URL. + * + * @returns Safebrowsing list we've detected or null. */ public static async checkSafebrowsingFilter(requestUrl: string, referrerUrl: string): Promise { logger.debug('Checking safebrowsing filter for', requestUrl); diff --git a/Extension/src/background/api/settings/main.ts b/Extension/src/background/api/settings/main.ts index d3be3d0334..b23424dced 100644 --- a/Extension/src/background/api/settings/main.ts +++ b/Extension/src/background/api/settings/main.ts @@ -240,6 +240,8 @@ export class SettingsApi { /** * Exports settings to string with JSON format. + * + * @returns Configuration in JSON format. */ public static async export(): Promise { const config: Config = { diff --git a/Extension/src/background/api/ui/promo-notification.ts b/Extension/src/background/api/ui/promo-notification.ts index 2a39bda4ce..24fb7bea00 100644 --- a/Extension/src/background/api/ui/promo-notification.ts +++ b/Extension/src/background/api/ui/promo-notification.ts @@ -102,6 +102,8 @@ export class PromoNotificationApi { /** * Finds out notification for current time and checks if notification wasn't shown yet. + * + * @returns Notification object or null if there is no notification to show. */ public async getCurrentNotification(): Promise { // Do not display notification on Firefox @@ -213,6 +215,8 @@ export class PromoNotificationApi { /** * Returns the last time a notification was shown. * If it was not shown yet, initialized with the current time. + * + * @returns Last notification time. */ private static async getLastNotificationTime(): Promise { let lastTime = Number(await browserStorage.get(LAST_NOTIFICATION_TIME_KEY) || 0); diff --git a/Extension/src/background/engine.ts b/Extension/src/background/engine.ts index 2650ea0ba9..ad8e71e4ba 100644 --- a/Extension/src/background/engine.ts +++ b/Extension/src/background/engine.ts @@ -114,6 +114,8 @@ export class Engine { /** * Creates tswebextension configuration based on current app state. + * + * @returns Configuration for tswebextension. */ private static async getConfiguration(): Promise { const enabledFilters = FiltersApi.getEnabledFilters(); diff --git a/Extension/src/background/events/context-menu.ts b/Extension/src/background/events/context-menu.ts index e26e859ec6..cbc4e831f5 100644 --- a/Extension/src/background/events/context-menu.ts +++ b/Extension/src/background/events/context-menu.ts @@ -59,6 +59,8 @@ export class ContextMenuEvents { * Publishes the event and, if a listener is found, notifies the listener. * * @param event Event with some generic type. + * + * @returns Promise with the result of the listener. */ public async publishEvent(event: T): Promise { const listener = this.listenersMap.get(event); diff --git a/Extension/src/background/events/settings.ts b/Extension/src/background/events/settings.ts index 09d68c6057..251d525d4b 100644 --- a/Extension/src/background/events/settings.ts +++ b/Extension/src/background/events/settings.ts @@ -45,6 +45,8 @@ export class SettingsEvents { * * @param event Event with some generic type. * @param value Some filed in the {@link Settings} object. + * + * @returns Promise that resolves when the listener is notified. */ public async publishEvent(event: T, value: Settings[T]): Promise { const listener = this.listenersMap.get(event) as SettingsListener; diff --git a/Extension/src/background/schema/.eslintrc.js b/Extension/src/background/schema/.eslintrc.js index 53a90848dc..ab16ae93a6 100644 --- a/Extension/src/background/schema/.eslintrc.js +++ b/Extension/src/background/schema/.eslintrc.js @@ -33,7 +33,8 @@ module.exports = { 'jsdoc/require-returns-description': 'error', 'jsdoc/require-returns': 'error', 'jsdoc/require-param': 'error', - 'jsdoc/no-undefined-types': 'error', + // TODO: Enable this rule + 'jsdoc/no-undefined-types': 'off', 'jsdoc/require-returns-check': 'error', 'jsdoc/require-description-complete-sentence': ['error'], 'jsdoc/require-jsdoc': [ diff --git a/Extension/src/background/services/custom-filter.ts b/Extension/src/background/services/custom-filter.ts index e23fff25e9..f80ee4d40f 100644 --- a/Extension/src/background/services/custom-filter.ts +++ b/Extension/src/background/services/custom-filter.ts @@ -56,6 +56,8 @@ export class CustomFilterService { * Returns custom filter info for modal window. * * @param message Message data. + * + * @returns Custom filter info. */ static async onCustomFilterInfoLoad(message: LoadCustomFilterInfoMessage): Promise { const { url, title } = message.data; @@ -67,6 +69,8 @@ export class CustomFilterService { * Add new custom filter. * * @param message Message data. + * + * @returns Custom filter metadata. */ static async onCustomFilterSubscription(message: SubscribeToCustomFilterMessage): Promise { const { filter } = message.data; diff --git a/Extension/src/background/services/filtering-log.ts b/Extension/src/background/services/filtering-log.ts index a9d400e866..f7464d50d2 100644 --- a/Extension/src/background/services/filtering-log.ts +++ b/Extension/src/background/services/filtering-log.ts @@ -680,6 +680,8 @@ export class FilteringLogService { /** * Calls {@link filteringLogApi} for synchronize list of the opened tabs. + * + * @returns List of the opened tabs. */ private static async onSyncOpenTabs(): Promise { return filteringLogApi.synchronizeOpenTabs(); diff --git a/Extension/src/background/services/filters.ts b/Extension/src/background/services/filters.ts index 87db017a23..fa8696d3a4 100644 --- a/Extension/src/background/services/filters.ts +++ b/Extension/src/background/services/filters.ts @@ -170,6 +170,8 @@ export class FiltersService { /** * Called when requesting an force update for filters. + * + * @returns Updated filters metadata. */ private static async manualCheckFiltersUpdate(): Promise { try { diff --git a/Extension/src/background/services/settings.ts b/Extension/src/background/services/settings.ts index e3730e9f07..0c68511227 100644 --- a/Extension/src/background/services/settings.ts +++ b/Extension/src/background/services/settings.ts @@ -179,6 +179,8 @@ export class SettingsService { * Imports settings from JSON. * * @param message Message with JSON settings {@link ApplySettingsJsonMessage}. + * + * @returns Result of importing. */ static async import(message: ApplySettingsJsonMessage): Promise { const { json } = message.data; diff --git a/Extension/src/background/services/userrules.ts b/Extension/src/background/services/userrules.ts index aa871c1ff3..b6c1ba39fb 100644 --- a/Extension/src/background/services/userrules.ts +++ b/Extension/src/background/services/userrules.ts @@ -85,6 +85,8 @@ export class UserRulesService { /** * Returns all user rules concatenated via '\n' divider for the editor. + * + * @returns User rules editor content and settings. */ private static async getUserRulesEditorData(): Promise { const userRules = await UserRulesApi.getOriginalUserRules(); diff --git a/Extension/src/background/storages/hybrid-storage.ts b/Extension/src/background/storages/hybrid-storage.ts index df7cbbb792..5f5702d03c 100644 --- a/Extension/src/background/storages/hybrid-storage.ts +++ b/Extension/src/background/storages/hybrid-storage.ts @@ -178,6 +178,8 @@ export class HybridStorage implements ExtendedStorageInterface { const storage = await this.getStorage(); diff --git a/Extension/src/background/storages/raw-filters.ts b/Extension/src/background/storages/raw-filters.ts index 643f35a1b5..2375f6ca34 100644 --- a/Extension/src/background/storages/raw-filters.ts +++ b/Extension/src/background/storages/raw-filters.ts @@ -83,6 +83,8 @@ export class RawFiltersStorage { * Removes specified filter list from {@link hybridStorage}. * * @param filterId Filter id. + * + * @returns Promise, resolved when filter list is removed. */ static async remove(filterId: number): Promise { const key = RawFiltersStorage.getFilterKey(filterId); diff --git a/Extension/src/background/storages/safebrowsing.ts b/Extension/src/background/storages/safebrowsing.ts index 74bb18a872..c0487b85c7 100644 --- a/Extension/src/background/storages/safebrowsing.ts +++ b/Extension/src/background/storages/safebrowsing.ts @@ -42,7 +42,7 @@ export class SbCache { /** * Reads safebrowsing {@link LRUMap} stringified entries from {@link browserStorage}, - * parse it and sets to {@link cache}. + * parse it and sets to {@link this.cache}. * * @returns Promise, resolved when data successfully initialized. */ @@ -68,14 +68,14 @@ export class SbCache { } /** - * Saves stringified safebrowsing {@link cache} entries in {@link browserStorage}. + * Saves stringified safebrowsing {@link this.cache} entries in {@link browserStorage}. */ public async save(): Promise { await browserStorage.set(SB_LRU_CACHE_KEY, JSON.stringify(this.cache.toJSON())); } /** - * Returns value from {@link cache}. + * Returns value from {@link this.cache}. * * @param key Cache key. * @returns Cache value. @@ -92,11 +92,11 @@ export class SbCache { } /** - * Sets value to {@link cache}. + * Sets value to {@link this.cache}. * * @param key Cache key. * @param list Cache list value. - * @returns Updated {@link cache} instance. + * @returns Updated {@link this.cache} instance. */ public async set(key: string, list: string): Promise { const data: SafebrowsingCacheData = { list }; @@ -115,7 +115,7 @@ export class SbCache { } /** - * Clear {@link cache} and {@link browserStorage} data. + * Clear {@link this.cache} and {@link browserStorage} data. */ public async clear(): Promise { this.cache.clear(); diff --git a/Extension/src/background/utils/run-info.ts b/Extension/src/background/utils/run-info.ts index 6b89c5cb4a..b6630d0636 100644 --- a/Extension/src/background/utils/run-info.ts +++ b/Extension/src/background/utils/run-info.ts @@ -65,6 +65,8 @@ async function getData(key: string, fallback = true): Promise { /** * Get client id from storage. + * + * @returns Client id or null. */ async function getClientId(): Promise { const clientId = await getData(CLIENT_ID_KEY); @@ -78,6 +80,8 @@ async function getClientId(): Promise { /** * Get app version from storage. + * + * @returns App version or null. */ async function getAppVersion(): Promise { const appVersion = await getData(APP_VERSION_KEY); @@ -91,6 +95,8 @@ async function getAppVersion(): Promise { /** * Get schema version from storage. + * + * @returns Schema version or 0. */ async function getSchemaVersion(): Promise { // don't search schema version in legacy source, because it was added in v4.2 @@ -106,6 +112,8 @@ async function getSchemaVersion(): Promise { /** * Gets app running info from storage. + * + * @returns App running info. */ export async function getRunInfo(): Promise { const currentAppVersion = Prefs.version; diff --git a/package.json b/package.json index dfa4598309..c293b4eb80 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.26.0", "eslint-plugin-import-newlines": "^1.3.0", - "eslint-plugin-jsdoc": "^39.3.6", + "eslint-plugin-jsdoc": "^50.3.0", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", diff --git a/tools/bundle/size-limit-plugin.js b/tools/bundle/size-limit-plugin.js index 31c2df9c0d..491f1a5eed 100644 --- a/tools/bundle/size-limit-plugin.js +++ b/tools/bundle/size-limit-plugin.js @@ -35,7 +35,7 @@ export const megabytesToBytes = (mb) => mb * 1024 * 1024; */ export class SizeLimitPlugin { /** - * @typedef {Object} SizeLimits + * @typedef {{ [key: string]: number }} SizeLimits */ /** diff --git a/tools/resources/dangerous-rules/safety-checker.ts b/tools/resources/dangerous-rules/safety-checker.ts index 0f60387960..fd1125f445 100644 --- a/tools/resources/dangerous-rules/safety-checker.ts +++ b/tools/resources/dangerous-rules/safety-checker.ts @@ -140,6 +140,8 @@ class SafetyChecker { * Checks if a rule is safe or dangerous via OpenAI API. * * @param scriptText Script text to check. + * + * @returns SafetyCheckResult with the result of the analysis. */ async checkRuleSafety(scriptText: string): Promise { if (this.cache.has(scriptText)) { diff --git a/tools/resources/dangerous-rules/scanner.ts b/tools/resources/dangerous-rules/scanner.ts index 197d6844de..d34a66333e 100644 --- a/tools/resources/dangerous-rules/scanner.ts +++ b/tools/resources/dangerous-rules/scanner.ts @@ -131,6 +131,8 @@ async function scanDirectory(directory: string): Promise { * Recursively scans a directory for potentially dangerous rules and returns an array of matches. * * @param directoryToScan Directory to scan. + * + * @returns Promise with an array of matches. */ export async function scanner(directoryToScan: string): Promise { let result: ScanResult[] = []; diff --git a/yarn.lock b/yarn.lock index 03275a1088..5d9cdd13c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -552,14 +552,14 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@es-joy/jsdoccomment@~0.36.1": - version "0.36.1" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz#c37db40da36e4b848da5fd427a74bae3b004a30f" - integrity sha512-922xqFsTpHs6D0BUiG4toiyPOMc8/jafnWKxz1KWgS4XzKPy2qXf1Pe6UFuNSCQqt6tOuhAWXBNuuyUhJmw9Vg== +"@es-joy/jsdoccomment@~0.48.0": + version "0.48.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz#5d9dc1a295cf5d1ed224dffafb4800d5c7206c27" + integrity sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw== dependencies: - comment-parser "1.3.1" - esquery "^1.4.0" - jsdoc-type-pratt-parser "~3.1.0" + comment-parser "1.4.1" + esquery "^1.6.0" + jsdoc-type-pratt-parser "~4.1.0" "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -907,6 +907,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@pkgr/utils@^2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" @@ -1703,7 +1708,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -1725,7 +1730,7 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.11.0: +acorn@^8.0.4, acorn@^8.11.0, acorn@^8.12.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -1865,6 +1870,11 @@ archiver@^3.0.3: tar-stream "^2.1.0" zip-stream "^2.1.2" +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== + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -2575,10 +2585,10 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -comment-parser@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" - integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== +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== compress-commons@^2.1.1: version "2.1.1" @@ -2932,6 +2942,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" @@ -3326,6 +3343,11 @@ es-module-lexer@^1.2.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== +es-module-lexer@^1.5.3: + 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== + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -3479,18 +3501,22 @@ eslint-plugin-import@^2.26.0: semver "^6.3.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsdoc@^39.3.6: - version "39.9.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.9.1.tgz#e9ce1723411fd7ea0933b3ef0dd02156ae3068e2" - integrity sha512-Rq2QY6BZP2meNIs48aZ3GlIlJgBqFCmR55+UBvaDkA3ZNQ0SvQXOs2QKkubakEijV8UbIVbVZKsOVN8G3MuqZw== +eslint-plugin-jsdoc@^50.3.0: + version "50.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.3.0.tgz#2a4d1ac7f45b2b62de42389ba8006fd00b7f08dd" + integrity sha512-P7qDB/RckdKETpBM4CtjHRQ5qXByPmFhRi86sN3E+J+tySchq+RSOGGhI2hDIefmmKFuTi/1ACjqsnDJDDDfzg== dependencies: - "@es-joy/jsdoccomment" "~0.36.1" - comment-parser "1.3.1" - debug "^4.3.4" + "@es-joy/jsdoccomment" "~0.48.0" + are-docs-informative "^0.0.2" + comment-parser "1.4.1" + debug "^4.3.6" escape-string-regexp "^4.0.0" - esquery "^1.4.0" - semver "^7.3.8" - spdx-expression-parse "^3.0.1" + 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-jsx-a11y@^6.4.1: version "6.7.1" @@ -3570,6 +3596,11 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== +eslint-visitor-keys@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c" + integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== + eslint@^7.32.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" @@ -3616,6 +3647,15 @@ eslint@^7.32.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +espree@^10.1.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6" + integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.1.0" + espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -3637,6 +3677,13 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" +esquery@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -5105,10 +5152,10 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsdoc-type-pratt-parser@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" - integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== +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== jsdom@^20.0.0: version "20.0.3" @@ -5606,7 +5653,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5966,6 +6013,14 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +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, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -6969,6 +7024,11 @@ semver@^7.5.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== +semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" @@ -7080,6 +7140,11 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +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" @@ -7151,10 +7216,10 @@ spdx-exceptions@^2.1.0: resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -spdx-expression-parse@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== +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" @@ -7399,6 +7464,14 @@ synckit@^0.8.5: "@pkgr/utils" "^2.3.1" tslib "^2.5.0" +synckit@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" + integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + table@^6.0.9: version "6.8.1" resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" @@ -7607,6 +7680,11 @@ tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.6.2: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"