tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 93b92e2659bab89629620161d016b6e18a9ef923
parent f6c9a6d5497b4768648ac119fa568e10c9493558
Author: Mark Banner <standard8@mozilla.com>
Date:   Mon, 10 Nov 2025 18:32:41 +0000

Bug 1998787 - Manually fixes for enabling ESLint jsdoc/tag-line rule everywhere. r=frontend-codestyle-reviewers,media-playback-reviewers,devtools-reviewers,tabbrowser-reviewers,omc-reviewers,layout-reviewers,manuel,tnikkel,nchevobbe,home-newtab-reviewers,dao,mconley,aosmond,Gijs,mimi

Differential Revision: https://phabricator.services.mozilla.com/D271744

Diffstat:
Maccessible/tests/mochitest/actions.js | 3++-
Maccessible/tests/mochitest/events.js | 4+++-
Maccessible/tests/mochitest/textselection/test_general.html | 6++++++
Mbrowser/base/content/nsContextMenu.sys.mjs | 4++--
Mbrowser/components/asrouter/modules/ASRouter.sys.mjs | 8+++++---
Mbrowser/components/asrouter/modules/ASRouterStorage.sys.mjs | 7+++----
Mbrowser/components/asrouter/modules/CFRPageActions.sys.mjs | 9+++++----
Mbrowser/components/tabbrowser/content/tabbrowser.js | 1+
Mbrowser/extensions/newtab/lib/DiscoveryStreamFeed.sys.mjs | 13+++++++------
Mbrowser/extensions/newtab/lib/SmartShortcutsRanker/RankShortcutsWorkerClass.mjs | 9+++++----
Mbrowser/extensions/newtab/lib/TopSitesFeed.sys.mjs | 5+++--
Mdevtools/client/framework/commands-from-url.js | 1-
Mdevtools/client/framework/menu-item.js | 1+
Mdevtools/client/inspector/animation/components/keyframes-graph/ComputedStylePath.js | 3+++
Mdevtools/client/inspector/breadcrumbs.js | 10+++++++---
Mdevtools/client/netmonitor/src/utils/context-menu-utils.js | 5+++--
Mdevtools/client/shared/test/shared-head.js | 7+++++--
Mdevtools/server/actors/utils/style-utils.js | 9+++++++--
Mdevtools/shared/transport/stream-utils.js | 3++-
Mdom/base/test/test_intersectionobservers.html | 2++
Mdom/media/test/eme_standalone.js | 3+++
Meditor/spellchecker/tests/test_spellcheck_after_edit.html | 3+++
Mlayout/generic/test/test_bug1499961.html | 2++
Mservices/fxaccounts/FxAccountsWebChannel.sys.mjs | 1+
Mservices/settings/Utils.sys.mjs | 1+
Mtoolkit/actors/PictureInPictureChild.sys.mjs | 1+
Mtoolkit/components/antitracking/bouncetrackingprotection/test/browser/file_bounce.html | 1+
Mtoolkit/components/reader/ReaderMode.sys.mjs | 6++----
Mtoolkit/content/contentAreaUtils.js | 3++-
Mtoolkit/modules/CreditCard.sys.mjs | 2+-
Mtoolkit/modules/NewTabUtils.sys.mjs | 3++-
Mtoolkit/modules/Sqlite.sys.mjs | 36++++++++++++++++--------------------
32 files changed, 107 insertions(+), 65 deletions(-)

diff --git a/accessible/tests/mochitest/actions.js b/accessible/tests/mochitest/actions.js @@ -21,6 +21,7 @@ const XUL_EVENTS = CLICK_EVENTS | COMMAND_EVENT; * * Action tester interface is: * + * ```js * var actionObj = { * // identifier of accessible to perform an action on * get ID() {}, @@ -50,7 +51,7 @@ const XUL_EVENTS = CLICK_EVENTS | COMMAND_EVENT; * // constructor events.js) * get eventSeq() {} * }; - * + * ``` * * @param aArray [in] an array of action cheker objects */ diff --git a/accessible/tests/mochitest/events.js b/accessible/tests/mochitest/events.js @@ -217,6 +217,7 @@ const DO_NOT_FINISH_TEST = 1; * * Invoker interface is: * + * ```js * var invoker = { * // Generates accessible event or event sequence. If returns * // INVOKER_ACTION_FAILED constant then stop tests. @@ -285,7 +286,7 @@ const DO_NOT_FINISH_TEST = 1; * // Used to add a possible scenario of expected/unexpected events on * // invoker's action. * defineScenario(aInvokerObj, aEventSeq, aUnexpectedEventSeq) - * + * ``` * * @param aEventType [in, optional] the default event type (isn't used if * invoker defines eventSeq property). @@ -1965,6 +1966,7 @@ function nofocusChecker(aID) { /** * Text inserted/removed events checker. + * * @param aFromUser [in, optional] kNotFromUserInput or kFromUserInput */ function textChangeChecker( diff --git a/accessible/tests/mochitest/textselection/test_general.html b/accessible/tests/mochitest/textselection/test_general.html @@ -16,6 +16,7 @@ <script type="application/javascript"> /** * Helper function to test selection bounds. + * * @param {string} aID The ID to test. * @param {nsIAccessibleText} acc The accessible to test. * @param {int} index The selection's index to test. @@ -36,6 +37,7 @@ /** * Test adding selections to accessibles. + * * @param {string} aID The ID of the element to test. * @param {array} aSelections Array of selection start and end indices. */ @@ -66,6 +68,7 @@ /** * Test changing selections in accessibles. + * * @param {string} aID The ID of the element to test. * @param {int} aIndex The index of the selection to change. * @param {array} aSelection Array of the selection's new start and end @@ -89,6 +92,7 @@ /** * Test removing all selections from accessibles. + * * @param {string} aID The ID of the element to test. */ async function removeSelections(aID) { @@ -108,6 +112,7 @@ /** * Test that changing the DOM selection is reflected in the accessibles. + * * @param {string} aID The container ID to test in * @param {string} aNodeID1 The start node of the selection * @param {int} aNodeOffset1 The offset where the selection should start @@ -148,6 +153,7 @@ * Test expected and unexpected events for selecting * all text and focusing both an input and text area. We expect a caret * move, but not a text selection change. + * * @param {string} aID The ID of the element to test. */ async function eventsForSelectingAllTextAndFocus(aID) { diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs @@ -2422,8 +2422,8 @@ export class nsContextMenu { /** * Checks if there is a query parameter that can be stripped - * @returns {Boolean} * + * @returns {Boolean} */ #canStripParams(uri = this.linkURI) { if (!uri) { @@ -2439,8 +2439,8 @@ export class nsContextMenu { /** * Checks if a webpage is a secure interal webpage - * @returns {Boolean} * + * @returns {Boolean} */ isSecureAboutPage() { let { currentURI } = this.browser; diff --git a/browser/components/asrouter/modules/ASRouter.sys.mjs b/browser/components/asrouter/modules/ASRouter.sys.mjs @@ -834,11 +834,12 @@ export class _ASRouter { } /** - * _resetInitialization - adds the following to the instance: + * Adds the following to the instance: * .initialized {bool} Has AS Router been initialized? * .waitForInitialized {Promise} A promise that resolves when initializion is complete * ._finishInitializing {func} A function that, when called, resolves the .waitForInitialized * promise and sets .initialized to true. + * * @memberof _ASRouter */ _resetInitialization() { @@ -932,8 +933,9 @@ export class _ASRouter { } /** - * loadMessagesFromAllProviders - Loads messages from all providers if they require updates. - * Checks the .lastUpdated field on each provider to see if updates are needed + * Loads messages from all providers if they require updates. Checks the + * .lastUpdated field on each provider to see if updates are needed + * * @param toUpdate An optional list of providers to update. This overrides * the checks to determine which providers to update. * @memberof _ASRouter diff --git a/browser/components/asrouter/modules/ASRouterStorage.sys.mjs b/browser/components/asrouter/modules/ASRouterStorage.sys.mjs @@ -97,10 +97,9 @@ export class ASRouterStorage { } /** - * createOrOpenDb - Open a db (with this.dbName) if it exists. - * If it does not exist, create it. - * If an error occurs, deleted the db and attempt to - * re-create it. + * Open a db (with this.dbName) if it exists. If it does not exist, create it. + * If an error occurs, deleted the db and attempt to re-create it. + * * @returns Promise that resolves with a db instance */ async createOrOpenDb() { diff --git a/browser/components/asrouter/modules/CFRPageActions.sys.mjs b/browser/components/asrouter/modules/CFRPageActions.sys.mjs @@ -323,10 +323,11 @@ export class PageAction { } /** - * getStrings - Handles getting the localized strings vs message overrides. - * If string_id is not defined it assumes you passed in an override - * message and it just returns it. - * If subAttribute is provided, the string for it is returned. + * Handles getting the localized strings vs message overrides. + * If string_id is not defined it assumes you passed in an override message + * and it just returns it. + * If subAttribute is provided, the string for it is returned. + * * @return A string. One of 1) passed in string 2) a String object with * attributes property if there are attributes 3) the sub attribute. */ diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js @@ -4845,6 +4845,7 @@ * Given an array of tabs, returns a tuple [groups, leftoverTabs] such that: * - groups contains all groups whose tabs are a subset of the initial array * - leftoverTabs contains the remaining tabs + * * @param {Array} tabs list of tabs * @returns {Array} a tuple where the first element is an array of groups * and the second is an array of tabs diff --git a/browser/extensions/newtab/lib/DiscoveryStreamFeed.sys.mjs b/browser/extensions/newtab/lib/DiscoveryStreamFeed.sys.mjs @@ -873,8 +873,8 @@ export class DiscoveryStreamFeed { } /** - * buildFeedPromise - Adds the promise result to newFeeds and - * pushes a promise to newsFeedsPromises. + * Adds the promise result to newFeeds and pushes a promise to newsFeedsPromises. + * * @param {Object} Has both newFeedsPromises (Array) and newFeeds (Object) * @param {Boolean} isStartup We have different cache handling for startup. * @returns {Function} We return a function so we can contain @@ -949,8 +949,9 @@ export class DiscoveryStreamFeed { } /** - * reduceFeedComponents - Filters out components with no feeds, and combines - * all feeds on this component with the feeds from other components. + * Filters out components with no feeds, and combines all feeds on this component + * with the feeds from other components. + * * @param {Boolean} isStartup We have different cache handling for startup. * @returns {Function} We return a function so we can contain the scope for isStartup. * Reduces feeds into promises and feed data. @@ -965,8 +966,8 @@ export class DiscoveryStreamFeed { } /** - * buildFeedPromises - Filters out rows with no components, - * and gets us a promise for each unique feed. + * Filters out rows with no components, and gets us a promise for each unique feed. + * * @param {Object} layout This is the Discovery Stream layout object. * @param {Boolean} isStartup We have different cache handling for startup. * @returns {Object} An object with newFeedsPromises (Array) and newFeeds (Object), diff --git a/browser/extensions/newtab/lib/SmartShortcutsRanker/RankShortcutsWorkerClass.mjs b/browser/extensions/newtab/lib/SmartShortcutsRanker/RankShortcutsWorkerClass.mjs @@ -601,15 +601,16 @@ export function placeGuidsByPositions(guids, posMap) { * Given last-click positions aligned to guids, shift by numSponsored (clamp negatives to 0, * preserve nulls), then place GUIDs accordingly. * - * positions and guids are each arrays in the same order, here we map - * guid to poisitions, we do this here to put as much as possible on the promise - * we shift from "positions" which is absolute shortcut position to array index - * which ignores the sponsored shortcuts. + * Positions and guids are each arrays in the same order, here we map + * guid to positions, we do this here to put as much as possible on the promise + * we shift from "positions" which is absolute shortcut position to array index + * which ignores the sponsored shortcuts. * * This function has a known shortcoming where the positions will be incorrect if the number * of sponsored shortcuts changes. We accept this because 1) changes should be very rare * 2) it fails safely 3) the differences should be off by the change in the number of sponsored * shortcuts which is at most 3 + * * @param {(number|null|undefined)[]} positions // aligned with guids * @param {string[]} guids * @param {number} numSponsored diff --git a/browser/extensions/newtab/lib/TopSitesFeed.sys.mjs b/browser/extensions/newtab/lib/TopSitesFeed.sys.mjs @@ -1129,8 +1129,9 @@ export class TopSitesFeed { } /** - * _maybeInsertSearchShortcuts - if the search shortcuts experiment is running, - * insert search shortcuts if needed + * If the search shortcuts experiment is running, insert search shortcuts if + * needed. + * * @param {Array} plainPinnedSites (from the pinnedSitesCache) * @returns {Boolean} Did we insert any search shortcuts? */ diff --git a/devtools/client/framework/commands-from-url.js b/devtools/client/framework/commands-from-url.js @@ -41,7 +41,6 @@ const { * - id: * {Number} the process id to debug. Default to 0, which is the parent process. * - * * @param {URL} url * The url to fetch query params from. * diff --git a/devtools/client/framework/menu-item.js b/devtools/client/framework/menu-item.js @@ -19,6 +19,7 @@ * specific location within a given menu. * * Implemented features: + * * @param Object options * String accelerator * Text that appears beside the menu label to indicate the shortcut key diff --git a/devtools/client/inspector/animation/components/keyframes-graph/ComputedStylePath.js b/devtools/client/inspector/animation/components/keyframes-graph/ComputedStylePath.js @@ -23,17 +23,20 @@ const { * * getPropertyName() * Returns property name which will be animated. + * * @return {String} * e.g. opacity * * getPropertyValue(keyframe) * Returns value which uses as animated keyframe value from given parameter. + * * @param {Object} keyframe * @return {String||Number} * e.g. 0 * * toSegmentValue(computedStyle) * Convert computed style to segment value of graph. + * * @param {String||Number} * e.g. 0 * @return {Number} diff --git a/devtools/client/inspector/breadcrumbs.js b/devtools/client/inspector/breadcrumbs.js @@ -461,9 +461,13 @@ HTMLBreadcrumbs.prototype = { /** * Build <span>s that represent the node: - * <span class="breadcrumbs-widget-item-tag">tagName</span> - * <span class="breadcrumbs-widget-item-id">#id</span> - * <span class="breadcrumbs-widget-item-classes">.class1.class2</span> + * + * ```html + * <span class="breadcrumbs-widget-item-tag">tagName</span> + * <span class="breadcrumbs-widget-item-id">#id</span> + * <span class="breadcrumbs-widget-item-classes">.class1.class2</span> + * ``` + * * @param {NodeFront} node The node to pretty-print * @returns {DocumentFragment} */ diff --git a/devtools/client/netmonitor/src/utils/context-menu-utils.js b/devtools/client/netmonitor/src/utils/context-menu-utils.js @@ -16,8 +16,9 @@ function baseCopyFormatter({ name, value, hasChildren }) { } /** - * The default format for the content copied to the - * clipboard when the `Copy All` option is selected. + * The default format for the content copied to the clipboard when the `Copy All` + * option is selected. + * * @param {Object} object The whole data object */ function baseCopyAllFormatter(object) { diff --git a/devtools/client/shared/test/shared-head.js b/devtools/client/shared/test/shared-head.js @@ -1505,8 +1505,11 @@ function isWindows() { * * The server can be accessed like: * - * const server = createTestHTTPServer(); - * let url = "http://localhost: " + server.identity.primaryPort + "/path"; + * ```js + * const server = createTestHTTPServer(); + * let url = "http://localhost: " + server.identity.primaryPort + "/path"; + * ``` + * * @returns {HttpServer} */ function createTestHTTPServer() { diff --git a/devtools/server/actors/utils/style-utils.js b/devtools/server/actors/utils/style-utils.js @@ -138,6 +138,8 @@ exports.getFontPreviewData = getFontPreviewData; /** * Get the text content of a rule given some CSS text, a line and a column * Consider the following example: + * + * ```css * body { * color: red; * } @@ -145,8 +147,11 @@ exports.getFontPreviewData = getFontPreviewData; * line-height: 2em; * color: blue; * } - * Calling the function with the whole text above and line=4 and column=1 would - * return "line-height: 2em; color: blue;" + * ``` + * + * Calling the function with the whole text above and `line=4` and `column=1` would + * return `line-height: 2em; color: blue;` + * * @param {String} initialText * @param {Number} line (1-indexed) * @param {Number} column (1-indexed) diff --git a/devtools/shared/transport/stream-utils.js b/devtools/shared/transport/stream-utils.js @@ -206,7 +206,8 @@ StreamCopier.prototype = { * stream. In that case, we only read as many bytes as the stream currently has * to offer. * TODO: This implementation could be removed if bug 984651 is fixed, which - * provides a native version of the same idea. + * provides a native version of the same idea. + * * @param stream nsIInputStream * The input stream to read from. * @param delimiter string diff --git a/dom/base/test/test_intersectionobservers.html b/dom/base/test/test_intersectionobservers.html @@ -1073,6 +1073,7 @@ limitations under the License. * Runs a sequence of function and when finished invokes the done callback. * Each function in the sequence is invoked with its own done function and * it should call that function once it's complete. + * * @param {Array<Function>} functions An array of async functions. * @param {Function} done A final callback to be invoked once all function * have run. @@ -1095,6 +1096,7 @@ limitations under the License. * that ourselves for the non-polyfill case. Since all tests call observe * on targets in sequential order, this should always match. * https://crbug.com/613679 + * * @param {Array<IntersectionObserverEntry>} entries The entries to sort. * @return {Array<IntersectionObserverEntry>} The sorted array. */ diff --git a/dom/media/test/eme_standalone.js b/dom/media/test/eme_standalone.js @@ -156,12 +156,15 @@ var EmeHelper = class EmeHelper { /** * Adds a key id and key pair to the key map. These should both be hex * strings. E.g. + * ```js * emeHelper.AddKeyIdAndKey( * "2cdb0ed6119853e7850671c3e9906c3c", * "808b9adac384de1e4f56140f4ad76194" * ); + * ``` * This function will store the keyId and key in lower case to ensure * consistency internally. + * * @param keyId The key id used to lookup the following key. * @param key The key associated with the earlier key id. */ diff --git a/editor/spellchecker/tests/test_spellcheck_after_edit.html b/editor/spellchecker/tests/test_spellcheck_after_edit.html @@ -47,15 +47,18 @@ SimpleTest.waitForFocus(async () => { /** * test object should have: * init function + * * @param normalSel The normal selection for the editing host * @param editingHost The editing host of the editor * @return Number of misspelled word in the editor * * run function + * * @param editingHost The editing host of the editor * @return Expected number of misspelled word in the editor * * check function + * * @param spellCheckSel The spellcheck selection for the editing host * @param editingHost The editing host of the editor */ diff --git a/layout/generic/test/test_bug1499961.html b/layout/generic/test/test_bug1499961.html @@ -261,6 +261,7 @@ limitations under the License. * Runs a sequence of function and when finished invokes the done callback. * Each function in the sequence is invoked with its own done function and * it should call that function once it's complete. + * * @param {Array<Function>} functions An array of async functions. * @param {Function} done A final callback to be invoked once all function * have run. @@ -283,6 +284,7 @@ limitations under the License. * that ourselves for the non-polyfill case. Since all tests call observe * on targets in sequential order, this should always match. * https://crbug.com/613679 + * * @param {Array<IntersectionObserverEntry>} entries The entries to sort. * @return {Array<IntersectionObserverEntry>} The sorted array. */ diff --git a/services/fxaccounts/FxAccountsWebChannel.sys.mjs b/services/fxaccounts/FxAccountsWebChannel.sys.mjs @@ -614,6 +614,7 @@ FxAccountsWebChannelHelpers.prototype = { * * In the non-oauth flows, if the user is verified, then the browser itself is able to transition the * user to fully connected. * * In the oauth flows, we will need an `oauth_login` message with our scoped keys to be fully connected. + * * @param accountData the user's account data and credentials */ async login(accountData) { diff --git a/services/settings/Utils.sys.mjs b/services/settings/Utils.sys.mjs @@ -404,6 +404,7 @@ export var Utils = { * "metadata": {} * } * ``` + * * @param {String} serverUrl The server URL (eg. `https://server.org/v1`) * @param {int} expectedTimestamp The timestamp that the server is supposed to return. * We obtained it from the Megaphone notification payload, diff --git a/toolkit/actors/PictureInPictureChild.sys.mjs b/toolkit/actors/PictureInPictureChild.sys.mjs @@ -1830,6 +1830,7 @@ export class PictureInPictureChild extends JSWindowActorChild { * vtt.sys.mjs currently sets snapToLines to false if line is a percentage value, but * cues are still ordered by line. In most cases, snapToLines is set to true by default, * unless intentionally overridden. + * * @param allCuesArray {Array<VTTCue>} array of active cues */ getOrderedWebVTTCues(allCuesArray) { diff --git a/toolkit/components/antitracking/bouncetrackingprotection/test/browser/file_bounce.html b/toolkit/components/antitracking/bouncetrackingprotection/test/browser/file_bounce.html @@ -105,6 +105,7 @@ /** * Waits for the specified image element to be loaded. + * * @param {HTMLImageElement} img - The image element to wait for. * @returns {Promise<void>} - A promise that resolves when the image is loaded. */ diff --git a/toolkit/components/reader/ReaderMode.sys.mjs b/toolkit/components/reader/ReaderMode.sys.mjs @@ -531,21 +531,19 @@ export var ReaderMode = { return readingSpeed.get(lang) || readingSpeed.get("en"); }, /** - * * Check if the document to be parsed is text document. + * * @param doc the doc object to be parsed. * @return boolean - * */ _isDocumentPlainText(doc) { return doc.contentType == "text/plain"; }, /** - * * The document to be parsed is text document and is converted to HTML format. + * * @param doc the doc object to be parsed. * @return doc - * */ _convertPlainTextDocument(doc) { let preTag = doc.querySelector("pre"); diff --git a/toolkit/content/contentAreaUtils.js b/toolkit/content/contentAreaUtils.js @@ -1180,7 +1180,8 @@ function getCharsetforSave(aDocument) { /** * Open a URL from chrome, determining if we can handle it internally or need to - * launch an external application to handle it. + * launch an external application to handle it. + * * @param aURL The URL to be opened * * WARNING: Please note that openURL() does not perform any content security checks!!! diff --git a/toolkit/modules/CreditCard.sys.mjs b/toolkit/modules/CreditCard.sys.mjs @@ -346,8 +346,8 @@ export class CreditCard { } /** - * * Please use getLabelInfo above, as it allows for localization. + * * @deprecated */ static getLabel({ number, name }) { diff --git a/toolkit/modules/NewTabUtils.sys.mjs b/toolkit/modules/NewTabUtils.sys.mjs @@ -2117,9 +2117,10 @@ export var NewTabUtils = { }, /** - * Returns a normalized OS string used in the newtab-content ping + * Returns a normalized OS string used in the newtab-content ping * Borrowed from https://github.com/mozilla/gcp-ingestion/ingestion-beam/ * src/main/java/com/mozilla/telemetry/transforms/NormalizeAttributes.java + * * @returns {String} Normalized OS string mac|win|linux|android|ios|other */ normalizeOs() { diff --git a/toolkit/modules/Sqlite.sys.mjs b/toolkit/modules/Sqlite.sys.mjs @@ -1476,26 +1476,22 @@ function openConnection(options) { * * The following parameters can control the cloned connection: * - * connection -- (mozIStorageAsyncConnection) The original Storage connection - * to clone. It's not possible to clone connections to memory databases. - * - * readOnly -- (boolean) - If true the clone will be read-only. If the - * original connection is already read-only, the clone will be, regardless - * of this option. If the original connection is using the shared cache, - * this parameter will be ignored and the clone will be as privileged as - * the original connection. - * shrinkMemoryOnConnectionIdleMS -- (integer) If defined, the connection - * will attempt to minimize its memory usage after this many - * milliseconds of connection idle. The connection is idle when no - * statements are executing. There is no default value which means no - * automatic memory minimization will occur. Please note that this is - * *not* a timer on the idle service and this could fire while the - * application is active. - * - * - * @param options - * (Object) Parameters to control connection and clone options. - * + * @param {object} options + * Parameters to control connection and clone options. + * @param {mozIStorageAsyncConnection} options.connection + * The original Storage connection to clone. It's not possible to clone + * connections to memory databases. + * @param {boolean} [options.readOnly] + * If true the clone will be read-only. If the original connection is already + * read-only, the clone will be, regardless of this option. If the original + * connection is using the shared cache, this parameter will be ignored and + * the clone will be as privileged as the original connection. + * @param {number} [options.shrinkMemoryOnConnectionIdleMS] + * If defined, the connection will attempt to minimize its memory usage after + * this many milliseconds of connection idle. The connection is idle when no + * statements are executing. There is no default value which means no automatic + * memory minimization will occur. Please note that this is *not* a timer on + * the idle service and this could fire while the application is active. * @return {Promise<OpenedConnection>} */ function cloneStorageConnection(options) {