devtools-tracing 1.0.0

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 (397) hide show
  1. package/generate.ts +643 -0
  2. package/index.ts +16 -0
  3. package/lib/front_end/core/common/App.ts +7 -0
  4. package/lib/front_end/core/common/AppProvider.ts +32 -0
  5. package/lib/front_end/core/common/Base64.ts +47 -0
  6. package/lib/front_end/core/common/CharacterIdMap.ts +30 -0
  7. package/lib/front_end/core/common/Color.ts +2506 -0
  8. package/lib/front_end/core/common/ColorConverter.ts +402 -0
  9. package/lib/front_end/core/common/ColorUtils.ts +252 -0
  10. package/lib/front_end/core/common/Console.ts +114 -0
  11. package/lib/front_end/core/common/Debouncer.ts +15 -0
  12. package/lib/front_end/core/common/EventTarget.ts +52 -0
  13. package/lib/front_end/core/common/Gzip.ts +74 -0
  14. package/lib/front_end/core/common/JavaScriptMetaData.ts +29 -0
  15. package/lib/front_end/core/common/Lazy.ts +31 -0
  16. package/lib/front_end/core/common/Linkifier.ts +55 -0
  17. package/lib/front_end/core/common/MapWithDefault.ts +26 -0
  18. package/lib/front_end/core/common/Mutex.ts +55 -0
  19. package/lib/front_end/core/common/Object.ts +145 -0
  20. package/lib/front_end/core/common/ParsedURL.ts +554 -0
  21. package/lib/front_end/core/common/Progress.ts +180 -0
  22. package/lib/front_end/core/common/QueryParamHandler.ts +7 -0
  23. package/lib/front_end/core/common/ResolverBase.ts +85 -0
  24. package/lib/front_end/core/common/ResourceType.ts +588 -0
  25. package/lib/front_end/core/common/ReturnToPanel.ts +17 -0
  26. package/lib/front_end/core/common/Revealer.ts +192 -0
  27. package/lib/front_end/core/common/Runnable.ts +41 -0
  28. package/lib/front_end/core/common/SegmentedRange.ts +87 -0
  29. package/lib/front_end/core/common/SettingRegistration.ts +339 -0
  30. package/lib/front_end/core/common/Settings.ts +1497 -0
  31. package/lib/front_end/core/common/SimpleHistoryManager.ts +124 -0
  32. package/lib/front_end/core/common/StringOutputStream.ts +26 -0
  33. package/lib/front_end/core/common/TextDictionary.ts +48 -0
  34. package/lib/front_end/core/common/Throttler.ts +99 -0
  35. package/lib/front_end/core/common/Trie.ts +152 -0
  36. package/lib/front_end/core/common/Worker.ts +60 -0
  37. package/lib/front_end/core/common/common.ts +81 -0
  38. package/lib/front_end/core/host/AidaClient.ts +733 -0
  39. package/lib/front_end/core/host/GdpClient.ts +316 -0
  40. package/lib/front_end/core/host/InspectorFrontendHost.ts +648 -0
  41. package/lib/front_end/core/host/InspectorFrontendHostAPI.ts +551 -0
  42. package/lib/front_end/core/host/Platform.ts +76 -0
  43. package/lib/front_end/core/host/ResourceLoader.ts +282 -0
  44. package/lib/front_end/core/host/UserMetrics.ts +1230 -0
  45. package/lib/front_end/core/host/host.ts +23 -0
  46. package/lib/front_end/core/i18n/ByteUtilities.ts +82 -0
  47. package/lib/front_end/core/i18n/DevToolsLocale.ts +87 -0
  48. package/lib/front_end/core/i18n/NumberFormatter.ts +82 -0
  49. package/lib/front_end/core/i18n/i18n.ts +17 -0
  50. package/lib/front_end/core/i18n/i18nImpl.ts +204 -0
  51. package/lib/front_end/core/i18n/i18nTypes.ts +10 -0
  52. package/lib/front_end/core/i18n/locales.js +14 -0
  53. package/lib/front_end/core/i18n/time-utilities.ts +174 -0
  54. package/lib/front_end/core/platform/ArrayUtilities.ts +271 -0
  55. package/lib/front_end/core/platform/Brand.ts +23 -0
  56. package/lib/front_end/core/platform/Constructor.ts +10 -0
  57. package/lib/front_end/core/platform/DOMUtilities.ts +138 -0
  58. package/lib/front_end/core/platform/DateUtilities.ts +15 -0
  59. package/lib/front_end/core/platform/DevToolsPath.ts +53 -0
  60. package/lib/front_end/core/platform/KeyboardUtilities.ts +38 -0
  61. package/lib/front_end/core/platform/MapUtilities.ts +95 -0
  62. package/lib/front_end/core/platform/MimeType.ts +175 -0
  63. package/lib/front_end/core/platform/NumberUtilities.ts +80 -0
  64. package/lib/front_end/core/platform/StringUtilities.ts +588 -0
  65. package/lib/front_end/core/platform/Timing.ts +17 -0
  66. package/lib/front_end/core/platform/TypedArrayUtilities.ts +189 -0
  67. package/lib/front_end/core/platform/TypescriptUtilities.ts +86 -0
  68. package/lib/front_end/core/platform/UIString.ts +39 -0
  69. package/lib/front_end/core/platform/UserVisibleError.ts +28 -0
  70. package/lib/front_end/core/platform/platform.ts +45 -0
  71. package/lib/front_end/core/protocol_client/ConnectionTransport.ts +26 -0
  72. package/lib/front_end/core/protocol_client/InspectorBackend.ts +1050 -0
  73. package/lib/front_end/core/protocol_client/NodeURL.ts +42 -0
  74. package/lib/front_end/core/protocol_client/protocol_client.ts +13 -0
  75. package/lib/front_end/core/root/Runtime.ts +609 -0
  76. package/lib/front_end/core/root/root.ts +6 -0
  77. package/lib/front_end/core/sdk/AccessibilityModel.ts +353 -0
  78. package/lib/front_end/core/sdk/AnimationModel.ts +1041 -0
  79. package/lib/front_end/core/sdk/AutofillModel.ts +184 -0
  80. package/lib/front_end/core/sdk/CPUProfilerModel.ts +148 -0
  81. package/lib/front_end/core/sdk/CPUThrottlingManager.ts +282 -0
  82. package/lib/front_end/core/sdk/CSSContainerQuery.ts +139 -0
  83. package/lib/front_end/core/sdk/CSSFontFace.ts +40 -0
  84. package/lib/front_end/core/sdk/CSSLayer.ts +30 -0
  85. package/lib/front_end/core/sdk/CSSMatchedStyles.ts +1646 -0
  86. package/lib/front_end/core/sdk/CSSMedia.ts +121 -0
  87. package/lib/front_end/core/sdk/CSSMetadata.ts +1647 -0
  88. package/lib/front_end/core/sdk/CSSModel.ts +1128 -0
  89. package/lib/front_end/core/sdk/CSSProperty.ts +384 -0
  90. package/lib/front_end/core/sdk/CSSPropertyParser.ts +681 -0
  91. package/lib/front_end/core/sdk/CSSPropertyParserMatchers.ts +1395 -0
  92. package/lib/front_end/core/sdk/CSSQuery.ts +72 -0
  93. package/lib/front_end/core/sdk/CSSRule.ts +465 -0
  94. package/lib/front_end/core/sdk/CSSScope.ts +30 -0
  95. package/lib/front_end/core/sdk/CSSStartingStyle.ts +29 -0
  96. package/lib/front_end/core/sdk/CSSStyleDeclaration.ts +313 -0
  97. package/lib/front_end/core/sdk/CSSStyleSheetHeader.ts +196 -0
  98. package/lib/front_end/core/sdk/CSSSupports.ts +33 -0
  99. package/lib/front_end/core/sdk/CategorizedBreakpoint.ts +64 -0
  100. package/lib/front_end/core/sdk/ChildTargetManager.ts +314 -0
  101. package/lib/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +62 -0
  102. package/lib/front_end/core/sdk/Connections.ts +293 -0
  103. package/lib/front_end/core/sdk/ConsoleModel.ts +808 -0
  104. package/lib/front_end/core/sdk/ConsoleModelTypes.ts +15 -0
  105. package/lib/front_end/core/sdk/Cookie.ts +319 -0
  106. package/lib/front_end/core/sdk/CookieModel.ts +239 -0
  107. package/lib/front_end/core/sdk/CookieParser.ts +185 -0
  108. package/lib/front_end/core/sdk/DOMDebuggerModel.ts +787 -0
  109. package/lib/front_end/core/sdk/DOMModel.ts +1961 -0
  110. package/lib/front_end/core/sdk/DebuggerModel.ts +1605 -0
  111. package/lib/front_end/core/sdk/EmulationModel.ts +648 -0
  112. package/lib/front_end/core/sdk/EnhancedTracesParser.ts +515 -0
  113. package/lib/front_end/core/sdk/EventBreakpointsModel.ts +183 -0
  114. package/lib/front_end/core/sdk/FrameAssociated.ts +11 -0
  115. package/lib/front_end/core/sdk/FrameManager.ts +259 -0
  116. package/lib/front_end/core/sdk/HeapProfilerModel.ts +225 -0
  117. package/lib/front_end/core/sdk/HttpReasonPhraseStrings.ts +77 -0
  118. package/lib/front_end/core/sdk/IOModel.ts +91 -0
  119. package/lib/front_end/core/sdk/IsolateManager.ts +257 -0
  120. package/lib/front_end/core/sdk/IssuesModel.ts +70 -0
  121. package/lib/front_end/core/sdk/LayerTreeBase.ts +169 -0
  122. package/lib/front_end/core/sdk/LogModel.ts +56 -0
  123. package/lib/front_end/core/sdk/NetworkManager.ts +2823 -0
  124. package/lib/front_end/core/sdk/NetworkRequest.ts +2253 -0
  125. package/lib/front_end/core/sdk/OverlayColorGenerator.ts +52 -0
  126. package/lib/front_end/core/sdk/OverlayModel.ts +1011 -0
  127. package/lib/front_end/core/sdk/OverlayPersistentHighlighter.ts +522 -0
  128. package/lib/front_end/core/sdk/PageLoad.ts +35 -0
  129. package/lib/front_end/core/sdk/PageResourceLoader.ts +435 -0
  130. package/lib/front_end/core/sdk/PaintProfiler.ts +110 -0
  131. package/lib/front_end/core/sdk/PerformanceMetricsModel.ts +84 -0
  132. package/lib/front_end/core/sdk/PreloadingModel.ts +863 -0
  133. package/lib/front_end/core/sdk/RehydratingConnection.ts +386 -0
  134. package/lib/front_end/core/sdk/RehydratingObject.ts +66 -0
  135. package/lib/front_end/core/sdk/RemoteObject.ts +1160 -0
  136. package/lib/front_end/core/sdk/Resource.ts +232 -0
  137. package/lib/front_end/core/sdk/ResourceTreeModel.ts +1160 -0
  138. package/lib/front_end/core/sdk/RuntimeModel.ts +732 -0
  139. package/lib/front_end/core/sdk/SDKModel.ts +65 -0
  140. package/lib/front_end/core/sdk/ScopeTreeCache.ts +45 -0
  141. package/lib/front_end/core/sdk/ScreenCaptureModel.ts +255 -0
  142. package/lib/front_end/core/sdk/Script.ts +534 -0
  143. package/lib/front_end/core/sdk/SecurityOriginManager.ts +76 -0
  144. package/lib/front_end/core/sdk/ServerSentEvents.ts +80 -0
  145. package/lib/front_end/core/sdk/ServerSentEventsProtocol.ts +122 -0
  146. package/lib/front_end/core/sdk/ServerTiming.ts +260 -0
  147. package/lib/front_end/core/sdk/ServiceWorkerCacheModel.ts +377 -0
  148. package/lib/front_end/core/sdk/ServiceWorkerManager.ts +605 -0
  149. package/lib/front_end/core/sdk/SourceMap.ts +867 -0
  150. package/lib/front_end/core/sdk/SourceMapCache.ts +54 -0
  151. package/lib/front_end/core/sdk/SourceMapFunctionRanges.ts +156 -0
  152. package/lib/front_end/core/sdk/SourceMapManager.ts +239 -0
  153. package/lib/front_end/core/sdk/SourceMapScopeChainEntry.ts +189 -0
  154. package/lib/front_end/core/sdk/SourceMapScopesInfo.ts +508 -0
  155. package/lib/front_end/core/sdk/StorageBucketsModel.ts +204 -0
  156. package/lib/front_end/core/sdk/StorageKeyManager.ts +98 -0
  157. package/lib/front_end/core/sdk/Target.ts +332 -0
  158. package/lib/front_end/core/sdk/TargetManager.ts +453 -0
  159. package/lib/front_end/core/sdk/TraceObject.ts +61 -0
  160. package/lib/front_end/core/sdk/WebAuthnModel.ts +104 -0
  161. package/lib/front_end/core/sdk/sdk.ts +174 -0
  162. package/lib/front_end/entrypoints/formatter_worker/FormatterActions.ts +59 -0
  163. package/lib/front_end/generated/InspectorBackendCommands.js +1617 -0
  164. package/lib/front_end/generated/SupportedCSSProperties.js +7512 -0
  165. package/lib/front_end/generated/protocol-proxy-api.d.ts +5022 -0
  166. package/lib/front_end/generated/protocol.ts +22014 -0
  167. package/lib/front_end/models/cpu_profile/CPUProfileDataModel.ts +571 -0
  168. package/lib/front_end/models/cpu_profile/ProfileTreeModel.ts +103 -0
  169. package/lib/front_end/models/cpu_profile/cpu_profile.ts +11 -0
  170. package/lib/front_end/models/formatter/FormatterWorkerPool.ts +219 -0
  171. package/lib/front_end/models/formatter/ScriptFormatter.ts +112 -0
  172. package/lib/front_end/models/formatter/formatter.ts +8 -0
  173. package/lib/front_end/models/text_utils/CodeMirrorUtils.ts +37 -0
  174. package/lib/front_end/models/text_utils/ContentData.ts +199 -0
  175. package/lib/front_end/models/text_utils/ContentProvider.ts +68 -0
  176. package/lib/front_end/models/text_utils/StaticContentProvider.ts +49 -0
  177. package/lib/front_end/models/text_utils/StreamingContentData.ts +108 -0
  178. package/lib/front_end/models/text_utils/Text.ts +90 -0
  179. package/lib/front_end/models/text_utils/TextCursor.ts +44 -0
  180. package/lib/front_end/models/text_utils/TextRange.ts +266 -0
  181. package/lib/front_end/models/text_utils/TextUtils.ts +401 -0
  182. package/lib/front_end/models/text_utils/WasmDisassembly.ts +87 -0
  183. package/lib/front_end/models/text_utils/text_utils.ts +27 -0
  184. package/lib/front_end/models/trace/EntityMapper.ts +141 -0
  185. package/lib/front_end/models/trace/EventsSerializer.ts +101 -0
  186. package/lib/front_end/models/trace/LanternComputationData.ts +438 -0
  187. package/lib/front_end/models/trace/ModelImpl.ts +236 -0
  188. package/lib/front_end/models/trace/Name.ts +136 -0
  189. package/lib/front_end/models/trace/Processor.ts +652 -0
  190. package/lib/front_end/models/trace/Styles.ts +1138 -0
  191. package/lib/front_end/models/trace/extras/FilmStrip.ts +78 -0
  192. package/lib/front_end/models/trace/extras/MainThreadActivity.ts +86 -0
  193. package/lib/front_end/models/trace/extras/ScriptDuplication.ts +236 -0
  194. package/lib/front_end/models/trace/extras/StackTraceForEvent.ts +203 -0
  195. package/lib/front_end/models/trace/extras/ThirdParties.ts +164 -0
  196. package/lib/front_end/models/trace/extras/TraceFilter.ts +62 -0
  197. package/lib/front_end/models/trace/extras/TraceTree.ts +701 -0
  198. package/lib/front_end/models/trace/extras/extras.ts +11 -0
  199. package/lib/front_end/models/trace/handlers/AnimationFramesHandler.ts +128 -0
  200. package/lib/front_end/models/trace/handlers/AnimationHandler.ts +36 -0
  201. package/lib/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +239 -0
  202. package/lib/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +183 -0
  203. package/lib/front_end/models/trace/handlers/DOMStatsHandler.ts +31 -0
  204. package/lib/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +306 -0
  205. package/lib/front_end/models/trace/handlers/FlowsHandler.ts +175 -0
  206. package/lib/front_end/models/trace/handlers/FramesHandler.ts +571 -0
  207. package/lib/front_end/models/trace/handlers/GPUHandler.ts +50 -0
  208. package/lib/front_end/models/trace/handlers/ImagePaintingHandler.ts +183 -0
  209. package/lib/front_end/models/trace/handlers/InitiatorsHandler.ts +193 -0
  210. package/lib/front_end/models/trace/handlers/InvalidationsHandler.ts +168 -0
  211. package/lib/front_end/models/trace/handlers/LargestImagePaintHandler.ts +109 -0
  212. package/lib/front_end/models/trace/handlers/LargestTextPaintHandler.ts +35 -0
  213. package/lib/front_end/models/trace/handlers/LayerTreeHandler.ts +123 -0
  214. package/lib/front_end/models/trace/handlers/LayoutShiftsHandler.ts +573 -0
  215. package/lib/front_end/models/trace/handlers/MemoryHandler.ts +31 -0
  216. package/lib/front_end/models/trace/handlers/MetaHandler.ts +525 -0
  217. package/lib/front_end/models/trace/handlers/ModelHandlers.ts +34 -0
  218. package/lib/front_end/models/trace/handlers/NetworkRequestsHandler.ts +672 -0
  219. package/lib/front_end/models/trace/handlers/PageFramesHandler.ts +52 -0
  220. package/lib/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +460 -0
  221. package/lib/front_end/models/trace/handlers/RendererHandler.ts +428 -0
  222. package/lib/front_end/models/trace/handlers/SamplesHandler.ts +271 -0
  223. package/lib/front_end/models/trace/handlers/ScreenshotsHandler.ts +122 -0
  224. package/lib/front_end/models/trace/handlers/ScriptsHandler.ts +336 -0
  225. package/lib/front_end/models/trace/handlers/SelectorStatsHandler.ts +110 -0
  226. package/lib/front_end/models/trace/handlers/Threads.ts +139 -0
  227. package/lib/front_end/models/trace/handlers/UserInteractionsHandler.ts +400 -0
  228. package/lib/front_end/models/trace/handlers/UserTimingsHandler.ts +233 -0
  229. package/lib/front_end/models/trace/handlers/WarningsHandler.ts +162 -0
  230. package/lib/front_end/models/trace/handlers/WorkersHandler.ts +45 -0
  231. package/lib/front_end/models/trace/handlers/handlers.ts +8 -0
  232. package/lib/front_end/models/trace/handlers/helpers.ts +196 -0
  233. package/lib/front_end/models/trace/handlers/types.ts +75 -0
  234. package/lib/front_end/models/trace/helpers/Extensions.ts +54 -0
  235. package/lib/front_end/models/trace/helpers/Network.ts +129 -0
  236. package/lib/front_end/models/trace/helpers/SamplesIntegrator.ts +544 -0
  237. package/lib/front_end/models/trace/helpers/SyntheticEvents.ts +87 -0
  238. package/lib/front_end/models/trace/helpers/Timing.ts +248 -0
  239. package/lib/front_end/models/trace/helpers/Trace.ts +928 -0
  240. package/lib/front_end/models/trace/helpers/TreeHelpers.ts +320 -0
  241. package/lib/front_end/models/trace/helpers/helpers.ts +11 -0
  242. package/lib/front_end/models/trace/insights/CLSCulprits.ts +668 -0
  243. package/lib/front_end/models/trace/insights/Cache.ts +269 -0
  244. package/lib/front_end/models/trace/insights/Common.ts +453 -0
  245. package/lib/front_end/models/trace/insights/DOMSize.ts +223 -0
  246. package/lib/front_end/models/trace/insights/DocumentLatency.ts +319 -0
  247. package/lib/front_end/models/trace/insights/DuplicatedJavaScript.ts +126 -0
  248. package/lib/front_end/models/trace/insights/FontDisplay.ts +119 -0
  249. package/lib/front_end/models/trace/insights/ForcedReflow.ts +220 -0
  250. package/lib/front_end/models/trace/insights/INPBreakdown.ts +171 -0
  251. package/lib/front_end/models/trace/insights/ImageDelivery.ts +348 -0
  252. package/lib/front_end/models/trace/insights/LCPBreakdown.ts +268 -0
  253. package/lib/front_end/models/trace/insights/LCPDiscovery.ts +237 -0
  254. package/lib/front_end/models/trace/insights/LegacyJavaScript.ts +138 -0
  255. package/lib/front_end/models/trace/insights/Models.ts +22 -0
  256. package/lib/front_end/models/trace/insights/ModernHTTP.ts +257 -0
  257. package/lib/front_end/models/trace/insights/NetworkDependencyTree.ts +726 -0
  258. package/lib/front_end/models/trace/insights/RenderBlocking.ts +257 -0
  259. package/lib/front_end/models/trace/insights/SlowCSSSelector.ts +175 -0
  260. package/lib/front_end/models/trace/insights/Statistics.ts +101 -0
  261. package/lib/front_end/models/trace/insights/ThirdParties.ts +130 -0
  262. package/lib/front_end/models/trace/insights/Viewport.ts +138 -0
  263. package/lib/front_end/models/trace/insights/insights.ts +10 -0
  264. package/lib/front_end/models/trace/insights/types.ts +157 -0
  265. package/lib/front_end/models/trace/lantern/core/LanternError.ts +7 -0
  266. package/lib/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +619 -0
  267. package/lib/front_end/models/trace/lantern/core/core.ts +6 -0
  268. package/lib/front_end/models/trace/lantern/graph/BaseNode.ts +345 -0
  269. package/lib/front_end/models/trace/lantern/graph/CPUNode.ts +80 -0
  270. package/lib/front_end/models/trace/lantern/graph/NetworkNode.ts +101 -0
  271. package/lib/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +636 -0
  272. package/lib/front_end/models/trace/lantern/graph/graph.ts +8 -0
  273. package/lib/front_end/models/trace/lantern/lantern.ts +17 -0
  274. package/lib/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +187 -0
  275. package/lib/front_end/models/trace/lantern/metrics/Interactive.ts +88 -0
  276. package/lib/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +92 -0
  277. package/lib/front_end/models/trace/lantern/metrics/MaxPotentialFID.ts +72 -0
  278. package/lib/front_end/models/trace/lantern/metrics/Metric.ts +126 -0
  279. package/lib/front_end/models/trace/lantern/metrics/SpeedIndex.ts +126 -0
  280. package/lib/front_end/models/trace/lantern/metrics/TBTUtils.ts +82 -0
  281. package/lib/front_end/models/trace/lantern/metrics/TotalBlockingTime.ts +112 -0
  282. package/lib/front_end/models/trace/lantern/metrics/metrics.ts +12 -0
  283. package/lib/front_end/models/trace/lantern/simulation/ConnectionPool.ts +150 -0
  284. package/lib/front_end/models/trace/lantern/simulation/Constants.ts +46 -0
  285. package/lib/front_end/models/trace/lantern/simulation/DNSCache.ts +61 -0
  286. package/lib/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +196 -0
  287. package/lib/front_end/models/trace/lantern/simulation/Simulator.ts +556 -0
  288. package/lib/front_end/models/trace/lantern/simulation/TCPConnection.ts +192 -0
  289. package/lib/front_end/models/trace/lantern/simulation/simulation.ts +10 -0
  290. package/lib/front_end/models/trace/lantern/types/Lantern.ts +220 -0
  291. package/lib/front_end/models/trace/lantern/types/types.ts +5 -0
  292. package/lib/front_end/models/trace/trace.ts +33 -0
  293. package/lib/front_end/models/trace/types/Configuration.ts +110 -0
  294. package/lib/front_end/models/trace/types/Extensions.ts +136 -0
  295. package/lib/front_end/models/trace/types/File.ts +281 -0
  296. package/lib/front_end/models/trace/types/Overlays.ts +138 -0
  297. package/lib/front_end/models/trace/types/Timing.ts +30 -0
  298. package/lib/front_end/models/trace/types/TraceEvents.ts +3277 -0
  299. package/lib/front_end/models/trace/types/types.ts +10 -0
  300. package/lib/front_end/third_party/i18n/LICENSE +202 -0
  301. package/lib/front_end/third_party/i18n/README.chromium +15 -0
  302. package/lib/front_end/third_party/i18n/i18n-impl.ts +61 -0
  303. package/lib/front_end/third_party/i18n/i18n.ts +11 -0
  304. package/lib/front_end/third_party/i18n/localized-string-set.ts +129 -0
  305. package/lib/front_end/third_party/intl-messageformat/LICENSE +33 -0
  306. package/lib/front_end/third_party/intl-messageformat/README.chromium +24 -0
  307. package/lib/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +16 -0
  308. package/lib/front_end/third_party/intl-messageformat/intl-messageformat.ts +6 -0
  309. package/lib/front_end/third_party/intl-messageformat/package/LICENSE.md +33 -0
  310. package/lib/front_end/third_party/intl-messageformat/package/README.md +3 -0
  311. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts +6 -0
  312. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts.map +1 -0
  313. package/lib/front_end/third_party/intl-messageformat/package/index.js +13 -0
  314. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.d.ts +5 -0
  315. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +1710 -0
  316. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +1815 -0
  317. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts +6 -0
  318. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts.map +1 -0
  319. package/lib/front_end/third_party/intl-messageformat/package/lib/index.js +10 -0
  320. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts +34 -0
  321. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts.map +1 -0
  322. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.js +229 -0
  323. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts +28 -0
  324. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts.map +1 -0
  325. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.js +48 -0
  326. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts +34 -0
  327. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts.map +1 -0
  328. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +179 -0
  329. package/lib/front_end/third_party/intl-messageformat/package/package.json +42 -0
  330. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts +34 -0
  331. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts.map +1 -0
  332. package/lib/front_end/third_party/intl-messageformat/package/src/core.js +230 -0
  333. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts +28 -0
  334. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts.map +1 -0
  335. package/lib/front_end/third_party/intl-messageformat/package/src/error.js +51 -0
  336. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts +34 -0
  337. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts.map +1 -0
  338. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.js +182 -0
  339. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/error.d.ts +79 -0
  340. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/index.d.ts +15 -0
  341. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/parser.d.ts +153 -0
  342. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/types.d.ts +139 -0
  343. package/lib/front_end/third_party/legacy-javascript/LICENSE +202 -0
  344. package/lib/front_end/third_party/legacy-javascript/README.chromium +13 -0
  345. package/lib/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +8 -0
  346. package/lib/front_end/third_party/legacy-javascript/legacy-javascript.ts +3 -0
  347. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.d.ts +18 -0
  348. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +943 -0
  349. package/lib/front_end/third_party/legacy-javascript/package.json +8 -0
  350. package/lib/front_end/third_party/legacy-javascript/rebuild.sh +9 -0
  351. package/lib/front_end/third_party/third-party-web/LICENSE +20 -0
  352. package/lib/front_end/third_party/third-party-web/README.chromium +13 -0
  353. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.d.ts +2 -0
  354. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.js +149 -0
  355. package/lib/front_end/third_party/third-party-web/package/LICENSE +20 -0
  356. package/lib/front_end/third_party/third-party-web/package/README.md +929 -0
  357. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +1 -0
  358. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +1 -0
  359. package/lib/front_end/third_party/third-party-web/package/dist/entities-nostats.json +1 -0
  360. package/lib/front_end/third_party/third-party-web/package/dist/entities.json +1 -0
  361. package/lib/front_end/third_party/third-party-web/package/facades.md +46 -0
  362. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.d.ts +1 -0
  363. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +1 -0
  364. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.d.ts +1 -0
  365. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.js +1 -0
  366. package/lib/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +1006 -0
  367. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +139 -0
  368. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +44 -0
  369. package/lib/front_end/third_party/third-party-web/package/lib/entities.test.js +27 -0
  370. package/lib/front_end/third_party/third-party-web/package/lib/index.d.ts +34 -0
  371. package/lib/front_end/third_party/third-party-web/package/lib/index.js +3 -0
  372. package/lib/front_end/third_party/third-party-web/package/lib/index.test.js +246 -0
  373. package/lib/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +36 -0
  374. package/lib/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +9 -0
  375. package/lib/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +5 -0
  376. package/lib/front_end/third_party/third-party-web/package/lib/markdown/template.md +151 -0
  377. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +1 -0
  378. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +1 -0
  379. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +1 -0
  380. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +14 -0
  381. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +1 -0
  382. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +3 -0
  383. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.d.ts +1 -0
  384. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +3 -0
  385. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.d.ts +1 -0
  386. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +3 -0
  387. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.d.ts +1 -0
  388. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +3 -0
  389. package/lib/front_end/third_party/third-party-web/package/nostats-subset.d.ts +1 -0
  390. package/lib/front_end/third_party/third-party-web/package/nostats-subset.js +1 -0
  391. package/lib/front_end/third_party/third-party-web/package/package.json +46 -0
  392. package/lib/front_end/third_party/third-party-web/package.json +8 -0
  393. package/lib/front_end/third_party/third-party-web/rebuild.sh +13 -0
  394. package/lib/front_end/third_party/third-party-web/third-party-web-tsconfig.json +8 -0
  395. package/lib/front_end/third_party/third-party-web/third-party-web.ts +3 -0
  396. package/package.json +24 -0
  397. package/patches/chrome-devtools-frontend+1.0.1533544.patch +187 -0
@@ -0,0 +1,271 @@
1
+ // Copyright 2020 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
+
5
+ export const removeElement = <T>(array: T[], element: T, firstOnly?: boolean): boolean => {
6
+ let index = array.indexOf(element);
7
+ if (index === -1) {
8
+ return false;
9
+ }
10
+ if (firstOnly) {
11
+ array.splice(index, 1);
12
+ return true;
13
+ }
14
+ for (let i = index + 1, n = array.length; i < n; ++i) {
15
+ if (array[i] !== element) {
16
+ array[index++] = array[i];
17
+ }
18
+ }
19
+ array.length = index;
20
+ return true;
21
+ };
22
+
23
+ type NumberComparator = (a: number, b: number) => number;
24
+
25
+ export function swap<T>(array: T[], i1: number, i2: number): void {
26
+ const temp = array[i1];
27
+ array[i1] = array[i2];
28
+ array[i2] = temp;
29
+ }
30
+
31
+ function partition(
32
+ array: number[], comparator: NumberComparator, left: number, right: number, pivotIndex: number): number {
33
+ const pivotValue = array[pivotIndex];
34
+ swap(array, right, pivotIndex);
35
+ let storeIndex = left;
36
+ for (let i = left; i < right; ++i) {
37
+ if (comparator(array[i], pivotValue) < 0) {
38
+ swap(array, storeIndex, i);
39
+ ++storeIndex;
40
+ }
41
+ }
42
+ swap(array, right, storeIndex);
43
+ return storeIndex;
44
+ }
45
+
46
+ function quickSortRange(
47
+ array: number[], comparator: NumberComparator, left: number, right: number, sortWindowLeft: number,
48
+ sortWindowRight: number): void {
49
+ if (right <= left) {
50
+ return;
51
+ }
52
+ const pivotIndex = Math.floor(Math.random() * (right - left)) + left;
53
+ const pivotNewIndex = partition(array, comparator, left, right, pivotIndex);
54
+ if (sortWindowLeft < pivotNewIndex) {
55
+ quickSortRange(array, comparator, left, pivotNewIndex - 1, sortWindowLeft, sortWindowRight);
56
+ }
57
+ if (pivotNewIndex < sortWindowRight) {
58
+ quickSortRange(array, comparator, pivotNewIndex + 1, right, sortWindowLeft, sortWindowRight);
59
+ }
60
+ }
61
+
62
+ export function sortRange(
63
+ array: number[], comparator: NumberComparator, leftBound: number, rightBound: number, sortWindowLeft: number,
64
+ sortWindowRight: number): number[] {
65
+ if (leftBound === 0 && rightBound === (array.length - 1) && sortWindowLeft === 0 && sortWindowRight >= rightBound) {
66
+ array.sort(comparator);
67
+ } else {
68
+ quickSortRange(array, comparator, leftBound, rightBound, sortWindowLeft, sortWindowRight);
69
+ }
70
+ return array;
71
+ }
72
+ export const binaryIndexOf = <T, S>(array: T[], value: S, comparator: (a: S, b: T) => number): number => {
73
+ const index = lowerBound(array, value, comparator);
74
+ return index < array.length && comparator(value, array[index]) === 0 ? index : -1;
75
+ };
76
+
77
+ function mergeOrIntersect<T>(
78
+ array1: T[], array2: T[], comparator: (a: T, b: T) => number, mergeNotIntersect: boolean): T[] {
79
+ const result = [];
80
+ let i = 0;
81
+ let j = 0;
82
+ while (i < array1.length && j < array2.length) {
83
+ const compareValue = comparator(array1[i], array2[j]);
84
+ if (mergeNotIntersect || !compareValue) {
85
+ result.push(compareValue <= 0 ? array1[i] : array2[j]);
86
+ }
87
+ if (compareValue <= 0) {
88
+ i++;
89
+ }
90
+ if (compareValue >= 0) {
91
+ j++;
92
+ }
93
+ }
94
+ if (mergeNotIntersect) {
95
+ while (i < array1.length) {
96
+ result.push(array1[i++]);
97
+ }
98
+ while (j < array2.length) {
99
+ result.push(array2[j++]);
100
+ }
101
+ }
102
+ return result;
103
+ }
104
+
105
+ export const intersectOrdered = <T>(array1: T[], array2: T[], comparator: (a: T, b: T) => number): T[] => {
106
+ return mergeOrIntersect(array1, array2, comparator, false);
107
+ };
108
+
109
+ export const mergeOrdered = <T>(array1: T[], array2: T[], comparator: (a: T, b: T) => number): T[] => {
110
+ return mergeOrIntersect(array1, array2, comparator, true);
111
+ };
112
+
113
+ export const DEFAULT_COMPARATOR = (a: string|number, b: string|number): -1|0|1 => {
114
+ return a < b ? -1 : (a > b ? 1 : 0);
115
+ };
116
+
117
+ /**
118
+ * Returns the index of the element closest to the needle that is equal to or
119
+ * greater than it. Assumes that the provided array is sorted.
120
+ *
121
+ * If no element is found, the right bound is returned.
122
+ *
123
+ * Uses the provided comparator function to determine if two items are equal or
124
+ * if one is greater than the other. If you are working with strings or
125
+ * numbers, you can use ArrayUtilities.DEFAULT_COMPARATOR. Otherwise, you
126
+ * should define one that takes the needle element and an element from the
127
+ * array and returns a positive or negative number to indicate which is greater
128
+ * than the other.
129
+ *
130
+ * When specified, |left| (inclusive) and |right| (exclusive) indices
131
+ * define the search window.
132
+ */
133
+ export function lowerBound<T>(
134
+ array: Uint32Array|Int32Array, needle: T, comparator: (needle: T, b: number) => number, left?: number,
135
+ right?: number): number;
136
+ export function lowerBound<S, T>(
137
+ array: S[], needle: T, comparator: (needle: T, b: S) => number, left?: number, right?: number): number;
138
+ export function lowerBound<S, T>(
139
+ array: readonly S[], needle: T, comparator: (needle: T, b: S) => number, left?: number, right?: number): number;
140
+ export function lowerBound<S, T, A extends S[]>(
141
+ array: A, needle: T, comparator: (needle: T, b: S) => number, left?: number, right?: number): number {
142
+ let l = left || 0;
143
+ let r = right !== undefined ? right : array.length;
144
+ while (l < r) {
145
+ const m = (l + r) >> 1;
146
+ if (comparator(needle, array[m]) > 0) {
147
+ l = m + 1;
148
+ } else {
149
+ r = m;
150
+ }
151
+ }
152
+ return r;
153
+ }
154
+
155
+ /**
156
+ * Returns the index of the element closest to the needle that is greater than
157
+ * it. Assumes that the provided array is sorted.
158
+ *
159
+ * If no element is found, the right bound is returned.
160
+ *
161
+ * Uses the provided comparator function to determine if two items are equal or
162
+ * if one is greater than the other. If you are working with strings or
163
+ * numbers, you can use ArrayUtilities.DEFAULT_COMPARATOR. Otherwise, you
164
+ * should define one that takes the needle element and an element from the
165
+ * array and returns a positive or negative number to indicate which is greater
166
+ * than the other.
167
+ *
168
+ * When specified, |left| (inclusive) and |right| (exclusive) indices
169
+ * define the search window.
170
+ */
171
+ export function upperBound<T>(
172
+ array: Uint32Array, needle: T, comparator: (needle: T, b: number) => number, left?: number, right?: number): number;
173
+ export function upperBound<S, T>(
174
+ array: S[], needle: T, comparator: (needle: T, b: S) => number, left?: number, right?: number): number;
175
+ export function upperBound<S, T, A extends S[]>(
176
+ array: A, needle: T, comparator: (needle: T, b: S) => number, left?: number, right?: number): number {
177
+ let l = left || 0;
178
+ let r = right !== undefined ? right : array.length;
179
+ while (l < r) {
180
+ const m = (l + r) >> 1;
181
+ if (comparator(needle, array[m]) >= 0) {
182
+ l = m + 1;
183
+ } else {
184
+ r = m;
185
+ }
186
+ }
187
+ return r;
188
+ }
189
+
190
+ const enum NearestSearchStart {
191
+ BEGINNING = 'BEGINNING',
192
+ END = 'END',
193
+ }
194
+ /**
195
+ * Obtains the first or last item in the array that satisfies the predicate function.
196
+ * So, for example, if the array were arr = [2, 4, 6, 8, 10], and you are looking for
197
+ * the last item arr[i] such that arr[i] < 5 you would be returned 1, because
198
+ * array[1] is 4, the last item in the array that satisfies the
199
+ * predicate function.
200
+ *
201
+ * If instead you were looking for the first item in the same array that satisfies
202
+ * arr[i] > 5 you would be returned 2 because array[2] = 6.
203
+ *
204
+ * Please note: this presupposes that the array is already ordered.
205
+ * This function uses a variation of Binary Search.
206
+ */
207
+ function nearestIndex<T>(
208
+ arr: readonly T[], predicate: (arrayItem: T) => boolean, searchStart: NearestSearchStart): number|null {
209
+ const searchFromEnd = searchStart === NearestSearchStart.END;
210
+ if (arr.length === 0) {
211
+ return null;
212
+ }
213
+
214
+ let left = 0;
215
+ let right = arr.length - 1;
216
+ let pivot = 0;
217
+ let matchesPredicate = false;
218
+ let moveToTheRight = false;
219
+ let middle = 0;
220
+ do {
221
+ middle = left + (right - left) / 2;
222
+ pivot = searchFromEnd ? Math.ceil(middle) : Math.floor(middle);
223
+ matchesPredicate = predicate(arr[pivot]);
224
+ moveToTheRight = matchesPredicate === searchFromEnd;
225
+ if (moveToTheRight) {
226
+ left = Math.min(right, pivot + (left === pivot ? 1 : 0));
227
+ } else {
228
+ right = Math.max(left, pivot + (right === pivot ? -1 : 0));
229
+ }
230
+ } while (right !== left);
231
+
232
+ // Special-case: the indexed item doesn't pass the predicate. This
233
+ // occurs when none of the items in the array are a match for the
234
+ // predicate.
235
+ if (!predicate(arr[left])) {
236
+ return null;
237
+ }
238
+ return left;
239
+ }
240
+
241
+ /**
242
+ * Obtains the first item in the array that satisfies the predicate function.
243
+ * So, for example, if the array was arr = [2, 4, 6, 8, 10], and you are looking for
244
+ * the first item arr[i] such that arr[i] > 5 you would be returned 2, because
245
+ * array[2] is 6, the first item in the array that satisfies the
246
+ * predicate function.
247
+ *
248
+ * Please note: this presupposes that the array is already ordered.
249
+ */
250
+ export function nearestIndexFromBeginning<T>(arr: T[], predicate: (arrayItem: T) => boolean): number|null {
251
+ return nearestIndex(arr, predicate, NearestSearchStart.BEGINNING);
252
+ }
253
+
254
+ /**
255
+ * Obtains the last item in the array that satisfies the predicate function.
256
+ * So, for example, if the array was arr = [2, 4, 6, 8, 10], and you are looking for
257
+ * the last item arr[i] such that arr[i] < 5 you would be returned 1, because
258
+ * arr[1] is 4, the last item in the array that satisfies the
259
+ * predicate function.
260
+ *
261
+ * Please note: this presupposes that the array is already ordered.
262
+ */
263
+
264
+ export function nearestIndexFromEnd<T>(arr: readonly T[], predicate: (arrayItem: T) => boolean): number|null {
265
+ return nearestIndex(arr, predicate, NearestSearchStart.END);
266
+ }
267
+
268
+ /** Type guard for ensuring that `arr` does not contain null or undefined **/
269
+ export function arrayDoesNotContainNullOrUndefined<T>(arr: Array<T|null|undefined>): arr is T[] {
270
+ return !arr.includes(null) && !arr.includes(undefined);
271
+ }
@@ -0,0 +1,23 @@
1
+ // Copyright 2023 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
+
5
+ /**
6
+ * Helper type to introduce new branded types.
7
+ *
8
+ * `Base` is the underlying data type and `Tag` must be unique symbol/string.
9
+ *
10
+ * Usage:
11
+ * ```ts
12
+ * type LineNumber = Brand<number, "LineNumber">;
13
+ * type RawUrl = Brand<string, "RawUrl">;
14
+ * ```
15
+ *
16
+ * We purposefully use the string index of `_tag` rather then creating a Symbol
17
+ * wrapper that would hide if in IDEs and fail build. This means that at build
18
+ * time if one uses `<branded-var>._tag`, it will build without error and have
19
+ * potentially having a runtime error. This allows us to have multiple places
20
+ * where we define the brands and they will overlap. Also a use case for reusing
21
+ * the type in other downstream projects is simplified.
22
+ */
23
+ export type Brand<Base, Tag> = Base&{_tag: Tag};
@@ -0,0 +1,10 @@
1
+ // Copyright 2025 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
+
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ export type Constructor<T, Args extends any[] = any[]> = new (...args: Args) => T;
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ export type AbstractConstructor<T, Args extends any[] = any[]> = (abstract new (...args: Args) => T);
9
+
10
+ export type ConstructorOrAbstract<T> = Constructor<T>|AbstractConstructor<T>;
@@ -0,0 +1,138 @@
1
+ // Copyright 2022 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
+
5
+ /**
6
+ * `document.activeElement` will not enter shadow roots to find the element
7
+ * that has focus; use this method if you need to traverse through any shadow
8
+ * roots to find the actual, specific focused element.
9
+ */
10
+ export function deepActiveElement(doc: Document): Element|null {
11
+ let activeElement: Element|null = doc.activeElement;
12
+ while (activeElement?.shadowRoot?.activeElement) {
13
+ activeElement = activeElement.shadowRoot.activeElement;
14
+ }
15
+ return activeElement;
16
+ }
17
+
18
+ export function getEnclosingShadowRootForNode(node: Node): Node|null {
19
+ let parentNode = node.parentNodeOrShadowHost();
20
+ while (parentNode) {
21
+ if (parentNode instanceof ShadowRoot) {
22
+ return parentNode;
23
+ }
24
+ parentNode = parentNode.parentNodeOrShadowHost();
25
+ }
26
+ return null;
27
+ }
28
+
29
+ export function rangeOfWord(
30
+ rootNode: Node, offset: number, stopCharacters: string, stayWithinNode: Node, direction?: string): Range {
31
+ let startNode;
32
+ let startOffset = 0;
33
+ let endNode;
34
+ let endOffset = 0;
35
+
36
+ if (!stayWithinNode) {
37
+ stayWithinNode = rootNode;
38
+ }
39
+
40
+ if (!direction || direction === 'backward' || direction === 'both') {
41
+ let node: Node|null = rootNode;
42
+ while (node) {
43
+ if (node === stayWithinNode) {
44
+ if (!startNode) {
45
+ startNode = stayWithinNode;
46
+ }
47
+ break;
48
+ }
49
+
50
+ if (node.nodeType === Node.TEXT_NODE && node.nodeValue !== null) {
51
+ const start = (node === rootNode ? (offset - 1) : (node.nodeValue.length - 1));
52
+ for (let i = start; i >= 0; --i) {
53
+ if (stopCharacters.indexOf(node.nodeValue[i]) !== -1) {
54
+ startNode = node;
55
+ startOffset = i + 1;
56
+ break;
57
+ }
58
+ }
59
+ }
60
+
61
+ if (startNode) {
62
+ break;
63
+ }
64
+
65
+ node = node.traversePreviousNode(stayWithinNode);
66
+ }
67
+
68
+ if (!startNode) {
69
+ startNode = stayWithinNode;
70
+ startOffset = 0;
71
+ }
72
+ } else {
73
+ startNode = rootNode;
74
+ startOffset = offset;
75
+ }
76
+
77
+ if (!direction || direction === 'forward' || direction === 'both') {
78
+ let node: (Node|null)|Node = rootNode;
79
+ while (node) {
80
+ if (node === stayWithinNode) {
81
+ if (!endNode) {
82
+ endNode = stayWithinNode;
83
+ }
84
+ break;
85
+ }
86
+
87
+ if (node.nodeType === Node.TEXT_NODE && node.nodeValue !== null) {
88
+ const start = (node === rootNode ? offset : 0);
89
+ for (let i = start; i < node.nodeValue.length; ++i) {
90
+ if (stopCharacters.indexOf(node.nodeValue[i]) !== -1) {
91
+ endNode = node;
92
+ endOffset = i;
93
+ break;
94
+ }
95
+ }
96
+ }
97
+
98
+ if (endNode) {
99
+ break;
100
+ }
101
+
102
+ node = node.traverseNextNode(stayWithinNode);
103
+ }
104
+
105
+ if (!endNode) {
106
+ endNode = stayWithinNode;
107
+ endOffset = stayWithinNode.nodeType === Node.TEXT_NODE ? stayWithinNode.nodeValue?.length || 0 :
108
+ stayWithinNode.childNodes.length;
109
+ }
110
+ } else {
111
+ endNode = rootNode;
112
+ endOffset = offset;
113
+ }
114
+
115
+ if (!rootNode.ownerDocument) {
116
+ throw new Error('No `ownerDocument` found for rootNode');
117
+ }
118
+ const result = rootNode.ownerDocument.createRange();
119
+ result.setStart(startNode, startOffset);
120
+ result.setEnd(endNode, endOffset);
121
+
122
+ return result;
123
+ }
124
+
125
+ /**
126
+ * Appends the list of `styles` as individual `<style>` elements to the
127
+ * given `node`.
128
+ *
129
+ * @param node the `Node` to append the `<style>` elements to.
130
+ * @param styles an optional list of styles to append to the `node`.
131
+ */
132
+ export function appendStyle(node: Node, ...styles: CSSInJS[]): void {
133
+ for (const cssText of styles) {
134
+ const style = (node.ownerDocument ?? document).createElement('style');
135
+ style.textContent = cssText;
136
+ node.appendChild(style);
137
+ }
138
+ }
@@ -0,0 +1,15 @@
1
+ // Copyright 2020 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
+
5
+ export const isValid = (date: Date): boolean => {
6
+ return !isNaN(date.getTime());
7
+ };
8
+
9
+ export const toISO8601Compact = (date: Date): string => {
10
+ function leadZero(x: number): string {
11
+ return (x > 9 ? '' : '0') + x;
12
+ }
13
+ return date.getFullYear() + leadZero(date.getMonth() + 1) + leadZero(date.getDate()) + 'T' +
14
+ leadZero(date.getHours()) + leadZero(date.getMinutes()) + leadZero(date.getSeconds());
15
+ };
@@ -0,0 +1,53 @@
1
+ // Copyright 2021 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
+
5
+ import type {Brand} from './Brand.js';
6
+
7
+ /**
8
+ * URLs are in DevTools are repsented as encoded URL strings.
9
+ *
10
+ * @example 'file:///Hello%20World/file/js'
11
+ */
12
+ export type UrlString = Brand<string, 'UrlString'>;
13
+ export const EmptyUrlString = '' as UrlString;
14
+
15
+ /**
16
+ * Tagged template helper to construct `UrlString`s in a more readable form,
17
+ * without having to sprinkle casts throughout the codebase. Primarily useful
18
+ * for writing unit tests.
19
+ *
20
+ * Usage:
21
+ * ```js
22
+ * const url1 = urlString`https://www.example.com/404.html`;
23
+ * const url2 = urlString`http://${host}/path/to/file.js`;
24
+ * ```
25
+ *
26
+ * This is implemented as a wrapper around `String.raw` for convenience. This
27
+ * function doesn't perform any kind of validation that the returned string is
28
+ * really a valid `UrlString`.
29
+ *
30
+ * @param strings the string parts of the template.
31
+ * @param values the dynamic values of the template.
32
+ * @returns the string constructed from `strings` and `values` casted to an
33
+ * `UrlString`.
34
+ */
35
+ export const urlString = (strings: ArrayLike<string>, ...values: any[]): UrlString =>
36
+ String.raw({raw: strings}, ...values) as UrlString;
37
+
38
+ /**
39
+ * File paths in DevTools that are represented as unencoded absolute
40
+ * or relative paths.
41
+ *
42
+ * @example '/Hello World/file.js'
43
+ */
44
+ export type RawPathString = Brand<string, 'RawPathString'>;
45
+ export const EmptyRawPathString = '' as RawPathString;
46
+
47
+ /**
48
+ * File paths in DevTools that are represented as encoded paths.
49
+ *
50
+ * @example '/Hello%20World/file.js'
51
+ */
52
+ export type EncodedPathString = Brand<string, 'EncodedPathString'>;
53
+ export const EmptyEncodedPathString = '' as EncodedPathString;
@@ -0,0 +1,38 @@
1
+ // Copyright 2020 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
+
5
+ export const enum ArrowKey {
6
+ UP = 'ArrowUp',
7
+ DOWN = 'ArrowDown',
8
+ LEFT = 'ArrowLeft',
9
+ RIGHT = 'ArrowRight',
10
+ }
11
+
12
+ export const enum PageKey {
13
+ UP = 'PageUp',
14
+ DOWN = 'PageDown',
15
+ }
16
+
17
+ export const ENTER_KEY = 'Enter';
18
+ export const ESCAPE_KEY = 'Escape';
19
+ export const TAB_KEY = 'Tab';
20
+
21
+ export const ARROW_KEYS = new Set<ArrowKey>([
22
+ ArrowKey.UP,
23
+ ArrowKey.DOWN,
24
+ ArrowKey.LEFT,
25
+ ArrowKey.RIGHT,
26
+ ]);
27
+
28
+ export function keyIsArrowKey(key: string): key is ArrowKey {
29
+ return ARROW_KEYS.has(key as ArrowKey);
30
+ }
31
+
32
+ export function isEscKey(event: KeyboardEvent): boolean {
33
+ return event.key === 'Escape';
34
+ }
35
+
36
+ export function isEnterOrSpaceKey(event: KeyboardEvent): boolean {
37
+ return event.key === 'Enter' || event.key === ' ';
38
+ }
@@ -0,0 +1,95 @@
1
+ // Copyright 2020 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
+
5
+ export const inverse = function<K, V>(map: Map<K, V>): Multimap<V, K> {
6
+ const result = new Multimap<V, K>();
7
+ for (const [key, value] of map.entries()) {
8
+ result.set(value, key);
9
+ }
10
+ return result;
11
+ };
12
+
13
+ export class Multimap<K, V> {
14
+ private map = new Map<K, Set<V>>();
15
+
16
+ set(key: K, value: V): void {
17
+ let set = this.map.get(key);
18
+ if (!set) {
19
+ set = new Set();
20
+ this.map.set(key, set);
21
+ }
22
+ set.add(value);
23
+ }
24
+
25
+ get(key: K): Set<V> {
26
+ return this.map.get(key) || new Set();
27
+ }
28
+
29
+ has(key: K): boolean {
30
+ return this.map.has(key);
31
+ }
32
+
33
+ hasValue(key: K, value: V): boolean {
34
+ const set = this.map.get(key);
35
+ if (!set) {
36
+ return false;
37
+ }
38
+ return set.has(value);
39
+ }
40
+
41
+ get size(): number {
42
+ return this.map.size;
43
+ }
44
+
45
+ delete(key: K, value: V): boolean {
46
+ const values = this.get(key);
47
+ if (!values) {
48
+ return false;
49
+ }
50
+ const result = values.delete(value);
51
+ if (!values.size) {
52
+ this.map.delete(key);
53
+ }
54
+ return result;
55
+ }
56
+
57
+ deleteAll(key: K): void {
58
+ this.map.delete(key);
59
+ }
60
+
61
+ keysArray(): K[] {
62
+ return [...this.map.keys()];
63
+ }
64
+
65
+ keys(): IterableIterator<K> {
66
+ return this.map.keys();
67
+ }
68
+
69
+ valuesArray(): V[] {
70
+ const result = [];
71
+ for (const set of this.map.values()) {
72
+ result.push(...set.values());
73
+ }
74
+ return result;
75
+ }
76
+
77
+ clear(): void {
78
+ this.map.clear();
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Gets value for key, assigning a default if value is falsy.
84
+ */
85
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
86
+ export function getWithDefault<K extends {}, V>(
87
+ map: WeakMap<K, V>|Map<K, V>, key: K, defaultValueFactory: (key?: K) => V): V {
88
+ let value = map.get(key);
89
+ if (value === undefined || value === null) {
90
+ value = defaultValueFactory(key);
91
+ map.set(key, value);
92
+ }
93
+
94
+ return value;
95
+ }