diff --git a/browser/components/backup/actors/BackupUIParent.sys.mjs b/browser/components/backup/actors/BackupUIParent.sys.mjs index b38a2d3424e3..571a94d457fd 100644 --- a/browser/components/backup/actors/BackupUIParent.sys.mjs +++ b/browser/components/backup/actors/BackupUIParent.sys.mjs @@ -78,12 +78,6 @@ export class BackupUIParent extends JSWindowActorParent { * * @param {ReceiveMessageArgument} message * The message received from the BackupUIChild. - * @returns { - * null | - * {success: boolean, errorCode: number} | - * {path: string, fileName: string, iconURL: string|null} - * } - * Returns either a success object, a file details object, or null. */ async receiveMessage(message) { if (message.name == "RequestState") { diff --git a/browser/components/enterprisepolicies/Policies.sys.mjs b/browser/components/enterprisepolicies/Policies.sys.mjs index c99bbb79bd0a..9fba32a20b91 100644 --- a/browser/components/enterprisepolicies/Policies.sys.mjs +++ b/browser/components/enterprisepolicies/Policies.sys.mjs @@ -2780,6 +2780,7 @@ export function runOnce(actionName, callback) { * The callback to be run when the pref value changes * @returns {Promise} * A promise that will resolve once the callback finishes running. + * */ async function runOncePerModification(actionName, policyValue, callback) { let prefName = `browser.policies.runOncePerModification.${actionName}`; diff --git a/browser/components/enterprisepolicies/tests/xpcshell/head.js b/browser/components/enterprisepolicies/tests/xpcshell/head.js index dfa7c3185aff..3881760ed4d2 100644 --- a/browser/components/enterprisepolicies/tests/xpcshell/head.js +++ b/browser/components/enterprisepolicies/tests/xpcshell/head.js @@ -79,7 +79,7 @@ async function setupPolicyEngineWithJsonWithSearch(json, customSchema) { "write-settings-to-disk-complete" ); await Services.search.init(); - await settingsWritten; + return settingsWritten; } function checkLockedPref(prefName, prefValue) { diff --git a/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js b/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js index e31c1e3abfd4..2082bc29a905 100644 --- a/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js +++ b/browser/components/extensions/test/browser/browser_unified_extensions_overflowable_toolbar.js @@ -104,6 +104,7 @@ function getVisibleMenuItems(popup) { * be run after the window is expanded and the toolbar has underflowed, but * before the extensions are removed. This function is not passed any * arguments. The return value of the function is ignored. + * */ async function withWindowOverflowed( win, diff --git a/browser/components/migration/MigrationUtils.sys.mjs b/browser/components/migration/MigrationUtils.sys.mjs index d95f44531d00..aadacf7bfb4b 100644 --- a/browser/components/migration/MigrationUtils.sys.mjs +++ b/browser/components/migration/MigrationUtils.sys.mjs @@ -946,9 +946,6 @@ class MigrationUtils { * `AMBrowserExtensionsImport` as the "browser * identifier" used to match add-ons * @param {string[]} extensionIDs a list of extension IDs from another browser - * @returns {(lazy.MigrationWizardConstants.PROGRESS_VALUE|string[])[]} - * An array whose first element is a `MigrationWizardConstants.PROGRESS_VALUE` - * and second element is an array of imported add-on ids. */ async installExtensionsWrapper(migratorKey, extensionIDs) { const totalExtensions = extensionIDs.length; diff --git a/browser/components/migration/content/migration-wizard-constants.mjs b/browser/components/migration/content/migration-wizard-constants.mjs index 81d51ecd0a0f..18673fc5b66f 100644 --- a/browser/components/migration/content/migration-wizard-constants.mjs +++ b/browser/components/migration/content/migration-wizard-constants.mjs @@ -12,6 +12,8 @@ export const MigrationWizardConstants = Object.freeze({ * A mapping of a page identification string to the IDs used by the * various wizard pages. These are used by MigrationWizard.setState * to set the current page. + * + * @type {Object} */ PAGES: Object.freeze({ LOADING: "loading", @@ -26,6 +28,8 @@ export const MigrationWizardConstants = Object.freeze({ /** * A mapping of a progress value string. These are used by * MigrationWizard.#onShowingProgress to update the UI accordingly. + * + * @type {Object} */ PROGRESS_VALUE: Object.freeze({ LOADING: 1, @@ -39,6 +43,8 @@ export const MigrationWizardConstants = Object.freeze({ * the associated resource group in the wizard via a data-resource-type * attribute. The keys are used to set which items should be shown and * in what state in #onShowingProgress. + * + * @type {Object} */ DISPLAYED_RESOURCE_TYPES: Object.freeze({ // The DISPLAYED_RESOURCE_TYPES should have their keys match those @@ -78,6 +84,8 @@ export const MigrationWizardConstants = Object.freeze({ * the associated resource group in the wizard via a data-resource-type * attribute. The keys are for resource types that are only ever shown * for profile resets. + * + * @type {Object} */ PROFILE_RESET_ONLY_RESOURCE_TYPES: Object.freeze({ COOKIES: "COOKIES", @@ -104,6 +112,8 @@ export const MigrationWizardConstants = Object.freeze({ * "3" if all extensions were matched after import. "2" if only some * extensions were matched. "1" if none were matched, and "0" if extensions * weren't selected for import. + * + * @type {Object} */ EXTENSIONS_IMPORT_RESULT: Object.freeze({ NOT_IMPORTED: "0", diff --git a/browser/components/migration/content/migration-wizard.mjs b/browser/components/migration/content/migration-wizard.mjs index 3f3a5215aada..22b7d818e8bb 100644 --- a/browser/components/migration/content/migration-wizard.mjs +++ b/browser/components/migration/content/migration-wizard.mjs @@ -712,12 +712,6 @@ export class MigrationWizard extends HTMLElement { * This will only be shown if linkURL is also not-empty. */ - /** - * @typedef { - * keyof typeof MigrationWizardConstants.DISPLAYED_RESOURCE_TYPES - * } DISPLAYED_RESOURCE_TYPES_KEYS - */ - /** * Called when showing the progress / success page of the wizard. * @@ -726,7 +720,7 @@ export class MigrationWizard extends HTMLElement { * used: * @param {string} state.key * The key of the migrator being used. - * @param {Record} state.progress + * @param {Object} state.progress * An object whose keys match one of DISPLAYED_RESOURCE_TYPES. * * Any resource type not included in state.progress will be hidden. @@ -892,12 +886,6 @@ export class MigrationWizard extends HTMLElement { } } - /** - * @typedef { - * keyof typeof MigrationWizardConstants.DISPLAYED_FILE_RESOURCE_TYPES - * } DISPLAYED_FILE_RESOURCE_TYPES_KEYS - */ - /** * Called when showing the progress / success page of the wizard for * files. @@ -907,7 +895,7 @@ export class MigrationWizard extends HTMLElement { * used: * @param {string} state.title * The string to display in the header. - * @param {Record} state.progress + * @param {Object} state.progress * An object whose keys match one of DISPLAYED_FILE_RESOURCE_TYPES. * * Any resource type not included in state.progress will be hidden. diff --git a/browser/components/pagedata/PageDataSchema.sys.mjs b/browser/components/pagedata/PageDataSchema.sys.mjs index c42ffd74a184..ef3907325b8f 100644 --- a/browser/components/pagedata/PageDataSchema.sys.mjs +++ b/browser/components/pagedata/PageDataSchema.sys.mjs @@ -44,8 +44,6 @@ let SCHEMAS = new Map(); * * @param {string} schemaName * The name of the schema to load. - * @returns {object} - * The loaded schema. */ async function loadSchema(schemaName) { if (SCHEMAS.has(schemaName)) { @@ -133,7 +131,7 @@ export const PageDataSchema = { throw new Error(`Unknown data type ${type}`); } - await validateData(name, data); + return validateData(name, data); }, /** diff --git a/browser/components/places/Interactions.sys.mjs b/browser/components/places/Interactions.sys.mjs index ac78631b4f52..36c629eb821b 100644 --- a/browser/components/places/Interactions.sys.mjs +++ b/browser/components/places/Interactions.sys.mjs @@ -100,6 +100,7 @@ function monotonicNow() { * Last updated time as the number of milliseconds since the epoch. * @property {string} referrer * The referrer to the url of the page that was interacted with (may be empty) + * */ /** diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs index 4bdad0cd5e34..35fd817de236 100644 --- a/browser/components/places/PlacesUIUtils.sys.mjs +++ b/browser/components/places/PlacesUIUtils.sys.mjs @@ -648,6 +648,7 @@ export var PlacesUIUtils = { * @param {DOMWindow} aWindow * a window on which a potential error alert is shown on. * @returns {boolean} true if it's safe to open the node in the browser, false otherwise. + * */ checkURLSecurity: function PUIU_checkURLSecurity(aURINode, aWindow) { if (lazy.PlacesUtils.nodeIsBookmark(aURINode)) { diff --git a/browser/components/places/content/bookmarkProperties.js b/browser/components/places/content/bookmarkProperties.js index 69042b061a4d..fa223a0d8cce 100644 --- a/browser/components/places/content/bookmarkProperties.js +++ b/browser/components/places/content/bookmarkProperties.js @@ -460,9 +460,8 @@ var BookmarkPropertiesPanel = { * [New Item Mode] Get the insertion point details for the new item, given * dialog state and opening arguments. * - * @returns {Array} - * The container-identifier and insertion-index are returned separately in - * the form of [containerIdentifier, insertionIndex] + * The container-identifier and insertion-index are returned separately in + * the form of [containerIdentifier, insertionIndex] */ async _getInsertionPointDetails() { return [ diff --git a/browser/components/places/tests/browser/interactions/head.js b/browser/components/places/tests/browser/interactions/head.js index 86730c2362e7..92a096cc5f57 100644 --- a/browser/components/places/tests/browser/interactions/head.js +++ b/browser/components/places/tests/browser/interactions/head.js @@ -173,8 +173,6 @@ async function assertDatabaseValues(expected, { dontFlush = false } = {}) { * * @param {string} url The url to query. * @param {string} property The property to extract. - * @returns {*} - * Returns the selected database value. */ async function getDatabaseValue(url, property) { await Interactions.store.flush(); diff --git a/browser/components/profiles/SelectableProfileService.sys.mjs b/browser/components/profiles/SelectableProfileService.sys.mjs index 56f38efa8d98..9df0c667b6eb 100644 --- a/browser/components/profiles/SelectableProfileService.sys.mjs +++ b/browser/components/profiles/SelectableProfileService.sys.mjs @@ -403,8 +403,6 @@ class SelectableProfileServiceClass { * * @param {object} profile An object that contains a path, name, themeL10nId, * themeFg, and themeBg for creating a new profile. - * @returns {SelectableProfile} - * The newly created profile object. */ async createProfile(profile) { let profilePath = await this.createProfileDirs(profile.name); @@ -508,9 +506,6 @@ class SelectableProfileServiceClass { /** * Get the complete list of profiles in the group. - * - * @returns {SelectableProfile[]} - * An array of profiles in the group. */ async getProfiles() { return ( @@ -524,8 +519,6 @@ class SelectableProfileServiceClass { * Get a specific profile by its internal ID. * * @param {number} aProfileID The internal id of the profile - * @returns {SelectableProfile} - * The specific profile. */ async getProfile(aProfileID) { let row = ( @@ -541,8 +534,6 @@ class SelectableProfileServiceClass { * Get a specific profile by its name. * * @param {string} aProfileNanme The name of the profile - * @returns {SelectableProfile} - * The specific profile. */ async getProfileByName(aProfileNanme) { let row = ( @@ -561,7 +552,6 @@ class SelectableProfileServiceClass { * Get a specific profile by its absolute path. * * @param {nsIFile} aProfilePath The path of the profile - * @returns {SelectableProfile|null} */ async getProfileByPath(aProfilePath) { let relativePath = this.getRelativeProfilePath(aProfilePath); @@ -590,8 +580,6 @@ class SelectableProfileServiceClass { /** * Get all shared prefs as a list. - * - * @returns {{name: string, value: *, type: string}} */ async getAllPrefs() { return ( diff --git a/browser/components/search/SearchSERPTelemetry.sys.mjs b/browser/components/search/SearchSERPTelemetry.sys.mjs index cd8dc8372c18..6b05594825fd 100644 --- a/browser/components/search/SearchSERPTelemetry.sys.mjs +++ b/browser/components/search/SearchSERPTelemetry.sys.mjs @@ -2657,6 +2657,7 @@ class DomainToCategoriesMap { * * @param {object} data * Object containing records that are current, deleted, created, or updated. + * */ async #sync(data) { lazy.logConsole.debug("Syncing domain-to-categories with Remote Settings."); diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs index d095d4c2ee1c..bb3e1e3c8206 100644 --- a/browser/components/search/SearchUIUtils.sys.mjs +++ b/browser/components/search/SearchUIUtils.sys.mjs @@ -44,9 +44,7 @@ export var SearchUIUtils = { * icon. This value may be overridden by an icon specified in the * engine description file. * @param {object} browsingContext - * The browsing context any error prompt should be opened for. - * @returns {boolean} - * Returns true if the engine was added. + * The browsing context any error prompt should be opened for. */ async addOpenSearchEngine(locationURL, image, browsingContext) { try { diff --git a/browser/components/shopping/ShoppingSidebarChild.sys.mjs b/browser/components/shopping/ShoppingSidebarChild.sys.mjs index 55a1f3430de8..1ffeb914e398 100644 --- a/browser/components/shopping/ShoppingSidebarChild.sys.mjs +++ b/browser/components/shopping/ShoppingSidebarChild.sys.mjs @@ -253,6 +253,7 @@ export class ShoppingSidebarChild extends RemotePageChild { * fetching the URI from the parent, and assume `this.#productURI` * is current. Defaults to false. * @param {bool} options.isPolledRequest = false + * */ async updateContent({ haveUpdatedURI = false, diff --git a/browser/components/uitour/UITour-lib.js b/browser/components/uitour/UITour-lib.js index aaa918e8d9c8..a83ec9520057 100644 --- a/browser/components/uitour/UITour-lib.js +++ b/browser/components/uitour/UITour-lib.js @@ -124,6 +124,7 @@ if (typeof Mozilla == "undefined") { * .. code-block:: javascript * * [...UITour.targets.keys()].join("\n* - ") + * */ /** @@ -398,6 +399,7 @@ if (typeof Mozilla == "undefined") { * DEPRECATED, use 'fxa' * - :js:func:`fxa ` * - :js:func:`fxaConnections ` + * */ /** @@ -492,7 +494,7 @@ if (typeof Mozilla == "undefined") { * no other properties will exist. * @property {number} [numOtherDevices] - Number of devices connected to this * account, not counting this device. - * @property {Record} [numDevicesByType] - A count of devices + * @property {Object} [numDevicesByType] - A count of devices * connected to the account by device 'type'. Valid values for type are * defined by the FxA server but roughly correspond to form-factor with * values like 'desktop', 'mobile', 'vr', etc. @@ -512,7 +514,7 @@ if (typeof Mozilla == "undefined") { * `on our telemetry documentation site `_. * The value is a :js:func:`Mozilla.UITour.Configuration.AccountService` * - * @typedef {Record} Mozilla.UITour.Configuration.AccountServices + * @typedef {Object} Mozilla.UITour.Configuration.AccountServices * @since 71 */ diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs index fe40c4200e66..67de5f2890c4 100644 --- a/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs @@ -111,8 +111,6 @@ export class UrlbarController { * Takes a query context and starts the query based on the user input. * * @param {UrlbarQueryContext} queryContext The query details. - * @returns {UrlbarQueryContext} - * The updated query context. */ async startQuery(queryContext) { // Cancel any running query. diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs index 2c7deaca0254..8f5bf8bb7755 100644 --- a/browser/components/urlbar/UrlbarInput.sys.mjs +++ b/browser/components/urlbar/UrlbarInput.sys.mjs @@ -896,6 +896,7 @@ export class UrlbarInput { * mode when handing `searchString` from the fake input to the Urlbar. * @param {string} newtabSessionId * Optional. The id of the newtab session that handed off this search. + * */ handoff(searchString, searchEngine, newtabSessionId) { this._isHandoffSession = true; diff --git a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs index 441af77507c8..2a4e932fac69 100644 --- a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs +++ b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs @@ -1382,6 +1382,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer { * `result.exposureResultHidden` a boolean which indicates whether the * result should be hidden from the view. * + * * @param {UrlbarResult} result * The result. * @returns {boolean} diff --git a/browser/components/urlbar/UrlbarProviderRemoteTabs.sys.mjs b/browser/components/urlbar/UrlbarProviderRemoteTabs.sys.mjs index 3ec03d7da6cb..80614dcbe316 100644 --- a/browser/components/urlbar/UrlbarProviderRemoteTabs.sys.mjs +++ b/browser/components/urlbar/UrlbarProviderRemoteTabs.sys.mjs @@ -201,8 +201,6 @@ class ProviderRemoteTabs extends UrlbarProvider { /** * Build the in-memory structure we use. - * - * @returns {{tab: object, client: object}[]} */ async buildItems() { // This is sorted by most recent client, most recent tab. @@ -225,8 +223,6 @@ class ProviderRemoteTabs extends UrlbarProvider { /** * Ensure the cache is good. - * - * @returns {{tab: object, client: object}[]} */ async ensureCache() { if (!_cache) { diff --git a/browser/components/urlbar/private/AdmWikipedia.sys.mjs b/browser/components/urlbar/private/AdmWikipedia.sys.mjs index b95b3c4290c8..cffa600602e9 100644 --- a/browser/components/urlbar/private/AdmWikipedia.sys.mjs +++ b/browser/components/urlbar/private/AdmWikipedia.sys.mjs @@ -296,8 +296,6 @@ export class AdmWikipedia extends BaseFeature { * * @param {string} path * The icon's remote settings path. - * @returns {string} - * The absolute file path to the downloaded attachment. */ async #fetchIcon(path) { if (!path) { diff --git a/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs b/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs index 9c973d490924..7c993d6c85ca 100644 --- a/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs +++ b/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs @@ -133,8 +133,6 @@ export var UrlbarTestUtils = { * your test waits for the query to finish. However, this behavior * isn't always desired, for example if your test intentionally blurs * the input before the query finishes. In that case, pass false. - * @returns {Promise} - * The promise for the last query context. */ async promiseAutocompleteResultPopup({ window, @@ -340,8 +338,6 @@ export var UrlbarTestUtils = { * array. If it's in a submenu, set this to an array where each element i is * a selector that can be used to get the i'th menu item that opens a * submenu. - * @returns {DOMElement} - * Returns the menu item element. */ async openResultMenuAndGetItem({ window, diff --git a/browser/components/urlbar/tests/browser/browser_searchMode_sessionStore.js b/browser/components/urlbar/tests/browser/browser_searchMode_sessionStore.js index a0c366c21983..ef3fabe6364f 100644 --- a/browser/components/urlbar/tests/browser/browser_searchMode_sessionStore.js +++ b/browser/components/urlbar/tests/browser/browser_searchMode_sessionStore.js @@ -319,8 +319,6 @@ async function withNewWindow(urls, callback) { * * @param {string} expectedRestoredURL * The URL you expect will be restored in the selected browser. - * @returns {object} - * The reopened window. */ async function restoreWindow(expectedRestoredURL) { let winPromise = BrowserTestUtils.waitForNewWindow(); diff --git a/js/xpconnect/loader/XPCOMUtils.sys.mjs b/js/xpconnect/loader/XPCOMUtils.sys.mjs index 842109d46b41..ac5ac2f66dec 100644 --- a/js/xpconnect/loader/XPCOMUtils.sys.mjs +++ b/js/xpconnect/loader/XPCOMUtils.sys.mjs @@ -333,6 +333,7 @@ export var XPCOMUtils = { * * @param {any} aValue * The value of the non-writable property. + * */ defineConstant(aObj, aName, aValue) { Object.defineProperty(aObj, aName, { diff --git a/package-lock.json b/package-lock.json index abe3cd81d78d..98efd2bd8569 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "eslint-plugin-html": "8.0.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-jest": "28.5.0", - "eslint-plugin-jsdoc": "50.2.2", + "eslint-plugin-jsdoc": "39.9.1", "eslint-plugin-json": "3.1.0", "eslint-plugin-jsx-a11y": "6.8.0", "eslint-plugin-mozilla": "file:tools/lint/eslint/eslint-plugin-mozilla", @@ -32,43 +32,34 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.24.2", "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -149,13 +140,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, - "dependencies": { - "@babel/types": "^7.25.2" - }, "bin": { "parser": "bin/babel-parser.js" }, @@ -164,9 +152,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", - "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -175,24 +163,10 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", + "integrity": "sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==", "dev": true, "funding": [ { @@ -208,13 +182,13 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-tokenizer": "^2.3.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz", + "integrity": "sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==", "dev": true, "funding": [ { @@ -231,9 +205,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz", + "integrity": "sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==", "dev": true, "funding": [ { @@ -249,8 +223,8 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, "node_modules/@csstools/selector-specificity": { @@ -276,17 +250,17 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.48.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", - "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz", + "integrity": "sha512-922xqFsTpHs6D0BUiG4toiyPOMc8/jafnWKxz1KWgS4XzKPy2qXf1Pe6UFuNSCQqt6tOuhAWXBNuuyUhJmw9Vg==", "dev": true, "dependencies": { - "comment-parser": "1.4.1", - "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~4.1.0" + "comment-parser": "1.3.1", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "~3.1.0" }, "engines": { - "node": ">=16" + "node": "^14 || ^16 || ^17 || ^18 || ^19" } }, "node_modules/@eslint-community/eslint-utils": { @@ -305,9 +279,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -349,7 +323,6 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -377,7 +350,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@jsdoc/salty": { @@ -502,18 +474,6 @@ "node": ">= 8" } }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/@types/gecko": { "resolved": "tools/@types", "link": true @@ -559,13 +519,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -576,9 +536,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -589,13 +549,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -626,9 +586,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -641,9 +601,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -653,15 +613,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -675,12 +635,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/types": "7.10.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -698,9 +658,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -780,15 +740,6 @@ "node": ">= 8" } }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "engines": { - "node": ">=14" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -938,19 +889,16 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.5", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { @@ -1024,12 +972,12 @@ } }, "node_modules/axobject-query": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.4.tgz", - "integrity": "sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "dequal": "^2.0.3" } }, "node_modules/balanced-match": { @@ -1257,9 +1205,9 @@ "dev": true }, "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -1403,9 +1351,9 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1735,12 +1683,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true - }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", @@ -2076,63 +2018,30 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz", - "integrity": "sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==", + "version": "39.9.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.9.1.tgz", + "integrity": "sha512-Rq2QY6BZP2meNIs48aZ3GlIlJgBqFCmR55+UBvaDkA3ZNQ0SvQXOs2QKkubakEijV8UbIVbVZKsOVN8G3MuqZw==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.48.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.3.6", + "@es-joy/jsdoccomment": "~0.36.1", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "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" + "esquery": "^1.4.0", + "semver": "^7.3.8", + "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": ">=18" + "node": "^14 || ^16 || ^17 || ^18 || ^19" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/espree": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", - "dev": true, - "dependencies": { - "acorn": "^8.12.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -2400,9 +2309,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -2487,12 +2396,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", - "dev": true - }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -2694,7 +2597,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -2985,9 +2887,9 @@ } }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -3166,15 +3068,12 @@ } }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3564,9 +3463,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", - "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", + "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", "dev": true, "engines": { "node": ">=12.0.0" @@ -3618,9 +3517,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true }, "node_modules/jsx-ast-utils": { @@ -4027,34 +3926,10 @@ "url": "https://opencollective.com/mochajs" } }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -4192,9 +4067,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4222,13 +4097,10 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4408,19 +4280,6 @@ "node": ">=6" } }, - "node_modules/parse-imports": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.1.1.tgz", - "integrity": "sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==", - "dev": true, - "dependencies": { - "es-module-lexer": "^1.5.3", - "slashes": "^3.0.12" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -4509,9 +4368,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -4529,7 +4388,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", + "picocolors": "^1.0.0", "source-map-js": "^1.2.0" }, "engines": { @@ -4543,9 +4402,9 @@ "dev": true }, "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "dev": true }, "node_modules/postcss-safe-parser": { @@ -4591,9 +4450,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -4920,7 +4779,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -5129,12 +4987,6 @@ "node": ">=8" } }, - "node_modules/slashes": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", - "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", - "dev": true - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -5171,16 +5023,6 @@ "spdx-license-ids": "^3.0.0" } }, - "node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -5188,9 +5030,9 @@ "dev": true }, "node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", @@ -5556,22 +5398,6 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, - "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", - "dev": true, - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/table": { "version": "6.8.2", "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", @@ -5589,15 +5415,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -5616,15 +5442,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5688,12 +5505,6 @@ "strip-bom": "^3.0.0" } }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5792,9 +5603,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "peer": true, "bin": { @@ -5827,9 +5638,9 @@ } }, "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, "node_modules/uri-js": { @@ -5857,16 +5668,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/vscode-json-languageservice": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.2.1.tgz", @@ -5881,9 +5682,9 @@ } }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", + "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==", "dev": true }, "node_modules/vscode-languageserver-types": { @@ -5936,13 +5737,13 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, "dependencies": { - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", "is-finalizationregistry": "^1.0.2", @@ -5951,8 +5752,8 @@ "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -6165,7 +5966,7 @@ "license": "MPL-2.0" }, "tools/lint/eslint/eslint-plugin-mozilla": { - "version": "3.7.5", + "version": "3.7.4", "dev": true, "license": "MPL-2.0", "dependencies": { diff --git a/package.json b/package.json index 5df0f438fe33..81c66942a8f1 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "eslint-plugin-html": "8.0.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-jest": "28.5.0", - "eslint-plugin-jsdoc": "50.2.2", + "eslint-plugin-jsdoc": "39.9.1", "eslint-plugin-json": "3.1.0", "eslint-plugin-jsx-a11y": "6.8.0", "eslint-plugin-mozilla": "file:tools/lint/eslint/eslint-plugin-mozilla", diff --git a/remote/cdp/CDPConnection.sys.mjs b/remote/cdp/CDPConnection.sys.mjs index 093aeda944a7..78638899a9d4 100644 --- a/remote/cdp/CDPConnection.sys.mjs +++ b/remote/cdp/CDPConnection.sys.mjs @@ -276,7 +276,7 @@ export class CDPConnection extends WebSocketConnection { * @param {string} method * Name of the method to split, e.g. "Browser.getVersion". * - * @returns {Record} + * @returns {Object} * Object with the domain ("Browser") and command ("getVersion") * as properties. */ diff --git a/remote/cdp/domains/content/Runtime.sys.mjs b/remote/cdp/domains/content/Runtime.sys.mjs index d349211d9af6..44c36914d46e 100644 --- a/remote/cdp/domains/content/Runtime.sys.mjs +++ b/remote/cdp/domains/content/Runtime.sys.mjs @@ -171,7 +171,7 @@ export class Runtime extends ContentProcessDomain { * Whether the result is expected to be a JSON object * which should be sent by value. * - * @returns {RemoteObject & { exeptionDetails?: ExceptionDetails }} + * @returns {Object} */ callFunctionOn(options = {}) { if (typeof options.functionDeclaration != "string") { @@ -251,7 +251,7 @@ export class Runtime extends ContentProcessDomain { * @param {boolean=} options.userGesture [unsupported] * Whether execution should be treated as initiated by user in the UI. * - * @returns {RemoteObject & { exeptionDetails?: ExceptionDetails }} + * @returns {Object} * The evaluation result, and optionally exception details. */ evaluate(options = {}) { @@ -484,6 +484,7 @@ export class Runtime extends ContentProcessDomain { * "default" or "isolated" * * @returns {number} ID of created context + * */ _onContextCreated(name, options = {}) { const { diff --git a/remote/cdp/test/browser/head.js b/remote/cdp/test/browser/head.js index bfa32cc4f951..89dabe1642a1 100644 --- a/remote/cdp/test/browser/head.js +++ b/remote/cdp/test/browser/head.js @@ -468,20 +468,20 @@ class RecordEvents { * Then `await record(someTimeout)` to record a timeline that you * can make assertions about. * - * ```js * const history = new RecordEvents(expectedNumberOfEvents); * * history.addRecorder({ - * event: Runtime.executionContextDestroyed, - * eventName: "Runtime.executionContextDestroyed", - * messageFn: payload => { - * return `Received Runtime.executionContextDestroyed for id ${payload.executionContextId}`; - * }, + * event: Runtime.executionContextDestroyed, + * eventName: "Runtime.executionContextDestroyed", + * messageFn: payload => { + * return `Received Runtime.executionContextDestroyed for id ${payload.executionContextId}`; + * }, * }); - * ``` + * * * @param {number} total * Number of expected events. Stop recording when this number is exceeded. + * */ constructor(total) { this.events = []; diff --git a/remote/marionette/actors/MarionetteCommandsChild.sys.mjs b/remote/marionette/actors/MarionetteCommandsChild.sys.mjs index 868e81b4e57a..e4db24b1e62e 100644 --- a/remote/marionette/actors/MarionetteCommandsChild.sys.mjs +++ b/remote/marionette/actors/MarionetteCommandsChild.sys.mjs @@ -234,6 +234,7 @@ export class MarionetteCommandsChild extends JSWindowActorChild { * @param {string} options.selector * @param {object} options.opts * @param {Element} options.opts.startNode + * */ async findElement(options = {}) { const { strategy, selector, opts } = options; @@ -253,6 +254,7 @@ export class MarionetteCommandsChild extends JSWindowActorChild { * @param {string} options.selector * @param {object} options.opts * @param {Element} options.opts.startNode + * */ async findElements(options = {}) { const { strategy, selector, opts } = options; diff --git a/remote/marionette/cookie.sys.mjs b/remote/marionette/cookie.sys.mjs index 16d9530bed10..e6388db3eb33 100644 --- a/remote/marionette/cookie.sys.mjs +++ b/remote/marionette/cookie.sys.mjs @@ -26,7 +26,7 @@ export const cookie = { /** * @name Cookie * - * @returns {Record} + * @returns {Object} */ /** @@ -36,7 +36,7 @@ export const cookie = { * will produce the errors expected by WebDriver if the input is * not valid. * - * @param {Record} json + * @param {Object} json * Cookie to be deserialised. ``name`` and ``value`` are required * fields which must be strings. The ``path`` and ``domain`` fields * are optional, but must be a string if provided. The ``secure``, diff --git a/remote/marionette/driver.sys.mjs b/remote/marionette/driver.sys.mjs index c48bc618d608..91810b3a08a0 100644 --- a/remote/marionette/driver.sys.mjs +++ b/remote/marionette/driver.sys.mjs @@ -396,7 +396,7 @@ GeckoDriver.prototype.registerBrowser = function (browserElement) { * Create a new WebDriver session. * * @param {object} cmd - * @param {Record=} cmd.parameters + * @param {Object=} cmd.parameters * JSON Object containing any of the recognised capabilities as listed * on the `WebDriverSession` class. * @@ -1099,7 +1099,7 @@ GeckoDriver.prototype.getWindowHandles = function () { * window outerWidth and outerHeight values, which include scroll bars, * title bars, etc. * - * @returns {Record} + * @returns {Object} * Object with |x| and |y| coordinates, and |width| and |height| * of browser window. * @@ -1135,7 +1135,7 @@ GeckoDriver.prototype.getWindowRect = async function () { * @param {number} cmd.parameters.height * Height to resize the window to. * - * @returns {Record} + * @returns {Object} * Object with `x` and `y` coordinates and `width` and `height` * dimensions. * @@ -1442,7 +1442,7 @@ GeckoDriver.prototype.getTimeouts = function () { * Set timeout for page loading, searching, and scripts. * * @param {object} cmd - * @param {Record} cmd.parameters + * @param {Object} cmd.parameters * Dictionary of timeout types and their new value, where all timeout * types are optional. * @@ -2324,7 +2324,7 @@ GeckoDriver.prototype.deleteCookie = async function (cmd) { * new top-level browsing context should be a private window. * Defaults to false. * - * @returns {Record} + * @returns {Object} * Handle and type of the new browsing context. * * @throws {NoSuchWindowError} @@ -2652,7 +2652,7 @@ GeckoDriver.prototype.setScreenOrientation = async function (cmd) { * * Not supported on Fennec. * - * @returns {Record} + * @returns {Object} * Window rect and window state. * * @throws {NoSuchWindowError} @@ -2704,7 +2704,7 @@ GeckoDriver.prototype.minimizeWindow = async function () { * * Not supported on Fennec. * - * @returns {Record} + * @returns {Object} * Window rect. * * @throws {NoSuchWindowError} @@ -3016,7 +3016,7 @@ GeckoDriver.prototype.acceptConnections = async function (cmd) { * Optional flag to indicate that the application has to * be restarted in safe mode. * - * @returns {Record} + * @returns {Object} * Dictionary containing information that explains the shutdown reason. * The value for `cause` contains the shutdown kind like "shutdown" or * "restart", while `forced` will indicate if it was a normal or forced diff --git a/remote/marionette/json.sys.mjs b/remote/marionette/json.sys.mjs index 49c5ab6836bd..bae1b99cdd8c 100644 --- a/remote/marionette/json.sys.mjs +++ b/remote/marionette/json.sys.mjs @@ -98,11 +98,7 @@ function cloneObject(value, seen, cloneAlgorithm) { * @param {NodeCache} nodeCache * Node cache that holds already seen WebElement and ShadowRoot references. * - * @returns {{ - * seenNodeIds: Map, - * serializedValue: any, - * hasSerializedWindows: boolean - * }} + * @returns {Object, object>>} * Object that contains a list of browsing contexts each with a list of * shared ids for collected elements and shadow root nodes, and second the * same object as provided by `value` with the WebDriver classic supported diff --git a/remote/marionette/message.sys.mjs b/remote/marionette/message.sys.mjs index 97bde6ccb768..d8b5dd60f9e8 100644 --- a/remote/marionette/message.sys.mjs +++ b/remote/marionette/message.sys.mjs @@ -128,7 +128,7 @@ Message.Origin = { * Message ID unique identifying this message. * @param {string} name * Command name. - * @param {Record} params + * @param {Object} params * Command parameters. */ export class Command extends Message { diff --git a/remote/marionette/reftest.sys.mjs b/remote/marionette/reftest.sys.mjs index 0affac65bd14..23140fd49f9c 100644 --- a/remote/marionette/reftest.sys.mjs +++ b/remote/marionette/reftest.sys.mjs @@ -79,7 +79,7 @@ reftest.Runner = class { * This will open a non-browser window in which the tests will * be loaded, and set up various caches for the reftest run. * - * @param {Record} urlCount + * @param {Object} urlCount * Object holding a map of URL: number of times the URL * will be opened during the reftest run, where that's * greater than 1. diff --git a/remote/marionette/server.sys.mjs b/remote/marionette/server.sys.mjs index fb05328295c6..36e7a9d63982 100644 --- a/remote/marionette/server.sys.mjs +++ b/remote/marionette/server.sys.mjs @@ -447,7 +447,7 @@ export class TCPConnection { * Send the given payload over the debugger transport socket to the * connected client. * - * @param {Record} payload + * @param {Object} payload * The payload to ship. */ sendRaw(payload) { diff --git a/remote/marionette/web-reference.sys.mjs b/remote/marionette/web-reference.sys.mjs index 25b63bb96516..07823a64990c 100644 --- a/remote/marionette/web-reference.sys.mjs +++ b/remote/marionette/web-reference.sys.mjs @@ -96,7 +96,7 @@ export class WebReference { * Unmarshals a JSON Object to one of {@link ShadowRoot}, {@link WebElement}, * {@link WebFrame}, or {@link WebWindow}. * - * @param {Record} json + * @param {Object} json * Web reference, which is supposed to be a JSON Object * where the key is one of the {@link WebReference} concrete * classes' UUID identifiers. @@ -141,7 +141,7 @@ export class WebReference { /** * Checks if obj is a {@link WebReference} reference. * - * @param {Record} obj + * @param {Object} obj * Object that represents a {@link WebReference}. * * @returns {boolean} diff --git a/remote/shared/Browser.sys.mjs b/remote/shared/Browser.sys.mjs index bb1bfaeeed60..c8bff1f55a27 100644 --- a/remote/shared/Browser.sys.mjs +++ b/remote/shared/Browser.sys.mjs @@ -30,7 +30,7 @@ ChromeUtils.defineESModuleGetters(lazy, { * @param {boolean=} isWindowless * Optional flag to indicate that the browser was started in windowless mode. * - * @returns {Record} + * @returns {Object} * Dictionary containing information that explains the shutdown reason. * The value for `cause` contains the shutdown kind like "shutdown" or * "restart", while `forced` will indicate if it was a normal or forced diff --git a/remote/shared/DOM.sys.mjs b/remote/shared/DOM.sys.mjs index d90fffee69a8..51c92981839a 100644 --- a/remote/shared/DOM.sys.mjs +++ b/remote/shared/DOM.sys.mjs @@ -69,7 +69,7 @@ dom.Strategy = { * See the {@link dom.Strategy} enum for a full list of supported * search strategies that can be passed to strategy. * - * @param {Record} container + * @param {Object} container * Window object. * @param {string} strategy * Search strategy whereby to locate the element(s). @@ -754,7 +754,7 @@ dom.isEditable = function (el) { * Vertical offset relative to target's top-left corner. Defaults to * the centre of the target's bounding box. * - * @returns {Record} + * @returns {Object} * X- and Y coordinates. * * @throws TypeError diff --git a/remote/shared/TabManager.sys.mjs b/remote/shared/TabManager.sys.mjs index f38f0683098f..d4719c6f369e 100644 --- a/remote/shared/TabManager.sys.mjs +++ b/remote/shared/TabManager.sys.mjs @@ -425,6 +425,7 @@ class TabManagerClass { * @param {boolean=} options.skipPermitUnload * Flag to indicate if a potential beforeunload prompt should be skipped * when closing the tab. Defaults to false. + */ async removeTab(tab, options = {}) { const { skipPermitUnload = false } = options; diff --git a/remote/shared/js-window-actors/NavigationListenerChild.sys.mjs b/remote/shared/js-window-actors/NavigationListenerChild.sys.mjs index b688656d358a..984bd51efe87 100644 --- a/remote/shared/js-window-actors/NavigationListenerChild.sys.mjs +++ b/remote/shared/js-window-actors/NavigationListenerChild.sys.mjs @@ -81,6 +81,7 @@ export class NavigationListenerChild extends JSWindowActorChild { * - browsingContextId: browsing context id * - isTopBrowsingContext: flag that indicates if the browsing context is * top level + * */ #getBrowsingContextDetails(browsingContext) { return { diff --git a/remote/shared/listeners/NetworkEventRecord.sys.mjs b/remote/shared/listeners/NetworkEventRecord.sys.mjs index 33a7a172bbf6..3d17fc32582d 100644 --- a/remote/shared/listeners/NetworkEventRecord.sys.mjs +++ b/remote/shared/listeners/NetworkEventRecord.sys.mjs @@ -149,6 +149,7 @@ export class NetworkEventRecord { * * Required API for a NetworkObserver event owner. * + * * @param {object} options * @param {nsIChannel} options.channel * The channel. diff --git a/remote/shared/listeners/test/browser/head.js b/remote/shared/listeners/test/browser/head.js index 03ab0a5e8378..ba14f3f414f1 100644 --- a/remote/shared/listeners/test/browser/head.js +++ b/remote/shared/listeners/test/browser/head.js @@ -92,6 +92,7 @@ async function loadURL(browser, url) { * Create a fetch request to `url` from the content page loaded in the provided * `browser`. * + * * @param {Browser} browser * The browser element where the fetch should be performed. * @param {string} url diff --git a/remote/shared/messagehandler/Errors.sys.mjs b/remote/shared/messagehandler/Errors.sys.mjs index 74be5e47f78f..69c65acd09d5 100644 --- a/remote/shared/messagehandler/Errors.sys.mjs +++ b/remote/shared/messagehandler/Errors.sys.mjs @@ -26,7 +26,7 @@ class MessageHandlerError extends RemoteError { } /** - * @returns {Record} + * @returns {Object} * JSON serialisation of error prototype. */ toJSON() { @@ -41,7 +41,7 @@ class MessageHandlerError extends RemoteError { * Unmarshals a JSON error representation to the appropriate MessageHandler * error type. * - * @param {Record} json + * @param {Object} json * Error object. * * @returns {Error} diff --git a/remote/shared/webdriver/Capabilities.sys.mjs b/remote/shared/webdriver/Capabilities.sys.mjs index d4ce0f69f3a6..8d5d58722190 100644 --- a/remote/shared/webdriver/Capabilities.sys.mjs +++ b/remote/shared/webdriver/Capabilities.sys.mjs @@ -253,7 +253,7 @@ export class Proxy { } /** - * @param {Record} json + * @param {Object} json * JSON Object to unmarshal. * * @throws {InvalidArgumentError} @@ -398,7 +398,7 @@ export class Proxy { } /** - * @returns {Record} + * @returns {Object} * JSON serialisation of proxy object. */ toJSON() { @@ -510,7 +510,7 @@ export class Capabilities extends Map { /** * JSON serialization of capabilities object. * - * @returns {Record} + * @returns {Object} */ toJSON() { let marshalled = marshal(this); @@ -529,7 +529,7 @@ export class Capabilities extends Map { /** * Unmarshal a JSON object representation of WebDriver capabilities. * - * @param {Record=} json + * @param {Object=} json * WebDriver capabilities. * @param {boolean=} isBidi * Flag indicating that it is a WebDriver BiDi session. Defaults to false. diff --git a/remote/shared/webdriver/Errors.sys.mjs b/remote/shared/webdriver/Errors.sys.mjs index ddc9a8b0cc0e..70601310754b 100644 --- a/remote/shared/webdriver/Errors.sys.mjs +++ b/remote/shared/webdriver/Errors.sys.mjs @@ -208,7 +208,7 @@ class WebDriverError extends RemoteError { } /** - * @returns {Record} + * @returns {Object} * JSON serialisation of error prototype. */ toJSON() { @@ -230,7 +230,7 @@ class WebDriverError extends RemoteError { * Unmarshals a JSON error representation to the appropriate Marionette * error type. * - * @param {Record} json + * @param {Object} json * Error object. * * @returns {Error} diff --git a/remote/shared/webdriver/Session.sys.mjs b/remote/shared/webdriver/Session.sys.mjs index 1c1aadca5557..1fa208a3efda 100644 --- a/remote/shared/webdriver/Session.sys.mjs +++ b/remote/shared/webdriver/Session.sys.mjs @@ -191,7 +191,7 @@ export class WebDriverSession { * {"capabilities": {"acceptInsecureCerts": true}} * * - * @param {Record=} capabilities + * @param {Object=} capabilities * JSON Object containing any of the recognized capabilities listed * above. * @param {SessionConfigurationFlags} flags diff --git a/remote/shared/webdriver/UserPromptHandler.sys.mjs b/remote/shared/webdriver/UserPromptHandler.sys.mjs index bbe5baa8b575..92c50cff7e65 100644 --- a/remote/shared/webdriver/UserPromptHandler.sys.mjs +++ b/remote/shared/webdriver/UserPromptHandler.sys.mjs @@ -111,7 +111,7 @@ export class PromptHandlerConfiguration { /** * JSON serialization of the prompt handler configuration object. * - * @returns {Record} json + * @returns {Object} json * * @see https://w3c.github.io/webdriver/#dfn-serialize-a-prompt-handler-configuration */ @@ -149,7 +149,7 @@ export class UserPromptHandler { /** * Unmarshal a JSON object representation of the unhandledPromptBehavior capability. * - * @param {Record} json + * @param {Object} json * JSON Object to unmarshal. * * @throws {InvalidArgumentError} @@ -274,7 +274,7 @@ export class UserPromptHandler { /** * JSON serialization of the user prompt handler object. * - * @returns {Record} json + * @returns {Object} json * * @see https://w3c.github.io/webdriver/#dfn-serialize-the-user-prompt-handler */ diff --git a/remote/webdriver-bidi/WebDriverBiDi.sys.mjs b/remote/webdriver-bidi/WebDriverBiDi.sys.mjs index 639c5f608008..bc5e6f3ac85a 100644 --- a/remote/webdriver-bidi/WebDriverBiDi.sys.mjs +++ b/remote/webdriver-bidi/WebDriverBiDi.sys.mjs @@ -101,7 +101,7 @@ export class WebDriverBiDi { /** * Create a new WebDriver session. * - * @param {Record=} capabilities + * @param {Object=} capabilities * JSON Object containing any of the recognised capabilities as listed * on the `WebDriverSession` class. * @param {Set} flags @@ -110,7 +110,7 @@ export class WebDriverBiDi { * Optional connection that is not yet associated with a WebDriver * session, and has to be associated with the new WebDriver session. * - * @returns {Record} + * @returns {Object} * Object containing the current session ID, and all its capabilities. * * @throws {SessionNotCreatedError} diff --git a/remote/webdriver-bidi/WebDriverBiDiConnection.sys.mjs b/remote/webdriver-bidi/WebDriverBiDiConnection.sys.mjs index 5e1bfef80ceb..d6fb5c22fa27 100644 --- a/remote/webdriver-bidi/WebDriverBiDiConnection.sys.mjs +++ b/remote/webdriver-bidi/WebDriverBiDiConnection.sys.mjs @@ -267,7 +267,7 @@ export class WebDriverBiDiConnection extends WebSocketConnection { * @param {string} method * Name of the method to split, e.g. "session.subscribe". * - * @returns {Record} + * @returns {Object} * Object with the module ("session") and command ("subscribe") * as properties. */ diff --git a/toolkit/components/credentialmanagement/CredentialChooserService.sys.mjs b/toolkit/components/credentialmanagement/CredentialChooserService.sys.mjs index 5b552aab8cd5..c341e5465e4b 100644 --- a/toolkit/components/credentialmanagement/CredentialChooserService.sys.mjs +++ b/toolkit/components/credentialmanagement/CredentialChooserService.sys.mjs @@ -81,6 +81,7 @@ export class CredentialChooserService { * We also support UI-less testing via choices provided by picking any credential with ID 'wpt-pick-me' * if the preference 'dom.security.credentialmanagement.chooser.testing.enabled' is true. * + * * @param {BrowsingContext} browsingContext The browsing context of the window calling the Credential Management API. * @param {Array} credentials The credentials the user should choose from. * @param {nsICredentialChosenCallback} callback A callback to return the user's credential choice to. diff --git a/toolkit/components/extensions/ExtensionSettingsStore.sys.mjs b/toolkit/components/extensions/ExtensionSettingsStore.sys.mjs index f2425d4628ef..ed139bcf12ca 100644 --- a/toolkit/components/extensions/ExtensionSettingsStore.sys.mjs +++ b/toolkit/components/extensions/ExtensionSettingsStore.sys.mjs @@ -36,6 +36,7 @@ * } * } * } + * */ import { ExtensionParent } from "resource://gre/modules/ExtensionParent.sys.mjs"; diff --git a/toolkit/components/extensions/child/ext-runtime.js b/toolkit/components/extensions/child/ext-runtime.js index 0df864478f18..e77ea7c76858 100644 --- a/toolkit/components/extensions/child/ext-runtime.js +++ b/toolkit/components/extensions/child/ext-runtime.js @@ -19,7 +19,7 @@ ChromeUtils.defineESModuleGetters(this, { * @param {any} message * @param {object?} [options] * @param {Function} [callback] - * @returns {{extensionId: string|null, message: any, callback: Function|null}} + * @returns {{extensionId: string?, message: any, callback: Function?}} */ /* eslint-enable jsdoc/check-param-names */ function parseBonkersArgs(...args) { diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_triggeringPrincipal.js b/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_triggeringPrincipal.js index 92afbcca230b..ce7f29314237 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_triggeringPrincipal.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_triggeringPrincipal.js @@ -815,12 +815,12 @@ function getOriginBase(origURL) { * * @param {Array} tests * A list of tests, as understood by {@see getElementData}. - * @param {Record} expectedSources + * @param {Object} expectedSources * A set of sources for which each of the above tests is expected * to generate one request, if each of the properties in the * value object matches the value of the same property in the * test object. - * @param {Record} [forbiddenSources = {}] + * @param {Object} [forbiddenSources = {}] * A set of sources for which requests should never be sent. Any * matching requests from these sources will cause the test to * fail. @@ -939,7 +939,7 @@ function computeExpectedForbiddenURLs( * @param {Promise} urlsPromise * A promise which resolves to an object containing expected and * forbidden URL sets, as returned by {@see computeBaseURLs}. - * @param {Record} origins + * @param {Object} origins * A mapping of origin parameters as they appear in URL query * strings to the origin strings returned by corresponding * principals. These values are used to test requests against diff --git a/toolkit/components/formautofill/shared/FormStateManager.sys.mjs b/toolkit/components/formautofill/shared/FormStateManager.sys.mjs index 6b5595b16024..1e4662b2defe 100644 --- a/toolkit/components/formautofill/shared/FormStateManager.sys.mjs +++ b/toolkit/components/formautofill/shared/FormStateManager.sys.mjs @@ -26,6 +26,7 @@ export class FormStateManager { * @returns {Array | null} * Return target form's handler from content cache * (or return null if the information is not found in the cache). + * */ getFormHandler(element) { if (!element) { diff --git a/toolkit/components/ml/content/EngineProcess.sys.mjs b/toolkit/components/ml/content/EngineProcess.sys.mjs index b27f7ec3454b..2f86f21bbc9b 100644 --- a/toolkit/components/ml/content/EngineProcess.sys.mjs +++ b/toolkit/components/ml/content/EngineProcess.sys.mjs @@ -476,6 +476,7 @@ export class EngineProcess { * @param {object} options - Configuration options for the ML engine. * @param {?function(ProgressAndStatusCallbackParams):void} notificationsCallback A function to call to indicate notifications. * @returns {Promise} - A promise that resolves to the ML engine instance. + * */ export async function createEngine(options, notificationsCallback = null) { const pipelineOptions = new PipelineOptions(options); diff --git a/toolkit/components/search/SearchEngineSelector.sys.mjs b/toolkit/components/search/SearchEngineSelector.sys.mjs index abb4777a58ef..9c5fc14ce69f 100644 --- a/toolkit/components/search/SearchEngineSelector.sys.mjs +++ b/toolkit/components/search/SearchEngineSelector.sys.mjs @@ -54,9 +54,6 @@ export class SearchEngineSelector { /** * Handles getting the configuration from remote settings. - * - * @returns {object} - * The configuration data. */ async getEngineConfiguration() { if (this._getConfigurationPromise) { @@ -93,9 +90,6 @@ export class SearchEngineSelector { /** * Used by tests to get the configuration overrides. - * - * @returns {object} - * The engine overrides data. */ async getEngineConfigurationOverrides() { await this.getEngineConfiguration(); diff --git a/toolkit/components/search/SearchService.sys.mjs b/toolkit/components/search/SearchService.sys.mjs index 9d772601be17..fdb32fd08e90 100644 --- a/toolkit/components/search/SearchService.sys.mjs +++ b/toolkit/components/search/SearchService.sys.mjs @@ -411,6 +411,7 @@ export class SearchService { * Returns the pending Promise when #init has started but not yet finished. * | Resolved | when initialization has successfully finished. * | Rejected | when initialization has failed. + * */ async init() { if (["started", "success", "failed"].includes(this.#initializationStatus)) { @@ -3283,6 +3284,7 @@ export class SearchService { * * @param {string} errorType * The error that can occur during search service init. + * */ #maybeThrowErrorInTest(errorType) { if ( @@ -3615,6 +3617,7 @@ export class SearchService { * The name of the previous default engine that will be replaced. * @param {string} newCurrentEngineName * The name of the engine that will be the new default engine. + * */ _showRemovalOfSearchEngineNotificationBox( prevCurrentEngineName, diff --git a/toolkit/components/search/SearchSettings.sys.mjs b/toolkit/components/search/SearchSettings.sys.mjs index 3b55c40ecda3..9bd875870884 100644 --- a/toolkit/components/search/SearchSettings.sys.mjs +++ b/toolkit/components/search/SearchSettings.sys.mjs @@ -420,6 +420,7 @@ export class SearchSettings { * * @returns {*} * A copy of the settings metadata object. + * */ getSettingsMetaData() { return { ...this.#settings.metaData }; @@ -437,6 +438,7 @@ export class SearchSettings { * The value of the attribute. * We return undefined if the value of the attribute is not known or does * not match the verification hash. + * */ getVerifiedMetaDataAttribute(name, isAppProvided) { let attribute = this.getMetaDataAttribute(name); diff --git a/toolkit/components/search/tests/SearchTestUtils.sys.mjs b/toolkit/components/search/tests/SearchTestUtils.sys.mjs index 380c598013b6..d52392b08bb3 100644 --- a/toolkit/components/search/tests/SearchTestUtils.sys.mjs +++ b/toolkit/components/search/tests/SearchTestUtils.sys.mjs @@ -365,8 +365,6 @@ class _SearchTestUtils { * * @param {Array} engineConfigurations * An array of engine configurations. - * @returns {AppProvidedSearchEngine[]} - * An array of app provided search engine objects. */ async searchConfigToEngines(engineConfigurations) { return engineConfigurations.map( diff --git a/toolkit/components/search/tests/xpcshell/head_search.js b/toolkit/components/search/tests/xpcshell/head_search.js index a9510185b306..0c6da5586928 100644 --- a/toolkit/components/search/tests/xpcshell/head_search.js +++ b/toolkit/components/search/tests/xpcshell/head_search.js @@ -325,8 +325,6 @@ async function getFileDataBuffer(filename) { * The ID to use for the record. If not provided, a new UUID will be generated. * @param {number} [item.lastModified] * The last modified time for the record. Defaults to the current time. - * @returns {object} - * An object containing the record and attachment. */ async function mockRecordWithAttachment({ filename, diff --git a/toolkit/components/shopping/content/ShoppingProduct.mjs b/toolkit/components/shopping/content/ShoppingProduct.mjs index 2ef5e3b500d3..f3890a0d7438 100644 --- a/toolkit/components/shopping/content/ShoppingProduct.mjs +++ b/toolkit/components/shopping/content/ShoppingProduct.mjs @@ -479,6 +479,7 @@ export class ShoppingProduct extends EventEmitter { /** * Get a cached, or fetch a copy of, an OHTTP config from a given URL. * + * * @param {string} gatewayConfigURL * The URL for the config that needs to be fetched. * The URL should be complete (i.e. include the full path to the config). diff --git a/toolkit/components/translations/actors/TranslationsParent.sys.mjs b/toolkit/components/translations/actors/TranslationsParent.sys.mjs index de242af9add4..01e5b8779285 100644 --- a/toolkit/components/translations/actors/TranslationsParent.sys.mjs +++ b/toolkit/components/translations/actors/TranslationsParent.sys.mjs @@ -1638,6 +1638,7 @@ export class TranslationsParent extends JSWindowActorParent { * @param {number} majorVersion * @param {string} nextVersion * @param {string} [existingVersion] + * */ static isBetterRecordVersion(majorVersion, nextVersion, existingVersion) { return ( diff --git a/toolkit/components/translations/content/translations-engine.worker.js b/toolkit/components/translations/content/translations-engine.worker.js index 04d225422f83..ce1eaa6aebe1 100644 --- a/toolkit/components/translations/content/translations-engine.worker.js +++ b/toolkit/components/translations/content/translations-engine.worker.js @@ -658,7 +658,7 @@ class WorkQueue { /** * Run the task and return the result. * - * @template {any} T + * @template {T} * @param {() => T} task * @returns {Promise} */ diff --git a/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/valid-jsdoc.js b/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/valid-jsdoc.js index 87815befb19e..65fb760fe011 100644 --- a/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/valid-jsdoc.js +++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/valid-jsdoc.js @@ -16,10 +16,10 @@ module.exports = { "jsdoc/check-tag-names": "error", "jsdoc/check-types": "error", "jsdoc/empty-tags": "error", + "jsdoc/newline-after-description": "error", "jsdoc/no-multi-asterisks": "error", "jsdoc/require-param-type": "error", "jsdoc/require-returns-type": "error", - "jsdoc/tag-lines": ["error", "any", { startLines: 1 }], "jsdoc/valid-types": "error", }, settings: { diff --git a/tools/lint/eslint/manifest.tt b/tools/lint/eslint/manifest.tt index 92ddcea5d3ff..9b30d37e9be3 100644 --- a/tools/lint/eslint/manifest.tt +++ b/tools/lint/eslint/manifest.tt @@ -1,9 +1,9 @@ [ { "filename": "eslint.tar.gz", - "size": 21145861, + "size": 22362387, "algorithm": "sha512", - "digest": "de7abbe8422a51b5c3b2828d12313a5ac6a782f33f9a2e5887d474aba53485302b71098fa2151a4aee7467b88cede545d8fdf2903bda943d58295a8735c45a97", + "digest": "3fe7535cc6c5fb3e394c7b99fa4c41f104414f63b033e82be428f184136adf9571e0781cce4bf65376e1fca747641e1402ef84874081fb7312f80212c51e390f", "unpack": true, "visibility": "public" }