chrome-devtools-frontend 1.0.944427 → 1.0.945677

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 (327) hide show
  1. package/config/gni/devtools_grd_files.gni +4 -0
  2. package/config/gni/devtools_image_files.gni +1 -0
  3. package/front_end/Images/src/circled_exclamation_icon.svg +3 -0
  4. package/front_end/core/common/ParsedURL.ts +1 -1
  5. package/front_end/core/host/UserMetrics.ts +3 -1
  6. package/front_end/core/i18n/i18nImpl.ts +7 -4
  7. package/front_end/core/i18n/locales/en-US.json +3 -60
  8. package/front_end/core/i18n/locales/en-XL.json +15 -72
  9. package/front_end/core/protocol_client/NodeURL.ts +1 -0
  10. package/front_end/core/sdk/CSSMetadata.ts +0 -1
  11. package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -3
  12. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +2 -3
  13. package/front_end/core/sdk/Cookie.ts +17 -0
  14. package/front_end/core/sdk/CookieModel.ts +1 -0
  15. package/front_end/core/sdk/DebuggerModel.ts +5 -4
  16. package/front_end/core/sdk/NetworkManager.ts +4 -1
  17. package/front_end/core/sdk/NetworkRequest.ts +2 -2
  18. package/front_end/core/sdk/Resource.ts +2 -2
  19. package/front_end/core/sdk/Script.ts +2 -3
  20. package/front_end/entrypoints/main/MainImpl.ts +6 -0
  21. package/front_end/generated/protocol.d.ts +0 -4
  22. package/front_end/models/bindings/BreakpointManager.ts +3 -4
  23. package/front_end/models/bindings/ResourceMapping.ts +1 -2
  24. package/front_end/models/bindings/StylesSourceMapping.ts +1 -2
  25. package/front_end/models/emulation/EmulatedDevices.ts +2 -4
  26. package/front_end/models/persistence/IsolatedFileSystem.ts +7 -6
  27. package/front_end/models/persistence/PersistenceActions.ts +4 -1
  28. package/front_end/models/persistence/PlatformFileSystem.ts +3 -4
  29. package/front_end/models/text_utils/ContentProvider.ts +1 -2
  30. package/front_end/models/text_utils/StaticContentProvider.ts +2 -3
  31. package/front_end/models/timeline_model/TimelineJSProfile.ts +16 -3
  32. package/front_end/models/timeline_model/TimelineModel.ts +1 -0
  33. package/front_end/models/workspace/UISourceCode.ts +2 -2
  34. package/front_end/models/workspace_diff/WorkspaceDiff.ts +20 -6
  35. package/front_end/panels/animation/AnimationTimeline.ts +1 -1
  36. package/front_end/panels/animation/animationTimeline.css +2 -0
  37. package/front_end/panels/application/BackForwardCacheStrings.ts +15 -75
  38. package/front_end/panels/application/BackForwardCacheView.ts +8 -1
  39. package/front_end/panels/application/ReportingApiView.ts +15 -1
  40. package/front_end/panels/application/components/EndpointsGrid.ts +63 -4
  41. package/front_end/panels/application/components/FrameDetailsView.ts +21 -34
  42. package/front_end/panels/changes/ChangesView.ts +8 -7
  43. package/front_end/panels/elements/StyleEditorWidget.ts +7 -7
  44. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -15
  45. package/front_end/panels/elements/StylesSidebarPane.ts +35 -9
  46. package/front_end/panels/emulation/DeviceModeView.ts +3 -0
  47. package/front_end/panels/help/ReleaseNoteText.ts +3 -1
  48. package/front_end/panels/network/NetworkItemView.ts +7 -1
  49. package/front_end/panels/profiler/heapProfiler.css +2 -5
  50. package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +1 -1
  51. package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
  52. package/front_end/panels/sources/NavigatorView.ts +1 -1
  53. package/front_end/panels/sources/UISourceCodeFrame.ts +0 -1
  54. package/front_end/panels/timeline/TimelineController.ts +3 -0
  55. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -34
  56. package/front_end/panels/timeline/TimelineUIUtils.ts +51 -3
  57. package/front_end/panels/webauthn/WebauthnPane.ts +31 -32
  58. package/front_end/services/window_bounds/WindowBoundsService.ts +27 -0
  59. package/front_end/services/window_bounds/window_bounds.ts +9 -0
  60. package/front_end/third_party/acorn/README.chromium +2 -2
  61. package/front_end/third_party/acorn/acorn.ts +1 -1
  62. package/front_end/third_party/acorn/package/CHANGELOG.md +31 -1
  63. package/front_end/third_party/acorn/package/README.md +1 -1
  64. package/front_end/third_party/acorn/package/dist/acorn.d.ts +3 -0
  65. package/front_end/third_party/acorn/package/dist/acorn.js +772 -708
  66. package/front_end/third_party/acorn/package/dist/acorn.mjs +767 -703
  67. package/front_end/third_party/acorn/package/dist/bin.js +47 -21
  68. package/front_end/third_party/acorn/package/package.json +1 -1
  69. package/front_end/third_party/acorn-loose/README.chromium +2 -2
  70. package/front_end/third_party/acorn-loose/package/CHANGELOG.md +12 -0
  71. package/front_end/third_party/acorn-loose/package/dist/acorn-loose.js +27 -7
  72. package/front_end/third_party/acorn-loose/package/dist/acorn-loose.mjs +28 -8
  73. package/front_end/third_party/acorn-loose/package/package.json +2 -2
  74. package/front_end/third_party/codemirror.next/bundle.ts +1 -1
  75. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  76. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +8 -1
  77. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  78. package/front_end/third_party/codemirror.next/package.json +1 -1
  79. package/front_end/third_party/i18n/i18n-impl.ts +1 -1
  80. package/front_end/third_party/lit-html/README.chromium +2 -2
  81. package/front_end/third_party/lit-html/package/CHANGELOG.md +216 -28
  82. package/front_end/third_party/lit-html/package/LICENSE +9 -9
  83. package/front_end/third_party/lit-html/package/README.md +12 -162
  84. package/front_end/third_party/lit-html/package/async-directive.d.ts +23 -54
  85. package/front_end/third_party/lit-html/package/async-directive.d.ts.map +1 -1
  86. package/front_end/third_party/lit-html/package/async-directive.js +2 -7
  87. package/front_end/third_party/lit-html/package/async-directive.js.map +1 -1
  88. package/front_end/third_party/lit-html/package/development/async-directive.d.ts +23 -54
  89. package/front_end/third_party/lit-html/package/development/async-directive.d.ts.map +1 -1
  90. package/front_end/third_party/lit-html/package/development/async-directive.js +44 -194
  91. package/front_end/third_party/lit-html/package/development/async-directive.js.map +1 -1
  92. package/front_end/third_party/lit-html/package/development/directive-helpers.d.ts +6 -5
  93. package/front_end/third_party/lit-html/package/development/directive-helpers.d.ts.map +1 -1
  94. package/front_end/third_party/lit-html/package/development/directive-helpers.js +25 -9
  95. package/front_end/third_party/lit-html/package/development/directive-helpers.js.map +1 -1
  96. package/front_end/third_party/lit-html/package/development/directive.d.ts +3 -16
  97. package/front_end/third_party/lit-html/package/development/directive.d.ts.map +1 -1
  98. package/front_end/third_party/lit-html/package/development/directive.js +6 -1
  99. package/front_end/third_party/lit-html/package/development/directive.js.map +1 -1
  100. package/front_end/third_party/lit-html/package/development/directives/async-append.d.ts +7 -14
  101. package/front_end/third_party/lit-html/package/development/directives/async-append.d.ts.map +1 -1
  102. package/front_end/third_party/lit-html/package/development/directives/async-append.js +17 -58
  103. package/front_end/third_party/lit-html/package/development/directives/async-append.js.map +1 -1
  104. package/front_end/third_party/lit-html/package/development/directives/async-replace.d.ts +9 -14
  105. package/front_end/third_party/lit-html/package/development/directives/async-replace.d.ts.map +1 -1
  106. package/front_end/third_party/lit-html/package/development/directives/async-replace.js +57 -37
  107. package/front_end/third_party/lit-html/package/development/directives/async-replace.js.map +1 -1
  108. package/front_end/third_party/lit-html/package/development/directives/cache.d.ts +2 -3
  109. package/front_end/third_party/lit-html/package/development/directives/cache.d.ts.map +1 -1
  110. package/front_end/third_party/lit-html/package/development/directives/cache.js +4 -6
  111. package/front_end/third_party/lit-html/package/development/directives/cache.js.map +1 -1
  112. package/front_end/third_party/lit-html/package/development/directives/class-map.d.ts +2 -2
  113. package/front_end/third_party/lit-html/package/development/directives/class-map.d.ts.map +1 -1
  114. package/front_end/third_party/lit-html/package/development/directives/class-map.js +17 -7
  115. package/front_end/third_party/lit-html/package/development/directives/class-map.js.map +1 -1
  116. package/front_end/third_party/lit-html/package/development/directives/guard.d.ts +3 -2
  117. package/front_end/third_party/lit-html/package/development/directives/guard.d.ts.map +1 -1
  118. package/front_end/third_party/lit-html/package/development/directives/guard.js +3 -2
  119. package/front_end/third_party/lit-html/package/development/directives/guard.js.map +1 -1
  120. package/front_end/third_party/lit-html/package/development/directives/live.d.ts +4 -3
  121. package/front_end/third_party/lit-html/package/development/directives/live.d.ts.map +1 -1
  122. package/front_end/third_party/lit-html/package/development/directives/live.js +5 -7
  123. package/front_end/third_party/lit-html/package/development/directives/live.js.map +1 -1
  124. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.d.ts +58 -0
  125. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.d.ts.map +1 -0
  126. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.js +85 -0
  127. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.js.map +1 -0
  128. package/front_end/third_party/lit-html/package/development/directives/ref.d.ts +14 -11
  129. package/front_end/third_party/lit-html/package/development/directives/ref.d.ts.map +1 -1
  130. package/front_end/third_party/lit-html/package/development/directives/ref.js +13 -11
  131. package/front_end/third_party/lit-html/package/development/directives/ref.js.map +1 -1
  132. package/front_end/third_party/lit-html/package/development/directives/repeat.d.ts +8 -4
  133. package/front_end/third_party/lit-html/package/development/directives/repeat.d.ts.map +1 -1
  134. package/front_end/third_party/lit-html/package/development/directives/repeat.js +23 -9
  135. package/front_end/third_party/lit-html/package/development/directives/repeat.js.map +1 -1
  136. package/front_end/third_party/lit-html/package/development/directives/style-map.d.ts +1 -2
  137. package/front_end/third_party/lit-html/package/development/directives/style-map.d.ts.map +1 -1
  138. package/front_end/third_party/lit-html/package/development/directives/style-map.js +1 -2
  139. package/front_end/third_party/lit-html/package/development/directives/style-map.js.map +1 -1
  140. package/front_end/third_party/lit-html/package/development/directives/template-content.d.ts +1 -2
  141. package/front_end/third_party/lit-html/package/development/directives/template-content.js +1 -2
  142. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.d.ts +6 -4
  143. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.d.ts.map +1 -1
  144. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.js +7 -5
  145. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.js.map +1 -1
  146. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.d.ts +4 -1
  147. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.d.ts.map +1 -1
  148. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.js +3 -0
  149. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.js.map +1 -1
  150. package/front_end/third_party/lit-html/package/development/directives/until.d.ts +12 -8
  151. package/front_end/third_party/lit-html/package/development/directives/until.d.ts.map +1 -1
  152. package/front_end/third_party/lit-html/package/development/directives/until.js +63 -23
  153. package/front_end/third_party/lit-html/package/development/directives/until.js.map +1 -1
  154. package/front_end/third_party/lit-html/package/development/experimental-hydrate.d.ts.map +1 -1
  155. package/front_end/third_party/lit-html/package/development/experimental-hydrate.js +9 -8
  156. package/front_end/third_party/lit-html/package/development/experimental-hydrate.js.map +1 -1
  157. package/front_end/third_party/lit-html/package/development/lit-html.d.ts +81 -136
  158. package/front_end/third_party/lit-html/package/development/lit-html.d.ts.map +1 -1
  159. package/front_end/third_party/lit-html/package/development/lit-html.js +249 -76
  160. package/front_end/third_party/lit-html/package/development/lit-html.js.map +1 -1
  161. package/front_end/third_party/lit-html/package/development/polyfill-support.d.ts +1 -41
  162. package/front_end/third_party/lit-html/package/development/polyfill-support.d.ts.map +1 -1
  163. package/front_end/third_party/lit-html/package/development/polyfill-support.js +40 -21
  164. package/front_end/third_party/lit-html/package/development/polyfill-support.js.map +1 -1
  165. package/front_end/third_party/lit-html/package/development/private-ssr-support.d.ts +12 -10
  166. package/front_end/third_party/lit-html/package/development/private-ssr-support.d.ts.map +1 -1
  167. package/front_end/third_party/lit-html/package/development/private-ssr-support.js +11 -3
  168. package/front_end/third_party/lit-html/package/development/private-ssr-support.js.map +1 -1
  169. package/front_end/third_party/lit-html/package/development/static.d.ts.map +1 -1
  170. package/front_end/third_party/lit-html/package/development/static.js +6 -5
  171. package/front_end/third_party/lit-html/package/development/static.js.map +1 -1
  172. package/front_end/third_party/lit-html/package/directive-helpers.d.ts +6 -5
  173. package/front_end/third_party/lit-html/package/directive-helpers.d.ts.map +1 -1
  174. package/front_end/third_party/lit-html/package/directive-helpers.js +2 -2
  175. package/front_end/third_party/lit-html/package/directive-helpers.js.map +1 -1
  176. package/front_end/third_party/lit-html/package/directive.d.ts +3 -16
  177. package/front_end/third_party/lit-html/package/directive.d.ts.map +1 -1
  178. package/front_end/third_party/lit-html/package/directive.js +1 -1
  179. package/front_end/third_party/lit-html/package/directive.js.map +1 -1
  180. package/front_end/third_party/lit-html/package/directives/async-append.d.ts +7 -14
  181. package/front_end/third_party/lit-html/package/directives/async-append.d.ts.map +1 -1
  182. package/front_end/third_party/lit-html/package/directives/async-append.js +2 -6
  183. package/front_end/third_party/lit-html/package/directives/async-append.js.map +1 -1
  184. package/front_end/third_party/lit-html/package/directives/async-replace.d.ts +9 -14
  185. package/front_end/third_party/lit-html/package/directives/async-replace.d.ts.map +1 -1
  186. package/front_end/third_party/lit-html/package/directives/async-replace.js +2 -5
  187. package/front_end/third_party/lit-html/package/directives/async-replace.js.map +1 -1
  188. package/front_end/third_party/lit-html/package/directives/cache.d.ts +2 -3
  189. package/front_end/third_party/lit-html/package/directives/cache.d.ts.map +1 -1
  190. package/front_end/third_party/lit-html/package/directives/cache.js +2 -5
  191. package/front_end/third_party/lit-html/package/directives/cache.js.map +1 -1
  192. package/front_end/third_party/lit-html/package/directives/class-map.d.ts +2 -2
  193. package/front_end/third_party/lit-html/package/directives/class-map.d.ts.map +1 -1
  194. package/front_end/third_party/lit-html/package/directives/class-map.js +2 -4
  195. package/front_end/third_party/lit-html/package/directives/class-map.js.map +1 -1
  196. package/front_end/third_party/lit-html/package/directives/guard.d.ts +3 -2
  197. package/front_end/third_party/lit-html/package/directives/guard.d.ts.map +1 -1
  198. package/front_end/third_party/lit-html/package/directives/guard.js +2 -4
  199. package/front_end/third_party/lit-html/package/directives/guard.js.map +1 -1
  200. package/front_end/third_party/lit-html/package/directives/live.d.ts +4 -3
  201. package/front_end/third_party/lit-html/package/directives/live.d.ts.map +1 -1
  202. package/front_end/third_party/lit-html/package/directives/live.js +1 -4
  203. package/front_end/third_party/lit-html/package/directives/live.js.map +1 -1
  204. package/front_end/third_party/lit-html/package/directives/private-async-helpers.d.ts +58 -0
  205. package/front_end/third_party/lit-html/package/directives/private-async-helpers.d.ts.map +1 -0
  206. package/front_end/third_party/lit-html/package/directives/private-async-helpers.js +7 -0
  207. package/front_end/third_party/lit-html/package/directives/private-async-helpers.js.map +1 -0
  208. package/front_end/third_party/lit-html/package/directives/ref.d.ts +14 -11
  209. package/front_end/third_party/lit-html/package/directives/ref.d.ts.map +1 -1
  210. package/front_end/third_party/lit-html/package/directives/ref.js +2 -5
  211. package/front_end/third_party/lit-html/package/directives/ref.js.map +1 -1
  212. package/front_end/third_party/lit-html/package/directives/repeat.d.ts +8 -4
  213. package/front_end/third_party/lit-html/package/directives/repeat.d.ts.map +1 -1
  214. package/front_end/third_party/lit-html/package/directives/repeat.js +2 -5
  215. package/front_end/third_party/lit-html/package/directives/repeat.js.map +1 -1
  216. package/front_end/third_party/lit-html/package/directives/style-map.d.ts +1 -2
  217. package/front_end/third_party/lit-html/package/directives/style-map.d.ts.map +1 -1
  218. package/front_end/third_party/lit-html/package/directives/style-map.js +2 -4
  219. package/front_end/third_party/lit-html/package/directives/style-map.js.map +1 -1
  220. package/front_end/third_party/lit-html/package/directives/template-content.d.ts +1 -2
  221. package/front_end/third_party/lit-html/package/directives/template-content.js +2 -4
  222. package/front_end/third_party/lit-html/package/directives/template-content.js.map +1 -1
  223. package/front_end/third_party/lit-html/package/directives/unsafe-html.d.ts +6 -4
  224. package/front_end/third_party/lit-html/package/directives/unsafe-html.d.ts.map +1 -1
  225. package/front_end/third_party/lit-html/package/directives/unsafe-html.js +2 -4
  226. package/front_end/third_party/lit-html/package/directives/unsafe-html.js.map +1 -1
  227. package/front_end/third_party/lit-html/package/directives/unsafe-svg.d.ts +4 -1
  228. package/front_end/third_party/lit-html/package/directives/unsafe-svg.d.ts.map +1 -1
  229. package/front_end/third_party/lit-html/package/directives/unsafe-svg.js.map +1 -1
  230. package/front_end/third_party/lit-html/package/directives/until.d.ts +12 -8
  231. package/front_end/third_party/lit-html/package/directives/until.d.ts.map +1 -1
  232. package/front_end/third_party/lit-html/package/directives/until.js +2 -6
  233. package/front_end/third_party/lit-html/package/directives/until.js.map +1 -1
  234. package/front_end/third_party/lit-html/package/experimental-hydrate.d.ts.map +1 -1
  235. package/front_end/third_party/lit-html/package/experimental-hydrate.js +2 -5
  236. package/front_end/third_party/lit-html/package/experimental-hydrate.js.map +1 -1
  237. package/front_end/third_party/lit-html/package/lit-html.d.ts +81 -136
  238. package/front_end/third_party/lit-html/package/lit-html.d.ts.map +1 -1
  239. package/front_end/third_party/lit-html/package/lit-html.js +1 -1
  240. package/front_end/third_party/lit-html/package/lit-html.js.map +1 -1
  241. package/front_end/third_party/lit-html/package/package.json +75 -24
  242. package/front_end/third_party/lit-html/package/polyfill-support.d.ts +1 -41
  243. package/front_end/third_party/lit-html/package/polyfill-support.d.ts.map +1 -1
  244. package/front_end/third_party/lit-html/package/polyfill-support.js +1 -1
  245. package/front_end/third_party/lit-html/package/polyfill-support.js.map +1 -1
  246. package/front_end/third_party/lit-html/package/private-ssr-support.d.ts +12 -10
  247. package/front_end/third_party/lit-html/package/private-ssr-support.d.ts.map +1 -1
  248. package/front_end/third_party/lit-html/package/private-ssr-support.js +2 -2
  249. package/front_end/third_party/lit-html/package/private-ssr-support.js.map +1 -1
  250. package/front_end/third_party/lit-html/package/static.d.ts.map +1 -1
  251. package/front_end/third_party/lit-html/package/static.js +1 -1
  252. package/front_end/third_party/lit-html/package/static.js.map +1 -1
  253. package/front_end/third_party/marked/README.chromium +2 -2
  254. package/front_end/third_party/marked/marked.ts +2 -2
  255. package/front_end/third_party/marked/package/README.md +7 -1
  256. package/front_end/third_party/marked/package/bin/marked.js +214 -0
  257. package/front_end/third_party/marked/package/lib/marked.cjs +2907 -0
  258. package/front_end/third_party/marked/package/lib/marked.esm.d.ts +1 -3
  259. package/front_end/third_party/marked/package/lib/marked.esm.js +627 -586
  260. package/front_end/third_party/marked/package/lib/marked.umd.js +2913 -0
  261. package/front_end/third_party/marked/package/man/marked.1 +5 -24
  262. package/front_end/third_party/marked/package/man/marked.1.txt +21 -31
  263. package/front_end/third_party/marked/package/marked.min.js +1 -1
  264. package/front_end/third_party/marked/package/package.json +41 -32
  265. package/front_end/third_party/marked/package/src/Lexer.js +109 -108
  266. package/front_end/third_party/marked/package/src/Parser.js +38 -15
  267. package/front_end/third_party/marked/package/src/Renderer.js +5 -5
  268. package/front_end/third_party/marked/package/src/Slugger.js +2 -2
  269. package/front_end/third_party/marked/package/src/TextRenderer.js +2 -2
  270. package/front_end/third_party/marked/package/src/Tokenizer.js +215 -190
  271. package/front_end/third_party/marked/package/src/defaults.js +6 -9
  272. package/front_end/third_party/marked/package/src/helpers.js +16 -27
  273. package/front_end/third_party/marked/package/src/marked.js +146 -63
  274. package/front_end/third_party/marked/package/src/rules.js +20 -45
  275. package/front_end/third_party/wasmparser/README.chromium +2 -2
  276. package/front_end/third_party/wasmparser/package/.github/workflows/main.yml +47 -0
  277. package/front_end/third_party/wasmparser/package/CHANGELOG.md +12 -0
  278. package/front_end/third_party/wasmparser/package/dist/cjs/WasmParser.js +53 -53
  279. package/front_end/third_party/wasmparser/package/dist/cjs/WasmParser.js.map +1 -1
  280. package/front_end/third_party/wasmparser/package/dist/esm/WasmParser.js +53 -53
  281. package/front_end/third_party/wasmparser/package/dist/esm/WasmParser.js.map +1 -1
  282. package/front_end/third_party/wasmparser/package/package.json +1 -1
  283. package/front_end/third_party/wasmparser/package/src/WasmParser.ts +53 -53
  284. package/front_end/ui/components/adorners/Adorner.ts +14 -14
  285. package/front_end/ui/components/buttons/Button.ts +133 -42
  286. package/front_end/ui/components/buttons/button.css +31 -0
  287. package/front_end/ui/components/data_grid/DataGrid.ts +131 -122
  288. package/front_end/ui/components/data_grid/DataGridController.ts +42 -42
  289. package/front_end/ui/components/diff_view/DiffView.ts +4 -4
  290. package/front_end/ui/components/docs/button/basic.html +3 -0
  291. package/front_end/ui/components/docs/button/basic.ts +58 -0
  292. package/front_end/ui/components/expandable_list/ExpandableList.ts +11 -11
  293. package/front_end/ui/components/icon_button/Icon.ts +24 -21
  294. package/front_end/ui/components/icon_button/IconButton.ts +31 -31
  295. package/front_end/ui/components/issue_counter/IssueCounter.ts +52 -52
  296. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +42 -42
  297. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspector.ts +67 -67
  298. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +22 -22
  299. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +36 -36
  300. package/front_end/ui/components/linear_memory_inspector/LinearMemoryNavigator.ts +19 -19
  301. package/front_end/ui/components/linear_memory_inspector/LinearMemoryValueInterpreter.ts +25 -25
  302. package/front_end/ui/components/linear_memory_inspector/LinearMemoryViewer.ts +52 -52
  303. package/front_end/ui/components/linear_memory_inspector/ValueInterpreterDisplay.ts +21 -21
  304. package/front_end/ui/components/linear_memory_inspector/ValueInterpreterSettings.ts +6 -6
  305. package/front_end/ui/components/markdown_view/MarkdownImage.ts +14 -14
  306. package/front_end/ui/components/markdown_view/MarkdownLink.ts +8 -8
  307. package/front_end/ui/components/markdown_view/MarkdownView.ts +6 -6
  308. package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +33 -33
  309. package/front_end/ui/components/report_view/ReportView.ts +18 -18
  310. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +53 -53
  311. package/front_end/ui/components/settings/SettingCheckbox.ts +15 -15
  312. package/front_end/ui/components/survey_link/SurveyLink.ts +28 -28
  313. package/front_end/ui/components/text_editor/TextEditor.ts +68 -36
  314. package/front_end/ui/components/text_editor/config.ts +4 -2
  315. package/front_end/ui/components/text_editor/javascript.ts +6 -6
  316. package/front_end/ui/components/text_prompt/TextPrompt.ts +19 -19
  317. package/front_end/ui/components/tree_outline/TreeOutline.ts +56 -56
  318. package/front_end/ui/legacy/Infobar.ts +9 -0
  319. package/front_end/ui/legacy/InspectorView.ts +1 -1
  320. package/front_end/ui/legacy/ListWidget.ts +2 -2
  321. package/front_end/ui/legacy/ViewManager.ts +6 -0
  322. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +20 -0
  323. package/front_end/ui/legacy/tabbedPane.css +1 -1
  324. package/inspector_overlay/main.ts +3 -0
  325. package/package.json +1 -1
  326. package/scripts/eslint_rules/lib/l10n_filename_matches.js +17 -4
  327. package/scripts/eslint_rules/tests/l10n_filename_matches_test.js +21 -0
@@ -1,7 +1,8 @@
1
- const Tokenizer = require('./Tokenizer.js');
2
- const { defaults } = require('./defaults.js');
3
- const { block, inline } = require('./rules.js');
4
- const { repeatString } = require('./helpers.js');
1
+ import { defaults } from './defaults.js';
2
+ import { Tokenizer } from './Tokenizer.js';
3
+
4
+ import { block, inline } from './rules.js';
5
+ import { repeatString } from './helpers.js';
5
6
 
6
7
  /**
7
8
  * smartypants text replacement
@@ -47,7 +48,7 @@ function mangle(text) {
47
48
  /**
48
49
  * Block Lexer
49
50
  */
50
- module.exports = class Lexer {
51
+ export class Lexer {
51
52
  constructor(options) {
52
53
  this.tokens = [];
53
54
  this.tokens.links = Object.create(null);
@@ -55,6 +56,13 @@ module.exports = class Lexer {
55
56
  this.options.tokenizer = this.options.tokenizer || new Tokenizer();
56
57
  this.tokenizer = this.options.tokenizer;
57
58
  this.tokenizer.options = this.options;
59
+ this.tokenizer.lexer = this;
60
+ this.inlineQueue = [];
61
+ this.state = {
62
+ inLink: false,
63
+ inRawBlock: false,
64
+ top: true
65
+ };
58
66
 
59
67
  const rules = {
60
68
  block: block.normal,
@@ -109,9 +117,12 @@ module.exports = class Lexer {
109
117
  .replace(/\r\n|\r/g, '\n')
110
118
  .replace(/\t/g, ' ');
111
119
 
112
- this.blockTokens(src, this.tokens, true);
120
+ this.blockTokens(src, this.tokens);
113
121
 
114
- this.inline(this.tokens);
122
+ let next;
123
+ while (next = this.inlineQueue.shift()) {
124
+ this.inlineTokens(next.src, next.tokens);
125
+ }
115
126
 
116
127
  return this.tokens;
117
128
  }
@@ -119,13 +130,26 @@ module.exports = class Lexer {
119
130
  /**
120
131
  * Lexing
121
132
  */
122
- blockTokens(src, tokens = [], top = true) {
133
+ blockTokens(src, tokens = []) {
123
134
  if (this.options.pedantic) {
124
135
  src = src.replace(/^ +$/gm, '');
125
136
  }
126
- let token, i, l, lastToken;
137
+ let token, lastToken, cutSrc, lastParagraphClipped;
127
138
 
128
139
  while (src) {
140
+ if (this.options.extensions
141
+ && this.options.extensions.block
142
+ && this.options.extensions.block.some((extTokenizer) => {
143
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
144
+ src = src.substring(token.raw.length);
145
+ tokens.push(token);
146
+ return true;
147
+ }
148
+ return false;
149
+ })) {
150
+ continue;
151
+ }
152
+
129
153
  // newline
130
154
  if (token = this.tokenizer.space(src)) {
131
155
  src = src.substring(token.raw.length);
@@ -140,9 +164,10 @@ module.exports = class Lexer {
140
164
  src = src.substring(token.raw.length);
141
165
  lastToken = tokens[tokens.length - 1];
142
166
  // An indented code block cannot interrupt a paragraph.
143
- if (lastToken && lastToken.type === 'paragraph') {
167
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
144
168
  lastToken.raw += '\n' + token.raw;
145
169
  lastToken.text += '\n' + token.text;
170
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
146
171
  } else {
147
172
  tokens.push(token);
148
173
  }
@@ -163,13 +188,6 @@ module.exports = class Lexer {
163
188
  continue;
164
189
  }
165
190
 
166
- // table no leading pipe (gfm)
167
- if (token = this.tokenizer.nptable(src)) {
168
- src = src.substring(token.raw.length);
169
- tokens.push(token);
170
- continue;
171
- }
172
-
173
191
  // hr
174
192
  if (token = this.tokenizer.hr(src)) {
175
193
  src = src.substring(token.raw.length);
@@ -180,7 +198,6 @@ module.exports = class Lexer {
180
198
  // blockquote
181
199
  if (token = this.tokenizer.blockquote(src)) {
182
200
  src = src.substring(token.raw.length);
183
- token.tokens = this.blockTokens(token.text, [], top);
184
201
  tokens.push(token);
185
202
  continue;
186
203
  }
@@ -188,10 +205,6 @@ module.exports = class Lexer {
188
205
  // list
189
206
  if (token = this.tokenizer.list(src)) {
190
207
  src = src.substring(token.raw.length);
191
- l = token.items.length;
192
- for (i = 0; i < l; i++) {
193
- token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);
194
- }
195
208
  tokens.push(token);
196
209
  continue;
197
210
  }
@@ -204,9 +217,14 @@ module.exports = class Lexer {
204
217
  }
205
218
 
206
219
  // def
207
- if (top && (token = this.tokenizer.def(src))) {
220
+ if (token = this.tokenizer.def(src)) {
208
221
  src = src.substring(token.raw.length);
209
- if (!this.tokens.links[token.tag]) {
222
+ lastToken = tokens[tokens.length - 1];
223
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
224
+ lastToken.raw += '\n' + token.raw;
225
+ lastToken.text += '\n' + token.raw;
226
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
227
+ } else if (!this.tokens.links[token.tag]) {
210
228
  this.tokens.links[token.tag] = {
211
229
  href: token.href,
212
230
  title: token.title
@@ -230,9 +248,32 @@ module.exports = class Lexer {
230
248
  }
231
249
 
232
250
  // top-level paragraph
233
- if (top && (token = this.tokenizer.paragraph(src))) {
251
+ // prevent paragraph consuming extensions by clipping 'src' to extension start
252
+ cutSrc = src;
253
+ if (this.options.extensions && this.options.extensions.startBlock) {
254
+ let startIndex = Infinity;
255
+ const tempSrc = src.slice(1);
256
+ let tempStart;
257
+ this.options.extensions.startBlock.forEach(function(getStartIndex) {
258
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
259
+ if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }
260
+ });
261
+ if (startIndex < Infinity && startIndex >= 0) {
262
+ cutSrc = src.substring(0, startIndex + 1);
263
+ }
264
+ }
265
+ if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
266
+ lastToken = tokens[tokens.length - 1];
267
+ if (lastParagraphClipped && lastToken.type === 'paragraph') {
268
+ lastToken.raw += '\n' + token.raw;
269
+ lastToken.text += '\n' + token.text;
270
+ this.inlineQueue.pop();
271
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
272
+ } else {
273
+ tokens.push(token);
274
+ }
275
+ lastParagraphClipped = (cutSrc.length !== src.length);
234
276
  src = src.substring(token.raw.length);
235
- tokens.push(token);
236
277
  continue;
237
278
  }
238
279
 
@@ -243,6 +284,8 @@ module.exports = class Lexer {
243
284
  if (lastToken && lastToken.type === 'text') {
244
285
  lastToken.raw += '\n' + token.raw;
245
286
  lastToken.text += '\n' + token.text;
287
+ this.inlineQueue.pop();
288
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
246
289
  } else {
247
290
  tokens.push(token);
248
291
  }
@@ -260,79 +303,19 @@ module.exports = class Lexer {
260
303
  }
261
304
  }
262
305
 
306
+ this.state.top = true;
263
307
  return tokens;
264
308
  }
265
309
 
266
- inline(tokens) {
267
- let i,
268
- j,
269
- k,
270
- l2,
271
- row,
272
- token;
273
-
274
- const l = tokens.length;
275
- for (i = 0; i < l; i++) {
276
- token = tokens[i];
277
- switch (token.type) {
278
- case 'paragraph':
279
- case 'text':
280
- case 'heading': {
281
- token.tokens = [];
282
- this.inlineTokens(token.text, token.tokens);
283
- break;
284
- }
285
- case 'table': {
286
- token.tokens = {
287
- header: [],
288
- cells: []
289
- };
290
-
291
- // header
292
- l2 = token.header.length;
293
- for (j = 0; j < l2; j++) {
294
- token.tokens.header[j] = [];
295
- this.inlineTokens(token.header[j], token.tokens.header[j]);
296
- }
297
-
298
- // cells
299
- l2 = token.cells.length;
300
- for (j = 0; j < l2; j++) {
301
- row = token.cells[j];
302
- token.tokens.cells[j] = [];
303
- for (k = 0; k < row.length; k++) {
304
- token.tokens.cells[j][k] = [];
305
- this.inlineTokens(row[k], token.tokens.cells[j][k]);
306
- }
307
- }
308
-
309
- break;
310
- }
311
- case 'blockquote': {
312
- this.inline(token.tokens);
313
- break;
314
- }
315
- case 'list': {
316
- l2 = token.items.length;
317
- for (j = 0; j < l2; j++) {
318
- this.inline(token.items[j].tokens);
319
- }
320
- break;
321
- }
322
- default: {
323
- // do nothing
324
- }
325
- }
326
- }
327
-
328
- return tokens;
310
+ inline(src, tokens) {
311
+ this.inlineQueue.push({ src, tokens });
329
312
  }
330
313
 
331
314
  /**
332
315
  * Lexing/Compiling
333
316
  */
334
- inlineTokens(src, tokens = [], inLink = false, inRawBlock = false) {
335
- let token, lastToken;
317
+ inlineTokens(src, tokens = []) {
318
+ let token, lastToken, cutSrc;
336
319
 
337
320
  // String with links masked to avoid interference with em and strong
338
321
  let maskedSrc = src;
@@ -366,6 +349,20 @@ module.exports = class Lexer {
366
349
  }
367
350
  keepPrevChar = false;
368
351
 
352
+ // extensions
353
+ if (this.options.extensions
354
+ && this.options.extensions.inline
355
+ && this.options.extensions.inline.some((extTokenizer) => {
356
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
357
+ src = src.substring(token.raw.length);
358
+ tokens.push(token);
359
+ return true;
360
+ }
361
+ return false;
362
+ })) {
363
+ continue;
364
+ }
365
+
369
366
  // escape
370
367
  if (token = this.tokenizer.escape(src)) {
371
368
  src = src.substring(token.raw.length);
@@ -374,11 +371,9 @@ module.exports = class Lexer {
374
371
  }
375
372
 
376
373
  // tag
377
- if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {
374
+ if (token = this.tokenizer.tag(src)) {
378
375
  src = src.substring(token.raw.length);
379
- inLink = token.inLink;
380
- inRawBlock = token.inRawBlock;
381
- const lastToken = tokens[tokens.length - 1];
376
+ lastToken = tokens[tokens.length - 1];
382
377
  if (lastToken && token.type === 'text' && lastToken.type === 'text') {
383
378
  lastToken.raw += token.raw;
384
379
  lastToken.text += token.text;
@@ -391,9 +386,6 @@ module.exports = class Lexer {
391
386
  // link
392
387
  if (token = this.tokenizer.link(src)) {
393
388
  src = src.substring(token.raw.length);
394
- if (token.type === 'link') {
395
- token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
396
- }
397
389
  tokens.push(token);
398
390
  continue;
399
391
  }
@@ -401,11 +393,8 @@ module.exports = class Lexer {
401
393
  // reflink, nolink
402
394
  if (token = this.tokenizer.reflink(src, this.tokens.links)) {
403
395
  src = src.substring(token.raw.length);
404
- const lastToken = tokens[tokens.length - 1];
405
- if (token.type === 'link') {
406
- token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
407
- tokens.push(token);
408
- } else if (lastToken && token.type === 'text' && lastToken.type === 'text') {
396
+ lastToken = tokens[tokens.length - 1];
397
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
409
398
  lastToken.raw += token.raw;
410
399
  lastToken.text += token.text;
411
400
  } else {
@@ -417,7 +406,6 @@ module.exports = class Lexer {
417
406
  // em & strong
418
407
  if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
419
408
  src = src.substring(token.raw.length);
420
- token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
421
409
  tokens.push(token);
422
410
  continue;
423
411
  }
@@ -439,7 +427,6 @@ module.exports = class Lexer {
439
427
  // del (gfm)
440
428
  if (token = this.tokenizer.del(src)) {
441
429
  src = src.substring(token.raw.length);
442
- token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
443
430
  tokens.push(token);
444
431
  continue;
445
432
  }
@@ -452,14 +439,28 @@ module.exports = class Lexer {
452
439
  }
453
440
 
454
441
  // url (gfm)
455
- if (!inLink && (token = this.tokenizer.url(src, mangle))) {
442
+ if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
456
443
  src = src.substring(token.raw.length);
457
444
  tokens.push(token);
458
445
  continue;
459
446
  }
460
447
 
461
448
  // text
462
- if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {
449
+ // prevent inlineText consuming extensions by clipping 'src' to extension start
450
+ cutSrc = src;
451
+ if (this.options.extensions && this.options.extensions.startInline) {
452
+ let startIndex = Infinity;
453
+ const tempSrc = src.slice(1);
454
+ let tempStart;
455
+ this.options.extensions.startInline.forEach(function(getStartIndex) {
456
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
457
+ if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }
458
+ });
459
+ if (startIndex < Infinity && startIndex >= 0) {
460
+ cutSrc = src.substring(0, startIndex + 1);
461
+ }
462
+ }
463
+ if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
463
464
  src = src.substring(token.raw.length);
464
465
  if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started
465
466
  prevChar = token.raw.slice(-1);
@@ -488,4 +489,4 @@ module.exports = class Lexer {
488
489
 
489
490
  return tokens;
490
491
  }
491
- };
492
+ }
@@ -1,15 +1,15 @@
1
- const Renderer = require('./Renderer.js');
2
- const TextRenderer = require('./TextRenderer.js');
3
- const Slugger = require('./Slugger.js');
4
- const { defaults } = require('./defaults.js');
5
- const {
1
+ import { defaults } from './defaults.js';
2
+ import {
6
3
  unescape
7
- } = require('./helpers.js');
4
+ } from './helpers.js';
5
+ import { Renderer } from './Renderer.js';
6
+ import { Slugger } from './Slugger.js';
7
+ import { TextRenderer } from './TextRenderer.js';
8
8
 
9
9
  /**
10
10
  * Parsing & Compiling
11
11
  */
12
- module.exports = class Parser {
12
+ export class Parser {
13
13
  constructor(options) {
14
14
  this.options = options || defaults;
15
15
  this.options.renderer = this.options.renderer || new Renderer();
@@ -57,11 +57,22 @@ module.exports = class Parser {
57
57
  item,
58
58
  checked,
59
59
  task,
60
- checkbox;
60
+ checkbox,
61
+ ret;
61
62
 
62
63
  const l = tokens.length;
63
64
  for (i = 0; i < l; i++) {
64
65
  token = tokens[i];
66
+
67
+ // Run any renderer extensions
68
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
69
+ ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
70
+ if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
71
+ out += ret || '';
72
+ continue;
73
+ }
74
+ }
75
+
65
76
  switch (token.type) {
66
77
  case 'space': {
67
78
  continue;
@@ -92,22 +103,22 @@ module.exports = class Parser {
92
103
  l2 = token.header.length;
93
104
  for (j = 0; j < l2; j++) {
94
105
  cell += this.renderer.tablecell(
95
- this.parseInline(token.tokens.header[j]),
106
+ this.parseInline(token.header[j].tokens),
96
107
  { header: true, align: token.align[j] }
97
108
  );
98
109
  }
99
110
  header += this.renderer.tablerow(cell);
100
111
 
101
112
  body = '';
102
- l2 = token.cells.length;
113
+ l2 = token.rows.length;
103
114
  for (j = 0; j < l2; j++) {
104
- row = token.tokens.cells[j];
115
+ row = token.rows[j];
105
116
 
106
117
  cell = '';
107
118
  l3 = row.length;
108
119
  for (k = 0; k < l3; k++) {
109
120
  cell += this.renderer.tablecell(
110
- this.parseInline(row[k]),
121
+ this.parseInline(row[k].tokens),
111
122
  { header: false, align: token.align[k] }
112
123
  );
113
124
  }
@@ -138,7 +149,7 @@ module.exports = class Parser {
138
149
  if (item.task) {
139
150
  checkbox = this.renderer.checkbox(checked);
140
151
  if (loose) {
141
- if (item.tokens.length > 0 && item.tokens[0].type === 'text') {
152
+ if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {
142
153
  item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
143
154
  if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
144
155
  item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
@@ -179,6 +190,7 @@ module.exports = class Parser {
179
190
  out += top ? this.renderer.paragraph(body) : body;
180
191
  continue;
181
192
  }
193
+
182
194
  default: {
183
195
  const errMsg = 'Token with "' + token.type + '" type was not found.';
184
196
  if (this.options.silent) {
@@ -201,11 +213,22 @@ module.exports = class Parser {
201
213
  renderer = renderer || this.renderer;
202
214
  let out = '',
203
215
  i,
204
- token;
216
+ token,
217
+ ret;
205
218
 
206
219
  const l = tokens.length;
207
220
  for (i = 0; i < l; i++) {
208
221
  token = tokens[i];
222
+
223
+ // Run any renderer extensions
224
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
225
+ ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
226
+ if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
227
+ out += ret || '';
228
+ continue;
229
+ }
230
+ }
231
+
209
232
  switch (token.type) {
210
233
  case 'escape': {
211
234
  out += renderer.text(token.text);
@@ -260,4 +283,4 @@ module.exports = class Parser {
260
283
  }
261
284
  return out;
262
285
  }
263
- };
286
+ }
@@ -1,13 +1,13 @@
1
- const { defaults } = require('./defaults.js');
2
- const {
1
+ import { defaults } from './defaults.js';
2
+ import {
3
3
  cleanUrl,
4
4
  escape
5
- } = require('./helpers.js');
5
+ } from './helpers.js';
6
6
 
7
7
  /**
8
8
  * Renderer
9
9
  */
10
- module.exports = class Renderer {
10
+ export class Renderer {
11
11
  constructor(options) {
12
12
  this.options = options || defaults;
13
13
  }
@@ -163,4 +163,4 @@ module.exports = class Renderer {
163
163
  text(text) {
164
164
  return text;
165
165
  }
166
- };
166
+ }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Slugger generates header id
3
3
  */
4
- module.exports = class Slugger {
4
+ export class Slugger {
5
5
  constructor() {
6
6
  this.seen = {};
7
7
  }
@@ -46,4 +46,4 @@ module.exports = class Slugger {
46
46
  const slug = this.serialize(value);
47
47
  return this.getNextSafeSlug(slug, options.dryrun);
48
48
  }
49
- };
49
+ }
@@ -2,7 +2,7 @@
2
2
  * TextRenderer
3
3
  * returns only the textual part of the token
4
4
  */
5
- module.exports = class TextRenderer {
5
+ export class TextRenderer {
6
6
  // no need for block level renderers
7
7
  strong(text) {
8
8
  return text;
@@ -39,4 +39,4 @@ module.exports = class TextRenderer {
39
39
  br() {
40
40
  return '';
41
41
  }
42
- };
42
+ }