@paulirish/trace_engine 0.0.10 → 0.0.12

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 (256) hide show
  1. package/README.md +1 -1
  2. package/analyze-trace.mjs +1 -1
  3. package/core/platform/DevToolsPath.d.ts +4 -13
  4. package/core/platform/DevToolsPath.js +7 -4
  5. package/core/platform/DevToolsPath.js.map +1 -7
  6. package/core/platform/MimeType.d.ts +27 -0
  7. package/core/platform/MimeType.js +119 -86
  8. package/core/platform/MimeType.js.map +1 -7
  9. package/core/platform/Timing.d.ts +7 -0
  10. package/core/platform/Timing.js +7 -4
  11. package/core/platform/Timing.js.map +1 -7
  12. package/core/platform/UIString.d.ts +2 -5
  13. package/core/platform/UIString.js +5 -2
  14. package/core/platform/UIString.js.map +1 -7
  15. package/core/platform/UserVisibleError.js +19 -10
  16. package/core/platform/UserVisibleError.js.map +1 -7
  17. package/core/platform/array-utilities.d.ts +48 -10
  18. package/core/platform/array-utilities.js +160 -124
  19. package/core/platform/array-utilities.js.map +1 -7
  20. package/core/platform/brand.d.ts +14 -0
  21. package/core/platform/brand.js +5 -1
  22. package/core/platform/brand.js.map +1 -7
  23. package/core/platform/date-utilities.js +10 -6
  24. package/core/platform/date-utilities.js.map +1 -7
  25. package/core/platform/dom-utilities.d.ts +3 -1
  26. package/core/platform/dom-utilities.js +94 -83
  27. package/core/platform/dom-utilities.js.map +1 -7
  28. package/core/platform/keyboard-utilities.d.ts +2 -0
  29. package/core/platform/keyboard-utilities.js +15 -24
  30. package/core/platform/keyboard-utilities.js.map +1 -7
  31. package/core/platform/map-utilities.d.ts +4 -0
  32. package/core/platform/map-utilities.js +66 -60
  33. package/core/platform/map-utilities.js.map +1 -7
  34. package/core/platform/number-utilities.js +66 -55
  35. package/core/platform/number-utilities.js.map +1 -7
  36. package/core/platform/platform.d.ts +5 -1
  37. package/core/platform/platform.js +54 -37
  38. package/core/platform/platform.js.map +1 -7
  39. package/core/platform/promise-utilities.d.ts +10 -0
  40. package/core/platform/promise-utilities.js +16 -8
  41. package/core/platform/promise-utilities.js.map +1 -7
  42. package/core/platform/set-utilities.js +20 -17
  43. package/core/platform/set-utilities.js.map +1 -7
  44. package/core/platform/string-utilities.d.ts +32 -1
  45. package/core/platform/string-utilities.js +453 -379
  46. package/core/platform/string-utilities.js.map +1 -7
  47. package/core/platform/typescript-utilities.d.ts +5 -5
  48. package/core/platform/typescript-utilities.js +19 -7
  49. package/core/platform/typescript-utilities.js.map +1 -7
  50. package/generated/protocol.d.ts +2081 -347
  51. package/generated/protocol.js +5 -2230
  52. package/models/cpu_profile/CPUProfileDataModel.d.ts +77 -0
  53. package/models/cpu_profile/CPUProfileDataModel.js +492 -359
  54. package/models/cpu_profile/CPUProfileDataModel.js.map +1 -7
  55. package/models/cpu_profile/ProfileTreeModel.d.ts +29 -0
  56. package/models/cpu_profile/ProfileTreeModel.js +87 -82
  57. package/models/cpu_profile/ProfileTreeModel.js.map +1 -7
  58. package/models/cpu_profile/cpu_profile.d.ts +3 -0
  59. package/models/cpu_profile/cpu_profile.js +7 -7
  60. package/models/cpu_profile/cpu_profile.js.map +1 -7
  61. package/models/trace/EntriesFilter.d.ts +55 -0
  62. package/models/trace/EntriesFilter.js +227 -166
  63. package/models/trace/EntriesFilter.js.map +1 -7
  64. package/models/trace/LegacyTracingModel.js.map +1 -7
  65. package/models/trace/ModelImpl.d.ts +110 -0
  66. package/models/trace/ModelImpl.js +161 -102
  67. package/models/trace/ModelImpl.js.map +1 -7
  68. package/models/trace/Processor.d.ts +36 -0
  69. package/models/trace/Processor.js +197 -163
  70. package/models/trace/Processor.js.map +1 -7
  71. package/models/trace/TracingManager.js.map +1 -7
  72. package/models/trace/extras/FetchNodes.d.ts +46 -0
  73. package/models/trace/extras/FetchNodes.js +132 -91
  74. package/models/trace/extras/FetchNodes.js.map +1 -7
  75. package/models/trace/extras/FilmStrip.d.ts +19 -0
  76. package/models/trace/extras/FilmStrip.js +38 -31
  77. package/models/trace/extras/FilmStrip.js.map +1 -7
  78. package/models/trace/extras/MainThreadActivity.d.ts +2 -0
  79. package/models/trace/extras/MainThreadActivity.js +72 -56
  80. package/models/trace/extras/MainThreadActivity.js.map +1 -7
  81. package/models/trace/extras/Metadata.d.ts +2 -0
  82. package/models/trace/extras/Metadata.js +42 -26
  83. package/models/trace/extras/Metadata.js.map +1 -7
  84. package/models/trace/extras/extras.js.map +1 -7
  85. package/models/trace/handlers/AnimationHandler.d.ts +8 -0
  86. package/models/trace/handlers/AnimationHandler.js +22 -20
  87. package/models/trace/handlers/AnimationHandler.js.map +1 -7
  88. package/models/trace/handlers/AuctionWorkletsHandler.d.ts +8 -0
  89. package/models/trace/handlers/AuctionWorkletsHandler.js +143 -89
  90. package/models/trace/handlers/AuctionWorkletsHandler.js.map +1 -7
  91. package/models/trace/handlers/FramesHandler.d.ts +76 -0
  92. package/models/trace/handlers/FramesHandler.js +424 -355
  93. package/models/trace/handlers/FramesHandler.js.map +1 -7
  94. package/models/trace/handlers/GPUHandler.d.ts +11 -0
  95. package/models/trace/handlers/GPUHandler.js +41 -37
  96. package/models/trace/handlers/GPUHandler.js.map +1 -7
  97. package/models/trace/handlers/InitiatorsHandler.d.ts +10 -0
  98. package/models/trace/handlers/InitiatorsHandler.js +164 -113
  99. package/models/trace/handlers/InitiatorsHandler.js.map +1 -7
  100. package/models/trace/handlers/InvalidationsHandler.d.ts +10 -0
  101. package/models/trace/handlers/InvalidationsHandler.js +101 -79
  102. package/models/trace/handlers/InvalidationsHandler.js.map +1 -7
  103. package/models/trace/handlers/LargestImagePaintHandler.d.ts +5 -0
  104. package/models/trace/handlers/LargestImagePaintHandler.js +32 -12
  105. package/models/trace/handlers/LargestImagePaintHandler.js.map +1 -7
  106. package/models/trace/handlers/LargestTextPaintHandler.d.ts +5 -0
  107. package/models/trace/handlers/LargestTextPaintHandler.js +20 -12
  108. package/models/trace/handlers/LargestTextPaintHandler.js.map +1 -7
  109. package/models/trace/handlers/LayerTreeHandler.d.ts +13 -0
  110. package/models/trace/handlers/LayerTreeHandler.js +96 -70
  111. package/models/trace/handlers/LayerTreeHandler.js.map +1 -7
  112. package/models/trace/handlers/LayoutShiftsHandler.d.ts +44 -0
  113. package/models/trace/handlers/LayoutShiftsHandler.js +304 -227
  114. package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -7
  115. package/models/trace/handlers/MemoryHandler.d.ts +7 -0
  116. package/models/trace/handlers/MemoryHandler.js +14 -11
  117. package/models/trace/handlers/MemoryHandler.js.map +1 -7
  118. package/models/trace/handlers/MetaHandler.d.ts +37 -0
  119. package/models/trace/handlers/MetaHandler.js +314 -226
  120. package/models/trace/handlers/MetaHandler.js.map +1 -7
  121. package/models/trace/handlers/ModelHandlers.d.ts +21 -0
  122. package/models/trace/handlers/ModelHandlers.js +25 -22
  123. package/models/trace/handlers/ModelHandlers.js.map +1 -7
  124. package/models/trace/handlers/NetworkRequestsHandler.d.ts +17 -0
  125. package/models/trace/handlers/NetworkRequestsHandler.js +342 -218
  126. package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -7
  127. package/models/trace/handlers/PageLoadMetricsHandler.d.ts +67 -0
  128. package/models/trace/handlers/PageLoadMetricsHandler.js +357 -284
  129. package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -7
  130. package/models/trace/handlers/RendererHandler.d.ts +101 -0
  131. package/models/trace/handlers/RendererHandler.js +295 -191
  132. package/models/trace/handlers/RendererHandler.js.map +1 -7
  133. package/models/trace/handlers/SamplesHandler.d.ts +46 -0
  134. package/models/trace/handlers/SamplesHandler.js +195 -158
  135. package/models/trace/handlers/SamplesHandler.js.map +1 -7
  136. package/models/trace/handlers/ScreenshotsHandler.d.ts +7 -0
  137. package/models/trace/handlers/ScreenshotsHandler.js +63 -41
  138. package/models/trace/handlers/ScreenshotsHandler.js.map +1 -7
  139. package/models/trace/handlers/Threads.d.ts +33 -0
  140. package/models/trace/handlers/Threads.js +85 -67
  141. package/models/trace/handlers/Threads.js.map +1 -7
  142. package/models/trace/handlers/UserInteractionsHandler.d.ts +57 -0
  143. package/models/trace/handlers/UserInteractionsHandler.js +240 -141
  144. package/models/trace/handlers/UserInteractionsHandler.js.map +1 -7
  145. package/models/trace/handlers/UserTimingsHandler.d.ts +28 -0
  146. package/models/trace/handlers/UserTimingsHandler.js +91 -80
  147. package/models/trace/handlers/UserTimingsHandler.js.map +1 -7
  148. package/models/trace/handlers/WarningsHandler.d.ts +14 -0
  149. package/models/trace/handlers/WarningsHandler.js +100 -62
  150. package/models/trace/handlers/WarningsHandler.js.map +1 -7
  151. package/models/trace/handlers/WorkersHandler.d.ts +11 -0
  152. package/models/trace/handlers/WorkersHandler.js +40 -38
  153. package/models/trace/handlers/WorkersHandler.js.map +1 -7
  154. package/models/trace/handlers/handlers.d.ts +3 -0
  155. package/models/trace/handlers/handlers.js +7 -4
  156. package/models/trace/handlers/handlers.js.map +1 -7
  157. package/models/trace/handlers/types.d.ts +45 -0
  158. package/models/trace/handlers/types.js +15 -15
  159. package/models/trace/handlers/types.js.map +1 -7
  160. package/models/trace/helpers/SamplesIntegrator.d.ts +49 -0
  161. package/models/trace/helpers/SamplesIntegrator.js +381 -204
  162. package/models/trace/helpers/SamplesIntegrator.js.map +1 -7
  163. package/models/trace/helpers/Timing.d.ts +26 -0
  164. package/models/trace/helpers/Timing.js +131 -110
  165. package/models/trace/helpers/Timing.js.map +1 -7
  166. package/models/trace/helpers/Trace.d.ts +37 -0
  167. package/models/trace/helpers/Trace.js +200 -166
  168. package/models/trace/helpers/Trace.js.map +1 -7
  169. package/models/trace/helpers/TreeHelpers.d.ts +90 -0
  170. package/models/trace/helpers/TreeHelpers.js +203 -100
  171. package/models/trace/helpers/TreeHelpers.js.map +1 -7
  172. package/models/trace/helpers/helpers.d.ts +4 -0
  173. package/models/trace/helpers/helpers.js +8 -5
  174. package/models/trace/helpers/helpers.js.map +1 -7
  175. package/models/trace/root-causes/LayoutShift.d.ts +119 -0
  176. package/models/trace/root-causes/LayoutShift.js +470 -323
  177. package/models/trace/root-causes/LayoutShift.js.map +1 -7
  178. package/models/trace/root-causes/RootCauses.d.ts +14 -0
  179. package/models/trace/root-causes/RootCauses.js +9 -6
  180. package/models/trace/root-causes/RootCauses.js.map +1 -7
  181. package/models/trace/root-causes/root-causes.d.ts +1 -0
  182. package/models/trace/root-causes/root-causes.js +5 -2
  183. package/models/trace/root-causes/root-causes.js.map +1 -7
  184. package/models/trace/trace.d.ts +11 -0
  185. package/models/trace/trace.js +17 -23
  186. package/models/trace/trace.js.map +1 -7
  187. package/models/trace/types/Configuration.d.ts +33 -0
  188. package/models/trace/types/Configuration.js +25 -14
  189. package/models/trace/types/Configuration.js.map +1 -7
  190. package/models/trace/types/File.d.ts +23 -0
  191. package/models/trace/types/File.js +5 -6
  192. package/models/trace/types/File.js.map +1 -7
  193. package/models/trace/types/Timing.d.ts +25 -0
  194. package/models/trace/types/Timing.js +10 -11
  195. package/models/trace/types/Timing.js.map +1 -7
  196. package/models/trace/types/TraceEvents.d.ts +1571 -0
  197. package/models/trace/types/TraceEvents.js +174 -381
  198. package/models/trace/types/TraceEvents.js.map +1 -7
  199. package/models/trace/types/types.d.ts +4 -0
  200. package/models/trace/types/types.js +8 -5
  201. package/models/trace/types/types.js.map +1 -7
  202. package/package.json +1 -1
  203. package/TracingManager.js +0 -0
  204. package/core/platform/devtools_entrypoint-bundle-tsconfig-tsconfig.json +0 -40
  205. package/core/platform/platform.js.compressed +0 -0
  206. package/core/platform/platform.js.hash +0 -1
  207. package/core/platform/platform.prebundle.d.ts +0 -15
  208. package/core/platform/platform.prebundle.js +0 -50
  209. package/core/platform/platform.prebundle.js.map +0 -1
  210. package/core/platform/platform.prebundle.ts +0 -64
  211. package/extras/extras.js +0 -0
  212. package/models/trace/SDKServices.js +0 -104
  213. package/models/trace/SDKServices.js.map +0 -7
  214. package/models/trace/TraceProcessor.js +0 -133
  215. package/models/trace/TraceProcessor.js.map +0 -7
  216. package/models/trace/TreeManipulator.js +0 -85
  217. package/models/trace/TreeManipulator.js.map +0 -7
  218. package/models/trace/devtools_entrypoint-legacy-typescript-tsconfig.json +0 -43
  219. package/models/trace/frames/TimelineFrameModel.js +0 -392
  220. package/models/trace/frames/TimelineFrameModel.js.map +0 -7
  221. package/models/trace/frames/bundle-tsconfig.json +0 -1
  222. package/models/trace/frames/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -43
  223. package/models/trace/frames/frames-tsconfig.json +0 -58
  224. package/models/trace/frames/frames.js +0 -5
  225. package/models/trace/frames/frames.js.map +0 -7
  226. package/models/trace/handlers/Migration.js +0 -27
  227. package/models/trace/handlers/Migration.js.map +0 -7
  228. package/models/trace/handlers/UberFramesHandler.js +0 -293
  229. package/models/trace/handlers/UberFramesHandler.js.map +0 -7
  230. package/models/trace/legacy-tsconfig.json +0 -1
  231. package/models/trace/sdk_services/DOMNodeLookup.js +0 -41
  232. package/models/trace/sdk_services/DOMNodeLookup.js.map +0 -7
  233. package/models/trace/sdk_services/LayoutShifts.js +0 -68
  234. package/models/trace/sdk_services/LayoutShifts.js.map +0 -7
  235. package/models/trace/sdk_services/bundle-tsconfig.json +0 -1
  236. package/models/trace/sdk_services/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -41
  237. package/models/trace/sdk_services/sdk_services-tsconfig.json +0 -57
  238. package/models/trace/sdk_services/sdk_services.js +0 -7
  239. package/models/trace/sdk_services/sdk_services.js.map +0 -7
  240. package/models/trace/trace-legacy.js +0 -16
  241. package/models/trace/trace-legacy.js.map +0 -7
  242. package/models/trace/worker/Processor.js +0 -143
  243. package/models/trace/worker/Processor.js.map +0 -7
  244. package/models/trace/worker/Types.js +0 -1
  245. package/models/trace/worker/Types.js.map +0 -7
  246. package/models/trace/worker/bundle-tsconfig.json +0 -1
  247. package/models/trace/worker/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -41
  248. package/models/trace/worker/devtools_entrypoint-worker_entrypoint-typescript-tsconfig.json +0 -41
  249. package/models/trace/worker/processor-tsconfig.json +0 -45
  250. package/models/trace/worker/worker.js +0 -7
  251. package/models/trace/worker/worker.js.map +0 -7
  252. package/models/trace/worker/worker_entrypoint-tsconfig.json +0 -1
  253. package/models/trace/worker/worker_entrypoint.js +0 -36
  254. package/models/trace/worker/worker_entrypoint.js.map +0 -7
  255. package/trace.mjs +0 -6980
  256. package/trace.mjs.map +0 -8
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../front_end/core/platform/string-utilities.ts"],
4
- "sourcesContent": ["// Copyright (c) 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nexport const escapeCharacters = (inputString: string, charsToEscape: string): string => {\n let foundChar = false;\n for (let i = 0; i < charsToEscape.length; ++i) {\n if (inputString.indexOf(charsToEscape.charAt(i)) !== -1) {\n foundChar = true;\n break;\n }\n }\n\n if (!foundChar) {\n return String(inputString);\n }\n\n let result = '';\n for (let i = 0; i < inputString.length; ++i) {\n if (charsToEscape.indexOf(inputString.charAt(i)) !== -1) {\n result += '\\\\';\n }\n result += inputString.charAt(i);\n }\n\n return result;\n};\n\nconst toHexadecimal = (charCode: number, padToLength: number): string => {\n return charCode.toString(16).toUpperCase().padStart(padToLength, '0');\n};\n\n// Remember to update the third group in the regexps patternsToEscape and\n// patternsToEscapePlusSingleQuote when adding new entries in this map.\nconst escapedReplacements = new Map([\n ['\\b', '\\\\b'],\n ['\\f', '\\\\f'],\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\v', '\\\\v'],\n ['\\'', '\\\\\\''],\n ['\\\\', '\\\\\\\\'],\n ['<!--', '\\\\x3C!--'],\n ['<script', '\\\\x3Cscript'],\n ['</script', '\\\\x3C/script'],\n]);\n\nexport const formatAsJSLiteral = (content: string): string => {\n const patternsToEscape = /(\\\\|<(?:!--|\\/?script))|(\\p{Control})|(\\p{Surrogate})/gu;\n const patternsToEscapePlusSingleQuote = /(\\\\|'|<(?:!--|\\/?script))|(\\p{Control})|(\\p{Surrogate})/gu;\n const escapePattern = (match: string, pattern: string, controlChar: string, loneSurrogate: string): string => {\n if (controlChar) {\n if (escapedReplacements.has(controlChar)) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/13086\n return escapedReplacements.get(controlChar);\n }\n const twoDigitHex = toHexadecimal(controlChar.charCodeAt(0), 2);\n return '\\\\x' + twoDigitHex;\n }\n if (loneSurrogate) {\n const fourDigitHex = toHexadecimal(loneSurrogate.charCodeAt(0), 4);\n return '\\\\u' + fourDigitHex;\n }\n if (pattern) {\n return escapedReplacements.get(pattern) || '';\n }\n return match;\n };\n\n let escapedContent = '';\n let quote = '';\n if (!content.includes('\\'')) {\n quote = '\\'';\n escapedContent = content.replaceAll(patternsToEscape, escapePattern);\n } else if (!content.includes('\"')) {\n quote = '\"';\n escapedContent = content.replaceAll(patternsToEscape, escapePattern);\n } else if (!content.includes('`') && !content.includes('${')) {\n quote = '`';\n escapedContent = content.replaceAll(patternsToEscape, escapePattern);\n } else {\n quote = '\\'';\n escapedContent = content.replaceAll(patternsToEscapePlusSingleQuote, escapePattern);\n }\n return `${quote}${escapedContent}${quote}`;\n};\n\n/**\n * This implements a subset of the sprintf() function described in the Single UNIX\n * Specification. It supports the %s, %f, %d, and %% formatting specifiers, and\n * understands the %m$d notation to select the m-th parameter for this substitution,\n * as well as the optional precision for %s, %f, and %d.\n *\n * @param fmt format string.\n * @param args parameters to the format string.\n * @returns the formatted output string.\n */\nexport const sprintf = (fmt: string, ...args: unknown[]): string => {\n let argIndex = 0;\n const RE = /%(?:(\\d+)\\$)?(?:\\.(\\d*))?([%dfs])/g;\n return fmt.replaceAll(RE, (_: string, index?: string, precision?: string, specifier?: string) => {\n if (specifier === '%') {\n return '%';\n }\n if (index !== undefined) {\n argIndex = parseInt(index, 10) - 1;\n if (argIndex < 0) {\n throw new RangeError(`Invalid parameter index ${argIndex + 1}`);\n }\n }\n if (argIndex >= args.length) {\n throw new RangeError(`Expected at least ${argIndex + 1} format parameters, but only ${args.length} where given.`);\n }\n if (specifier === 's') {\n const argValue = String(args[argIndex++]);\n if (precision !== undefined) {\n return argValue.substring(0, Number(precision));\n }\n return argValue;\n }\n let argValue = Number(args[argIndex++]);\n if (isNaN(argValue)) {\n argValue = 0;\n }\n if (specifier === 'd') {\n return String(Math.floor(argValue)).padStart(Number(precision), '0');\n }\n if (precision !== undefined) {\n return argValue.toFixed(Number(precision));\n }\n return String(argValue);\n });\n};\n\nexport const toBase64 = (inputString: string): string => {\n /* note to the reader: we can't use btoa here because we need to\n * support Unicode correctly. See the test cases for this function and\n * also\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem\n */\n\n function encodeBits(b: number): number {\n return b < 26 ? b + 65 : b < 52 ? b + 71 : b < 62 ? b - 4 : b === 62 ? 43 : b === 63 ? 47 : 65;\n }\n const encoder = new TextEncoder();\n const data = encoder.encode(inputString.toString());\n const n = data.length;\n let encoded = '';\n if (n === 0) {\n return encoded;\n }\n let shift;\n let v = 0;\n for (let i = 0; i < n; i++) {\n shift = i % 3;\n v |= data[i] << (16 >>> shift & 24);\n if (shift === 2) {\n encoded += String.fromCharCode(\n encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), encodeBits(v >>> 6 & 63), encodeBits(v & 63));\n v = 0;\n }\n }\n if (shift === 0) {\n encoded += String.fromCharCode(encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), 61, 61);\n } else if (shift === 1) {\n encoded += String.fromCharCode(encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), encodeBits(v >>> 6 & 63), 61);\n }\n return encoded;\n};\n\nexport const findIndexesOfSubString = (inputString: string, searchString: string): number[] => {\n const matches = [];\n let i = inputString.indexOf(searchString);\n while (i !== -1) {\n matches.push(i);\n i = inputString.indexOf(searchString, i + searchString.length);\n }\n return matches;\n};\n\nexport const findLineEndingIndexes = (inputString: string): number[] => {\n const endings = findIndexesOfSubString(inputString, '\\n');\n endings.push(inputString.length);\n return endings;\n};\n\nexport const isWhitespace = (inputString: string): boolean => {\n return /^\\s*$/.test(inputString);\n};\n\nexport const trimURL = (url: string, baseURLDomain?: string): string => {\n let result = url.replace(/^(https|http|file):\\/\\//i, '');\n if (baseURLDomain) {\n if (result.toLowerCase().startsWith(baseURLDomain.toLowerCase())) {\n result = result.substr(baseURLDomain.length);\n }\n }\n return result;\n};\n\nexport const collapseWhitespace = (inputString: string): string => {\n return inputString.replace(/[\\s\\xA0]+/g, ' ');\n};\n\nexport const reverse = (inputString: string): string => {\n return inputString.split('').reverse().join('');\n};\n\nexport const replaceControlCharacters = (inputString: string): string => {\n // Replace C0 and C1 control character sets with replacement character.\n // Do not replace '\\t', \\n' and '\\r'.\n return inputString.replace(/[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\x80-\\x9F]/g, '\\uFFFD');\n};\n\nexport const countWtf8Bytes = (inputString: string): number => {\n let count = 0;\n for (let i = 0; i < inputString.length; i++) {\n const c = inputString.charCodeAt(i);\n if (c <= 0x7F) {\n count++;\n } else if (c <= 0x07FF) {\n count += 2;\n } else if (c < 0xD800 || 0xDFFF < c) {\n count += 3;\n } else {\n if (c <= 0xDBFF && i + 1 < inputString.length) {\n // The current character is a leading surrogate, and there is a\n // next character.\n const next = inputString.charCodeAt(i + 1);\n if (0xDC00 <= next && next <= 0xDFFF) {\n // The next character is a trailing surrogate, meaning this\n // is a surrogate pair.\n count += 4;\n i++;\n continue;\n }\n }\n count += 3;\n }\n }\n return count;\n};\n\nexport const stripLineBreaks = (inputStr: string): string => {\n return inputStr.replace(/(\\r)?\\n/g, '');\n};\n\nconst EXTENDED_KEBAB_CASE_REGEXP = /^([a-z0-9]+(?:-[a-z0-9]+)*\\.)*[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\n/**\n * Tests if the `inputStr` is following the extended Kebab Case naming convetion,\n * where words are separated with either a dash (`-`) or a dot (`.`), and all\n * characters must be lower-case alphanumeric.\n *\n * For example, it will yield `true` for `'my.amazing-string.literal'`, but `false`\n * for `'Another.AmazingLiteral'` or '`another_amazing_literal'`.\n *\n * @param inputStr the input string to test.\n * @return `true` if the `inputStr` follows the extended Kebab Case convention.\n */\nexport const isExtendedKebabCase = (inputStr: string): boolean => {\n return EXTENDED_KEBAB_CASE_REGEXP.test(inputStr);\n};\n\nexport const toTitleCase = (inputStr: string): string => {\n return inputStr.substring(0, 1).toUpperCase() + inputStr.substring(1);\n};\n\nexport const removeURLFragment = (inputStr: string): string => {\n const url = new URL(inputStr);\n url.hash = '';\n return url.toString();\n};\n\nconst SPECIAL_REGEX_CHARACTERS = '^[]{}()\\\\.^$*+?|-,';\n\nexport const regexSpecialCharacters = function(): string {\n return SPECIAL_REGEX_CHARACTERS;\n};\n\nexport const filterRegex = function(query: string): RegExp {\n let regexString = '^(?:.*\\\\0)?'; // Start from beginning or after a \\0\n for (let i = 0; i < query.length; ++i) {\n let c = query.charAt(i);\n if (SPECIAL_REGEX_CHARACTERS.indexOf(c) !== -1) {\n c = '\\\\' + c;\n }\n regexString += '[^\\\\0' + c + ']*' + c;\n }\n return new RegExp(regexString, 'i');\n};\n\nexport const createSearchRegex = function(\n query: string, caseSensitive: boolean, isRegex: boolean, matchWholeWord: boolean = false): RegExp {\n const regexFlags = caseSensitive ? 'g' : 'gi';\n let regexObject;\n\n if (isRegex) {\n try {\n regexObject = new RegExp(query, regexFlags);\n } catch (e) {\n // Silent catch.\n }\n }\n\n if (!regexObject) {\n regexObject = createPlainTextSearchRegex(query, regexFlags);\n }\n\n if (matchWholeWord && regexObject) {\n regexObject = new RegExp(`\\\\b${regexObject.source}\\\\b`, regexFlags);\n }\n\n return regexObject;\n};\n\nexport const caseInsensetiveComparator = function(a: string, b: string): number {\n a = a.toUpperCase();\n b = b.toUpperCase();\n if (a === b) {\n return 0;\n }\n return a > b ? 1 : -1;\n};\n\nexport const hashCode = function(string?: string): number {\n if (!string) {\n return 0;\n }\n // Hash algorithm for substrings is described in \"\u00DCber die Komplexit\u00E4t der Multiplikation in\n // eingeschr\u00E4nkten Branchingprogrammmodellen\" by Woelfe.\n // http://opendatastructures.org/versions/edition-0.1d/ods-java/node33.html#SECTION00832000000000000000\n const p = ((1 << 30) * 4 - 5); // prime: 2^32 - 5\n const z = 0x5033d967; // 32 bits from random.org\n const z2 = 0x59d2f15d; // random odd 32 bit number\n let s = 0;\n let zi = 1;\n for (let i = 0; i < string.length; i++) {\n const xi = string.charCodeAt(i) * z2;\n s = (s + zi * xi) % p;\n zi = (zi * z) % p;\n }\n s = (s + zi * (p - 1)) % p;\n return Math.abs(s | 0);\n};\n\nexport const compare = (a: string, b: string): number => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n return 0;\n};\n\nexport const trimMiddle = (str: string, maxLength: number): string => {\n if (str.length <= maxLength) {\n return String(str);\n }\n let leftHalf = maxLength >> 1;\n let rightHalf = maxLength - leftHalf - 1;\n if ((str.codePointAt(str.length - rightHalf - 1) as number) >= 0x10000) {\n --rightHalf;\n ++leftHalf;\n }\n if (leftHalf > 0 && (str.codePointAt(leftHalf - 1) as number) >= 0x10000) {\n --leftHalf;\n }\n return str.substr(0, leftHalf) + '\u2026' + str.substr(str.length - rightHalf, rightHalf);\n};\n\nexport const trimEndWithMaxLength = (str: string, maxLength: number): string => {\n if (str.length <= maxLength) {\n return String(str);\n }\n return str.substr(0, maxLength - 1) + '\u2026';\n};\n\nexport const escapeForRegExp = (str: string): string => {\n return escapeCharacters(str, SPECIAL_REGEX_CHARACTERS);\n};\n\nexport const naturalOrderComparator = (a: string, b: string): number => {\n const chunk = /^\\d+|^\\D+/;\n let chunka, chunkb, anum, bnum;\n while (true) {\n if (a) {\n if (!b) {\n return 1;\n }\n } else {\n if (b) {\n return -1;\n }\n return 0;\n }\n chunka = (a.match(chunk) as string[])[0];\n chunkb = (b.match(chunk) as string[])[0];\n anum = !Number.isNaN(Number(chunka));\n bnum = !Number.isNaN(Number(chunkb));\n if (anum && !bnum) {\n return -1;\n }\n if (bnum && !anum) {\n return 1;\n }\n if (anum && bnum) {\n const diff = Number(chunka) - Number(chunkb);\n if (diff) {\n return diff;\n }\n if (chunka.length !== chunkb.length) {\n if (!Number(chunka) && !Number(chunkb)) { // chunks are strings of all 0s (special case)\n return chunka.length - chunkb.length;\n }\n return chunkb.length - chunka.length;\n }\n } else if (chunka !== chunkb) {\n return (chunka < chunkb) ? -1 : 1;\n }\n a = a.substring(chunka.length);\n b = b.substring(chunkb.length);\n }\n};\n\nexport const base64ToSize = function(content: string|null): number {\n if (!content) {\n return 0;\n }\n let size = content.length * 3 / 4;\n if (content[content.length - 1] === '=') {\n size--;\n }\n if (content.length > 1 && content[content.length - 2] === '=') {\n size--;\n }\n return size;\n};\n\nexport const SINGLE_QUOTE = '\\'';\nexport const DOUBLE_QUOTE = '\"';\nconst BACKSLASH = '\\\\';\n\nexport const findUnclosedCssQuote = function(str: string): string {\n let unmatchedQuote = '';\n for (let i = 0; i < str.length; ++i) {\n const char = str[i];\n if (char === BACKSLASH) {\n i++;\n continue;\n }\n if (char === SINGLE_QUOTE || char === DOUBLE_QUOTE) {\n if (unmatchedQuote === char) {\n unmatchedQuote = '';\n } else if (unmatchedQuote === '') {\n unmatchedQuote = char;\n }\n }\n }\n return unmatchedQuote;\n};\n\nexport const countUnmatchedLeftParentheses = (str: string): number => {\n let unmatchedCount = 0;\n for (const c of str) {\n if (c === '(') {\n unmatchedCount++;\n } else if (c === ')' && unmatchedCount > 0) {\n unmatchedCount--;\n }\n }\n return unmatchedCount;\n};\n\nexport const createPlainTextSearchRegex = function(query: string, flags?: string): RegExp {\n // This should be kept the same as the one in StringUtil.cpp.\n let regex = '';\n for (let i = 0; i < query.length; ++i) {\n const c = query.charAt(i);\n if (regexSpecialCharacters().indexOf(c) !== -1) {\n regex += '\\\\';\n }\n regex += c;\n }\n return new RegExp(regex, flags || '');\n};\n\nclass LowerCaseStringTag {\n private lowerCaseStringTag: (string|undefined);\n}\n\nexport type LowerCaseString = string&LowerCaseStringTag;\n\nexport const toLowerCaseString = function(input: string): LowerCaseString {\n return input.toLowerCase() as LowerCaseString;\n};\n\nconst WORD = /[A-Z]{2,}(?=[A-Z0-9][a-z0-9]+|\\b)|[A-Za-z][0-9]+[a-z]|[A-Z]?[a-z]+|[0-9][A-Za-z]+|[A-Z]|[0-9]+|[.]/g;\n// <---1---><-----------2----------> <--------3--------> <-----4----> <------5-----> <-----6----> <7>\n// 1: two or more consecutive uppercase letters. This is useful for identifying acronyms\n// 2: lookahead assertion that matches a word boundary\n// 3: numeronym: single letter followed by number and another letter\n// 4: word starting with an optional uppercase letter\n// 5: single digit followed by word to handle '3D' or '2px' (this might be controverial)\n// 6: single uppercase letter or number\n// 7: a dot character. We extract it into a separate word and remove dashes around it later.\n// This is makes more sense conceptually and allows accounting for all possible word variants.\n// Making dot a part of a word prevent us from handling acronyms or numeronyms after the word\n// correctly without making the RegExp prohibitively complicated.\n// https://regex101.com/r/LtFugp/1\nexport const toKebabCase = function(input: string): Lowercase<string> {\n return (input.match?.(WORD)?.map(w => w.toLowerCase()).join('-').replaceAll('-.-', '.') || input) as\n Lowercase<string>;\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function toKebabCaseKeys(settingValue: {\n [x: string]: any,\n}): {[x: string]: any} {\n const result: {\n [x: string]: any,\n } = {};\n for (const [key, value] of Object.entries(settingValue)) {\n result[toKebabCase(key)] = value;\n }\n return result;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// Replaces the last ocurrence of parameter `search` with parameter `replacement` in `input`\nexport const replaceLast = function(input: string, search: string, replacement: string): string {\n const replacementStartIndex = input.lastIndexOf(search);\n if (replacementStartIndex === -1) {\n return input;\n }\n\n return input.slice(0, replacementStartIndex) + input.slice(replacementStartIndex).replace(search, replacement);\n};\n\nexport const stringifyWithPrecision = function stringifyWithPrecision(s: number, precision = 2): string {\n if (precision === 0) {\n return s.toFixed(0);\n }\n const string = s.toFixed(precision).replace(/\\.?0*$/, '');\n return string === '-0' ? '0' : string;\n};\n\n/**\n * Somewhat efficiently concatenates 2 base64 encoded strings.\n */\nexport const concatBase64 = function(lhs: string, rhs: string): string {\n if (lhs.length === 0 || !lhs.endsWith('=')) {\n // Empty string or no padding, we can straight-up concatenate.\n return lhs + rhs;\n }\n const lhsLeaveAsIs = lhs.substring(0, lhs.length - 4);\n const lhsToDecode = lhs.substring(lhs.length - 4);\n return lhsLeaveAsIs + window.btoa(window.atob(lhsToDecode) + window.atob(rhs));\n};\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
1
+ {"version":3,"file":"string-utilities.js","sourceRoot":"","sources":["../../../../../../front_end/core/platform/string-utilities.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,yEAAyE;AACzE,6BAA6B;AAE7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAE,aAAqB,EAAU,EAAE;IACrF,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QAC7C,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACvD,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;SACP;KACF;IAED,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QAC3C,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACvD,MAAM,IAAI,IAAI,CAAC;SAChB;QACD,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACjC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAU,EAAE;IACtE,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,yEAAyE;AACzE,uEAAuE;AACvE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,UAAU,EAAE,cAAc,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IAC3D,MAAM,gBAAgB,GAAG,yDAAyD,CAAC;IACnF,MAAM,+BAA+B,GAAG,2DAA2D,CAAC;IACpG,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,WAAmB,EAAE,aAAqB,EAAU,EAAE;QAC3G,IAAI,WAAW,EAAE;YACf,IAAI,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACxC,kEAAkE;gBAClE,OAAO,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;aAC7C;YACD,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,KAAK,GAAG,WAAW,CAAC;SAC5B;QACD,IAAI,aAAa,EAAE;YACjB,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,KAAK,GAAG,YAAY,CAAC;SAC7B;QACD,IAAI,OAAO,EAAE;YACX,OAAO,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAC/C;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC3B,KAAK,GAAG,IAAI,CAAC;QACb,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;KACtE;SAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACjC,KAAK,GAAG,GAAG,CAAC;QACZ,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;KACtE;SAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC5D,KAAK,GAAG,GAAG,CAAC;QACZ,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;KACtE;SAAM;QACL,KAAK,GAAG,IAAI,CAAC;QACb,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,+BAA+B,EAAE,aAAa,CAAC,CAAC;KACrF;IACD,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,EAAE,CAAC;AAC7C,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAG,IAAe,EAAU,EAAE;IACjE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,oCAAoC,CAAC;IAChD,OAAO,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAS,EAAE,KAAc,EAAE,SAAkB,EAAE,SAAkB,EAAE,EAAE;QAC9F,IAAI,SAAS,KAAK,GAAG,EAAE;YACrB,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,QAAQ,GAAG,CAAC,EAAE;gBAChB,MAAM,IAAI,UAAU,CAAC,2BAA2B,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;aACjE;SACF;QACD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,MAAM,IAAI,UAAU,CAAC,qBAAqB,QAAQ,GAAG,CAAC,gCAAgC,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC;SACnH;QACD,IAAI,SAAS,KAAK,GAAG,EAAE;YACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3B,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,QAAQ,CAAC;SACjB;QACD,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;YACnB,QAAQ,GAAG,CAAC,CAAC;SACd;QACD,IAAI,SAAS,KAAK,GAAG,EAAE;YACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;SACtE;QACD,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;SAC5C;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAU,EAAE;IACtD;;;;OAIG;IAEH,SAAS,UAAU,CAAC,CAAS;QAC3B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,OAAO,CAAC;KAChB;IACD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO,IAAI,MAAM,CAAC,YAAY,CAC1B,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC,GAAG,CAAC,CAAC;SACP;KACF;IACD,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KAC9F;SAAM,IAAI,KAAK,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KACpH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAE,YAAoB,EAAY,EAAE;IAC5F,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;KAChE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAY,EAAE;IACrE,MAAM,OAAO,GAAG,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAW,EAAE;IAC3D,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,aAAsB,EAAU,EAAE;IACrE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,aAAa,EAAE;QACjB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE;YAChE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC9C;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAU,EAAE;IAChE,OAAO,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,WAAmB,EAAU,EAAE;IACrD,OAAO,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,WAAmB,EAAU,EAAE;IACtE,uEAAuE;IACvE,qCAAqC;IACrC,OAAO,WAAW,CAAC,OAAO,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAU,EAAE;IAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,KAAK,EAAE,CAAC;SACT;aAAM,IAAI,CAAC,IAAI,MAAM,EAAE;YACtB,KAAK,IAAI,CAAC,CAAC;SACZ;aAAM,IAAI,CAAC,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACnC,KAAK,IAAI,CAAC,CAAC;SACZ;aAAM;YACL,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;gBAC7C,+DAA+D;gBAC/D,kBAAkB;gBAClB,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,EAAE;oBACpC,2DAA2D;oBAC3D,uBAAuB;oBACvB,KAAK,IAAI,CAAC,CAAC;oBACX,CAAC,EAAE,CAAC;oBACJ,SAAS;iBACV;aACF;YACD,KAAK,IAAI,CAAC,CAAC;SACZ;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC1D,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,yDAAyD,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAW,EAAE;IAC/D,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO,wBAAwB,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,UAAS,KAAa;IAC/C,IAAI,WAAW,GAAG,aAAa,CAAC,CAAE,qCAAqC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACrC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9C,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;SACd;QACD,WAAW,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;KACvC;IACD,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAC7B,KAAa,EAAE,aAAsB,EAAE,OAAgB,EAAE,iBAA0B,KAAK;IAC1F,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,IAAI,WAAW,CAAC;IAEhB,IAAI,OAAO,EAAE;QACX,IAAI;YACF,WAAW,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,gBAAgB;SACjB;KACF;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAC7D;IAED,IAAI,cAAc,IAAI,WAAW,EAAE;QACjC,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,MAAM,KAAK,EAAE,UAAU,CAAC,CAAC;KACrE;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAS,CAAS,EAAE,CAAS;IACpE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAS,MAAe;IAC9C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,CAAC,CAAC;KACV;IACD,4FAA4F;IAC5F,wDAAwD;IACxD,uGAAuG;IACvG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,kBAAkB;IAClD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAW,0BAA0B;IAC1D,MAAM,EAAE,GAAG,UAAU,CAAC,CAAU,2BAA2B;IAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACrC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACnB;IACD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACtD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC;KACV;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC,CAAC;KACX;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAU,EAAE;IACnE,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE;QAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KACpB;IACD,IAAI,QAAQ,GAAG,SAAS,IAAI,CAAC,CAAC;IAC9B,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;IACzC,IAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAY,IAAI,OAAO,EAAE;QACtE,EAAE,SAAS,CAAC;QACZ,EAAE,QAAQ,CAAC;KACZ;IACD,IAAI,QAAQ,GAAG,CAAC,IAAK,GAAG,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAY,IAAI,OAAO,EAAE;QACxE,EAAE,QAAQ,CAAC;KACZ;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAU,EAAE;IAC7E,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE;QAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KACpB;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE;IACrD,OAAO,gBAAgB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACrE,MAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/B,OAAO,IAAI,EAAE;QACX,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,CAAC,EAAE;gBACN,OAAO,CAAC,CAAC;aACV;SACF;aAAM;YACL,IAAI,CAAC,EAAE;gBACL,OAAO,CAAC,CAAC,CAAC;aACX;YACD,OAAO,CAAC,CAAC;SACV;QACD,MAAM,GAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAc,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,GAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAc,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YACjB,OAAO,CAAC,CAAC,CAAC;SACX;QACD,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YACjB,OAAO,CAAC,CAAC;SACV;QACD,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE;gBACR,OAAO,IAAI,CAAC;aACb;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAG,8CAA8C;oBACvF,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;iBACtC;gBACD,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;aACtC;SACF;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE;YAC5B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAChC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,UAAS,OAAoB;IACvD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,CAAC,CAAC;KACV;IACD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC7D,IAAI,EAAE,CAAC;KACR;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAChC,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAS,GAAW;IACtD,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,CAAC,EAAE,CAAC;YACJ,SAAS;SACV;QACD,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,EAAE;YAClD,IAAI,cAAc,KAAK,IAAI,EAAE;gBAC3B,cAAc,GAAG,EAAE,CAAC;aACrB;iBAAM,IAAI,cAAc,KAAK,EAAE,EAAE;gBAChC,cAAc,GAAG,IAAI,CAAC;aACvB;SACF;KACF;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAW,EAAU,EAAE;IACnE,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;QACnB,IAAI,CAAC,KAAK,GAAG,EAAE;YACb,cAAc,EAAE,CAAC;SAClB;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,GAAG,CAAC,EAAE;YAC1C,cAAc,EAAE,CAAC;SAClB;KACF;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAS,KAAa,EAAE,KAAc;IAC9E,6DAA6D;IAC7D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACrC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9C,KAAK,IAAI,IAAI,CAAC;SACf;QACD,KAAK,IAAI,CAAC,CAAC;KACZ;IACD,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,kBAAkB;IACd,kBAAkB,CAAqB;CAChD;AAID,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAS,KAAa;IACrD,OAAO,KAAK,CAAC,WAAW,EAAqB,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,qGAAqG,CAAC;AACnH,gHAAgH;AAChH,wFAAwF;AACxF,sDAAsD;AACtD,oEAAoE;AACpE,qDAAqD;AACrD,wFAAwF;AACxF,uCAAuC;AACvC,4FAA4F;AAC5F,iGAAiG;AACjG,gGAAgG;AAChG,oEAAoE;AACpE,kCAAkC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,UAAS,KAAa;IAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAC3E,CAAC;AACxB,CAAC,CAAC;AAEF,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,YAE/B;IACC,MAAM,MAAM,GAER,EAAE,CAAC;IACP,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACvD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;KAClC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,sDAAsD;AAEtD,4FAA4F;AAC5F,MAAM,CAAC,MAAM,WAAW,GAAG,UAAS,KAAa,EAAE,MAAc,EAAE,WAAmB;IACpF,MAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,qBAAqB,KAAK,CAAC,CAAC,EAAE;QAChC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACjH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,sBAAsB,CAAC,CAAS,EAAE,SAAS,GAAG,CAAC;IAC5F,IAAI,SAAS,KAAK,CAAC,EAAE;QACnB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KACrB;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1D,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACxC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAS,GAAW,EAAE,GAAW;IAC3D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC1C,8DAA8D;QAC9D,OAAO,GAAG,GAAG,GAAG,CAAC;KAClB;IACD,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC","sourcesContent":["// Copyright (c) 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nexport const escapeCharacters = (inputString: string, charsToEscape: string): string => {\n let foundChar = false;\n for (let i = 0; i < charsToEscape.length; ++i) {\n if (inputString.indexOf(charsToEscape.charAt(i)) !== -1) {\n foundChar = true;\n break;\n }\n }\n\n if (!foundChar) {\n return String(inputString);\n }\n\n let result = '';\n for (let i = 0; i < inputString.length; ++i) {\n if (charsToEscape.indexOf(inputString.charAt(i)) !== -1) {\n result += '\\\\';\n }\n result += inputString.charAt(i);\n }\n\n return result;\n};\n\nconst toHexadecimal = (charCode: number, padToLength: number): string => {\n return charCode.toString(16).toUpperCase().padStart(padToLength, '0');\n};\n\n// Remember to update the third group in the regexps patternsToEscape and\n// patternsToEscapePlusSingleQuote when adding new entries in this map.\nconst escapedReplacements = new Map([\n ['\\b', '\\\\b'],\n ['\\f', '\\\\f'],\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\v', '\\\\v'],\n ['\\'', '\\\\\\''],\n ['\\\\', '\\\\\\\\'],\n ['<!--', '\\\\x3C!--'],\n ['<script', '\\\\x3Cscript'],\n ['</script', '\\\\x3C/script'],\n]);\n\nexport const formatAsJSLiteral = (content: string): string => {\n const patternsToEscape = /(\\\\|<(?:!--|\\/?script))|(\\p{Control})|(\\p{Surrogate})/gu;\n const patternsToEscapePlusSingleQuote = /(\\\\|'|<(?:!--|\\/?script))|(\\p{Control})|(\\p{Surrogate})/gu;\n const escapePattern = (match: string, pattern: string, controlChar: string, loneSurrogate: string): string => {\n if (controlChar) {\n if (escapedReplacements.has(controlChar)) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/13086\n return escapedReplacements.get(controlChar);\n }\n const twoDigitHex = toHexadecimal(controlChar.charCodeAt(0), 2);\n return '\\\\x' + twoDigitHex;\n }\n if (loneSurrogate) {\n const fourDigitHex = toHexadecimal(loneSurrogate.charCodeAt(0), 4);\n return '\\\\u' + fourDigitHex;\n }\n if (pattern) {\n return escapedReplacements.get(pattern) || '';\n }\n return match;\n };\n\n let escapedContent = '';\n let quote = '';\n if (!content.includes('\\'')) {\n quote = '\\'';\n escapedContent = content.replaceAll(patternsToEscape, escapePattern);\n } else if (!content.includes('\"')) {\n quote = '\"';\n escapedContent = content.replaceAll(patternsToEscape, escapePattern);\n } else if (!content.includes('`') && !content.includes('${')) {\n quote = '`';\n escapedContent = content.replaceAll(patternsToEscape, escapePattern);\n } else {\n quote = '\\'';\n escapedContent = content.replaceAll(patternsToEscapePlusSingleQuote, escapePattern);\n }\n return `${quote}${escapedContent}${quote}`;\n};\n\n/**\n * This implements a subset of the sprintf() function described in the Single UNIX\n * Specification. It supports the %s, %f, %d, and %% formatting specifiers, and\n * understands the %m$d notation to select the m-th parameter for this substitution,\n * as well as the optional precision for %s, %f, and %d.\n *\n * @param fmt format string.\n * @param args parameters to the format string.\n * @returns the formatted output string.\n */\nexport const sprintf = (fmt: string, ...args: unknown[]): string => {\n let argIndex = 0;\n const RE = /%(?:(\\d+)\\$)?(?:\\.(\\d*))?([%dfs])/g;\n return fmt.replaceAll(RE, (_: string, index?: string, precision?: string, specifier?: string) => {\n if (specifier === '%') {\n return '%';\n }\n if (index !== undefined) {\n argIndex = parseInt(index, 10) - 1;\n if (argIndex < 0) {\n throw new RangeError(`Invalid parameter index ${argIndex + 1}`);\n }\n }\n if (argIndex >= args.length) {\n throw new RangeError(`Expected at least ${argIndex + 1} format parameters, but only ${args.length} where given.`);\n }\n if (specifier === 's') {\n const argValue = String(args[argIndex++]);\n if (precision !== undefined) {\n return argValue.substring(0, Number(precision));\n }\n return argValue;\n }\n let argValue = Number(args[argIndex++]);\n if (isNaN(argValue)) {\n argValue = 0;\n }\n if (specifier === 'd') {\n return String(Math.floor(argValue)).padStart(Number(precision), '0');\n }\n if (precision !== undefined) {\n return argValue.toFixed(Number(precision));\n }\n return String(argValue);\n });\n};\n\nexport const toBase64 = (inputString: string): string => {\n /* note to the reader: we can't use btoa here because we need to\n * support Unicode correctly. See the test cases for this function and\n * also\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem\n */\n\n function encodeBits(b: number): number {\n return b < 26 ? b + 65 : b < 52 ? b + 71 : b < 62 ? b - 4 : b === 62 ? 43 : b === 63 ? 47 : 65;\n }\n const encoder = new TextEncoder();\n const data = encoder.encode(inputString.toString());\n const n = data.length;\n let encoded = '';\n if (n === 0) {\n return encoded;\n }\n let shift;\n let v = 0;\n for (let i = 0; i < n; i++) {\n shift = i % 3;\n v |= data[i] << (16 >>> shift & 24);\n if (shift === 2) {\n encoded += String.fromCharCode(\n encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), encodeBits(v >>> 6 & 63), encodeBits(v & 63));\n v = 0;\n }\n }\n if (shift === 0) {\n encoded += String.fromCharCode(encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), 61, 61);\n } else if (shift === 1) {\n encoded += String.fromCharCode(encodeBits(v >>> 18 & 63), encodeBits(v >>> 12 & 63), encodeBits(v >>> 6 & 63), 61);\n }\n return encoded;\n};\n\nexport const findIndexesOfSubString = (inputString: string, searchString: string): number[] => {\n const matches = [];\n let i = inputString.indexOf(searchString);\n while (i !== -1) {\n matches.push(i);\n i = inputString.indexOf(searchString, i + searchString.length);\n }\n return matches;\n};\n\nexport const findLineEndingIndexes = (inputString: string): number[] => {\n const endings = findIndexesOfSubString(inputString, '\\n');\n endings.push(inputString.length);\n return endings;\n};\n\nexport const isWhitespace = (inputString: string): boolean => {\n return /^\\s*$/.test(inputString);\n};\n\nexport const trimURL = (url: string, baseURLDomain?: string): string => {\n let result = url.replace(/^(https|http|file):\\/\\//i, '');\n if (baseURLDomain) {\n if (result.toLowerCase().startsWith(baseURLDomain.toLowerCase())) {\n result = result.substr(baseURLDomain.length);\n }\n }\n return result;\n};\n\nexport const collapseWhitespace = (inputString: string): string => {\n return inputString.replace(/[\\s\\xA0]+/g, ' ');\n};\n\nexport const reverse = (inputString: string): string => {\n return inputString.split('').reverse().join('');\n};\n\nexport const replaceControlCharacters = (inputString: string): string => {\n // Replace C0 and C1 control character sets with replacement character.\n // Do not replace '\\t', \\n' and '\\r'.\n return inputString.replace(/[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\x80-\\x9F]/g, '\\uFFFD');\n};\n\nexport const countWtf8Bytes = (inputString: string): number => {\n let count = 0;\n for (let i = 0; i < inputString.length; i++) {\n const c = inputString.charCodeAt(i);\n if (c <= 0x7F) {\n count++;\n } else if (c <= 0x07FF) {\n count += 2;\n } else if (c < 0xD800 || 0xDFFF < c) {\n count += 3;\n } else {\n if (c <= 0xDBFF && i + 1 < inputString.length) {\n // The current character is a leading surrogate, and there is a\n // next character.\n const next = inputString.charCodeAt(i + 1);\n if (0xDC00 <= next && next <= 0xDFFF) {\n // The next character is a trailing surrogate, meaning this\n // is a surrogate pair.\n count += 4;\n i++;\n continue;\n }\n }\n count += 3;\n }\n }\n return count;\n};\n\nexport const stripLineBreaks = (inputStr: string): string => {\n return inputStr.replace(/(\\r)?\\n/g, '');\n};\n\nconst EXTENDED_KEBAB_CASE_REGEXP = /^([a-z0-9]+(?:-[a-z0-9]+)*\\.)*[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\n/**\n * Tests if the `inputStr` is following the extended Kebab Case naming convetion,\n * where words are separated with either a dash (`-`) or a dot (`.`), and all\n * characters must be lower-case alphanumeric.\n *\n * For example, it will yield `true` for `'my.amazing-string.literal'`, but `false`\n * for `'Another.AmazingLiteral'` or '`another_amazing_literal'`.\n *\n * @param inputStr the input string to test.\n * @return `true` if the `inputStr` follows the extended Kebab Case convention.\n */\nexport const isExtendedKebabCase = (inputStr: string): boolean => {\n return EXTENDED_KEBAB_CASE_REGEXP.test(inputStr);\n};\n\nexport const toTitleCase = (inputStr: string): string => {\n return inputStr.substring(0, 1).toUpperCase() + inputStr.substring(1);\n};\n\nexport const removeURLFragment = (inputStr: string): string => {\n const url = new URL(inputStr);\n url.hash = '';\n return url.toString();\n};\n\nconst SPECIAL_REGEX_CHARACTERS = '^[]{}()\\\\.^$*+?|-,';\n\nexport const regexSpecialCharacters = function(): string {\n return SPECIAL_REGEX_CHARACTERS;\n};\n\nexport const filterRegex = function(query: string): RegExp {\n let regexString = '^(?:.*\\\\0)?'; // Start from beginning or after a \\0\n for (let i = 0; i < query.length; ++i) {\n let c = query.charAt(i);\n if (SPECIAL_REGEX_CHARACTERS.indexOf(c) !== -1) {\n c = '\\\\' + c;\n }\n regexString += '[^\\\\0' + c + ']*' + c;\n }\n return new RegExp(regexString, 'i');\n};\n\nexport const createSearchRegex = function(\n query: string, caseSensitive: boolean, isRegex: boolean, matchWholeWord: boolean = false): RegExp {\n const regexFlags = caseSensitive ? 'g' : 'gi';\n let regexObject;\n\n if (isRegex) {\n try {\n regexObject = new RegExp(query, regexFlags);\n } catch (e) {\n // Silent catch.\n }\n }\n\n if (!regexObject) {\n regexObject = createPlainTextSearchRegex(query, regexFlags);\n }\n\n if (matchWholeWord && regexObject) {\n regexObject = new RegExp(`\\\\b${regexObject.source}\\\\b`, regexFlags);\n }\n\n return regexObject;\n};\n\nexport const caseInsensetiveComparator = function(a: string, b: string): number {\n a = a.toUpperCase();\n b = b.toUpperCase();\n if (a === b) {\n return 0;\n }\n return a > b ? 1 : -1;\n};\n\nexport const hashCode = function(string?: string): number {\n if (!string) {\n return 0;\n }\n // Hash algorithm for substrings is described in \"Über die Komplexität der Multiplikation in\n // eingeschränkten Branchingprogrammmodellen\" by Woelfe.\n // http://opendatastructures.org/versions/edition-0.1d/ods-java/node33.html#SECTION00832000000000000000\n const p = ((1 << 30) * 4 - 5); // prime: 2^32 - 5\n const z = 0x5033d967; // 32 bits from random.org\n const z2 = 0x59d2f15d; // random odd 32 bit number\n let s = 0;\n let zi = 1;\n for (let i = 0; i < string.length; i++) {\n const xi = string.charCodeAt(i) * z2;\n s = (s + zi * xi) % p;\n zi = (zi * z) % p;\n }\n s = (s + zi * (p - 1)) % p;\n return Math.abs(s | 0);\n};\n\nexport const compare = (a: string, b: string): number => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n return 0;\n};\n\nexport const trimMiddle = (str: string, maxLength: number): string => {\n if (str.length <= maxLength) {\n return String(str);\n }\n let leftHalf = maxLength >> 1;\n let rightHalf = maxLength - leftHalf - 1;\n if ((str.codePointAt(str.length - rightHalf - 1) as number) >= 0x10000) {\n --rightHalf;\n ++leftHalf;\n }\n if (leftHalf > 0 && (str.codePointAt(leftHalf - 1) as number) >= 0x10000) {\n --leftHalf;\n }\n return str.substr(0, leftHalf) + '…' + str.substr(str.length - rightHalf, rightHalf);\n};\n\nexport const trimEndWithMaxLength = (str: string, maxLength: number): string => {\n if (str.length <= maxLength) {\n return String(str);\n }\n return str.substr(0, maxLength - 1) + '…';\n};\n\nexport const escapeForRegExp = (str: string): string => {\n return escapeCharacters(str, SPECIAL_REGEX_CHARACTERS);\n};\n\nexport const naturalOrderComparator = (a: string, b: string): number => {\n const chunk = /^\\d+|^\\D+/;\n let chunka, chunkb, anum, bnum;\n while (true) {\n if (a) {\n if (!b) {\n return 1;\n }\n } else {\n if (b) {\n return -1;\n }\n return 0;\n }\n chunka = (a.match(chunk) as string[])[0];\n chunkb = (b.match(chunk) as string[])[0];\n anum = !Number.isNaN(Number(chunka));\n bnum = !Number.isNaN(Number(chunkb));\n if (anum && !bnum) {\n return -1;\n }\n if (bnum && !anum) {\n return 1;\n }\n if (anum && bnum) {\n const diff = Number(chunka) - Number(chunkb);\n if (diff) {\n return diff;\n }\n if (chunka.length !== chunkb.length) {\n if (!Number(chunka) && !Number(chunkb)) { // chunks are strings of all 0s (special case)\n return chunka.length - chunkb.length;\n }\n return chunkb.length - chunka.length;\n }\n } else if (chunka !== chunkb) {\n return (chunka < chunkb) ? -1 : 1;\n }\n a = a.substring(chunka.length);\n b = b.substring(chunkb.length);\n }\n};\n\nexport const base64ToSize = function(content: string|null): number {\n if (!content) {\n return 0;\n }\n let size = content.length * 3 / 4;\n if (content[content.length - 1] === '=') {\n size--;\n }\n if (content.length > 1 && content[content.length - 2] === '=') {\n size--;\n }\n return size;\n};\n\nexport const SINGLE_QUOTE = '\\'';\nexport const DOUBLE_QUOTE = '\"';\nconst BACKSLASH = '\\\\';\n\nexport const findUnclosedCssQuote = function(str: string): string {\n let unmatchedQuote = '';\n for (let i = 0; i < str.length; ++i) {\n const char = str[i];\n if (char === BACKSLASH) {\n i++;\n continue;\n }\n if (char === SINGLE_QUOTE || char === DOUBLE_QUOTE) {\n if (unmatchedQuote === char) {\n unmatchedQuote = '';\n } else if (unmatchedQuote === '') {\n unmatchedQuote = char;\n }\n }\n }\n return unmatchedQuote;\n};\n\nexport const countUnmatchedLeftParentheses = (str: string): number => {\n let unmatchedCount = 0;\n for (const c of str) {\n if (c === '(') {\n unmatchedCount++;\n } else if (c === ')' && unmatchedCount > 0) {\n unmatchedCount--;\n }\n }\n return unmatchedCount;\n};\n\nexport const createPlainTextSearchRegex = function(query: string, flags?: string): RegExp {\n // This should be kept the same as the one in StringUtil.cpp.\n let regex = '';\n for (let i = 0; i < query.length; ++i) {\n const c = query.charAt(i);\n if (regexSpecialCharacters().indexOf(c) !== -1) {\n regex += '\\\\';\n }\n regex += c;\n }\n return new RegExp(regex, flags || '');\n};\n\nclass LowerCaseStringTag {\n private lowerCaseStringTag: (string|undefined);\n}\n\nexport type LowerCaseString = string&LowerCaseStringTag;\n\nexport const toLowerCaseString = function(input: string): LowerCaseString {\n return input.toLowerCase() as LowerCaseString;\n};\n\nconst WORD = /[A-Z]{2,}(?=[A-Z0-9][a-z0-9]+|\\b)|[A-Za-z][0-9]+[a-z]|[A-Z]?[a-z]+|[0-9][A-Za-z]+|[A-Z]|[0-9]+|[.]/g;\n// <---1---><-----------2----------> <--------3--------> <-----4----> <------5-----> <-----6----> <7>\n// 1: two or more consecutive uppercase letters. This is useful for identifying acronyms\n// 2: lookahead assertion that matches a word boundary\n// 3: numeronym: single letter followed by number and another letter\n// 4: word starting with an optional uppercase letter\n// 5: single digit followed by word to handle '3D' or '2px' (this might be controverial)\n// 6: single uppercase letter or number\n// 7: a dot character. We extract it into a separate word and remove dashes around it later.\n// This is makes more sense conceptually and allows accounting for all possible word variants.\n// Making dot a part of a word prevent us from handling acronyms or numeronyms after the word\n// correctly without making the RegExp prohibitively complicated.\n// https://regex101.com/r/LtFugp/1\nexport const toKebabCase = function(input: string): Lowercase<string> {\n return (input.match?.(WORD)?.map(w => w.toLowerCase()).join('-').replaceAll('-.-', '.') || input) as\n Lowercase<string>;\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function toKebabCaseKeys(settingValue: {\n [x: string]: any,\n}): {[x: string]: any} {\n const result: {\n [x: string]: any,\n } = {};\n for (const [key, value] of Object.entries(settingValue)) {\n result[toKebabCase(key)] = value;\n }\n return result;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// Replaces the last ocurrence of parameter `search` with parameter `replacement` in `input`\nexport const replaceLast = function(input: string, search: string, replacement: string): string {\n const replacementStartIndex = input.lastIndexOf(search);\n if (replacementStartIndex === -1) {\n return input;\n }\n\n return input.slice(0, replacementStartIndex) + input.slice(replacementStartIndex).replace(search, replacement);\n};\n\nexport const stringifyWithPrecision = function stringifyWithPrecision(s: number, precision = 2): string {\n if (precision === 0) {\n return s.toFixed(0);\n }\n const string = s.toFixed(precision).replace(/\\.?0*$/, '');\n return string === '-0' ? '0' : string;\n};\n\n/**\n * Somewhat efficiently concatenates 2 base64 encoded strings.\n */\nexport const concatBase64 = function(lhs: string, rhs: string): string {\n if (lhs.length === 0 || !lhs.endsWith('=')) {\n // Empty string or no padding, we can straight-up concatenate.\n return lhs + rhs;\n }\n const lhsLeaveAsIs = lhs.substring(0, lhs.length - 4);\n const lhsToDecode = lhs.substring(lhs.length - 4);\n return lhsLeaveAsIs + window.btoa(window.atob(lhsToDecode) + window.atob(rhs));\n};\n"]}
@@ -3,7 +3,7 @@
3
3
  * that's potentially `null` you can use this function to assert that it isn't,
4
4
  * and satisfy TypeScript that the value is present.
5
5
  */
6
- export declare function assertNotNullOrUndefined<T>(val: T): asserts val is NonNullable<T>;
6
+ export declare function assertNotNullOrUndefined<T>(val: T, message?: string): asserts val is NonNullable<T>;
7
7
  export declare function assertNever(type: never, message: string): never;
8
8
  /**
9
9
  * This is useful to check on the type-level that the unhandled cases of
@@ -11,10 +11,10 @@ export declare function assertNever(type: never, message: string): never;
11
11
  * @param caseVariable
12
12
  */
13
13
  export declare function assertUnhandled<T>(_caseVariable: T): T;
14
- export declare type FieldsThatExtend<Type, Selector> = {
14
+ export type FieldsThatExtend<Type, Selector> = {
15
15
  [Key in keyof Type]: Type[Key] extends Selector ? Key : never;
16
16
  }[keyof Type];
17
- export declare type PickFieldsThatExtend<Type, Selector> = Pick<Type, FieldsThatExtend<Type, Selector>>;
17
+ export type PickFieldsThatExtend<Type, Selector> = Pick<Type, FieldsThatExtend<Type, Selector>>;
18
18
  /**
19
19
  * Turns a Union type (a | b) into an Intersection type (a & b).
20
20
  * This is a helper type to implement the "NoUnion" guard.
@@ -35,7 +35,7 @@ export declare type PickFieldsThatExtend<Type, Selector> = Pick<Type, FieldsThat
35
35
  * `string & number`. There is no type that fulfills both at the same time. A
36
36
  * union of this kind is reduced to `never`.
37
37
  */
38
- declare type IntersectionFromUnion<T> = (T extends any ? (arg: T) => void : never) extends ((arg: infer U) => void) ? U : never;
38
+ type IntersectionFromUnion<T> = (T extends any ? (arg: T) => void : never) extends ((arg: infer U) => void) ? U : never;
39
39
  /**
40
40
  * When writing generic code it may be desired to disallow Union types from
41
41
  * being passed. This type can be used in those cases.
@@ -52,5 +52,5 @@ declare type IntersectionFromUnion<T> = (T extends any ? (arg: T) => void : neve
52
52
  * instead of `T extends IntersectionFromUnion<T>`.
53
53
  * See: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html
54
54
  */
55
- export declare type NoUnion<T> = [T] extends [IntersectionFromUnion<T>] ? T : never;
55
+ export type NoUnion<T> = [T] extends [IntersectionFromUnion<T>] ? T : never;
56
56
  export {};
@@ -1,13 +1,25 @@
1
+ // Copyright 2020 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ /**
5
+ * This is useful to keep TypeScript happy in a test - if you have a value
6
+ * that's potentially `null` you can use this function to assert that it isn't,
7
+ * and satisfy TypeScript that the value is present.
8
+ */
1
9
  export function assertNotNullOrUndefined(val, message) {
2
- if (val === null || val === void 0) {
3
- throw new Error(`Expected given value to not be null/undefined but it was: ${val}${message ? `
4
- ${message}` : ""}`);
5
- }
10
+ if (val === null || val === undefined) {
11
+ throw new Error(`Expected given value to not be null/undefined but it was: ${val}${message ? `\n${message}` : ''}`);
12
+ }
6
13
  }
7
14
  export function assertNever(type, message) {
8
- throw new Error(message);
15
+ throw new Error(message);
9
16
  }
17
+ /**
18
+ * This is useful to check on the type-level that the unhandled cases of
19
+ * a switch are exactly `T` (where T is usually a union type of enum values).
20
+ * @param caseVariable
21
+ */
10
22
  export function assertUnhandled(_caseVariable) {
11
- return _caseVariable;
23
+ return _caseVariable;
12
24
  }
13
- //# sourceMappingURL=typescript-utilities.js.map
25
+ //# sourceMappingURL=typescript-utilities.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../front_end/core/platform/typescript-utilities.ts"],
4
- "sourcesContent": ["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/**\n * This is useful to keep TypeScript happy in a test - if you have a value\n * that's potentially `null` you can use this function to assert that it isn't,\n * and satisfy TypeScript that the value is present.\n */\nexport function assertNotNullOrUndefined<T>(val: T, message?: string): asserts val is NonNullable<T> {\n if (val === null || val === undefined) {\n throw new Error(`Expected given value to not be null/undefined but it was: ${val}${message ? `\\n${message}` : ''}`);\n }\n}\n\nexport function assertNever(type: never, message: string): never {\n throw new Error(message);\n}\n\n/**\n * This is useful to check on the type-level that the unhandled cases of\n * a switch are exactly `T` (where T is usually a union type of enum values).\n * @param caseVariable\n */\nexport function assertUnhandled<T>(_caseVariable: T): T {\n return _caseVariable;\n}\n\nexport type FieldsThatExtend<Type, Selector> = {\n [Key in keyof Type]: Type[Key] extends Selector ? Key : never;\n}[keyof Type];\n\nexport type PickFieldsThatExtend<Type, Selector> = Pick<Type, FieldsThatExtend<Type, Selector>>;\n\n/**\n * Turns a Union type (a | b) into an Intersection type (a & b).\n * This is a helper type to implement the \"NoUnion\" guard.\n *\n * Adapted from https://stackoverflow.com/a/50375286.\n *\n * The tautological `T extends any` is necessary to trigger distributivity for\n * plain unions, e.g. in IntersectionFromUnion<'a'|'b'> TypeScript expands it\n * to ('a' extends any ? (arg: 'a') => void : never)\n * | ('b' extends any ? (arg: 'b') => void : never)\n *\n * The second extends clause then asks TypeScript to find a type of the form\n * `(arg: infer U) => void` that upper-bounds the union, i.e., intuitively,\n * a type that converts to each of the union members. This forces U to be the\n * intersection of 'a' and 'b' in the example.\n *\n * Please note that some intersection types are simply impossible, e.g.\n * `string & number`. There is no type that fulfills both at the same time. A\n * union of this kind is reduced to `never`.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype IntersectionFromUnion<T> = (T extends any ? (arg: T) => void : never) extends((arg: infer U) => void) ? U : never;\n\n/**\n * When writing generic code it may be desired to disallow Union types from\n * being passed. This type can be used in those cases.\n *\n * function foo<T>(argument: NoUnion<T>) {...}\n *\n * Would result in a compile error for foo<a|b>(...); invocations as `argument`\n * would be typed as `never`.\n *\n * Adapted from https://stackoverflow.com/a/50641073.\n *\n * Conditional types become distributive when receiving a union type. To\n * prevent this from happening, we use `[T] extends [IntersectionFromUnion<T>]`\n * instead of `T extends IntersectionFromUnion<T>`.\n * See: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\n */\nexport type NoUnion<T> = [T] extends [IntersectionFromUnion<T>] ? T : never;\n"],
5
- "mappings": "AASO,yCAAqC,KAAQ,SAAiD;AACnG,MAAI,QAAQ,QAAQ,QAAQ,QAAW;AACrC,UAAM,IAAI,MAAM,6DAA6D,MAAM,UAAU;AAAA,EAAK,YAAY;AAAA;AAAA;AAI3G,4BAAqB,MAAa,SAAwB;AAC/D,QAAM,IAAI,MAAM;AAAA;AAQX,gCAA4B,eAAqB;AACtD,SAAO;AAAA;",
6
- "names": []
7
- }
1
+ {"version":3,"file":"typescript-utilities.js","sourceRoot":"","sources":["../../../../../../front_end/core/platform/typescript-utilities.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAI,GAAM,EAAE,OAAgB;IAClE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,6DAA6D,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACrH;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAW,EAAE,OAAe;IACtD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAI,aAAgB;IACjD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/**\n * This is useful to keep TypeScript happy in a test - if you have a value\n * that's potentially `null` you can use this function to assert that it isn't,\n * and satisfy TypeScript that the value is present.\n */\nexport function assertNotNullOrUndefined<T>(val: T, message?: string): asserts val is NonNullable<T> {\n if (val === null || val === undefined) {\n throw new Error(`Expected given value to not be null/undefined but it was: ${val}${message ? `\\n${message}` : ''}`);\n }\n}\n\nexport function assertNever(type: never, message: string): never {\n throw new Error(message);\n}\n\n/**\n * This is useful to check on the type-level that the unhandled cases of\n * a switch are exactly `T` (where T is usually a union type of enum values).\n * @param caseVariable\n */\nexport function assertUnhandled<T>(_caseVariable: T): T {\n return _caseVariable;\n}\n\nexport type FieldsThatExtend<Type, Selector> = {\n [Key in keyof Type]: Type[Key] extends Selector ? Key : never;\n}[keyof Type];\n\nexport type PickFieldsThatExtend<Type, Selector> = Pick<Type, FieldsThatExtend<Type, Selector>>;\n\n/**\n * Turns a Union type (a | b) into an Intersection type (a & b).\n * This is a helper type to implement the \"NoUnion\" guard.\n *\n * Adapted from https://stackoverflow.com/a/50375286.\n *\n * The tautological `T extends any` is necessary to trigger distributivity for\n * plain unions, e.g. in IntersectionFromUnion<'a'|'b'> TypeScript expands it\n * to ('a' extends any ? (arg: 'a') => void : never)\n * | ('b' extends any ? (arg: 'b') => void : never)\n *\n * The second extends clause then asks TypeScript to find a type of the form\n * `(arg: infer U) => void` that upper-bounds the union, i.e., intuitively,\n * a type that converts to each of the union members. This forces U to be the\n * intersection of 'a' and 'b' in the example.\n *\n * Please note that some intersection types are simply impossible, e.g.\n * `string & number`. There is no type that fulfills both at the same time. A\n * union of this kind is reduced to `never`.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype IntersectionFromUnion<T> = (T extends any ? (arg: T) => void : never) extends((arg: infer U) => void) ? U : never;\n\n/**\n * When writing generic code it may be desired to disallow Union types from\n * being passed. This type can be used in those cases.\n *\n * function foo<T>(argument: NoUnion<T>) {...}\n *\n * Would result in a compile error for foo<a|b>(...); invocations as `argument`\n * would be typed as `never`.\n *\n * Adapted from https://stackoverflow.com/a/50641073.\n *\n * Conditional types become distributive when receiving a union type. To\n * prevent this from happening, we use `[T] extends [IntersectionFromUnion<T>]`\n * instead of `T extends IntersectionFromUnion<T>`.\n * See: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\n */\nexport type NoUnion<T> = [T] extends [IntersectionFromUnion<T>] ? T : never;\n"]}