chrome-devtools-frontend 1.0.945677 → 1.0.947377

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 (191) hide show
  1. package/.eslintrc.js +1 -0
  2. package/config/gni/all_devtools_files.gni +0 -14
  3. package/config/gni/devtools_grd_files.gni +4 -42
  4. package/front_end/.eslintrc.js +5 -1
  5. package/front_end/core/host/InspectorFrontendHost.ts +0 -3
  6. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
  7. package/front_end/core/host/UserMetrics.ts +0 -22
  8. package/front_end/core/i18n/locales/en-US.json +33 -27
  9. package/front_end/core/i18n/locales/en-XL.json +33 -27
  10. package/front_end/core/root/Runtime.ts +0 -5
  11. package/front_end/core/sdk/AccessibilityModel.ts +0 -2
  12. package/front_end/core/sdk/CSSProperty.ts +16 -11
  13. package/front_end/core/sdk/CSSRule.ts +0 -2
  14. package/front_end/core/sdk/Cookie.ts +1 -5
  15. package/front_end/core/sdk/EmulationModel.ts +0 -2
  16. package/front_end/core/sdk/HeapProfilerModel.ts +0 -2
  17. package/front_end/core/sdk/NetworkManager.ts +0 -3
  18. package/front_end/core/sdk/Resource.ts +0 -3
  19. package/front_end/core/sdk/ResourceTreeModel.ts +0 -3
  20. package/front_end/core/sdk/ServiceWorkerManager.ts +0 -2
  21. package/front_end/core/sdk/sdk-meta.ts +20 -8
  22. package/front_end/devtools_compatibility.js +1 -8
  23. package/front_end/entrypoints/devtools_app/devtools_app.js +3 -0
  24. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -3
  25. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +1 -3
  26. package/front_end/entrypoints/formatter_worker/FormatterActions.ts +0 -2
  27. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +0 -120
  28. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -11
  29. package/front_end/entrypoints/formatter_worker/formatter_worker.ts +5 -0
  30. package/front_end/entrypoints/inspector/{inspector.js → inspector.ts} +0 -3
  31. package/front_end/entrypoints/js_app/js_app.js +3 -0
  32. package/front_end/entrypoints/js_app/js_app.json +1 -2
  33. package/front_end/entrypoints/main/MainImpl.ts +0 -6
  34. package/front_end/entrypoints/ndb_app/ndb_app.js +3 -0
  35. package/front_end/entrypoints/ndb_app/ndb_app.json +1 -2
  36. package/front_end/entrypoints/{node_main → node_app}/NodeConnectionsPanel.ts +1 -1
  37. package/front_end/entrypoints/{node_main → node_app}/NodeMain.ts +2 -4
  38. package/front_end/entrypoints/{node_main → node_app}/nodeConnectionsPanel.css +0 -0
  39. package/front_end/entrypoints/node_app/node_app.ts +81 -0
  40. package/front_end/entrypoints/shell/shell.js +18 -1
  41. package/front_end/entrypoints/worker_app/{worker_app.js → worker_app.ts} +8 -2
  42. package/front_end/generated/InspectorBackendCommands.js +5 -1
  43. package/front_end/generated/protocol.d.ts +12 -0
  44. package/front_end/legacy_test_runner/sources_test_runner/sources_test_runner.js +0 -1
  45. package/front_end/models/bindings/CompilerScriptMapping.ts +0 -1
  46. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +4 -11
  47. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
  48. package/front_end/models/bindings/ResourceMapping.ts +1 -1
  49. package/front_end/models/bindings/SASSSourceMapping.ts +0 -1
  50. package/front_end/models/emulation/DeviceModeModel.ts +0 -2
  51. package/front_end/models/formatter/FormatterWorkerPool.ts +0 -18
  52. package/front_end/models/issues_manager/CorsIssue.ts +8 -0
  53. package/front_end/models/text_utils/CodeMirrorUtils.ts +6 -51
  54. package/front_end/models/text_utils/TextUtils.ts +1 -2
  55. package/front_end/models/text_utils/text_utils-legacy.ts +0 -5
  56. package/front_end/panels/animation/AnimationTimeline.ts +0 -2
  57. package/front_end/panels/animation/AnimationUI.ts +0 -2
  58. package/front_end/panels/application/ApplicationPanelSidebar.ts +2 -4
  59. package/front_end/panels/application/BackForwardCacheStrings.ts +1 -0
  60. package/front_end/panels/css_overview/CSSOverviewModel.ts +0 -2
  61. package/front_end/panels/css_overview/CSSOverviewPanel.ts +0 -7
  62. package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +0 -2
  63. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +0 -11
  64. package/front_end/panels/elements/StylesSidebarPane.ts +0 -1
  65. package/front_end/panels/elements/elementsTreeOutline.css +0 -13
  66. package/front_end/panels/emulation/DeviceModeToolbar.ts +0 -16
  67. package/front_end/panels/issues/CorsIssueDetailsView.ts +6 -2
  68. package/front_end/panels/lighthouse/lighthouse-meta.ts +0 -3
  69. package/front_end/panels/network/NetworkConfigView.ts +10 -0
  70. package/front_end/panels/network/NetworkItemView.ts +3 -0
  71. package/front_end/panels/network/networkConfigView.css +5 -0
  72. package/front_end/panels/profiler/profilesPanel.css +1 -1
  73. package/front_end/panels/search/SearchView.ts +24 -4
  74. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +6 -4
  75. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +0 -12
  76. package/front_end/panels/sources/CSSPlugin.ts +3 -0
  77. package/front_end/panels/sources/CoveragePlugin.ts +2 -0
  78. package/front_end/panels/sources/DebuggerPlugin.ts +35 -7
  79. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +3 -0
  80. package/front_end/panels/sources/ProfilePlugin.ts +3 -0
  81. package/front_end/panels/sources/UISourceCodeFrame.ts +11 -2
  82. package/front_end/panels/sources/sourcesView.css +0 -130
  83. package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
  84. package/front_end/third_party/codemirror/codemirror-tsconfig.json +1 -25
  85. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  86. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -2
  87. package/front_end/third_party/codemirror.next/chunk/java.js +1 -2
  88. package/front_end/third_party/codemirror.next/chunk/json.js +1 -2
  89. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -2
  90. package/front_end/third_party/codemirror.next/chunk/php.js +1 -2
  91. package/front_end/third_party/codemirror.next/chunk/python.js +1 -2
  92. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -2
  93. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -2
  94. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +1486 -1423
  95. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -2
  96. package/front_end/third_party/codemirror.next/package.json +10 -9
  97. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +168 -164
  98. package/front_end/third_party/lighthouse/locales/ar-XB.json +0 -3
  99. package/front_end/third_party/lighthouse/locales/ar.json +0 -3
  100. package/front_end/third_party/lighthouse/locales/bg.json +17 -20
  101. package/front_end/third_party/lighthouse/locales/ca.json +0 -3
  102. package/front_end/third_party/lighthouse/locales/cs.json +0 -3
  103. package/front_end/third_party/lighthouse/locales/da.json +16 -19
  104. package/front_end/third_party/lighthouse/locales/de.json +0 -3
  105. package/front_end/third_party/lighthouse/locales/el.json +0 -3
  106. package/front_end/third_party/lighthouse/locales/en-GB.json +19 -22
  107. package/front_end/third_party/lighthouse/locales/en-US.json +33 -3
  108. package/front_end/third_party/lighthouse/locales/en-XA.json +0 -3
  109. package/front_end/third_party/lighthouse/locales/en-XL.json +33 -3
  110. package/front_end/third_party/lighthouse/locales/es-419.json +17 -20
  111. package/front_end/third_party/lighthouse/locales/es.json +0 -3
  112. package/front_end/third_party/lighthouse/locales/fi.json +16 -19
  113. package/front_end/third_party/lighthouse/locales/fil.json +33 -36
  114. package/front_end/third_party/lighthouse/locales/fr.json +16 -19
  115. package/front_end/third_party/lighthouse/locales/he.json +16 -19
  116. package/front_end/third_party/lighthouse/locales/hi.json +0 -3
  117. package/front_end/third_party/lighthouse/locales/hr.json +16 -19
  118. package/front_end/third_party/lighthouse/locales/hu.json +16 -19
  119. package/front_end/third_party/lighthouse/locales/id.json +16 -19
  120. package/front_end/third_party/lighthouse/locales/it.json +37 -40
  121. package/front_end/third_party/lighthouse/locales/ja.json +16 -19
  122. package/front_end/third_party/lighthouse/locales/ko.json +16 -19
  123. package/front_end/third_party/lighthouse/locales/lt.json +17 -20
  124. package/front_end/third_party/lighthouse/locales/lv.json +0 -3
  125. package/front_end/third_party/lighthouse/locales/nl.json +16 -19
  126. package/front_end/third_party/lighthouse/locales/no.json +17 -20
  127. package/front_end/third_party/lighthouse/locales/pl.json +16 -19
  128. package/front_end/third_party/lighthouse/locales/pt-PT.json +37 -40
  129. package/front_end/third_party/lighthouse/locales/pt.json +16 -19
  130. package/front_end/third_party/lighthouse/locales/ro.json +0 -3
  131. package/front_end/third_party/lighthouse/locales/ru.json +16 -19
  132. package/front_end/third_party/lighthouse/locales/sk.json +0 -3
  133. package/front_end/third_party/lighthouse/locales/sl.json +0 -3
  134. package/front_end/third_party/lighthouse/locales/sr-Latn.json +16 -19
  135. package/front_end/third_party/lighthouse/locales/sr.json +16 -19
  136. package/front_end/third_party/lighthouse/locales/sv.json +17 -20
  137. package/front_end/third_party/lighthouse/locales/ta.json +0 -3
  138. package/front_end/third_party/lighthouse/locales/te.json +0 -3
  139. package/front_end/third_party/lighthouse/locales/th.json +0 -3
  140. package/front_end/third_party/lighthouse/locales/tr.json +0 -3
  141. package/front_end/third_party/lighthouse/locales/uk.json +17 -20
  142. package/front_end/third_party/lighthouse/locales/vi.json +0 -3
  143. package/front_end/third_party/lighthouse/locales/zh-HK.json +0 -3
  144. package/front_end/third_party/lighthouse/locales/zh-TW.json +0 -3
  145. package/front_end/third_party/lighthouse/locales/zh.json +0 -3
  146. package/front_end/third_party/lighthouse/report/bundle.d.ts +63 -61
  147. package/front_end/third_party/lighthouse/report/bundle.js +36 -7
  148. package/front_end/third_party/lighthouse/report-assets/report-generator.js +205 -192
  149. package/front_end/ui/components/linear_memory_inspector/LinearMemoryValueInterpreter.ts +0 -8
  150. package/front_end/ui/components/text_editor/config.ts +8 -7
  151. package/front_end/ui/components/text_editor/javascript.ts +28 -10
  152. package/front_end/ui/components/text_editor/theme.ts +1 -0
  153. package/front_end/ui/legacy/InspectorView.ts +10 -0
  154. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -3
  155. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +0 -1
  156. package/front_end/ui/legacy/components/object_ui/object_ui-legacy.ts +0 -8
  157. package/front_end/ui/legacy/components/object_ui/object_ui.ts +0 -4
  158. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +40 -29
  159. package/front_end/ui/legacy/inspectorSyntaxHighlight.css +0 -211
  160. package/front_end/ui/legacy/legacy-legacy.ts +0 -6
  161. package/front_end/ui/legacy/legacy.ts +0 -2
  162. package/front_end/ui/legacy/tabbedPane.css +1 -1
  163. package/front_end/ui/legacy/themeColors.css +1 -1
  164. package/package.json +1 -1
  165. package/scripts/check_gn.js +1 -1
  166. package/scripts/eslint_rules/lib/l10n_filename_matches.js +4 -4
  167. package/scripts/eslint_rules/tests/l10n_filename_matches_test.js +4 -0
  168. package/scripts/hosted_mode/server.js +17 -2
  169. package/front_end/entrypoints/inspector/inspector.json +0 -4
  170. package/front_end/entrypoints/node_app/node_app-meta.ts +0 -43
  171. package/front_end/entrypoints/node_app/node_app.js +0 -13
  172. package/front_end/entrypoints/node_app/node_app.json +0 -4
  173. package/front_end/entrypoints/node_main/node_main-meta.ts +0 -48
  174. package/front_end/entrypoints/node_main/node_main.ts +0 -11
  175. package/front_end/entrypoints/shell/shell-meta-files.ts +0 -22
  176. package/front_end/entrypoints/shell/shell.json +0 -5
  177. package/front_end/entrypoints/worker_app/worker_app.json +0 -4
  178. package/front_end/panels/lighthouse/module.json +0 -6
  179. package/front_end/third_party/lighthouse/report-assets/report.d.ts +0 -1
  180. package/front_end/third_party/lighthouse/report-assets/report.js +0 -233
  181. package/front_end/third_party/lighthouse/report-assets/standalone-template.html +0 -38
  182. package/front_end/ui/legacy/TextEditor.ts +0 -82
  183. package/front_end/ui/legacy/components/object_ui/JavaScriptAutocomplete.ts +0 -836
  184. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +0 -1676
  185. package/front_end/ui/legacy/components/text_editor/TextEditorAutocompleteController.ts +0 -586
  186. package/front_end/ui/legacy/components/text_editor/autocompleteTooltip.css +0 -20
  187. package/front_end/ui/legacy/components/text_editor/cm_modes.ts +0 -23
  188. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +0 -995
  189. package/front_end/ui/legacy/components/text_editor/module.json +0 -7
  190. package/front_end/ui/legacy/components/text_editor/text_editor-legacy.ts +0 -33
  191. package/front_end/ui/legacy/components/text_editor/text_editor.ts +0 -13
@@ -16,7 +16,6 @@ import {Endianness} from './ValueInterpreterDisplayUtils.js';
16
16
  import type {TypeToggleEvent, ValueInterpreterSettingsData} from './ValueInterpreterSettings.js';
17
17
 
18
18
  import * as i18n from '../../../core/i18n/i18n.js';
19
- import inspectorCommonStyles from '../../legacy/inspectorCommon.css.js';
20
19
 
21
20
  const UIStrings = {
22
21
  /**
@@ -74,13 +73,6 @@ export class LinearMemoryValueInterpreter extends HTMLElement {
74
73
  #memoryLength = 0;
75
74
  #showSettings = false;
76
75
 
77
- constructor() {
78
- super();
79
- this.#shadow.adoptedStyleSheets = [
80
- inspectorCommonStyles,
81
- ];
82
- }
83
-
84
76
  connectedCallback(): void {
85
77
  this.#shadow.adoptedStyleSheets = [linearMemoryValueInterpreterStyles];
86
78
  }
@@ -26,9 +26,10 @@ const empty: CM.Extension = [];
26
26
  export const dynamicSetting = CM.Facet.define<DynamicSetting<unknown>>();
27
27
 
28
28
  // The code below is used to wire up dynamic settings to editors. When
29
- // you include one of these objects in an editor configuration, the
30
- // TextEditor class will take care of listening to changes in the
31
- // setting, and updating the configuration as appropriate.
29
+ // you include the result of calling `instance()` in an editor
30
+ // configuration, the TextEditor class will take care of listening to
31
+ // changes in the setting, and updating the configuration as
32
+ // appropriate.
32
33
 
33
34
  export class DynamicSetting<T> {
34
35
  compartment = new CM.Compartment();
@@ -63,7 +64,7 @@ export class DynamicSetting<T> {
63
64
  static none: readonly DynamicSetting<unknown>[] = [];
64
65
  }
65
66
 
66
- export const tabMovesFocus = DynamicSetting.bool('textEditorTabMovesFocus', CM.keymap.of([{
67
+ export const tabMovesFocus = DynamicSetting.bool('textEditorTabMovesFocus', [], CM.keymap.of([{
67
68
  key: 'Tab',
68
69
  run: (view: CM.EditorView): boolean => view.state.doc.length ? CM.indentMore(view) : false,
69
70
  shift: (view: CM.EditorView): boolean => view.state.doc.length ? CM.indentLess(view) : false,
@@ -85,7 +86,7 @@ export function guessIndent(doc: CM.Text): string {
85
86
  let scanned = 0;
86
87
  for (let cur = doc.iterLines(1, Math.min(doc.lines + 1, LINES_TO_SCAN_FOR_INDENTATION_GUESSING)); !cur.next().done;) {
87
88
  let space = (/^\s*/.exec(cur.value) as string[])[0];
88
- if (space.length === cur.value.length || !space.length) {
89
+ if (space.length === cur.value.length || !space.length || cur.value[space.length] === '*') {
89
90
  continue;
90
91
  }
91
92
  if (space[0] === '\t') {
@@ -246,7 +247,7 @@ export const closeBrackets: CM.Extension = [
246
247
  // element with the editor styles mounted in it for them. This is
247
248
  // annoying, but necessary because a scrollable parent node clips them
248
249
  // otherwise, `position: fixed` doesn't work due to `contain` styles,
249
- // and appending them diretly to `document.body` doesn't work because
250
+ // and appending them directly to `document.body` doesn't work because
250
251
  // the necessary style sheets aren't available there.
251
252
  let tooltipHost: ShadowRoot|null = null;
252
253
 
@@ -324,7 +325,7 @@ export const showCompletionHint = CM.ViewPlugin.fromClass(class {
324
325
  if (pos !== lineBefore.to) {
325
326
  return null;
326
327
  }
327
- const wordBefore = /[\w$]+$/.exec(lineBefore.text);
328
+ const wordBefore = /#?[\w$]+$/.exec(lineBefore.text);
328
329
  if (wordBefore && !label.startsWith(wordBefore[0])) {
329
330
  return null;
330
331
  }
@@ -15,6 +15,23 @@ export function completion(): CodeMirror.Extension {
15
15
  });
16
16
  }
17
17
 
18
+ export async function completeInContext(
19
+ textBefore: string, query: string, force: boolean = false): Promise<UI.SuggestBox.Suggestions> {
20
+ const state = CodeMirror.EditorState.create({
21
+ doc: textBefore,
22
+ selection: {anchor: textBefore.length},
23
+ extensions: CodeMirror.javascript.javascriptLanguage,
24
+ });
25
+ const result = await javascriptCompletionSource(new CodeMirror.CompletionContext(state, textBefore.length, force));
26
+ return result ?
27
+ result.options.filter((o): boolean => o.label.startsWith(query)).map((o): UI.SuggestBox.Suggestion => ({
28
+ text: o.label,
29
+ priority: 100 + (o.boost || 0),
30
+ isSecondary: o.type === 'secondary',
31
+ })) :
32
+ [];
33
+ }
34
+
18
35
  class CompletionSet {
19
36
  constructor(
20
37
  readonly completions: CodeMirror.Completion[] = [],
@@ -35,10 +52,10 @@ class CompletionSet {
35
52
  }
36
53
 
37
54
  const javascriptKeywords = [
38
- 'async', 'await', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default',
39
- 'delete', 'do', 'else', 'export', 'extends', 'finally', 'for', 'function', 'if', 'import',
40
- 'in', 'instanceof', 'let', 'new', 'of', 'return', 'static', 'super', 'switch', 'this',
41
- 'throw', 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield',
55
+ 'async', 'await', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete',
56
+ 'do', 'else', 'export', 'extends', 'false', 'finally', 'for', 'function', 'if', 'import', 'in',
57
+ 'instanceof', 'let', 'new', 'null', 'of', 'return', 'static', 'super', 'switch', 'this', 'throw',
58
+ 'true', 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield',
42
59
  ];
43
60
  const consoleBuiltinFunctions = [
44
61
  'clear',
@@ -101,7 +118,7 @@ export function getQueryType(tree: CodeMirror.Tree, pos: number, doc: CodeMirror
101
118
  return null;
102
119
  }
103
120
 
104
- if (node.name === 'PropertyName') {
121
+ if (node.name === 'PropertyName' || node.name === 'PrivatePropertyName') {
105
122
  return parent?.name !== 'MemberExpression' ? null :
106
123
  {type: QueryType.PropertyName, from: node.from, relatedNode: parent};
107
124
  }
@@ -172,7 +189,7 @@ export async function javascriptCompletionSource(cx: CodeMirror.CompletionContex
172
189
  return {
173
190
  from: query.from ?? cx.pos,
174
191
  options: result.completions,
175
- span: /^[\w\P{ASCII}]*/u,
192
+ span: /^#?[\w\P{ASCII}]*/u,
176
193
  };
177
194
  }
178
195
 
@@ -306,13 +323,14 @@ async function completePropertiesInner(
306
323
  object = await evaluateExpression(context, toPrototype + '.prototype', 'completion');
307
324
  }
308
325
 
309
- const functionType = expression === 'window' ? 'function' : 'method';
310
- const otherType = expression === 'window' ? 'variable' : 'property';
326
+ const functionType = expression === 'globalThis' ? 'function' : 'method';
327
+ const otherType = expression === 'globalThis' ? 'variable' : 'property';
311
328
  if (object && (object.type === 'object' || object.type === 'function')) {
312
329
  const properties = await object.getAllProperties(false, false);
313
330
  const isFunction = object.type === 'function';
314
331
  for (const prop of properties.properties || []) {
315
- if (!prop.symbol && !(isFunction && (prop.name === 'arguments' || prop.name === 'caller'))) {
332
+ if (!prop.symbol && !(isFunction && (prop.name === 'arguments' || prop.name === 'caller')) &&
333
+ (!prop.private || expression === 'this')) {
316
334
  const label = quoted ? quoted + prop.name + quoted : prop.name;
317
335
  const completion: CodeMirror.Completion = {
318
336
  label,
@@ -365,7 +383,7 @@ async function completeExpressionGlobal(): Promise<CompletionSet> {
365
383
  }
366
384
  const result = baseCompletions.copy();
367
385
 
368
- const fetchNames = completePropertiesInner('window', context).then(fromWindow => {
386
+ const fetchNames = completePropertiesInner('globalThis', context).then(fromWindow => {
369
387
  return context.globalLexicalScopeNames().then(globals => {
370
388
  for (const option of fromWindow.completions) {
371
389
  result.add(option);
@@ -7,6 +7,7 @@ import * as CM from '../../../third_party/codemirror.next/codemirror.next.js';
7
7
  export const editorTheme = CM.EditorView.theme({
8
8
  '&.cm-editor': {
9
9
  color: 'color: var(--color-text-primary)',
10
+ cursor: 'auto',
10
11
  '&.cm-focused': {
11
12
  outline: 'none',
12
13
  },
@@ -107,6 +107,14 @@ const UIStrings = {
107
107
  *@description The aria label for the drawer.
108
108
  */
109
109
  drawer: 'Tool drawer',
110
+ /**
111
+ *@description The aria label for the drawer shown.
112
+ */
113
+ drawerShown: 'Drawer shown',
114
+ /**
115
+ *@description The aria label for the drawer hidden.
116
+ */
117
+ drawerHidden: 'Drawer hidden',
110
118
  };
111
119
  const str_ = i18n.i18n.registerUIStrings('ui/legacy/InspectorView.ts', UIStrings);
112
120
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -312,6 +320,7 @@ export class InspectorView extends VBox implements ViewLocationResolver {
312
320
  this.focusRestorer = null;
313
321
  }
314
322
  this.emitDrawerChangeEvent(true);
323
+ ARIAUtils.alert(i18nString(UIStrings.drawerShown));
315
324
  }
316
325
 
317
326
  drawerVisible(): boolean {
@@ -328,6 +337,7 @@ export class InspectorView extends VBox implements ViewLocationResolver {
328
337
  this.drawerSplitWidget.hideSidebar(true);
329
338
 
330
339
  this.emitDrawerChangeEvent(false);
340
+ ARIAUtils.alert(i18nString(UIStrings.drawerHidden));
331
341
  }
332
342
 
333
343
  setDrawerMinimized(minimized: boolean): void {
@@ -37,10 +37,10 @@ import * as Platform from '../../../../core/platform/platform.js';
37
37
  import * as SDK from '../../../../core/sdk/sdk.js';
38
38
  import * as TextUtils from '../../../../models/text_utils/text_utils.js';
39
39
  import * as IconButton from '../../../components/icon_button/icon_button.js';
40
+ import * as TextEditor from '../../../components/text_editor/text_editor.js';
40
41
  import * as UI from '../../legacy.js';
41
42
 
42
43
  import {CustomPreviewComponent} from './CustomPreviewComponent.js';
43
- import {JavaScriptAutocomplete} from './JavaScriptAutocomplete.js';
44
44
  import {JavaScriptREPL} from './JavaScriptREPL.js';
45
45
  import {createSpansForNodeTitle, RemoteObjectPreviewFormatter} from './RemoteObjectPreviewFormatter.js';
46
46
  import objectValueStyles from './objectValue.css.js';
@@ -1513,8 +1513,7 @@ export class ArrayGroupingTreeElement extends UI.TreeOutline.TreeElement {
1513
1513
  export class ObjectPropertyPrompt extends UI.TextPrompt.TextPrompt {
1514
1514
  constructor() {
1515
1515
  super();
1516
- const javaScriptAutocomplete = JavaScriptAutocomplete.instance();
1517
- this.initialize(javaScriptAutocomplete.completionsForTextInCurrentContext.bind(javaScriptAutocomplete));
1516
+ this.initialize(TextEditor.JavaScript.completeInContext);
1518
1517
  }
1519
1518
  }
1520
1519
 
@@ -61,7 +61,6 @@
61
61
 
62
62
  .name-and-value {
63
63
  overflow: hidden;
64
- text-overflow: ellipsis;
65
64
  line-height: 16px;
66
65
  }
67
66
 
@@ -12,14 +12,6 @@ ObjectUI = ObjectUI || {};
12
12
  /** @constructor */
13
13
  ObjectUI.CustomPreviewComponent = ObjectUIModule.CustomPreviewComponent.CustomPreviewComponent;
14
14
 
15
- /** @constructor */
16
- ObjectUI.JavaScriptAutocomplete = ObjectUIModule.JavaScriptAutocomplete.JavaScriptAutocomplete;
17
-
18
- /** @constructor */
19
- ObjectUI.JavaScriptAutocompleteConfig = ObjectUIModule.JavaScriptAutocomplete.JavaScriptAutocompleteConfig;
20
-
21
- ObjectUI.javaScriptAutocomplete = ObjectUIModule.javaScriptAutocomplete;
22
-
23
15
  /** @constructor */
24
16
  ObjectUI.JavaScriptREPL = ObjectUIModule.JavaScriptREPL.JavaScriptREPL;
25
17
 
@@ -3,7 +3,6 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as CustomPreviewComponent from './CustomPreviewComponent.js';
6
- import * as JavaScriptAutocomplete from './JavaScriptAutocomplete.js';
7
6
  import * as JavaScriptREPL from './JavaScriptREPL.js';
8
7
  import * as ObjectPopoverHelper from './ObjectPopoverHelper.js';
9
8
  import * as ObjectPropertiesSection from './ObjectPropertiesSection.js';
@@ -11,11 +10,8 @@ import * as RemoteObjectPreviewFormatter from './RemoteObjectPreviewFormatter.js
11
10
 
12
11
  export {
13
12
  CustomPreviewComponent,
14
- JavaScriptAutocomplete,
15
13
  JavaScriptREPL,
16
14
  ObjectPopoverHelper,
17
15
  ObjectPropertiesSection,
18
16
  RemoteObjectPreviewFormatter,
19
17
  };
20
-
21
- export const javaScriptAutocomplete = JavaScriptAutocomplete.JavaScriptAutocomplete.instance();
@@ -112,8 +112,9 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
112
112
  private shouldAutoPrettyPrint: boolean;
113
113
  private readonly progressToolbarItem: UI.Toolbar.ToolbarItem;
114
114
  private textEditorInternal: TextEditor.TextEditor.TextEditor;
115
- private prettyBaseDoc: CodeMirror.Text|null = null;
115
+ // The 'clean' document, before editing
116
116
  private baseDoc: CodeMirror.Text;
117
+ private prettyBaseDoc: CodeMirror.Text|null = null;
117
118
  private displayedSelection: CodeMirror.EditorSelection|null = null;
118
119
  private searchConfig: UI.SearchableView.SearchConfig|null;
119
120
  private delayedFindSearchMatches: (() => void)|null;
@@ -212,24 +213,7 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
212
213
  TextEditor.Config.allowScrollPastEof.instance(),
213
214
  TextEditor.Config.codeFolding.instance(),
214
215
  TextEditor.Config.autoDetectIndent.instance(),
215
- CodeMirror.EditorView.theme({
216
- '&.cm-editor': {height: '100%'},
217
- '.cm-scroller': {overflow: 'auto'},
218
- '.cm-lineNumbers .cm-gutterElement.cm-nonBreakableLine': {color: 'var(--color-non-breakable-line)'},
219
- '.cm-searchMatch': {
220
- border: '1px solid var(--color-search-match-border)',
221
- borderRadius: '3px',
222
- margin: '0 -1px',
223
- '&.cm-searchMatch-selected': {
224
- borderRadius: '1px',
225
- backgroundColor: 'var(--color-selected-search-match-background)',
226
- borderColor: 'var(--color-selected-search-match-background)',
227
- '&, & *': {
228
- color: 'var(--color-selected-search-match) !important',
229
- },
230
- },
231
- },
232
- }),
216
+ sourceFrameTheme,
233
217
  CodeMirror.EditorView.domEventHandlers({
234
218
  focus: () => this.onFocus(),
235
219
  blur: () => this.onBlur(),
@@ -349,6 +333,9 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
349
333
  this.updatePrettyPrintState();
350
334
  }
351
335
 
336
+ // If this is a disassembled WASM file or a pretty-printed file,
337
+ // wire in a line number formatter that shows binary offsets or line
338
+ // numbers in the original source.
352
339
  private getLineNumberFormatter(): CodeMirror.Extension {
353
340
  if (this.options.lineNumbers === false) {
354
341
  return [];
@@ -1096,18 +1083,20 @@ const searchHighlighter = CodeMirror.ViewPlugin.fromClass(class {
1096
1083
  const {doc} = view.state;
1097
1084
  for (const {from, to} of view.visibleRanges) {
1098
1085
  let pos = from;
1099
- for (const line of doc.iterLines(doc.lineAt(from).number, doc.lineAt(to).number + 1)) {
1100
- active.regexp.lastIndex = 0;
1101
- for (;;) {
1102
- const match = active.regexp.exec(line);
1103
- if (!match) {
1104
- break;
1086
+ for (const part of doc.iterRange(from, to)) {
1087
+ if (part !== '\n') {
1088
+ active.regexp.lastIndex = 0;
1089
+ for (;;) {
1090
+ const match = active.regexp.exec(part);
1091
+ if (!match) {
1092
+ break;
1093
+ }
1094
+ const start = pos + match.index, end = start + match[0].length;
1095
+ const current = active.currentRange && active.currentRange.from === start && active.currentRange.to === end;
1096
+ builder.add(start, end, current ? currentSearchMatchDeco : searchMatchDeco);
1105
1097
  }
1106
- const start = pos + match.index, end = start + match[0].length;
1107
- const current = active.currentRange && active.currentRange.from === start && active.currentRange.to === end;
1108
- builder.add(start, end, current ? currentSearchMatchDeco : searchMatchDeco);
1109
1098
  }
1110
- pos += line.length + 1;
1099
+ pos += part.length;
1111
1100
  }
1112
1101
  }
1113
1102
  return builder.finish();
@@ -1160,3 +1149,25 @@ function markNonBreakableLines(disassembly: Common.WasmDisassembly.WasmDisassemb
1160
1149
  return CodeMirror.RangeSet.of(marks);
1161
1150
  });
1162
1151
  }
1152
+
1153
+ const sourceFrameTheme = CodeMirror.EditorView.theme({
1154
+ '&.cm-editor': {height: '100%'},
1155
+ '.cm-scroller': {overflow: 'auto'},
1156
+ '.cm-lineNumbers .cm-gutterElement.cm-nonBreakableLine': {color: 'var(--color-non-breakable-line)'},
1157
+ '.cm-searchMatch': {
1158
+ border: '1px solid var(--color-search-match-border)',
1159
+ borderRadius: '3px',
1160
+ margin: '0 -1px',
1161
+ '&.cm-searchMatch-selected': {
1162
+ borderRadius: '1px',
1163
+ backgroundColor: 'var(--color-selected-search-match-background)',
1164
+ borderColor: 'var(--color-selected-search-match-background)',
1165
+ '&, & *': {
1166
+ color: 'var(--color-selected-search-match) !important',
1167
+ },
1168
+ },
1169
+ },
1170
+ ':host-context(.pretty-printed) & .cm-lineNumbers .cm-gutterElement': {
1171
+ color: 'var(--legacy-accent-color)',
1172
+ },
1173
+ });
@@ -25,121 +25,11 @@
25
25
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
26
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
- .cm-js-keyword {
29
- color: hsl(310deg 86% 36%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
30
- }
31
-
32
- .cm-js-number {
33
- color: hsl(248deg 100% 41%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
34
- }
35
-
36
- .cm-js-comment {
37
- color: hsl(120deg 100% 23%); /* stylelint-disable-line plugin/use_theme_colors */
38
- /* See: crbug.com/1152736 for color variable migration. */
39
- font-style: italic;
40
- }
41
-
42
- .cm-js-string {
43
- color: hsl(1deg 80% 43%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
44
- }
45
-
46
- .cm-js-string-2 {
47
- color: hsl(1deg 99% 39%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
48
- }
49
-
50
- .cm-js-atom {
51
- color: hsl(310deg 86% 36%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
52
- }
53
-
54
- .cm-js-def {
55
- color: hsl(240deg 73% 38%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
56
- }
57
-
58
- .cm-js-operator {
59
- color: hsl(27deg 100% 30%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
60
- }
61
-
62
- .cm-js-meta {
63
- color: hsl(27deg 100% 30%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
64
- }
65
-
66
- .cm-js-variable-2 {
67
- color: hsl(240deg 73% 38%); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
68
- }
69
-
70
- .cm-css-keyword {
71
- color: rgb(7 144 154); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
72
- }
73
-
74
- .cm-css-number {
75
- color: rgb(50 0 255); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
76
- }
77
-
78
- .cm-css-comment {
79
- color: rgb(0 116 0); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
80
- }
81
28
 
82
- .cm-css-def {
83
- color: rgb(200 0 0); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
84
- }
85
-
86
- .cm-css-meta {
87
- color: rgb(200 0 0); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
88
- }
89
-
90
- .cm-css-atom {
91
- color: rgb(7 144 154); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
92
- }
93
-
94
- .cm-css-string {
95
- color: rgb(7 144 154); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
96
- }
97
-
98
- .cm-css-string-2 {
99
- color: rgb(7 144 154); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
100
- }
101
-
102
- .cm-css-link {
103
- color: rgb(7 144 154); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
104
- }
105
-
106
- .cm-css-variable {
107
- color: rgb(200 0 0); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
108
- }
109
-
110
- .cm-css-variable-2 {
111
- color: rgb(0 0 128); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
112
- }
113
-
114
- .cm-css-property,
115
29
  .webkit-css-property {
116
30
  color: var(--webkit-css-property-color, rgb(200 0 0)); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
117
31
  }
118
32
 
119
- .cm-xml-meta {
120
- color: rgb(192 192 192); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
121
- }
122
-
123
- .cm-xml-comment {
124
- color: rgb(35 110 37); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
125
- }
126
-
127
- .cm-xml-string {
128
- color: rgb(26 26 166); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
129
- }
130
-
131
- .cm-xml-tag {
132
- color: var(--color-token-tag);
133
- }
134
-
135
- .cm-xml-attribute {
136
- color: rgb(153 69 0); /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
137
- }
138
-
139
- .cm-xml-link {
140
- color: #00e; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
141
- }
142
-
143
33
  .webkit-html-comment {
144
34
  /* Keep this in sync with view-source.css (.webkit-html-comment) */
145
35
  color: rgb(35 110 37); /* stylelint-disable-line plugin/use_theme_colors */
@@ -228,107 +118,6 @@
228
118
  .devtools-link:not(.devtools-link-prevent-click) {
229
119
  cursor: pointer;
230
120
  }
231
- /* Default CodeMirror Theme */
232
- .cm-negative {
233
- color: #d44; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
234
- }
235
-
236
- .cm-positive {
237
- color: #292; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
238
- }
239
-
240
- .cm-header,
241
- .cm-strong { font-weight: bold; }
242
- .cm-em { font-style: italic; }
243
-
244
- .cm-link {
245
- text-decoration: underline;
246
- color: #00c; /* stylelint-disable-line plugin/use_theme_colors */
247
- /* See: crbug.com/1152736 for color variable migration. */
248
- }
249
-
250
- .cm-strikethrough { text-decoration: line-through; }
251
-
252
- .cm-invalidchar {
253
- color: #f00; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
254
- }
255
-
256
- .cm-header {
257
- color: #00f; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
258
- }
259
-
260
- .cm-quote {
261
- color: #090; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
262
- }
263
-
264
- .cm-keyword {
265
- color: #708; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
266
- }
267
-
268
- .cm-atom {
269
- color: #219; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
270
- }
271
-
272
- .cm-number {
273
- color: #164; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
274
- }
275
-
276
- .cm-def {
277
- color: #00f; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
278
- }
279
-
280
- .cm-variable-2 {
281
- color: #05a; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
282
- }
283
-
284
- .cm-variable-3,
285
- .cm-type {
286
- color: #085; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
287
- }
288
-
289
- .cm-comment {
290
- color: #a50; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
291
- }
292
-
293
- .cm-string {
294
- color: #a11; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
295
- }
296
-
297
- .cm-string-2 {
298
- color: #f50; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
299
- }
300
-
301
- .cm-meta {
302
- color: #555; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
303
- }
304
-
305
- .cm-qualifier {
306
- color: #555; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
307
- }
308
-
309
- .cm-builtin {
310
- color: #30a; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
311
- }
312
-
313
- .cm-bracket {
314
- color: #997; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
315
- }
316
-
317
- .cm-tag {
318
- color: #170; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
319
- }
320
-
321
- .cm-attribute {
322
- color: #00c; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
323
- }
324
-
325
- .cm-hr {
326
- color: #999; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
327
- }
328
-
329
- .cm-error {
330
- color: #f00; /* stylelint-disable-line plugin/use_theme_colors */ /* See: crbug.com/1152736 for color variable migration. */
331
- }
332
121
 
333
122
  @media (forced-colors: active) {
334
123
  .devtools-link:not(.devtools-link-prevent-click) {
@@ -166,12 +166,6 @@ UI.TabbedPane = UIModule.TabbedPane.TabbedPane;
166
166
  /** @enum {symbol} */
167
167
  UI.TabbedPane.Events = UIModule.TabbedPane.Events;
168
168
 
169
- /** @interface */
170
- UI.TextEditor = UIModule.TextEditor.TextEditor;
171
-
172
- /** @interface */
173
- UI.TextEditorFactory = UIModule.TextEditor.TextEditorFactory;
174
-
175
169
  /** @constructor */
176
170
  UI.TextPrompt = UIModule.TextPrompt.TextPrompt;
177
171
 
@@ -43,7 +43,6 @@ import * as SplitWidget from './SplitWidget.js';
43
43
  import * as SuggestBox from './SuggestBox.js';
44
44
  import * as TabbedPane from './TabbedPane.js';
45
45
  import * as TargetCrashedScreen from './TargetCrashedScreen.js';
46
- import * as TextEditor from './TextEditor.js';
47
46
  import * as TextPrompt from './TextPrompt.js';
48
47
  import * as ThrottledWidget from './ThrottledWidget.js';
49
48
  import * as Toolbar from './Toolbar.js';
@@ -101,7 +100,6 @@ export {
101
100
  SuggestBox,
102
101
  TabbedPane,
103
102
  TargetCrashedScreen,
104
- TextEditor,
105
103
  TextPrompt,
106
104
  ThrottledWidget,
107
105
  Toolbar,
@@ -134,7 +134,7 @@
134
134
  .tabbed-pane-header-tab:hover,
135
135
  .tabbed-pane-shadow .tabbed-pane-header-tab:focus-visible {
136
136
  color: var(--color-text-primary);
137
- background-color: var(--color-background-elevation-1);
137
+ background-color: var(--color-background-elevation-2);
138
138
  }
139
139
 
140
140
  .tabbed-pane-header-tab-title {
@@ -110,7 +110,7 @@
110
110
  --color-image-preview-background: rgb(255 255 255);
111
111
 
112
112
  /* Colors for styling inputs */
113
- --color-input-outline: rgb(128 134 139);
113
+ --color-input-outline: rgb(218 220 224);
114
114
  --color-input-outline-active: rgb(26 115 232);
115
115
  --color-input-outline-error: rgb(217 48 37);
116
116
  --color-input-outline-disabled: rgba(128 134 139 / 20%);
package/package.json CHANGED
@@ -55,5 +55,5 @@
55
55
  "unittest": "scripts/test/run_unittests.py --no-text-coverage",
56
56
  "watch": "third_party/node/node.py --output scripts/watch_build.js"
57
57
  },
58
- "version": "1.0.945677"
58
+ "version": "1.0.947377"
59
59
  }
@@ -9,7 +9,7 @@ const path = require('path');
9
9
  const FRONTEND_PATH = path.resolve(__dirname, '..', 'front_end');
10
10
 
11
11
  const manifestModules = [];
12
- for (const config of ['inspector', 'devtools_app', 'js_app', 'node_app', 'shell', 'worker_app']) {
12
+ for (const config of ['devtools_app', 'js_app']) {
13
13
  manifestModules.push(...require(path.resolve(FRONTEND_PATH, 'entrypoints', config, `${config}.json`)).modules);
14
14
  }
15
15