@nimbus21.ai/chrome-devtools-mcp 0.6.3 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/README.md +311 -26
  2. package/build/src/DevToolsConnectionAdapter.js +69 -0
  3. package/build/src/DevtoolsUtils.js +208 -0
  4. package/build/src/McpContext.js +247 -50
  5. package/build/src/McpResponse.js +211 -48
  6. package/build/src/PageCollector.js +247 -33
  7. package/build/src/WaitForHelper.js +5 -0
  8. package/build/src/browser.js +97 -33
  9. package/build/src/cli.js +139 -16
  10. package/build/src/formatters/consoleFormatter.js +108 -60
  11. package/build/src/formatters/networkFormatter.js +45 -2
  12. package/build/src/formatters/snapshotFormatter.js +57 -59
  13. package/build/src/issue-descriptions.js +39 -0
  14. package/build/src/logger.js +1 -1
  15. package/build/src/main.js +68 -68
  16. package/build/src/polyfill.js +2 -2
  17. package/build/src/third_party/THIRD_PARTY_NOTICES +2010 -0
  18. package/build/src/third_party/devtools.js +6 -0
  19. package/build/src/third_party/index.js +171065 -0
  20. package/build/src/third_party/issue-descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +4 -0
  21. package/build/src/third_party/issue-descriptions/CoepCorpNotSameOrigin.md +8 -0
  22. package/build/src/third_party/issue-descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +18 -0
  23. package/build/src/third_party/issue-descriptions/CoepCorpNotSameSite.md +7 -0
  24. package/build/src/third_party/issue-descriptions/CoepFrameResourceNeedsCoepHeader.md +10 -0
  25. package/build/src/third_party/issue-descriptions/CompatibilityModeQuirks.md +5 -0
  26. package/build/src/third_party/issue-descriptions/CookieAttributeValueExceedsMaxSize.md +5 -0
  27. package/build/src/third_party/issue-descriptions/LowTextContrast.md +5 -0
  28. package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeRead.md +8 -0
  29. package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeSet.md +8 -0
  30. package/build/src/third_party/issue-descriptions/SameSiteExcludeNavigationContextDowngrade.md +8 -0
  31. package/build/src/third_party/issue-descriptions/SameSiteInvalidSameParty.md +8 -0
  32. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorRead.md +8 -0
  33. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorSet.md +8 -0
  34. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnRead.md +8 -0
  35. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnSet.md +8 -0
  36. package/build/src/third_party/issue-descriptions/SameSiteSamePartyCrossPartyContextSet.md +10 -0
  37. package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +9 -0
  38. package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +9 -0
  39. package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeRead.md +8 -0
  40. package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeSet.md +8 -0
  41. package/build/src/third_party/issue-descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +8 -0
  42. package/build/src/third_party/issue-descriptions/arInsecureContext.md +7 -0
  43. package/build/src/third_party/issue-descriptions/arInvalidInfoHeader.md +5 -0
  44. package/build/src/third_party/issue-descriptions/arInvalidRegisterOsSourceHeader.md +5 -0
  45. package/build/src/third_party/issue-descriptions/arInvalidRegisterOsTriggerHeader.md +5 -0
  46. package/build/src/third_party/issue-descriptions/arInvalidRegisterSourceHeader.md +5 -0
  47. package/build/src/third_party/issue-descriptions/arInvalidRegisterTriggerHeader.md +5 -0
  48. package/build/src/third_party/issue-descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +5 -0
  49. package/build/src/third_party/issue-descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +6 -0
  50. package/build/src/third_party/issue-descriptions/arNoRegisterOsSourceHeader.md +5 -0
  51. package/build/src/third_party/issue-descriptions/arNoRegisterOsTriggerHeader.md +5 -0
  52. package/build/src/third_party/issue-descriptions/arNoRegisterSourceHeader.md +5 -0
  53. package/build/src/third_party/issue-descriptions/arNoRegisterTriggerHeader.md +5 -0
  54. package/build/src/third_party/issue-descriptions/arNoWebOrOsSupport.md +4 -0
  55. package/build/src/third_party/issue-descriptions/arOsSourceIgnored.md +18 -0
  56. package/build/src/third_party/issue-descriptions/arOsTriggerIgnored.md +19 -0
  57. package/build/src/third_party/issue-descriptions/arPermissionPolicyDisabled.md +8 -0
  58. package/build/src/third_party/issue-descriptions/arSourceAndTriggerHeaders.md +9 -0
  59. package/build/src/third_party/issue-descriptions/arSourceIgnored.md +13 -0
  60. package/build/src/third_party/issue-descriptions/arTriggerIgnored.md +12 -0
  61. package/build/src/third_party/issue-descriptions/arUntrustworthyReportingOrigin.md +10 -0
  62. package/build/src/third_party/issue-descriptions/arWebAndOsHeaders.md +11 -0
  63. package/build/src/third_party/issue-descriptions/bounceTrackingMitigations.md +3 -0
  64. package/build/src/third_party/issue-descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
  65. package/build/src/third_party/issue-descriptions/clientHintMetaTagModifiedHTML.md +4 -0
  66. package/build/src/third_party/issue-descriptions/cookieCrossSiteRedirectDowngrade.md +12 -0
  67. package/build/src/third_party/issue-descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +4 -0
  68. package/build/src/third_party/issue-descriptions/cookieExcludeDomainNonAscii.md +11 -0
  69. package/build/src/third_party/issue-descriptions/cookieExcludePortMismatch.md +8 -0
  70. package/build/src/third_party/issue-descriptions/cookieExcludeSchemeMismatch.md +7 -0
  71. package/build/src/third_party/issue-descriptions/cookieExcludeThirdPartyPhaseoutRead.md +6 -0
  72. package/build/src/third_party/issue-descriptions/cookieExcludeThirdPartyPhaseoutSet.md +6 -0
  73. package/build/src/third_party/issue-descriptions/cookieWarnDomainNonAscii.md +11 -0
  74. package/build/src/third_party/issue-descriptions/cookieWarnMetadataGrantRead.md +4 -0
  75. package/build/src/third_party/issue-descriptions/cookieWarnMetadataGrantSet.md +4 -0
  76. package/build/src/third_party/issue-descriptions/cookieWarnThirdPartyPhaseoutRead.md +6 -0
  77. package/build/src/third_party/issue-descriptions/cookieWarnThirdPartyPhaseoutSet.md +6 -0
  78. package/build/src/third_party/issue-descriptions/corsAllowCredentialsRequired.md +6 -0
  79. package/build/src/third_party/issue-descriptions/corsDisabledScheme.md +7 -0
  80. package/build/src/third_party/issue-descriptions/corsDisallowedByMode.md +7 -0
  81. package/build/src/third_party/issue-descriptions/corsHeaderDisallowedByPreflightResponse.md +5 -0
  82. package/build/src/third_party/issue-descriptions/corsInsecurePrivateNetwork.md +10 -0
  83. package/build/src/third_party/issue-descriptions/corsInvalidHeaderValues.md +7 -0
  84. package/build/src/third_party/issue-descriptions/corsLocalNetworkAccessPermissionDenied.md +19 -0
  85. package/build/src/third_party/issue-descriptions/corsMethodDisallowedByPreflightResponse.md +5 -0
  86. package/build/src/third_party/issue-descriptions/corsNoCorsRedirectModeNotFollow.md +5 -0
  87. package/build/src/third_party/issue-descriptions/corsOriginMismatch.md +6 -0
  88. package/build/src/third_party/issue-descriptions/corsPreflightAllowPrivateNetworkError.md +10 -0
  89. package/build/src/third_party/issue-descriptions/corsPreflightResponseInvalid.md +5 -0
  90. package/build/src/third_party/issue-descriptions/corsPrivateNetworkPermissionDenied.md +10 -0
  91. package/build/src/third_party/issue-descriptions/corsRedirectContainsCredentials.md +5 -0
  92. package/build/src/third_party/issue-descriptions/corsWildcardOriginNotAllowed.md +8 -0
  93. package/build/src/third_party/issue-descriptions/cspEvalViolation.md +9 -0
  94. package/build/src/third_party/issue-descriptions/cspInlineViolation.md +10 -0
  95. package/build/src/third_party/issue-descriptions/cspTrustedTypesPolicyViolation.md +5 -0
  96. package/build/src/third_party/issue-descriptions/cspTrustedTypesSinkViolation.md +8 -0
  97. package/build/src/third_party/issue-descriptions/cspURLViolation.md +10 -0
  98. package/build/src/third_party/issue-descriptions/deprecation.md +3 -0
  99. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -0
  100. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -0
  101. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsNoResponse.md +1 -0
  102. package/build/src/third_party/issue-descriptions/federatedAuthRequestApprovalDeclined.md +1 -0
  103. package/build/src/third_party/issue-descriptions/federatedAuthRequestCanceled.md +1 -0
  104. package/build/src/third_party/issue-descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +1 -0
  105. package/build/src/third_party/issue-descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +1 -0
  106. package/build/src/third_party/issue-descriptions/federatedAuthRequestClientMetadataNoResponse.md +1 -0
  107. package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -0
  108. package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorIdToken.md +1 -0
  109. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -0
  110. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -0
  111. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -0
  112. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -0
  113. package/build/src/third_party/issue-descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -0
  114. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
  115. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
  116. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
  117. package/build/src/third_party/issue-descriptions/federatedAuthRequestTooManyRequests.md +1 -0
  118. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -0
  119. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -0
  120. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -0
  121. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -0
  122. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -0
  123. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -0
  124. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -0
  125. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -0
  126. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -0
  127. package/build/src/third_party/issue-descriptions/fetchingPartitionedBlobURL.md +7 -0
  128. package/build/src/third_party/issue-descriptions/genericFormAriaLabelledByToNonExistingIdError.md +8 -0
  129. package/build/src/third_party/issue-descriptions/genericFormAutocompleteAttributeEmptyError.md +5 -0
  130. package/build/src/third_party/issue-descriptions/genericFormDuplicateIdForInputError.md +5 -0
  131. package/build/src/third_party/issue-descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +5 -0
  132. package/build/src/third_party/issue-descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +5 -0
  133. package/build/src/third_party/issue-descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +5 -0
  134. package/build/src/third_party/issue-descriptions/genericFormInputWithNoLabelError.md +5 -0
  135. package/build/src/third_party/issue-descriptions/genericFormLabelForMatchesNonExistingIdError.md +5 -0
  136. package/build/src/third_party/issue-descriptions/genericFormLabelForNameError.md +5 -0
  137. package/build/src/third_party/issue-descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +5 -0
  138. package/build/src/third_party/issue-descriptions/genericNavigationEntryMarkedSkippable.md +7 -0
  139. package/build/src/third_party/issue-descriptions/genericResponseWasBlockedByORB.md +4 -0
  140. package/build/src/third_party/issue-descriptions/heavyAd.md +10 -0
  141. package/build/src/third_party/issue-descriptions/mixedContent.md +5 -0
  142. package/build/src/third_party/issue-descriptions/navigatingPartitionedBlobURL.md +5 -0
  143. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabled.md +7 -0
  144. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  145. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  146. package/build/src/third_party/issue-descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  147. package/build/src/third_party/issue-descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  148. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooLarge.md +5 -0
  149. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooSmall.md +5 -0
  150. package/build/src/third_party/issue-descriptions/permissionElementGeolocationDeprecated.md +5 -0
  151. package/build/src/third_party/issue-descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  152. package/build/src/third_party/issue-descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  153. package/build/src/third_party/issue-descriptions/permissionElementInvalidSizeValue.md +5 -0
  154. package/build/src/third_party/issue-descriptions/permissionElementInvalidType.md +5 -0
  155. package/build/src/third_party/issue-descriptions/permissionElementInvalidTypeActivation.md +5 -0
  156. package/build/src/third_party/issue-descriptions/permissionElementLowContrast.md +5 -0
  157. package/build/src/third_party/issue-descriptions/permissionElementNonOpaqueColor.md +5 -0
  158. package/build/src/third_party/issue-descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  159. package/build/src/third_party/issue-descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  160. package/build/src/third_party/issue-descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  161. package/build/src/third_party/issue-descriptions/permissionElementRegistrationFailed.md +5 -0
  162. package/build/src/third_party/issue-descriptions/permissionElementRequestInProgress.md +5 -0
  163. package/build/src/third_party/issue-descriptions/permissionElementSecurityChecksFailed.md +5 -0
  164. package/build/src/third_party/issue-descriptions/permissionElementTypeNotSupported.md +5 -0
  165. package/build/src/third_party/issue-descriptions/permissionElementUntrustedEvent.md +7 -0
  166. package/build/src/third_party/issue-descriptions/placeholderDescriptionForInvisibleIssues.md +3 -0
  167. package/build/src/third_party/issue-descriptions/propertyRuleInvalidNameIssue.md +3 -0
  168. package/build/src/third_party/issue-descriptions/propertyRuleIssue.md +7 -0
  169. package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +7 -0
  170. package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedSelectChild.md +7 -0
  171. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +3 -0
  172. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +3 -0
  173. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +3 -0
  174. package/build/src/third_party/issue-descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +3 -0
  175. package/build/src/third_party/issue-descriptions/sharedArrayBuffer.md +7 -0
  176. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -0
  177. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorDictionaryLoadFailure.md +3 -0
  178. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +3 -0
  179. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -0
  180. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -0
  181. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -0
  182. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorExpiredResponse.md +3 -0
  183. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +3 -0
  184. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInsufficientResources.md +1 -0
  185. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidMatchField.md +1 -0
  186. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -0
  187. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidTTLField.md +1 -0
  188. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNavigationRequest.md +3 -0
  189. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNoMatchField.md +1 -0
  190. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonIntegerTTLField.md +1 -0
  191. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonListMatchDestField.md +1 -0
  192. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonSecureContext.md +3 -0
  193. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonStringIdField.md +1 -0
  194. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonStringInMatchDestList.md +1 -0
  195. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonStringMatchField.md +1 -0
  196. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonTokenTypeField.md +1 -0
  197. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorRequestAborted.md +1 -0
  198. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorShuttingDown.md +1 -0
  199. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorTooLongIdField.md +3 -0
  200. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorUnsupportedType.md +3 -0
  201. package/build/src/third_party/issue-descriptions/sriInvalidSignatureHeader.md +14 -0
  202. package/build/src/third_party/issue-descriptions/sriInvalidSignatureInputHeader.md +15 -0
  203. package/build/src/third_party/issue-descriptions/sriMissingSignatureHeader.md +8 -0
  204. package/build/src/third_party/issue-descriptions/sriMissingSignatureInputHeader.md +7 -0
  205. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsIncorrectLength.md +11 -0
  206. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsNotByteSequence.md +14 -0
  207. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsParameterized.md +15 -0
  208. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentName.md +8 -0
  209. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentType.md +13 -0
  210. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +4 -0
  211. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +5 -0
  212. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidParameter.md +11 -0
  213. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderKeyIdLength.md +12 -0
  214. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingLabel.md +6 -0
  215. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +8 -0
  216. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueMissingComponents.md +11 -0
  217. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueNotInnerList.md +11 -0
  218. package/build/src/third_party/issue-descriptions/sriValidationFailedIntegrityMismatch.md +10 -0
  219. package/build/src/third_party/issue-descriptions/sriValidationFailedInvalidLength.md +5 -0
  220. package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureExpired.md +6 -0
  221. package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureMismatch.md +11 -0
  222. package/build/src/third_party/issue-descriptions/stylesheetLateImport.md +4 -0
  223. package/build/src/third_party/issue-descriptions/stylesheetRequestFailed.md +3 -0
  224. package/build/src/third_party/issue-descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +3 -0
  225. package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestLength.md +12 -0
  226. package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestType.md +17 -0
  227. package/build/src/third_party/issue-descriptions/unencodedDigestMalformedDictionary.md +14 -0
  228. package/build/src/third_party/issue-descriptions/unencodedDigestUnknownAlgorithm.md +15 -0
  229. package/build/src/tools/ToolDefinition.js +2 -2
  230. package/build/src/tools/categories.js +17 -9
  231. package/build/src/tools/console.js +73 -7
  232. package/build/src/tools/emulation.js +64 -38
  233. package/build/src/tools/input.js +113 -46
  234. package/build/src/tools/network.js +44 -14
  235. package/build/src/tools/pages.js +84 -52
  236. package/build/src/tools/performance.js +14 -12
  237. package/build/src/tools/screenshot.js +14 -11
  238. package/build/src/tools/script.js +29 -15
  239. package/build/src/tools/snapshot.js +27 -23
  240. package/build/src/tools/tools.js +29 -0
  241. package/build/src/trace-processing/parse.js +17 -26
  242. package/build/src/utils/keyboard.js +296 -0
  243. package/build/src/utils/types.js +6 -0
  244. package/package.json +34 -25
  245. package/build/node_modules/chrome-devtools-frontend/LICENSE +0 -27
  246. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +0 -4
  247. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +0 -17
  248. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +0 -43
  249. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +0 -27
  250. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +0 -2029
  251. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +0 -330
  252. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +0 -221
  253. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +0 -86
  254. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +0 -14
  255. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +0 -14
  256. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +0 -64
  257. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +0 -4
  258. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +0 -29
  259. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Linkifier.js +0 -34
  260. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +0 -20
  261. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +0 -49
  262. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +0 -86
  263. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +0 -459
  264. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +0 -144
  265. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/QueryParamHandler.js +0 -4
  266. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +0 -69
  267. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +0 -506
  268. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +0 -13
  269. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +0 -159
  270. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +0 -24
  271. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +0 -79
  272. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +0 -164
  273. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +0 -1252
  274. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +0 -97
  275. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +0 -17
  276. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +0 -40
  277. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +0 -71
  278. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +0 -127
  279. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Worker.js +0 -44
  280. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +0 -44
  281. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +0 -415
  282. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +0 -186
  283. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +0 -513
  284. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +0 -66
  285. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +0 -59
  286. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +0 -232
  287. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +0 -957
  288. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +0 -12
  289. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +0 -60
  290. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +0 -199
  291. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +0 -4
  292. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +0 -4
  293. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DOMUtilities.js +0 -122
  294. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +0 -13
  295. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +0 -27
  296. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +0 -21
  297. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +0 -79
  298. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +0 -143
  299. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +0 -72
  300. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +0 -536
  301. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +0 -9
  302. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +0 -157
  303. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +0 -24
  304. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +0 -4
  305. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +0 -22
  306. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +0 -26
  307. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +0 -802
  308. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/NodeURL.js +0 -31
  309. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +0 -13
  310. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +0 -4
  311. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +0 -5
  312. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +0 -281
  313. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +0 -846
  314. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +0 -155
  315. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +0 -99
  316. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +0 -220
  317. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +0 -98
  318. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +0 -31
  319. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +0 -22
  320. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +0 -1284
  321. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +0 -100
  322. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +0 -1518
  323. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +0 -908
  324. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +0 -315
  325. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +0 -572
  326. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +0 -1336
  327. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +0 -53
  328. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +0 -365
  329. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +0 -22
  330. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +0 -21
  331. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +0 -275
  332. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +0 -166
  333. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +0 -24
  334. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +0 -29
  335. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +0 -232
  336. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +0 -47
  337. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +0 -242
  338. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +0 -629
  339. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +0 -14
  340. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +0 -241
  341. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +0 -198
  342. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +0 -163
  343. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +0 -597
  344. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +0 -1628
  345. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +0 -1231
  346. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +0 -527
  347. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +0 -350
  348. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +0 -125
  349. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +0 -4
  350. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +0 -199
  351. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +0 -130
  352. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +0 -73
  353. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +0 -83
  354. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +0 -208
  355. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +0 -41
  356. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +0 -95
  357. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +0 -34
  358. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +0 -1916
  359. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +0 -1668
  360. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +0 -48
  361. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +0 -765
  362. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +0 -384
  363. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +0 -25
  364. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +0 -300
  365. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +0 -67
  366. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +0 -62
  367. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +0 -563
  368. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +0 -290
  369. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +0 -4
  370. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +0 -905
  371. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +0 -163
  372. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +0 -922
  373. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +0 -535
  374. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +0 -45
  375. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +0 -174
  376. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +0 -395
  377. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +0 -54
  378. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +0 -67
  379. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +0 -110
  380. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +0 -216
  381. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +0 -271
  382. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +0 -511
  383. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +0 -651
  384. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +0 -41
  385. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +0 -132
  386. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +0 -189
  387. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +0 -156
  388. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +0 -276
  389. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +0 -143
  390. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +0 -53
  391. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +0 -262
  392. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +0 -386
  393. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +0 -52
  394. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +0 -66
  395. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +0 -1117
  396. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +0 -90
  397. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +0 -1513
  398. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +0 -339
  399. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +0 -1562
  400. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +0 -7514
  401. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +0 -4
  402. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +0 -262
  403. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +0 -979
  404. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +0 -613
  405. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +0 -139
  406. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +0 -372
  407. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +0 -132
  408. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +0 -105
  409. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +0 -243
  410. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +0 -407
  411. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +0 -130
  412. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +0 -992
  413. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +0 -574
  414. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +0 -112
  415. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +0 -186
  416. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +0 -60
  417. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +0 -107
  418. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +0 -244
  419. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +0 -473
  420. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +0 -399
  421. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +0 -87
  422. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +0 -181
  423. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +0 -268
  424. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +0 -55
  425. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +0 -20
  426. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +0 -514
  427. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +0 -90
  428. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +0 -6
  429. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +0 -283
  430. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +0 -4
  431. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +0 -775
  432. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +0 -1706
  433. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +0 -6
  434. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +0 -131
  435. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +0 -77
  436. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +0 -6
  437. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +0 -347
  438. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +0 -4
  439. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +0 -67
  440. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +0 -494
  441. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +0 -49
  442. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +0 -73
  443. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +0 -7
  444. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +0 -4
  445. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +0 -256
  446. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +0 -120
  447. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +0 -6
  448. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +0 -626
  449. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +0 -59
  450. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeTreeCache.js +0 -32
  451. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +0 -7
  452. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +0 -4
  453. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +0 -67
  454. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +0 -97
  455. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +0 -113
  456. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +0 -5
  457. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +0 -7
  458. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +0 -32
  459. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +0 -173
  460. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +0 -30
  461. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +0 -32
  462. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +0 -79
  463. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +0 -69
  464. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +0 -35
  465. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +0 -231
  466. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +0 -355
  467. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +0 -68
  468. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +0 -14
  469. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +0 -122
  470. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +0 -81
  471. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +0 -370
  472. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +0 -166
  473. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +0 -114
  474. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +0 -555
  475. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +0 -815
  476. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +0 -44
  477. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +0 -76
  478. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +0 -162
  479. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +0 -191
  480. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +0 -118
  481. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +0 -50
  482. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +0 -592
  483. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +0 -10
  484. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +0 -109
  485. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +0 -26
  486. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +0 -187
  487. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +0 -162
  488. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +0 -21
  489. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +0 -263
  490. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +0 -148
  491. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +0 -483
  492. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +0 -35
  493. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +0 -147
  494. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +0 -180
  495. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +0 -126
  496. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +0 -85
  497. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +0 -27
  498. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +0 -103
  499. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +0 -445
  500. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +0 -21
  501. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +0 -401
  502. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +0 -33
  503. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +0 -540
  504. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +0 -42
  505. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +0 -349
  506. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +0 -346
  507. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +0 -207
  508. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +0 -97
  509. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +0 -252
  510. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +0 -71
  511. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +0 -101
  512. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +0 -317
  513. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +0 -183
  514. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +0 -134
  515. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +0 -33
  516. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +0 -7
  517. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +0 -163
  518. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +0 -1
  519. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +0 -41
  520. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +0 -102
  521. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +0 -495
  522. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +0 -74
  523. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +0 -184
  524. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +0 -806
  525. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +0 -254
  526. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +0 -10
  527. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +0 -488
  528. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +0 -208
  529. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +0 -340
  530. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +0 -180
  531. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +0 -257
  532. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +0 -89
  533. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +0 -81
  534. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +0 -160
  535. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +0 -117
  536. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +0 -262
  537. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +0 -188
  538. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +0 -182
  539. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +0 -89
  540. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +0 -21
  541. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +0 -199
  542. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +0 -544
  543. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +0 -191
  544. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +0 -135
  545. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +0 -92
  546. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +0 -97
  547. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +0 -101
  548. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +0 -9
  549. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +0 -18
  550. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +0 -6
  551. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +0 -488
  552. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +0 -5
  553. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +0 -276
  554. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +0 -63
  555. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +0 -82
  556. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +0 -551
  557. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +0 -7
  558. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +0 -9
  559. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +0 -136
  560. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +0 -67
  561. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +0 -68
  562. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +0 -48
  563. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +0 -68
  564. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +0 -101
  565. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +0 -64
  566. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +0 -78
  567. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +0 -11
  568. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +0 -115
  569. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +0 -42
  570. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +0 -47
  571. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +0 -134
  572. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +0 -450
  573. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +0 -154
  574. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +0 -9
  575. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +0 -24
  576. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +0 -4
  577. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +0 -17
  578. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +0 -18
  579. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +0 -37
  580. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +0 -57
  581. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +0 -4
  582. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +0 -15
  583. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +0 -574
  584. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +0 -9
  585. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +0 -201
  586. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +0 -4
  587. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +0 -64
  588. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +0 -511
  589. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +0 -113
  590. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +0 -563
  591. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +0 -204
  592. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +0 -9
  593. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +0 -1
  594. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +0 -202
  595. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +0 -2
  596. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +0 -940
  597. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +0 -26
  598. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +0 -196
  599. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -226
  600. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -4
  601. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -394
  602. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -24
  603. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -283
  604. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -7
  605. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -9
  606. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -84
  607. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +0 -4
  608. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +0 -20
  609. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +0 -146
  610. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +0 -2
  611. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +0 -2
  612. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +0 -118
  613. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +0 -40
  614. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +0 -26
  615. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +0 -4
  616. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +0 -215
  617. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +0 -4
  618. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +0 -4
  619. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +0 -4
  620. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +0 -2
  621. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +0 -2
@@ -1,1252 +0,0 @@
1
- // Copyright 2009 The Chromium Authors
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
- import * as Platform from '../platform/platform.js';
5
- import * as Root from '../root/root.js';
6
- import { Console } from './Console.js';
7
- import { ObjectWrapper } from './Object.js';
8
- import { getLocalizedSettingsCategory, getRegisteredSettings as getRegisteredSettingsInternal, maybeRemoveSettingExtension, registerSettingExtension, registerSettingsForTest, resetSettings, } from './SettingRegistration.js';
9
- let settingsInstance;
10
- export class Settings {
11
- syncedStorage;
12
- globalStorage;
13
- localStorage;
14
- #sessionStorage = new SettingsStorage({});
15
- settingNameSet = new Set();
16
- orderValuesBySettingCategory = new Map();
17
- #eventSupport = new ObjectWrapper();
18
- #registry = new Map();
19
- moduleSettings = new Map();
20
- #logSettingAccess;
21
- constructor(syncedStorage, globalStorage, localStorage, logSettingAccess) {
22
- this.syncedStorage = syncedStorage;
23
- this.globalStorage = globalStorage;
24
- this.localStorage = localStorage;
25
- this.#logSettingAccess = logSettingAccess;
26
- for (const registration of this.getRegisteredSettings()) {
27
- const { settingName, defaultValue, storageType } = registration;
28
- const isRegex = registration.settingType === "regex" /* SettingType.REGEX */;
29
- const evaluatedDefaultValue = typeof defaultValue === 'function' ? defaultValue(Root.Runtime.hostConfig) : defaultValue;
30
- const setting = isRegex && typeof evaluatedDefaultValue === 'string' ?
31
- this.createRegExpSetting(settingName, evaluatedDefaultValue, undefined, storageType) :
32
- this.createSetting(settingName, evaluatedDefaultValue, storageType);
33
- setting.setTitleFunction(registration.title);
34
- if (registration.userActionCondition) {
35
- setting.setRequiresUserAction(Boolean(Root.Runtime.Runtime.queryParam(registration.userActionCondition)));
36
- }
37
- setting.setRegistration(registration);
38
- this.registerModuleSetting(setting);
39
- }
40
- }
41
- getRegisteredSettings() {
42
- return getRegisteredSettingsInternal();
43
- }
44
- static hasInstance() {
45
- return typeof settingsInstance !== 'undefined';
46
- }
47
- static instance(opts = { forceNew: null, syncedStorage: null, globalStorage: null, localStorage: null }) {
48
- const { forceNew, syncedStorage, globalStorage, localStorage, logSettingAccess } = opts;
49
- if (!settingsInstance || forceNew) {
50
- if (!syncedStorage || !globalStorage || !localStorage) {
51
- throw new Error(`Unable to create settings: global and local storage must be provided: ${new Error().stack}`);
52
- }
53
- settingsInstance = new Settings(syncedStorage, globalStorage, localStorage, logSettingAccess);
54
- }
55
- return settingsInstance;
56
- }
57
- static removeInstance() {
58
- settingsInstance = undefined;
59
- }
60
- registerModuleSetting(setting) {
61
- const settingName = setting.name;
62
- const category = setting.category();
63
- const order = setting.order();
64
- if (this.settingNameSet.has(settingName)) {
65
- throw new Error(`Duplicate Setting name '${settingName}'`);
66
- }
67
- if (category && order) {
68
- const orderValues = this.orderValuesBySettingCategory.get(category) || new Set();
69
- if (orderValues.has(order)) {
70
- throw new Error(`Duplicate order value '${order}' for settings category '${category}'`);
71
- }
72
- orderValues.add(order);
73
- this.orderValuesBySettingCategory.set(category, orderValues);
74
- }
75
- this.settingNameSet.add(settingName);
76
- this.moduleSettings.set(setting.name, setting);
77
- }
78
- static normalizeSettingName(name) {
79
- if ([
80
- VersionController.GLOBAL_VERSION_SETTING_NAME,
81
- VersionController.SYNCED_VERSION_SETTING_NAME,
82
- VersionController.LOCAL_VERSION_SETTING_NAME,
83
- 'currentDockState',
84
- 'isUnderTest',
85
- ].includes(name)) {
86
- return name;
87
- }
88
- return Platform.StringUtilities.toKebabCase(name);
89
- }
90
- /**
91
- * Prefer a module setting if this setting is one that you might not want to
92
- * surface to the user to control themselves. Examples of these are settings
93
- * to store UI state such as how a user choses to position a split widget or
94
- * which panel they last opened.
95
- * If you are creating a setting that you expect the user to control, and
96
- * sync, prefer {@see createSetting}
97
- */
98
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
- moduleSetting(settingName) {
100
- const setting = this.moduleSettings.get(settingName);
101
- if (!setting) {
102
- throw new Error('No setting registered: ' + settingName);
103
- }
104
- return setting;
105
- }
106
- settingForTest(settingName) {
107
- const setting = this.#registry.get(settingName);
108
- if (!setting) {
109
- throw new Error('No setting registered: ' + settingName);
110
- }
111
- return setting;
112
- }
113
- /**
114
- * Get setting via key, and create a new setting if the requested setting does not exist.
115
- * @param key kebab-case string ID
116
- * @param defaultValue
117
- * @param storageType If not specified, SettingStorageType.GLOBAL is used.
118
- */
119
- createSetting(key, defaultValue, storageType) {
120
- const storage = this.storageFromType(storageType);
121
- let setting = this.#registry.get(key);
122
- if (!setting) {
123
- setting = new Setting(key, defaultValue, this.#eventSupport, storage, this.#logSettingAccess);
124
- this.#registry.set(key, setting);
125
- }
126
- return setting;
127
- }
128
- createLocalSetting(key, defaultValue) {
129
- return this.createSetting(key, defaultValue, "Local" /* SettingStorageType.LOCAL */);
130
- }
131
- createRegExpSetting(key, defaultValue, regexFlags, storageType) {
132
- if (!this.#registry.get(key)) {
133
- this.#registry.set(key, new RegExpSetting(key, defaultValue, this.#eventSupport, this.storageFromType(storageType), regexFlags, this.#logSettingAccess));
134
- }
135
- return this.#registry.get(key);
136
- }
137
- clearAll() {
138
- this.globalStorage.removeAll();
139
- this.syncedStorage.removeAll();
140
- this.localStorage.removeAll();
141
- new VersionController().resetToCurrent();
142
- }
143
- storageFromType(storageType) {
144
- switch (storageType) {
145
- case "Local" /* SettingStorageType.LOCAL */:
146
- return this.localStorage;
147
- case "Session" /* SettingStorageType.SESSION */:
148
- return this.#sessionStorage;
149
- case "Global" /* SettingStorageType.GLOBAL */:
150
- return this.globalStorage;
151
- case "Synced" /* SettingStorageType.SYNCED */:
152
- return this.syncedStorage;
153
- }
154
- return this.globalStorage;
155
- }
156
- getRegistry() {
157
- return this.#registry;
158
- }
159
- }
160
- export const NOOP_STORAGE = {
161
- register: () => { },
162
- set: () => { },
163
- get: () => Promise.resolve(''),
164
- remove: () => { },
165
- clear: () => { },
166
- };
167
- export class SettingsStorage {
168
- object;
169
- backingStore;
170
- storagePrefix;
171
- constructor(object, backingStore = NOOP_STORAGE, storagePrefix = '') {
172
- this.object = object;
173
- this.backingStore = backingStore;
174
- this.storagePrefix = storagePrefix;
175
- }
176
- register(name) {
177
- name = this.storagePrefix + name;
178
- this.backingStore.register(name);
179
- }
180
- set(name, value) {
181
- name = this.storagePrefix + name;
182
- this.object[name] = value;
183
- this.backingStore.set(name, value);
184
- }
185
- has(name) {
186
- name = this.storagePrefix + name;
187
- return name in this.object;
188
- }
189
- get(name) {
190
- name = this.storagePrefix + name;
191
- return this.object[name];
192
- }
193
- async forceGet(originalName) {
194
- const name = this.storagePrefix + originalName;
195
- const value = await this.backingStore.get(name);
196
- if (value && value !== this.object[name]) {
197
- this.set(originalName, value);
198
- }
199
- else if (!value) {
200
- this.remove(originalName);
201
- }
202
- return value;
203
- }
204
- remove(name) {
205
- name = this.storagePrefix + name;
206
- delete this.object[name];
207
- this.backingStore.remove(name);
208
- }
209
- removeAll() {
210
- this.object = {};
211
- this.backingStore.clear();
212
- }
213
- keys() {
214
- return Object.keys(this.object);
215
- }
216
- dumpSizes() {
217
- Console.instance().log('Ten largest settings: ');
218
- // @ts-expect-error __proto__ optimization
219
- const sizes = { __proto__: null };
220
- for (const key in this.object) {
221
- sizes[key] = this.object[key].length;
222
- }
223
- const keys = Object.keys(sizes);
224
- function comparator(key1, key2) {
225
- return sizes[key2] - sizes[key1];
226
- }
227
- keys.sort(comparator);
228
- for (let i = 0; i < 10 && i < keys.length; ++i) {
229
- Console.instance().log('Setting: \'' + keys[i] + '\', size: ' + sizes[keys[i]]);
230
- }
231
- }
232
- }
233
- function removeSetting(setting) {
234
- const name = setting.name;
235
- const settings = Settings.instance();
236
- settings.getRegistry().delete(name);
237
- settings.moduleSettings.delete(name);
238
- setting.storage.remove(name);
239
- }
240
- export class Deprecation {
241
- disabled;
242
- warning;
243
- experiment;
244
- constructor({ deprecationNotice }) {
245
- if (!deprecationNotice) {
246
- throw new Error('Cannot create deprecation info for a non-deprecated setting');
247
- }
248
- this.disabled = deprecationNotice.disabled;
249
- this.warning = deprecationNotice.warning();
250
- this.experiment = deprecationNotice.experiment ?
251
- Root.Runtime.experiments.allConfigurableExperiments().find(e => e.name === deprecationNotice.experiment) :
252
- undefined;
253
- }
254
- }
255
- export class Setting {
256
- name;
257
- defaultValue;
258
- eventSupport;
259
- storage;
260
- #titleFunction;
261
- #title;
262
- #registration = null;
263
- #requiresUserAction;
264
- #value;
265
- // TODO(crbug.com/1172300) Type cannot be inferred without changes to consumers. See above.
266
- #serializer = JSON;
267
- #hadUserAction;
268
- #disabled;
269
- #deprecation = null;
270
- #loggedInitialAccess = false;
271
- #logSettingAccess;
272
- constructor(name, defaultValue, eventSupport, storage, logSettingAccess) {
273
- this.name = name;
274
- this.defaultValue = defaultValue;
275
- this.eventSupport = eventSupport;
276
- this.storage = storage;
277
- storage.register(this.name);
278
- this.#logSettingAccess = logSettingAccess;
279
- }
280
- setSerializer(serializer) {
281
- this.#serializer = serializer;
282
- }
283
- addChangeListener(listener, thisObject) {
284
- return this.eventSupport.addEventListener(this.name, listener, thisObject);
285
- }
286
- removeChangeListener(listener, thisObject) {
287
- this.eventSupport.removeEventListener(this.name, listener, thisObject);
288
- }
289
- title() {
290
- if (this.#title) {
291
- return this.#title;
292
- }
293
- if (this.#titleFunction) {
294
- return this.#titleFunction();
295
- }
296
- return '';
297
- }
298
- setTitleFunction(titleFunction) {
299
- if (titleFunction) {
300
- this.#titleFunction = titleFunction;
301
- }
302
- }
303
- setTitle(title) {
304
- this.#title = title;
305
- }
306
- setRequiresUserAction(requiresUserAction) {
307
- this.#requiresUserAction = requiresUserAction;
308
- }
309
- disabled() {
310
- if (this.#registration?.disabledCondition) {
311
- const { disabled } = this.#registration.disabledCondition(Root.Runtime.hostConfig);
312
- // If registration does not disable it, pass through to #disabled
313
- // attribute check.
314
- if (disabled) {
315
- return true;
316
- }
317
- }
318
- return this.#disabled || false;
319
- }
320
- disabledReasons() {
321
- if (this.#registration?.disabledCondition) {
322
- const result = this.#registration.disabledCondition(Root.Runtime.hostConfig);
323
- if (result.disabled) {
324
- return result.reasons;
325
- }
326
- }
327
- return [];
328
- }
329
- setDisabled(disabled) {
330
- this.#disabled = disabled;
331
- this.eventSupport.dispatchEventToListeners(this.name);
332
- }
333
- #maybeLogAccess(value) {
334
- try {
335
- const valueToLog = typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' ?
336
- value :
337
- this.#serializer?.stringify(value);
338
- if (valueToLog !== undefined && this.#logSettingAccess) {
339
- void this.#logSettingAccess(this.name, valueToLog);
340
- }
341
- }
342
- catch {
343
- }
344
- }
345
- #maybeLogInitialAccess(value) {
346
- if (!this.#loggedInitialAccess) {
347
- this.#maybeLogAccess(value);
348
- this.#loggedInitialAccess = true;
349
- }
350
- }
351
- get() {
352
- if (this.#requiresUserAction && !this.#hadUserAction) {
353
- this.#maybeLogInitialAccess(this.defaultValue);
354
- return this.defaultValue;
355
- }
356
- if (typeof this.#value !== 'undefined') {
357
- this.#maybeLogInitialAccess(this.#value);
358
- return this.#value;
359
- }
360
- this.#value = this.defaultValue;
361
- if (this.storage.has(this.name)) {
362
- try {
363
- this.#value = this.#serializer.parse(this.storage.get(this.name));
364
- }
365
- catch {
366
- this.storage.remove(this.name);
367
- }
368
- }
369
- this.#maybeLogInitialAccess(this.#value);
370
- return this.#value;
371
- }
372
- // Prefer this getter for settings which are "disableable". The plain getter returns `this.#value`,
373
- // even if the setting is disabled, which means the callsite has to explicitly call the `disabled()`
374
- // getter and add its own logic for the disabled state.
375
- getIfNotDisabled() {
376
- if (this.disabled()) {
377
- return;
378
- }
379
- return this.get();
380
- }
381
- async forceGet() {
382
- const name = this.name;
383
- const oldValue = this.storage.get(name);
384
- const value = await this.storage.forceGet(name);
385
- this.#value = this.defaultValue;
386
- if (value) {
387
- try {
388
- this.#value = this.#serializer.parse(value);
389
- }
390
- catch {
391
- this.storage.remove(this.name);
392
- }
393
- }
394
- if (oldValue !== value) {
395
- this.eventSupport.dispatchEventToListeners(this.name, this.#value);
396
- }
397
- this.#maybeLogInitialAccess(this.#value);
398
- return this.#value;
399
- }
400
- set(value) {
401
- this.#maybeLogAccess(value);
402
- this.#hadUserAction = true;
403
- this.#value = value;
404
- try {
405
- const settingString = this.#serializer.stringify(value);
406
- try {
407
- this.storage.set(this.name, settingString);
408
- }
409
- catch (e) {
410
- this.printSettingsSavingError(e.message, settingString);
411
- }
412
- }
413
- catch (e) {
414
- Console.instance().error('Cannot stringify setting with name: ' + this.name + ', error: ' + e.message);
415
- }
416
- this.eventSupport.dispatchEventToListeners(this.name, value);
417
- }
418
- setRegistration(registration) {
419
- this.#registration = registration;
420
- const { deprecationNotice } = registration;
421
- if (deprecationNotice?.disabled) {
422
- const experiment = deprecationNotice.experiment ?
423
- Root.Runtime.experiments.allConfigurableExperiments().find(e => e.name === deprecationNotice.experiment) :
424
- undefined;
425
- if ((!experiment || experiment.isEnabled())) {
426
- this.set(this.defaultValue);
427
- this.setDisabled(true);
428
- }
429
- }
430
- }
431
- type() {
432
- if (this.#registration) {
433
- return this.#registration.settingType;
434
- }
435
- return null;
436
- }
437
- options() {
438
- if (this.#registration && this.#registration.options) {
439
- return this.#registration.options.map(opt => {
440
- const { value, title, text, raw } = opt;
441
- return {
442
- value,
443
- title: title(),
444
- text: typeof text === 'function' ? text() : text,
445
- raw,
446
- };
447
- });
448
- }
449
- return [];
450
- }
451
- reloadRequired() {
452
- if (this.#registration) {
453
- return this.#registration.reloadRequired || null;
454
- }
455
- return null;
456
- }
457
- category() {
458
- if (this.#registration) {
459
- return this.#registration.category || null;
460
- }
461
- return null;
462
- }
463
- tags() {
464
- if (this.#registration && this.#registration.tags) {
465
- // Get localized keys and separate by null character to prevent fuzzy matching from matching across them.
466
- return this.#registration.tags.map(tag => tag()).join('\0');
467
- }
468
- return null;
469
- }
470
- order() {
471
- if (this.#registration) {
472
- return this.#registration.order || null;
473
- }
474
- return null;
475
- }
476
- learnMore() {
477
- return this.#registration?.learnMore ?? null;
478
- }
479
- get deprecation() {
480
- if (!this.#registration || !this.#registration.deprecationNotice) {
481
- return null;
482
- }
483
- if (!this.#deprecation) {
484
- this.#deprecation = new Deprecation(this.#registration);
485
- }
486
- return this.#deprecation;
487
- }
488
- printSettingsSavingError(message, value) {
489
- const errorMessage = 'Error saving setting with name: ' + this.name + ', value length: ' + value.length + '. Error: ' + message;
490
- console.error(errorMessage);
491
- Console.instance().error(errorMessage);
492
- this.storage.dumpSizes();
493
- }
494
- }
495
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
496
- export class RegExpSetting extends Setting {
497
- #regexFlags;
498
- #regex;
499
- constructor(name, defaultValue, eventSupport, storage, regexFlags, logSettingAccess) {
500
- super(name, defaultValue ? [{ pattern: defaultValue }] : [], eventSupport, storage, logSettingAccess);
501
- this.#regexFlags = regexFlags;
502
- }
503
- get() {
504
- const result = [];
505
- const items = this.getAsArray();
506
- for (let i = 0; i < items.length; ++i) {
507
- const item = items[i];
508
- if (item.pattern && !item.disabled) {
509
- result.push(item.pattern);
510
- }
511
- }
512
- return result.join('|');
513
- }
514
- getAsArray() {
515
- return super.get();
516
- }
517
- set(value) {
518
- this.setAsArray([{ pattern: value, disabled: false }]);
519
- }
520
- setAsArray(value) {
521
- this.#regex = undefined;
522
- super.set(value);
523
- }
524
- asRegExp() {
525
- if (typeof this.#regex !== 'undefined') {
526
- return this.#regex;
527
- }
528
- this.#regex = null;
529
- try {
530
- const pattern = this.get();
531
- if (pattern) {
532
- this.#regex = new RegExp(pattern, this.#regexFlags || '');
533
- }
534
- }
535
- catch {
536
- }
537
- return this.#regex;
538
- }
539
- }
540
- // The VersionController does a lot of mapping and restructuring which often need
541
- // typecasting to any, allow it in there
542
- /* eslint-disable @typescript-eslint/no-explicit-any */
543
- export class VersionController {
544
- static GLOBAL_VERSION_SETTING_NAME = 'inspectorVersion';
545
- static SYNCED_VERSION_SETTING_NAME = 'syncedInspectorVersion';
546
- static LOCAL_VERSION_SETTING_NAME = 'localInspectorVersion';
547
- static CURRENT_VERSION = 40;
548
- #globalVersionSetting;
549
- #syncedVersionSetting;
550
- #localVersionSetting;
551
- constructor() {
552
- // If no version setting is found, we initialize with the current version and don't do anything.
553
- this.#globalVersionSetting = Settings.instance().createSetting(VersionController.GLOBAL_VERSION_SETTING_NAME, VersionController.CURRENT_VERSION, "Global" /* SettingStorageType.GLOBAL */);
554
- this.#syncedVersionSetting = Settings.instance().createSetting(VersionController.SYNCED_VERSION_SETTING_NAME, VersionController.CURRENT_VERSION, "Synced" /* SettingStorageType.SYNCED */);
555
- this.#localVersionSetting = Settings.instance().createSetting(VersionController.LOCAL_VERSION_SETTING_NAME, VersionController.CURRENT_VERSION, "Local" /* SettingStorageType.LOCAL */);
556
- }
557
- /**
558
- * Force re-sets all version number settings to the current version without
559
- * running any migrations.
560
- */
561
- resetToCurrent() {
562
- this.#globalVersionSetting.set(VersionController.CURRENT_VERSION);
563
- this.#syncedVersionSetting.set(VersionController.CURRENT_VERSION);
564
- this.#localVersionSetting.set(VersionController.CURRENT_VERSION);
565
- }
566
- /**
567
- * Runs the appropriate migrations and updates the version settings accordingly.
568
- *
569
- * To determine what migrations to run we take the minimum of all version number settings.
570
- *
571
- * IMPORTANT: All migrations must be idempotent since they might be applied multiple times.
572
- */
573
- updateVersion() {
574
- const currentVersion = VersionController.CURRENT_VERSION;
575
- const minimumVersion = Math.min(this.#globalVersionSetting.get(), this.#syncedVersionSetting.get(), this.#localVersionSetting.get());
576
- const methodsToRun = this.methodsToRunToUpdateVersion(minimumVersion, currentVersion);
577
- console.assert(
578
- // @ts-expect-error
579
- this[`updateVersionFrom${currentVersion}To${currentVersion + 1}`] === undefined, 'Unexpected migration method found. Increment CURRENT_VERSION or remove the method.');
580
- for (const method of methodsToRun) {
581
- // @ts-expect-error Special version method matching
582
- this[method].call(this);
583
- }
584
- this.resetToCurrent();
585
- }
586
- methodsToRunToUpdateVersion(oldVersion, currentVersion) {
587
- const result = [];
588
- for (let i = oldVersion; i < currentVersion; ++i) {
589
- result.push('updateVersionFrom' + i + 'To' + (i + 1));
590
- }
591
- return result;
592
- }
593
- updateVersionFrom0To1() {
594
- this.clearBreakpointsWhenTooMany(Settings.instance().createLocalSetting('breakpoints', []), 500000);
595
- }
596
- updateVersionFrom1To2() {
597
- Settings.instance().createSetting('previouslyViewedFiles', []).set([]);
598
- }
599
- updateVersionFrom2To3() {
600
- Settings.instance().createSetting('fileSystemMapping', {}).set({});
601
- removeSetting(Settings.instance().createSetting('fileMappingEntries', []));
602
- }
603
- updateVersionFrom3To4() {
604
- const advancedMode = Settings.instance().createSetting('showHeaSnapshotObjectsHiddenProperties', false);
605
- moduleSetting('showAdvancedHeapSnapshotProperties').set(advancedMode.get());
606
- removeSetting(advancedMode);
607
- }
608
- updateVersionFrom4To5() {
609
- const settingNames = {
610
- FileSystemViewSidebarWidth: 'fileSystemViewSplitViewState',
611
- elementsSidebarWidth: 'elementsPanelSplitViewState',
612
- StylesPaneSplitRatio: 'stylesPaneSplitViewState',
613
- heapSnapshotRetainersViewSize: 'heapSnapshotSplitViewState',
614
- 'InspectorView.splitView': 'InspectorView.splitViewState',
615
- 'InspectorView.screencastSplitView': 'InspectorView.screencastSplitViewState',
616
- 'Inspector.drawerSplitView': 'Inspector.drawerSplitViewState',
617
- layerDetailsSplitView: 'layerDetailsSplitViewState',
618
- networkSidebarWidth: 'networkPanelSplitViewState',
619
- sourcesSidebarWidth: 'sourcesPanelSplitViewState',
620
- scriptsPanelNavigatorSidebarWidth: 'sourcesPanelNavigatorSplitViewState',
621
- sourcesPanelSplitSidebarRatio: 'sourcesPanelDebuggerSidebarSplitViewState',
622
- 'timeline-details': 'timelinePanelDetailsSplitViewState',
623
- 'timeline-split': 'timelinePanelRecorsSplitViewState',
624
- 'timeline-view': 'timelinePanelTimelineStackSplitViewState',
625
- auditsSidebarWidth: 'auditsPanelSplitViewState',
626
- layersSidebarWidth: 'layersPanelSplitViewState',
627
- profilesSidebarWidth: 'profilesPanelSplitViewState',
628
- resourcesSidebarWidth: 'resourcesPanelSplitViewState',
629
- };
630
- const empty = {};
631
- for (const oldName in settingNames) {
632
- const newName = settingNames[oldName];
633
- const oldNameH = oldName + 'H';
634
- let newValue = null;
635
- const oldSetting = Settings.instance().createSetting(oldName, empty);
636
- if (oldSetting.get() !== empty) {
637
- newValue = newValue || {};
638
- // @ts-expect-error
639
- newValue.vertical = {};
640
- // @ts-expect-error
641
- newValue.vertical.size = oldSetting.get();
642
- removeSetting(oldSetting);
643
- }
644
- const oldSettingH = Settings.instance().createSetting(oldNameH, empty);
645
- if (oldSettingH.get() !== empty) {
646
- newValue = newValue || {};
647
- // @ts-expect-error
648
- newValue.horizontal = {};
649
- // @ts-expect-error
650
- newValue.horizontal.size = oldSettingH.get();
651
- removeSetting(oldSettingH);
652
- }
653
- if (newValue) {
654
- Settings.instance().createSetting(newName, {}).set(newValue);
655
- }
656
- }
657
- }
658
- updateVersionFrom5To6() {
659
- const settingNames = {
660
- debuggerSidebarHidden: 'sourcesPanelSplitViewState',
661
- navigatorHidden: 'sourcesPanelNavigatorSplitViewState',
662
- 'WebInspector.Drawer.showOnLoad': 'Inspector.drawerSplitViewState',
663
- };
664
- for (const oldName in settingNames) {
665
- const oldSetting = Settings.instance().createSetting(oldName, null);
666
- if (oldSetting.get() === null) {
667
- removeSetting(oldSetting);
668
- continue;
669
- }
670
- const newName = settingNames[oldName];
671
- const invert = oldName === 'WebInspector.Drawer.showOnLoad';
672
- const hidden = oldSetting.get() !== invert;
673
- removeSetting(oldSetting);
674
- const showMode = hidden ? 'OnlyMain' : 'Both';
675
- const newSetting = Settings.instance().createSetting(newName, {});
676
- const newValue = newSetting.get() || {};
677
- // @ts-expect-error
678
- newValue.vertical = newValue.vertical || {};
679
- // @ts-expect-error
680
- newValue.vertical.showMode = showMode;
681
- // @ts-expect-error
682
- newValue.horizontal = newValue.horizontal || {};
683
- // @ts-expect-error
684
- newValue.horizontal.showMode = showMode;
685
- newSetting.set(newValue);
686
- }
687
- }
688
- updateVersionFrom6To7() {
689
- const settingNames = {
690
- sourcesPanelNavigatorSplitViewState: 'sourcesPanelNavigatorSplitViewState',
691
- elementsPanelSplitViewState: 'elementsPanelSplitViewState',
692
- stylesPaneSplitViewState: 'stylesPaneSplitViewState',
693
- sourcesPanelDebuggerSidebarSplitViewState: 'sourcesPanelDebuggerSidebarSplitViewState',
694
- };
695
- const empty = {};
696
- for (const name in settingNames) {
697
- const setting = Settings.instance().createSetting(name, empty);
698
- const value = setting.get();
699
- if (value === empty) {
700
- continue;
701
- }
702
- // Zero out saved percentage sizes, and they will be restored to defaults.
703
- if (value.vertical?.size && value.vertical.size < 1) {
704
- value.vertical.size = 0;
705
- }
706
- if (value.horizontal?.size && value.horizontal.size < 1) {
707
- value.horizontal.size = 0;
708
- }
709
- setting.set(value);
710
- }
711
- }
712
- updateVersionFrom7To8() {
713
- }
714
- updateVersionFrom8To9() {
715
- const settingNames = ['skipStackFramesPattern', 'workspaceFolderExcludePattern'];
716
- for (let i = 0; i < settingNames.length; ++i) {
717
- const setting = Settings.instance().createSetting(settingNames[i], '');
718
- let value = setting.get();
719
- if (!value) {
720
- return;
721
- }
722
- if (typeof value === 'string') {
723
- value = [value];
724
- }
725
- for (let j = 0; j < value.length; ++j) {
726
- if (typeof value[j] === 'string') {
727
- value[j] = { pattern: value[j] };
728
- }
729
- }
730
- setting.set(value);
731
- }
732
- }
733
- updateVersionFrom9To10() {
734
- // This one is localStorage specific, which is fine.
735
- if (!window.localStorage) {
736
- return;
737
- }
738
- for (const key in window.localStorage) {
739
- if (key.startsWith('revision-history')) {
740
- window.localStorage.removeItem(key);
741
- }
742
- }
743
- }
744
- updateVersionFrom10To11() {
745
- const oldSettingName = 'customDevicePresets';
746
- const newSettingName = 'customEmulatedDeviceList';
747
- const oldSetting = Settings.instance().createSetting(oldSettingName, undefined);
748
- const list = oldSetting.get();
749
- if (!Array.isArray(list)) {
750
- return;
751
- }
752
- const newList = [];
753
- for (let i = 0; i < list.length; ++i) {
754
- const value = list[i];
755
- const device = {};
756
- device['title'] = value['title'];
757
- device['type'] = 'unknown';
758
- device['user-agent'] = value['userAgent'];
759
- device['capabilities'] = [];
760
- if (value['touch']) {
761
- device['capabilities'].push('touch');
762
- }
763
- if (value['mobile']) {
764
- device['capabilities'].push('mobile');
765
- }
766
- device['screen'] = {};
767
- device['screen']['vertical'] = { width: value['width'], height: value['height'] };
768
- device['screen']['horizontal'] = { width: value['height'], height: value['width'] };
769
- device['screen']['device-pixel-ratio'] = value['deviceScaleFactor'];
770
- device['modes'] = [];
771
- device['show-by-default'] = true;
772
- device['show'] = 'Default';
773
- newList.push(device);
774
- }
775
- if (newList.length) {
776
- Settings.instance().createSetting(newSettingName, []).set(newList);
777
- }
778
- removeSetting(oldSetting);
779
- }
780
- updateVersionFrom11To12() {
781
- this.migrateSettingsFromLocalStorage();
782
- }
783
- updateVersionFrom12To13() {
784
- this.migrateSettingsFromLocalStorage();
785
- removeSetting(Settings.instance().createSetting('timelineOverviewMode', ''));
786
- }
787
- updateVersionFrom13To14() {
788
- const defaultValue = { throughput: -1, latency: 0 };
789
- Settings.instance().createSetting('networkConditions', defaultValue).set(defaultValue);
790
- }
791
- updateVersionFrom14To15() {
792
- const setting = Settings.instance().createLocalSetting('workspaceExcludedFolders', {});
793
- const oldValue = setting.get();
794
- const newValue = {};
795
- for (const fileSystemPath in oldValue) {
796
- newValue[fileSystemPath] = [];
797
- for (const entry of oldValue[fileSystemPath]) {
798
- newValue[fileSystemPath].push(entry.path);
799
- }
800
- }
801
- setting.set(newValue);
802
- }
803
- updateVersionFrom15To16() {
804
- const setting = Settings.instance().createSetting('InspectorView.panelOrder', {});
805
- const tabOrders = setting.get();
806
- for (const key of Object.keys(tabOrders)) {
807
- tabOrders[key] = (tabOrders[key] + 1) * 10;
808
- }
809
- setting.set(tabOrders);
810
- }
811
- updateVersionFrom16To17() {
812
- const setting = Settings.instance().createSetting('networkConditionsCustomProfiles', []);
813
- const oldValue = setting.get();
814
- const newValue = [];
815
- if (Array.isArray(oldValue)) {
816
- for (const preset of oldValue) {
817
- if (typeof preset.title === 'string' && typeof preset.value === 'object' &&
818
- typeof preset.value.throughput === 'number' && typeof preset.value.latency === 'number') {
819
- newValue.push({
820
- title: preset.title,
821
- value: { download: preset.value.throughput, upload: preset.value.throughput, latency: preset.value.latency },
822
- });
823
- }
824
- }
825
- }
826
- setting.set(newValue);
827
- }
828
- updateVersionFrom17To18() {
829
- const setting = Settings.instance().createLocalSetting('workspaceExcludedFolders', {});
830
- const oldValue = setting.get();
831
- const newValue = {};
832
- for (const oldKey in oldValue) {
833
- let newKey = oldKey.replace(/\\/g, '/');
834
- if (!newKey.startsWith('file://')) {
835
- if (newKey.startsWith('/')) {
836
- newKey = 'file://' + newKey;
837
- }
838
- else {
839
- newKey = 'file:///' + newKey;
840
- }
841
- }
842
- newValue[newKey] = oldValue[oldKey];
843
- }
844
- setting.set(newValue);
845
- }
846
- updateVersionFrom18To19() {
847
- const defaultColumns = { status: true, type: true, initiator: true, size: true, time: true };
848
- const visibleColumnSettings = Settings.instance().createSetting('networkLogColumnsVisibility', defaultColumns);
849
- const visibleColumns = visibleColumnSettings.get();
850
- visibleColumns.name = true;
851
- visibleColumns.timeline = true;
852
- const configs = {};
853
- for (const columnId in visibleColumns) {
854
- if (!visibleColumns.hasOwnProperty(columnId)) {
855
- continue;
856
- }
857
- configs[columnId.toLowerCase()] = { visible: visibleColumns[columnId] };
858
- }
859
- const newSetting = Settings.instance().createSetting('networkLogColumns', {});
860
- newSetting.set(configs);
861
- removeSetting(visibleColumnSettings);
862
- }
863
- updateVersionFrom19To20() {
864
- const oldSetting = Settings.instance().createSetting('InspectorView.panelOrder', {});
865
- const newSetting = Settings.instance().createSetting('panel-tabOrder', {});
866
- newSetting.set(oldSetting.get());
867
- removeSetting(oldSetting);
868
- }
869
- updateVersionFrom20To21() {
870
- const networkColumns = Settings.instance().createSetting('networkLogColumns', {});
871
- const columns = networkColumns.get();
872
- delete columns['timeline'];
873
- delete columns['waterfall'];
874
- networkColumns.set(columns);
875
- }
876
- updateVersionFrom21To22() {
877
- const breakpointsSetting = Settings.instance().createLocalSetting('breakpoints', []);
878
- const breakpoints = breakpointsSetting.get();
879
- for (const breakpoint of breakpoints) {
880
- breakpoint['url'] = breakpoint['sourceFileId'];
881
- delete breakpoint['sourceFileId'];
882
- }
883
- breakpointsSetting.set(breakpoints);
884
- }
885
- updateVersionFrom22To23() {
886
- // This update is no-op.
887
- }
888
- updateVersionFrom23To24() {
889
- const oldSetting = Settings.instance().createSetting('searchInContentScripts', false);
890
- const newSetting = Settings.instance().createSetting('searchInAnonymousAndContentScripts', false);
891
- newSetting.set(oldSetting.get());
892
- removeSetting(oldSetting);
893
- }
894
- updateVersionFrom24To25() {
895
- const defaultColumns = { status: true, type: true, initiator: true, size: true, time: true };
896
- const networkLogColumnsSetting = Settings.instance().createSetting('networkLogColumns', defaultColumns);
897
- const columns = networkLogColumnsSetting.get();
898
- delete columns.product;
899
- networkLogColumnsSetting.set(columns);
900
- }
901
- updateVersionFrom25To26() {
902
- const oldSetting = Settings.instance().createSetting('messageURLFilters', {});
903
- const urls = Object.keys(oldSetting.get());
904
- const textFilter = urls.map(url => `-url:${url}`).join(' ');
905
- if (textFilter) {
906
- const textFilterSetting = Settings.instance().createSetting('console.textFilter', '');
907
- const suffix = textFilterSetting.get() ? ` ${textFilterSetting.get()}` : '';
908
- textFilterSetting.set(`${textFilter}${suffix}`);
909
- }
910
- removeSetting(oldSetting);
911
- }
912
- updateVersionFrom26To27() {
913
- function renameKeyInObjectSetting(settingName, from, to) {
914
- const setting = Settings.instance().createSetting(settingName, {});
915
- const value = setting.get();
916
- if (from in value) {
917
- value[to] = value[from];
918
- delete value[from];
919
- setting.set(value);
920
- }
921
- }
922
- function renameInStringSetting(settingName, from, to) {
923
- const setting = Settings.instance().createSetting(settingName, '');
924
- const value = setting.get();
925
- if (value === from) {
926
- setting.set(to);
927
- }
928
- }
929
- renameKeyInObjectSetting('panel-tabOrder', 'audits2', 'audits');
930
- renameKeyInObjectSetting('panel-closeableTabs', 'audits2', 'audits');
931
- renameInStringSetting('panel-selectedTab', 'audits2', 'audits');
932
- }
933
- updateVersionFrom27To28() {
934
- const setting = Settings.instance().createSetting('uiTheme', 'systemPreferred');
935
- if (setting.get() === 'default') {
936
- setting.set('systemPreferred');
937
- }
938
- }
939
- updateVersionFrom28To29() {
940
- function renameKeyInObjectSetting(settingName, from, to) {
941
- const setting = Settings.instance().createSetting(settingName, {});
942
- const value = setting.get();
943
- if (from in value) {
944
- value[to] = value[from];
945
- delete value[from];
946
- setting.set(value);
947
- }
948
- }
949
- function renameInStringSetting(settingName, from, to) {
950
- const setting = Settings.instance().createSetting(settingName, '');
951
- const value = setting.get();
952
- if (value === from) {
953
- setting.set(to);
954
- }
955
- }
956
- renameKeyInObjectSetting('panel-tabOrder', 'audits', 'lighthouse');
957
- renameKeyInObjectSetting('panel-closeableTabs', 'audits', 'lighthouse');
958
- renameInStringSetting('panel-selectedTab', 'audits', 'lighthouse');
959
- }
960
- updateVersionFrom29To30() {
961
- // Create new location agnostic setting
962
- const closeableTabSetting = Settings.instance().createSetting('closeableTabs', {});
963
- // Read current settings
964
- const panelCloseableTabSetting = Settings.instance().createSetting('panel-closeableTabs', {});
965
- const drawerCloseableTabSetting = Settings.instance().createSetting('drawer-view-closeableTabs', {});
966
- const openTabsInPanel = panelCloseableTabSetting.get();
967
- const openTabsInDrawer = panelCloseableTabSetting.get();
968
- // Set #value of new setting
969
- const newValue = Object.assign(openTabsInDrawer, openTabsInPanel);
970
- closeableTabSetting.set(newValue);
971
- // Remove old settings
972
- removeSetting(panelCloseableTabSetting);
973
- removeSetting(drawerCloseableTabSetting);
974
- }
975
- updateVersionFrom30To31() {
976
- // Remove recorder_recordings setting that was used for storing recordings
977
- // by an old recorder experiment.
978
- const recordingsSetting = Settings.instance().createSetting('recorder_recordings', []);
979
- removeSetting(recordingsSetting);
980
- }
981
- updateVersionFrom31To32() {
982
- // Introduce the new 'resourceTypeName' property on stored breakpoints. Prior to
983
- // this change we synchronized the breakpoint only by URL, but since we don't
984
- // know on which resource type the given breakpoint was set, we just assume
985
- // 'script' here to keep things simple.
986
- const breakpointsSetting = Settings.instance().createLocalSetting('breakpoints', []);
987
- const breakpoints = breakpointsSetting.get();
988
- for (const breakpoint of breakpoints) {
989
- breakpoint['resourceTypeName'] = 'script';
990
- }
991
- breakpointsSetting.set(breakpoints);
992
- }
993
- updateVersionFrom32To33() {
994
- const previouslyViewedFilesSetting = Settings.instance().createLocalSetting('previouslyViewedFiles', []);
995
- let previouslyViewedFiles = previouslyViewedFilesSetting.get();
996
- // Discard old 'previouslyViewedFiles' items that don't have a 'url' property.
997
- previouslyViewedFiles = previouslyViewedFiles.filter((previouslyViewedFile) => 'url' in previouslyViewedFile);
998
- // Introduce the new 'resourceTypeName' property on previously viewed files.
999
- // Prior to this change we only keyed them based on the URL, but since we
1000
- // don't know which resource type the given file had, we just assume 'script'
1001
- // here to keep things simple.
1002
- for (const previouslyViewedFile of previouslyViewedFiles) {
1003
- previouslyViewedFile['resourceTypeName'] = 'script';
1004
- }
1005
- previouslyViewedFilesSetting.set(previouslyViewedFiles);
1006
- }
1007
- updateVersionFrom33To34() {
1008
- // Introduces the 'isLogpoint' property on stored breakpoints. This information was
1009
- // previously encoded in the 'condition' itself. This migration leaves the condition
1010
- // alone but ensures that 'isLogpoint' is accurate for already stored breakpoints.
1011
- // This enables us to use the 'isLogpoint' property in code.
1012
- // A separate migration will remove the special encoding from the condition itself
1013
- // once all refactorings are done.
1014
- // The prefix/suffix are hardcoded here, since these constants will be removed in
1015
- // the future.
1016
- const logpointPrefix = '/** DEVTOOLS_LOGPOINT */ console.log(';
1017
- const logpointSuffix = ')';
1018
- const breakpointsSetting = Settings.instance().createLocalSetting('breakpoints', []);
1019
- const breakpoints = breakpointsSetting.get();
1020
- for (const breakpoint of breakpoints) {
1021
- const isLogpoint = breakpoint.condition.startsWith(logpointPrefix) && breakpoint.condition.endsWith(logpointSuffix);
1022
- breakpoint['isLogpoint'] = isLogpoint;
1023
- }
1024
- breakpointsSetting.set(breakpoints);
1025
- }
1026
- updateVersionFrom34To35() {
1027
- // Uses the 'isLogpoint' property on stored breakpoints to remove the prefix/suffix
1028
- // from logpoints. This way, we store the entered log point condition as the user
1029
- // entered it.
1030
- // The prefix/suffix are hardcoded here, since these constants will be removed in
1031
- // the future.
1032
- const logpointPrefix = '/** DEVTOOLS_LOGPOINT */ console.log(';
1033
- const logpointSuffix = ')';
1034
- const breakpointsSetting = Settings.instance().createLocalSetting('breakpoints', []);
1035
- const breakpoints = breakpointsSetting.get();
1036
- for (const breakpoint of breakpoints) {
1037
- const { condition, isLogpoint } = breakpoint;
1038
- if (isLogpoint) {
1039
- breakpoint.condition = condition.slice(logpointPrefix.length, condition.length - logpointSuffix.length);
1040
- }
1041
- }
1042
- breakpointsSetting.set(breakpoints);
1043
- }
1044
- updateVersionFrom35To36() {
1045
- // We have changed the default from 'false' to 'true' and this updates the existing setting just for once.
1046
- Settings.instance().createSetting('showThirdPartyIssues', true).set(true);
1047
- }
1048
- updateVersionFrom36To37() {
1049
- const updateStorage = (storage) => {
1050
- for (const key of storage.keys()) {
1051
- const normalizedKey = Settings.normalizeSettingName(key);
1052
- if (normalizedKey !== key) {
1053
- const value = storage.get(key);
1054
- removeSetting({ name: key, storage });
1055
- storage.set(normalizedKey, value);
1056
- }
1057
- }
1058
- };
1059
- updateStorage(Settings.instance().globalStorage);
1060
- updateStorage(Settings.instance().syncedStorage);
1061
- updateStorage(Settings.instance().localStorage);
1062
- for (const key of Settings.instance().globalStorage.keys()) {
1063
- if ((key.startsWith('data-grid-') && key.endsWith('-column-weights')) || key.endsWith('-tab-order') ||
1064
- key === 'views-location-override' || key === 'closeable-tabs') {
1065
- const setting = Settings.instance().createSetting(key, {});
1066
- setting.set(Platform.StringUtilities.toKebabCaseKeys(setting.get()));
1067
- }
1068
- if (key.endsWith('-selected-tab')) {
1069
- const setting = Settings.instance().createSetting(key, '');
1070
- setting.set(Platform.StringUtilities.toKebabCase(setting.get()));
1071
- }
1072
- }
1073
- }
1074
- updateVersionFrom37To38() {
1075
- const getConsoleInsightsEnabledSetting = () => {
1076
- try {
1077
- return moduleSetting('console-insights-enabled');
1078
- }
1079
- catch {
1080
- return;
1081
- }
1082
- };
1083
- const consoleInsightsEnabled = getConsoleInsightsEnabledSetting();
1084
- const onboardingFinished = Settings.instance().createLocalSetting('console-insights-onboarding-finished', false);
1085
- if (consoleInsightsEnabled && consoleInsightsEnabled.get() === true && onboardingFinished.get() === false) {
1086
- consoleInsightsEnabled.set(false);
1087
- }
1088
- if (consoleInsightsEnabled && consoleInsightsEnabled.get() === false) {
1089
- onboardingFinished.set(false);
1090
- }
1091
- }
1092
- updateVersionFrom38To39() {
1093
- const PREFERRED_NETWORK_COND = 'preferred-network-condition';
1094
- // crrev.com/c/5582013 renamed "Slow 3G" to "3G" and "Fast 3G" => "Slow 4G".
1095
- // Any users with the old values need to have them moved to avoid breaking DevTools.
1096
- // Note: we load the raw value via the globalStorage here because
1097
- // `createSetting` creates if it is not present, and we do not want that;
1098
- // we only want to update existing, old values.
1099
- const setting = Settings.instance().globalStorage.get(PREFERRED_NETWORK_COND);
1100
- if (!setting) {
1101
- return;
1102
- }
1103
- try {
1104
- const networkSetting = JSON.parse(setting);
1105
- if (networkSetting.title === 'Slow 3G') {
1106
- networkSetting.title = '3G';
1107
- networkSetting.i18nTitleKey = '3G';
1108
- Settings.instance().globalStorage.set(PREFERRED_NETWORK_COND, JSON.stringify(networkSetting));
1109
- }
1110
- else if (networkSetting.title === 'Fast 3G') {
1111
- networkSetting.title = 'Slow 4G';
1112
- networkSetting.i18nTitleKey = 'Slow 4G';
1113
- Settings.instance().globalStorage.set(PREFERRED_NETWORK_COND, JSON.stringify(networkSetting));
1114
- }
1115
- }
1116
- catch {
1117
- // If parsing the setting threw, it's in some invalid state, so remove it.
1118
- Settings.instance().globalStorage.remove(PREFERRED_NETWORK_COND);
1119
- }
1120
- }
1121
- /**
1122
- * There are two related migrations here for handling network throttling persistence:
1123
- * 1. Go through all user custom throttling conditions and add a `key` property.
1124
- * 2. If the user has a 'preferred-network-condition' setting, take the value
1125
- * of that and set the right key for the new 'active-network-condition-key'
1126
- * setting. Then, remove the now-obsolete 'preferred-network-condition'
1127
- * setting.
1128
- */
1129
- updateVersionFrom39To40() {
1130
- const hasCustomNetworkConditionsSetting = () => {
1131
- try {
1132
- // this will error if it does not exist
1133
- moduleSetting('custom-network-conditions');
1134
- return true;
1135
- }
1136
- catch {
1137
- return false;
1138
- }
1139
- };
1140
- if (hasCustomNetworkConditionsSetting()) {
1141
- /**
1142
- * We added keys to custom network throttling conditions in M140, so we
1143
- * need to go through any existing profiles the user has and add the key to
1144
- * them.
1145
- * We can't use the SDK.NetworkManager.Condition here as it would be a
1146
- * circular dependency. All that matters is that these conditions are
1147
- * objects, and we need to set the right key on each one. The actual keys &
1148
- * values in the object are not important.
1149
- */
1150
- const conditionsSetting = moduleSetting('custom-network-conditions');
1151
- const customConditions = conditionsSetting.get();
1152
- if (customConditions?.length > 0) {
1153
- customConditions.forEach((condition, i) => {
1154
- // This could be run multiple times, make sure that we don't override any
1155
- // existing keys.
1156
- if (condition.key) {
1157
- return;
1158
- }
1159
- // The format of this key is important: see
1160
- // SDK.NetworkManager.UserDefinedThrottlingConditionKey
1161
- condition.key = `USER_CUSTOM_SETTING_${i + 1}`;
1162
- });
1163
- conditionsSetting.set(customConditions);
1164
- }
1165
- }
1166
- // Additionally, we need to make sure we persist the right throttling for
1167
- // users who have a preferred-network-condition set.
1168
- const PREFERRED_NETWORK_COND_SETTING = 'preferred-network-condition';
1169
- // We shipped a change to how we persist network throttling conditions and
1170
- // added a `key` property rather than rely on any user visible string which
1171
- // is more likely to change. This migration step tries to update the
1172
- // setting for users, or removes it if we fail, so they start fresh next
1173
- // time they load DevTools.
1174
- const setting = Settings.instance().globalStorage.get(PREFERRED_NETWORK_COND_SETTING);
1175
- if (!setting) {
1176
- return;
1177
- }
1178
- // The keys here are the UI Strings as of July 2025 (shipped in M139).
1179
- // This migration shipped in M140. The values are the values of the
1180
- // `PredefinedThrottlingConditionKey` in SDK.NetworkManager.
1181
- const UI_STRING_TO_NEW_KEY = {
1182
- 'Fast 4G': 'SPEED_FAST_4G',
1183
- 'Slow 4G': 'SPEED_SLOW_4G',
1184
- '3G': 'SPEED_3G',
1185
- 'No throttling': 'NO_THROTTLING',
1186
- Offline: 'OFFLINE'
1187
- };
1188
- try {
1189
- const networkSetting = JSON.parse(setting);
1190
- if (networkSetting.i18nTitleKey && UI_STRING_TO_NEW_KEY.hasOwnProperty(networkSetting.i18nTitleKey)) {
1191
- const key = UI_STRING_TO_NEW_KEY[networkSetting.i18nTitleKey];
1192
- // The second argument is the default value, so it's important that we
1193
- // set this to the default, and then update it to the new key.
1194
- const newSetting = Settings.instance().createSetting('active-network-condition-key', 'NO_THROTTLING');
1195
- newSetting.set(key);
1196
- }
1197
- }
1198
- finally {
1199
- // This setting is now not used, so we can remove it.
1200
- Settings.instance().globalStorage.remove(PREFERRED_NETWORK_COND_SETTING);
1201
- }
1202
- }
1203
- /*
1204
- * Any new migration should be added before this comment.
1205
- *
1206
- * IMPORTANT: Migrations must be idempotent, since they may be applied
1207
- * multiple times! E.g. when renaming a setting one has to check that the
1208
- * a setting with the new name does not yet exist.
1209
- * ----------------------------------------------------------------------- */
1210
- migrateSettingsFromLocalStorage() {
1211
- // This step migrates all the settings except for the ones below into the browser profile.
1212
- const localSettings = new Set([
1213
- 'advancedSearchConfig',
1214
- 'breakpoints',
1215
- 'consoleHistory',
1216
- 'domBreakpoints',
1217
- 'eventListenerBreakpoints',
1218
- 'fileSystemMapping',
1219
- 'lastSelectedSourcesSidebarPaneTab',
1220
- 'previouslyViewedFiles',
1221
- 'savedURLs',
1222
- 'watchExpressions',
1223
- 'workspaceExcludedFolders',
1224
- 'xhrBreakpoints',
1225
- ]);
1226
- if (!window.localStorage) {
1227
- return;
1228
- }
1229
- for (const key in window.localStorage) {
1230
- if (localSettings.has(key)) {
1231
- continue;
1232
- }
1233
- const value = window.localStorage[key];
1234
- window.localStorage.removeItem(key);
1235
- Settings.instance().globalStorage.set(key, value);
1236
- }
1237
- }
1238
- clearBreakpointsWhenTooMany(breakpointsSetting, maxBreakpointsCount) {
1239
- // If there are too many breakpoints in a storage, it is likely due to a recent bug that caused
1240
- // periodical breakpoints duplication leading to inspector slowness.
1241
- if (breakpointsSetting.get().length > maxBreakpointsCount) {
1242
- breakpointsSetting.set([]);
1243
- }
1244
- }
1245
- }
1246
- export function moduleSetting(settingName) {
1247
- return Settings.instance().moduleSetting(settingName);
1248
- }
1249
- export function settingForTest(settingName) {
1250
- return Settings.instance().settingForTest(settingName);
1251
- }
1252
- export { getLocalizedSettingsCategory, maybeRemoveSettingExtension, registerSettingExtension, registerSettingsForTest, resetSettings, };