chrome-devtools-frontend 1.0.1704172 → 1.0.1706026

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 (100) hide show
  1. package/AUTHORS +1 -0
  2. package/docs/architecture_of_devtools.md +1 -1
  3. package/docs/cookbook/localization.md +2 -2
  4. package/eslint.config.mjs +1 -0
  5. package/front_end/Images/src/nodejsHex.svg +28 -0
  6. package/front_end/core/common/README.md +4 -3
  7. package/front_end/core/sdk/CPUThrottlingManager.ts +14 -10
  8. package/front_end/core/sdk/DOMModel.ts +65 -20
  9. package/front_end/core/sdk/DebuggerModel.ts +0 -4
  10. package/front_end/core/sdk/PageResourceLoader.ts +12 -11
  11. package/front_end/core/sdk/SourceMap.ts +7 -5
  12. package/front_end/core/sdk/SourceMapFunctionRanges.ts +22 -37
  13. package/front_end/core/sdk/SourceMapScopeChainEntry.ts +3 -3
  14. package/front_end/core/sdk/SourceMapScopesInfo.ts +50 -62
  15. package/front_end/entrypoints/formatter_actions/formatter_actions.ts +18 -0
  16. package/front_end/entrypoints/formatter_worker/Substitute.ts +9 -8
  17. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +9 -4
  18. package/front_end/entrypoints/heap_snapshot_worker/ContextAnalyzer.ts +140 -20
  19. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +16 -5
  20. package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
  21. package/front_end/foundation/Universe.ts +9 -0
  22. package/front_end/generated/InspectorBackendCommands.ts +4 -3
  23. package/front_end/generated/protocol.ts +17 -1
  24. package/front_end/models/ai_assistance/AiConversation.ts +16 -3
  25. package/front_end/models/ai_assistance/skills/accessibility.md +8 -7
  26. package/front_end/models/formatter/FormatterWorkerPool.ts +14 -4
  27. package/front_end/models/javascript_metadata/NativeFunctions.ts +6 -2
  28. package/front_end/models/source_map_scopes/NamesResolver.ts +69 -42
  29. package/front_end/models/source_map_scopes/ScopeChainModel.ts +13 -45
  30. package/front_end/models/source_map_scopes/ScopeChainResolver.ts +101 -0
  31. package/front_end/models/source_map_scopes/source_map_scopes.ts +2 -0
  32. package/front_end/panels/application/BackgroundServiceView.ts +1 -0
  33. package/front_end/panels/application/components/AdsView.ts +6 -6
  34. package/front_end/panels/application/components/BackForwardCacheView.ts +1 -1
  35. package/front_end/panels/console/ConsolePrompt.ts +2 -1
  36. package/front_end/panels/elements/CSSRuleValidator.ts +3 -0
  37. package/front_end/panels/elements/ClassesPaneWidget.ts +4 -1
  38. package/front_end/panels/elements/LayoutPane.ts +17 -20
  39. package/front_end/panels/network/NetworkLogViewColumns.ts +10 -3
  40. package/front_end/panels/network/ShowMoreDetailsWidget.ts +1 -1
  41. package/front_end/panels/security/SecurityPanel.ts +14 -7
  42. package/front_end/panels/sources/BreakpointEditDialog.ts +13 -1
  43. package/front_end/panels/sources/DebuggerPlugin.ts +69 -58
  44. package/front_end/panels/sources/EditingLocationHistoryManager.ts +6 -6
  45. package/front_end/panels/sources/OpenFileQuickOpen.ts +2 -2
  46. package/front_end/panels/sources/Plugin.ts +3 -2
  47. package/front_end/panels/sources/ResourceOriginPlugin.ts +14 -17
  48. package/front_end/panels/sources/ScopeChainSidebarPane.ts +2 -2
  49. package/front_end/panels/sources/SourcesPanel.ts +1 -1
  50. package/front_end/panels/sources/SourcesView.ts +25 -82
  51. package/front_end/panels/sources/TabbedEditorContainer.ts +75 -21
  52. package/front_end/panels/sources/UISourceCodeFrame.ts +22 -13
  53. package/front_end/panels/sources/sourcesView.css +17 -27
  54. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -0
  55. package/front_end/third_party/chromium/README.chromium +1 -1
  56. package/front_end/third_party/source-map-scopes-codec/README.chromium +2 -2
  57. package/front_end/third_party/source-map-scopes-codec/package/CONTRIBUTING.md +14 -1
  58. package/front_end/third_party/source-map-scopes-codec/package/README.md +8 -6
  59. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts +4 -1
  60. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts.map +1 -1
  61. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts +3 -1
  62. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts.map +1 -1
  63. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts.map +1 -1
  64. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/scopes.d.ts +4 -3
  65. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/scopes.d.ts.map +1 -1
  66. package/front_end/third_party/source-map-scopes-codec/package/deno.json +6 -2
  67. package/front_end/third_party/source-map-scopes-codec/package/package.json +1 -1
  68. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +18 -2
  69. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js.map +1 -1
  70. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.ts +22 -3
  71. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +33 -5
  72. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js.map +1 -1
  73. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.ts +41 -5
  74. package/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -2
  75. package/front_end/third_party/source-map-scopes-codec/package/src/codec.js.map +1 -1
  76. package/front_end/third_party/source-map-scopes-codec/package/src/codec.ts +4 -3
  77. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +99 -36
  78. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js.map +1 -1
  79. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.ts +143 -49
  80. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +3 -1
  81. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js.map +1 -1
  82. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.ts +3 -1
  83. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +40 -18
  84. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js.map +1 -1
  85. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.ts +51 -21
  86. package/front_end/third_party/source-map-scopes-codec/package/src/scopes.ts +4 -3
  87. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +18 -4
  88. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.js.map +1 -1
  89. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.ts +18 -4
  90. package/front_end/ui/comments/CommentOverlayManager.ts +23 -10
  91. package/front_end/ui/components/text_editor/javascript.ts +128 -52
  92. package/front_end/ui/legacy/README.md +12 -12
  93. package/front_end/ui/legacy/SearchableView.ts +125 -74
  94. package/front_end/ui/legacy/components/source_frame/FontView.ts +5 -5
  95. package/front_end/ui/legacy/components/source_frame/ImageView.ts +13 -13
  96. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -6
  97. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +3 -2
  98. package/mcp/mcp.ts +1 -0
  99. package/package.json +1 -1
  100. package/front_end/Images/nodeIcon.avif +0 -0
@@ -15,11 +15,13 @@ import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
15
15
  import * as Persistence from '../../models/persistence/persistence.js';
16
16
  import * as Workspace from '../../models/workspace/workspace.js';
17
17
  import * as CodeMirror from '../../third_party/codemirror.next/codemirror.next.js';
18
+ import * as Buttons from '../../ui/components/buttons/buttons.js';
18
19
  import * as IssueCounter from '../../ui/components/issue_counter/issue_counter.js';
19
20
  import * as TextEditor from '../../ui/components/text_editor/text_editor.js';
20
21
  import {Icon, type IconWithName} from '../../ui/kit/kit.js';
21
22
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
22
23
  import * as UI from '../../ui/legacy/legacy.js';
24
+ import {html, type LitTemplate, nothing, type TemplateResult} from '../../ui/lit/lit.js';
23
25
 
24
26
  import {AiCodeCompletionPlugin} from './AiCodeCompletionPlugin.js';
25
27
  import {CoveragePlugin} from './CoveragePlugin.js';
@@ -470,32 +472,39 @@ export class UISourceCodeFrame extends UISourceCodeFrameBase {
470
472
  }
471
473
  }
472
474
 
473
- override async toolbarItems(): Promise<UI.Toolbar.ToolbarItem[]> {
474
- const leftToolbarItems = await super.toolbarItems();
475
+ override async toolbarItems(): Promise<TemplateResult> {
476
+ const leftToolbarItems: Array<UI.Toolbar.ToolbarItem|LitTemplate> = [await super.toolbarItems()];
475
477
 
476
478
  const isEditable = Persistence.Persistence.PersistenceImpl.instance().hasEditableContent(this.#uiSourceCode);
477
479
  const isJavaScript = Common.ResourceType.ResourceType.isJavaScriptMimeType(this.contentType);
478
480
  const isInplaceFormattable = isEditable && isJavaScript;
479
481
 
480
482
  if (isInplaceFormattable) {
481
- const formatButton = new UI.Toolbar.ToolbarButton(i18nString(UIStrings.format), 'brackets');
482
- formatButton.addEventListener(UI.Toolbar.ToolbarButton.Events.CLICK, () => {
483
- void this.#formatSourceInPlace();
484
- });
485
- leftToolbarItems.unshift(formatButton);
483
+ leftToolbarItems.unshift(html`<devtools-button
484
+ class="toolbar-button"
485
+ title=${i18nString(UIStrings.format)}
486
+ aria-label=${i18nString(UIStrings.format)}
487
+ .iconName=${'brackets'}
488
+ .variant=${Buttons.Button.Variant.TOOLBAR}
489
+ @click=${() => void this.#formatSourceInPlace()}
490
+ ></devtools-button>`);
486
491
  }
487
492
 
488
- const rightToolbarItems = [];
493
+ const rightToolbarItems: Array<UI.Toolbar.ToolbarItem|LitTemplate> = [];
489
494
  for (const plugin of this.plugins) {
490
495
  leftToolbarItems.push(...plugin.leftToolbarItems());
491
496
  rightToolbarItems.push(...plugin.rightToolbarItems());
492
497
  }
493
498
 
494
- if (!rightToolbarItems.length) {
495
- return leftToolbarItems;
496
- }
497
-
498
- return [...leftToolbarItems, new UI.Toolbar.ToolbarSeparator(true), ...rightToolbarItems];
499
+ return html`
500
+ ${leftToolbarItems.map(item => item instanceof UI.Toolbar.ToolbarItem ? item.element : item)}
501
+ ${
502
+ rightToolbarItems.length ? html`
503
+ <div class="toolbar-spacer"></div>
504
+ ${rightToolbarItems.map(item => item instanceof UI.Toolbar.ToolbarItem ? item.element : item)}
505
+ ` :
506
+ nothing}
507
+ `;
499
508
  }
500
509
 
501
510
  private getErrorPopoverContent(event: Event): UI.PopoverHelper.PopoverRequest|null {
@@ -4,35 +4,25 @@
4
4
  * found in the LICENSE file.
5
5
  */
6
6
 
7
- #sources-panel-sources-view {
8
- --override-highlight-animation-10pc-background-color: rgb(158 54 153);
9
- --override-highlight-animation-10pc-foreground-color: rgb(255 255 255);
10
-
11
- flex: auto;
12
- position: relative;
13
- }
7
+ @scope to (devtools-widget > *) {
8
+ :scope {
9
+ flex: auto;
10
+ position: relative;
11
+ }
14
12
 
15
- #sources-panel-sources-view .sources-toolbar {
16
- display: flex;
17
- flex: 0 0 auto;
18
- min-height: 27px;
19
- background-color: var(--sys-color-cdt-base-container);
20
- border-top: var(--sys-size-1) solid var(--sys-color-divider);
21
- overflow: hidden;
22
- z-index: 0;
23
- align-items: flex-end;
13
+ .sources-toolbar {
14
+ display: flex;
15
+ flex: 0 0 auto;
16
+ min-height: 27px;
17
+ background-color: var(--sys-color-cdt-base-container);
18
+ border-top: var(--sys-size-1) solid var(--sys-color-divider);
19
+ overflow: hidden;
20
+ z-index: 0;
21
+ align-items: flex-end;
22
+ }
24
23
 
25
- devtools-toolbar:first-of-type {
24
+ .script-view-toolbar {
25
+ flex: auto;
26
26
  flex-wrap: wrap;
27
27
  }
28
28
  }
29
-
30
- .source-frame-debugger-script {
31
- --override-debugger-background-tint: rgb(255 255 194 / 50%);
32
-
33
- background-color: var(--override-debugger-background-tint);
34
- }
35
-
36
- .theme-with-dark-background .source-frame-debugger-script {
37
- --override-debugger-background-tint: rgb(61 61 0 / 50%);
38
- }
@@ -74,6 +74,7 @@ const UIStringsNotTranslate = {
74
74
  /**
75
75
  * @description The `Generate AI label button` tooltip disclaimer for when the feature is not available and the reason can be checked in settings.
76
76
  */
77
+ // eslint-disable-next-line @devtools/l10n-uistrings-sentence-punctuation -- Concatenated with learnMore in the UI to form a multi-sentence message.
77
78
  autoAnnotationNotAvailableDisclaimer: 'Auto annotations are not available.',
78
79
  /**
79
80
  * @description The `Generate AI label button` tooltip disclaimer for when the feature is not available because the user is offline.
@@ -1,7 +1,7 @@
1
1
  Name: Dependencies sourced from the upstream `chromium` repository
2
2
  URL: Internal
3
3
  Version: N/A
4
- Revision: d4131488cec036cb5a8b1c69a9c252d54b540f29
4
+ Revision: e65c93f89582a5ef6c0aa01644109da3dd5b31a9
5
5
  Update Mechanism: Manual (https://crbug.com/428069060)
6
6
  License: BSD-3-Clause
7
7
  License File: LICENSE
@@ -1,8 +1,8 @@
1
1
  Name: source-map-scopes-codec
2
2
  Short Name: source-map-scopes-codec
3
3
  URL: https://github.com/ChromeDevTools/source-map-scopes-codec
4
- Version: 0.7.0
5
- Revision: 3a84349a869ea8136056e8ce1c37cb148d36165e
4
+ Version: 1.0.0
5
+ Revision: de807fe67f1e71f0022d97acbee63a1765f70f2f
6
6
  License: BSD-3-Clause
7
7
  License File: LICENSE
8
8
  Security Critical: no
@@ -30,4 +30,17 @@ This project follows
30
30
  All submissions, including submissions by project members, require review. We
31
31
  use GitHub pull requests for this purpose. Consult
32
32
  [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
33
- information on using pull requests.
33
+ information on using pull requests.
34
+
35
+ ### Commit messages
36
+
37
+ This repository uses [Conventional Commits](https://www.conventionalcommits.org/)
38
+ and [Release Please](https://github.com/googleapis/release-please) for automated
39
+ versioning and changelog generation.
40
+
41
+ PR titles and commit messages should follow the format:
42
+
43
+ * `feat: ...` for new features (triggers a `minor` version bump)
44
+ * `fix: ...` for bug fixes (triggers a `patch` version bump)
45
+ * `feat!: ...` or `fix!: ...` for breaking changes (triggers a `major` version bump)
46
+ * `docs: ...`, `chore: ...`, `ci: ...`, `test: ...` for maintenance changes
@@ -47,12 +47,14 @@ The library also contains a builder that makes creating structured scope informa
47
47
  import { ScopeInfoBuilder } from "@chrome-devtools/source-map-scopes-codec";
48
48
 
49
49
  const scopeInformation = new ScopeInfoBuilder()
50
- .startScope(0, 0, { kind: "Global" })
51
- .startScope(5, 10)
52
- .setScopeKind("Function") // Same as passing 'kind' to 'startScope'.
53
- .setScopeName("foo") // Same as passing 'name' to 'startScope'.
54
- .endScope(10, 5)
55
- .endScope(11, 1)
50
+ .startSource()
51
+ .startScope(0, 0, { kind: "Global" })
52
+ .startScope(5, 10)
53
+ .setScopeKind("Function") // Same as passing 'kind' to 'startScope'.
54
+ .setScopeName("foo") // Same as passing 'name' to 'startScope'.
55
+ .endScope(10, 5)
56
+ .endScope(11, 1)
57
+ .endSource()
56
58
  .startRange(0, 0, { scope: 0 })
57
59
  .startRange(0, 10)
58
60
  .setRangeScopeDefinition(1) // Same as passing 'scope' to 'startRange'.
@@ -9,7 +9,9 @@ import type { Binding, GeneratedRange, OriginalPosition, OriginalScope, ScopeInf
9
9
  * This class will also silently ignore calls that would fail otherwise. E.g. calling
10
10
  * `end*` without a matching `start*`.
11
11
  */ export declare class ScopeInfoBuilder {
12
- addNullScope(): this;
12
+ addNullSource(): this;
13
+ startSource(): this;
14
+ endSource(): this;
13
15
  startScope(line: number, column: number, options?: {
14
16
  name?: string;
15
17
  kind?: string;
@@ -47,6 +49,7 @@ import type { Binding, GeneratedRange, OriginalPosition, OriginalScope, ScopeInf
47
49
  setRangeCallSite(callSite: OriginalPosition): this;
48
50
  endRange(line: number, column: number): this;
49
51
  build(): ScopeInfo;
52
+ protected get currentSourceScopes(): ReadonlyArray<OriginalScope> | null;
50
53
  protected get scopeStack(): ReadonlyArray<OriginalScope>;
51
54
  protected get rangeStack(): ReadonlyArray<GeneratedRange>;
52
55
  protected isKnownScope(scope: OriginalScope): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sources":["../../../src/builder/builder.ts"],"names":[],"mappings":"AAIA,cACE,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,uBACW;AAEtB;;;;;;;;;CASC,GACD,OAAO,cAAM;EAWX,gBAAgB,IAAI;EAKpB,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,eAAe,OAAO;IACtB,YAAY,MAAM;IAClB,MAAM;GACP,GACA,IAAI;EAsBP,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAM/C,kBAAkB,WAAW,MAAM,EAAE,GAAG,IAAI;EAO5C,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAgB5C;;GAEC,GACD,gBAAgB,gBAAgB,IAAI;EAIpC;;GAEC,GACD,aAAa,gBAAgB,IAAI;EAIjC;;;GAGC,GACD,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,QAAQ;IACR,WAAW;IACX,eAAe,OAAO;IACtB,WAAW,OAAO;IAClB,SAAS;IACT,WAAW;GACZ,GACA,IAAI;EA6BP,wBAAwB,OAAO,aAAa,GAAG,IAAI;EAMnD,2BAA2B,UAAU,QAAQ,GAAG,IAAI;EAMpD,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAO/C,eAAe,UAAU,OAAO,GAAG,IAAI;EAOvC,eAAe,QAAQ,SAAS,GAAG,IAAI;EAOvC,iBAAiB,UAAU,gBAAgB,GAAG,IAAI;EAOlD,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAe5C,SAAS;EAYT,cAAc,cAAc,cAAc;EAI1C,cAAc,cAAc,cAAc;EAI1C,UAAU,aAAa,OAAO,aAAa,GAAG,OAAO;EAIrD,UAAU,gBAAgB,KAAK,QAAQ,GAAG,OAAO;EAIjD,UAAU,mBAAmB,KAAK,QAAQ,GAAG;AAG/C;AAEA;;;;;CAKC,GACD,YAAY,WAAW,OAAO"}
1
+ {"version":3,"file":"builder.d.ts","sources":["../../../src/builder/builder.ts"],"names":[],"mappings":"AAIA,cACE,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,uBACW;AAEtB;;;;;;;;;CASC,GACD,OAAO,cAAM;EAYX,iBAAiB,IAAI;EAKrB,eAAe,IAAI;EAKnB,aAAa,IAAI;EAQjB,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,eAAe,OAAO;IACtB,YAAY,MAAM;IAClB,MAAM;GACP,GACA,IAAI;EAsBP,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAM/C,kBAAkB,WAAW,MAAM,EAAE,GAAG,IAAI;EAO5C,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAgB5C;;GAEC,GACD,gBAAgB,gBAAgB,IAAI;EAIpC;;GAEC,GACD,aAAa,gBAAgB,IAAI;EAIjC;;;GAGC,GACD,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,QAAQ;IACR,WAAW;IACX,eAAe,OAAO;IACtB,WAAW,OAAO;IAClB,SAAS;IACT,WAAW;GACZ,GACA,IAAI;EA6BP,wBAAwB,OAAO,aAAa,GAAG,IAAI;EAMnD,2BAA2B,UAAU,QAAQ,GAAG,IAAI;EAMpD,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAO/C,eAAe,UAAU,OAAO,GAAG,IAAI;EAOvC,eAAe,QAAQ,SAAS,GAAG,IAAI;EAOvC,iBAAiB,UAAU,gBAAgB,GAAG,IAAI;EAOlD,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAe5C,SAAS;EAaT,cAAc,uBAAuB,cAAc,iBAAiB,IAAI;EAIxE,cAAc,cAAc,cAAc;EAI1C,cAAc,cAAc,cAAc;EAI1C,UAAU,aAAa,OAAO,aAAa,GAAG,OAAO;EAIrD,UAAU,gBAAgB,KAAK,QAAQ,GAAG,OAAO;EAIjD,UAAU,mBAAmB,KAAK,QAAQ,GAAG;AAG/C;AAEA;;;;;CAKC,GACD,YAAY,WAAW,OAAO"}
@@ -4,7 +4,9 @@ import { ScopeInfoBuilder, type ScopeKey } from "./builder.js";
4
4
  * Similar to `ScopeInfoBuilder`, but with checks that scopes/ranges are well
5
5
  * nested and don't partially overlap.
6
6
  */ export declare class SafeScopeInfoBuilder extends ScopeInfoBuilder {
7
- override addNullScope(): this;
7
+ override addNullSource(): this;
8
+ override startSource(): this;
9
+ override endSource(): this;
8
10
  override startScope(line: number, column: number, options?: {
9
11
  name?: string;
10
12
  kind?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"safe_builder.d.ts","sources":["../../../src/builder/safe_builder.ts"],"names":[],"mappings":"AAIA,cACE,OAAO,EACP,gBAAgB,EAChB,aAAa,EAEb,SAAS,uBACW;AAEtB,SAAS,gBAAgB,EAAE,KAAK,QAAQ,uBAAuB;AAE/D;;;CAGC,GACD,OAAO,cAAM,6BAA6B;EACxC,SAAS,gBAAgB,IAAI;EAQ7B,SAAS,WACP,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,eAAe,OAAO;IACtB,YAAY,MAAM;IAClB,MAAM;GACP,GACA,IAAI;EA2BP,SAAS,aAAa,MAAM,MAAM,GAAG,IAAI;EAQzC,SAAS,aAAa,MAAM,MAAM,GAAG,IAAI;EAQzC,SAAS,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAQxD,SAAS,kBAAkB,WAAW,MAAM,EAAE,GAAG,IAAI;EAQrD,SAAS,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAkBrD,SAAS,WACP,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,QAAQ;IACR,WAAW;IACX,eAAe,OAAO;IACtB,WAAW,OAAO;IAClB,SAAS;IACT,WAAW;GACZ,GACA,IAAI;EA6DP,SAAS,wBAAwB,OAAO,aAAa,GAAG,IAAI;EAc5D,SAAS,2BAA2B,UAAU,QAAQ,GAAG,IAAI;EAc7D,SAAS,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAQxD,SAAS,eAAe,UAAU,OAAO,GAAG,IAAI;EAQhD,SAAS,eAAe,QAAQ,SAAS,GAAG,IAAI;EAmBhD,SAAS,iBAAiB,UAAU,gBAAgB,GAAG,IAAI;EAQ3D,SAAS,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAmBrD,SAAS,SAAS;AAkFpB"}
1
+ {"version":3,"file":"safe_builder.d.ts","sources":["../../../src/builder/safe_builder.ts"],"names":[],"mappings":"AAIA,cACE,OAAO,EACP,gBAAgB,EAChB,aAAa,EAEb,SAAS,uBACW;AAEtB,SAAS,gBAAgB,EAAE,KAAK,QAAQ,uBAAuB;AAE/D;;;CAGC,GACD,OAAO,cAAM,6BAA6B;EACxC,SAAS,iBAAiB,IAAI;EAS9B,SAAS,eAAe,IAAI;EAS5B,SAAS,aAAa,IAAI;EAS1B,SAAS,WACP,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,eAAe,OAAO;IACtB,YAAY,MAAM;IAClB,MAAM;GACP,GACA,IAAI;EA8BP,SAAS,aAAa,MAAM,MAAM,GAAG,IAAI;EAQzC,SAAS,aAAa,MAAM,MAAM,GAAG,IAAI;EAQzC,SAAS,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAQxD,SAAS,kBAAkB,WAAW,MAAM,EAAE,GAAG,IAAI;EAQrD,SAAS,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAkBrD,SAAS,WACP,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,QAAQ;IACR,WAAW;IACX,eAAe,OAAO;IACtB,WAAW,OAAO;IAClB,SAAS;IACT,WAAW;GACZ,GACA,IAAI;EA8DP,SAAS,wBAAwB,OAAO,aAAa,GAAG,IAAI;EAc5D,SAAS,2BAA2B,UAAU,QAAQ,GAAG,IAAI;EAc7D,SAAS,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAQxD,SAAS,eAAe,UAAU,OAAO,GAAG,IAAI;EAQhD,SAAS,eAAe,QAAQ,SAAS,GAAG,IAAI;EAmBhD,SAAS,iBAAiB,UAAU,gBAAgB,GAAG,IAAI;EAQ3D,SAAS,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAmBrD,SAAS,SAAS;AA+FpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"decode.d.ts","sources":["../../../src/decode/decode.ts"],"names":[],"mappings":"AAWA,cACE,gBAAgB,EAIhB,QAAQ,EACR,SAAS,uBAGW;AAGtB;;;;;;;;;;;;;CAaC,GACD,0BAAkB;EAChB,SAAS;EACT,MAAM;;AAGR,iBAAiB;EACf,MAAM;EAEN;;;;;GAKC,GACD,iBAAiB;;AAQnB,OAAO,iBAAS,OACd,WAAW,SAAS,EACpB,UAAS,QAAQ,cAAuC,GACvD"}
1
+ {"version":3,"file":"decode.d.ts","sources":["../../../src/decode/decode.ts"],"names":[],"mappings":"AAWA,cACE,gBAAgB,EAIhB,QAAQ,EACR,SAAS,uBAGW;AAItB;;;;;;;;;;;;;CAaC,GACD,0BAAkB;EAChB,SAAS;EACT,MAAM;;AAGR,iBAAiB;EACf,MAAM;EAEN;;;;;GAKC,GACD,iBAAiB;;AAQnB,OAAO,iBAAS,OACd,WAAW,SAAS,EACpB,UAAS,QAAQ,cAAuC,GACvD"}
@@ -2,8 +2,8 @@
2
2
  * The scopes information found in a source map.
3
3
  */ export interface ScopeInfo {
4
4
  /**
5
- * The length of {@linkcode scopes} must match the length of "sources" in the source map JSON. Each entry describes the scope tree of the corresponding source file.
6
- */ scopes: (OriginalScope | null)[];
5
+ * The length of {@linkcode scopes} must match the length of "sources" in the source map JSON. Each entry describes the scope trees of the corresponding source file.
6
+ */ scopes: (OriginalScope[] | null)[];
7
7
  /**
8
8
  * The range tree of the generated bundle. Multiple top-level ranges are allowed but must not overlap source position wise.
9
9
  */ ranges: GeneratedRange[];
@@ -133,6 +133,7 @@ export interface SubRangeBinding {
133
133
  sources: (string | null)[];
134
134
  mappings: string;
135
135
  names?: string[];
136
- scopes?: string;
136
+ scopes?: (string | null)[];
137
+ ranges?: string[];
137
138
  }
138
139
  //# sourceMappingURL=scopes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.d.ts","sources":["../../src/scopes.ts"],"names":[],"mappings":"AAIA;;CAEC,GACD,iBAAiB;EACf;;GAEC,GACD,SAAS,gBAAgB,IAAI;EAE7B;;GAEC,GACD,QAAQ;;AAGV;;CAEC,GACD,iBAAiB,yBAAyB;EACxC;;;GAGC,GACD,2BAA2B,OAAO;;AAGpC;;CAEC,GACD,iBAAiB;EACf,6CAA6C,GAC7C,OAAO;EAEP,sCAAsC,GACtC,KAAK;EAEL;;;;GAIC,GACD,OAAO,MAAM;EAEb;;;;;GAKC,GACD,OAAO,MAAM;EAEb;;GAEC,GACD,cAAc,OAAO;EAErB;;GAEC,GACD,WAAW,MAAM;EAEjB;;;GAGC,GACD,UAAU;EAEV,0DAA0D,GAC1D,SAAS;;AAGX;;;;;;CAMC,GACD,iBAAiB;EACf,4CAA4C,GAC5C,OAAO;EAEP,sCAAsC,GACtC,KAAK;EAEL;;GAEC,GACD,gBAAgB;EAEhB;;GAEC,GACD,cAAc,OAAO;EAErB;;;GAGC,GACD,UAAU,OAAO;EAEjB;;;;;GAKC,GACD,WAAW;EAEX;;;GAGC,GACD,QAAQ;EAER;;;GAGC,GACD,UAAU;EAEV,0DAA0D,GAC1D,SAAS;;AAGX;;;;;;;;;;;;;;;CAeC,GACD,YAAY,UAAU,MAAM,GAAG,IAAI,GAAG;AAEtC,iBAAiB;EACf,QAAQ,MAAM;EACd,MAAM;EACN,IAAI;;AAGN;;;;;CAKC,GACD,iBAAiB;EACf,MAAM,MAAM;EACZ,QAAQ,MAAM;;AAGhB;;CAEC,GACD,iBAAiB,yBAAyB;EACxC,8FAA8F,GAC9F,aAAa,MAAM;;AAGrB;;CAEC,GACD,YAAY,YAAY,gBAAgB;AAExC;;CAEC,GACD,iBAAiB;EACf,SAAS;EACT,UAAU;IAAQ,QAAQ;IAAU,KAAK;;;AAG3C;;CAEC,GACD,iBAAiB;EACf,SAAS;EACT,UAAU,MAAM,GAAG,IAAI;EACvB,UAAU,MAAM;EAChB,QAAQ,MAAM;EACd,SAAS,MAAM"}
1
+ {"version":3,"file":"scopes.d.ts","sources":["../../src/scopes.ts"],"names":[],"mappings":"AAIA;;CAEC,GACD,iBAAiB;EACf;;GAEC,GACD,SAAS,kBAAkB,IAAI;EAE/B;;GAEC,GACD,QAAQ;;AAGV;;CAEC,GACD,iBAAiB,yBAAyB;EACxC;;;GAGC,GACD,2BAA2B,OAAO;;AAGpC;;CAEC,GACD,iBAAiB;EACf,6CAA6C,GAC7C,OAAO;EAEP,sCAAsC,GACtC,KAAK;EAEL;;;;GAIC,GACD,OAAO,MAAM;EAEb;;;;;GAKC,GACD,OAAO,MAAM;EAEb;;GAEC,GACD,cAAc,OAAO;EAErB;;GAEC,GACD,WAAW,MAAM;EAEjB;;;GAGC,GACD,UAAU;EAEV,0DAA0D,GAC1D,SAAS;;AAGX;;;;;;CAMC,GACD,iBAAiB;EACf,4CAA4C,GAC5C,OAAO;EAEP,sCAAsC,GACtC,KAAK;EAEL;;GAEC,GACD,gBAAgB;EAEhB;;GAEC,GACD,cAAc,OAAO;EAErB;;;GAGC,GACD,UAAU,OAAO;EAEjB;;;;;GAKC,GACD,WAAW;EAEX;;;GAGC,GACD,QAAQ;EAER;;;GAGC,GACD,UAAU;EAEV,0DAA0D,GAC1D,SAAS;;AAGX;;;;;;;;;;;;;;;CAeC,GACD,YAAY,UAAU,MAAM,GAAG,IAAI,GAAG;AAEtC,iBAAiB;EACf,QAAQ,MAAM;EACd,MAAM;EACN,IAAI;;AAGN;;;;;CAKC,GACD,iBAAiB;EACf,MAAM,MAAM;EACZ,QAAQ,MAAM;;AAGhB;;CAEC,GACD,iBAAiB,yBAAyB;EACxC,8FAA8F,GAC9F,aAAa,MAAM;;AAGrB;;CAEC,GACD,YAAY,YAAY,gBAAgB;AAExC;;CAEC,GACD,iBAAiB;EACf,SAAS;EACT,UAAU;IAAQ,QAAQ;IAAU,KAAK;;;AAG3C;;CAEC,GACD,iBAAiB;EACf,SAAS;EACT,UAAU,MAAM,GAAG,IAAI;EACvB,UAAU,MAAM;EAChB,QAAQ,MAAM;EACd,UAAU,MAAM,GAAG,IAAI;EACvB,SAAS,MAAM"}
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@chrome-devtools/source-map-scopes-codec",
3
- "version": "0.8.1",
3
+ "version": "1.0.0",
4
4
  "exports": "./src/mod.ts",
5
5
  "license": "BSD-3-Clause",
6
6
  "fmt": {
7
- "exclude": ["README.md", "CONTRIBUTING.md"]
7
+ "exclude": [
8
+ "README.md",
9
+ "CONTRIBUTING.md",
10
+ "CHANGELOG.md"
11
+ ]
8
12
  },
9
13
  "publish": {
10
14
  "include": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsr/chrome-devtools__source-map-scopes-codec",
3
- "version": "0.8.1",
3
+ "version": "1.0.0",
4
4
  "homepage": "https://jsr.io/@chrome-devtools/source-map-scopes-codec",
5
5
  "type": "module",
6
6
  "dependencies": {},
@@ -13,15 +13,27 @@
13
13
  */ export class ScopeInfoBuilder {
14
14
  #scopes = [];
15
15
  #ranges = [];
16
+ #currentSourceScopes = null;
16
17
  #scopeStack = [];
17
18
  #rangeStack = [];
18
19
  #knownScopes = new Set();
19
20
  #keyToScope = new Map();
20
21
  #lastScope = null;
21
- addNullScope() {
22
+ addNullSource() {
22
23
  this.#scopes.push(null);
23
24
  return this;
24
25
  }
26
+ startSource() {
27
+ this.#currentSourceScopes = [];
28
+ return this;
29
+ }
30
+ endSource() {
31
+ if (this.#currentSourceScopes) {
32
+ this.#scopes.push(this.#currentSourceScopes);
33
+ this.#currentSourceScopes = null;
34
+ }
35
+ return this;
36
+ }
25
37
  startScope(line, column, options) {
26
38
  const scope = {
27
39
  start: {
@@ -74,7 +86,7 @@
74
86
  column
75
87
  };
76
88
  if (this.#scopeStack.length === 0) {
77
- this.#scopes.push(scope);
89
+ this.#currentSourceScopes?.push(scope);
78
90
  } else {
79
91
  this.#scopeStack.at(-1).children.push(scope);
80
92
  }
@@ -174,11 +186,15 @@
174
186
  };
175
187
  this.#scopes = [];
176
188
  this.#ranges = [];
189
+ this.#currentSourceScopes = null;
177
190
  this.#knownScopes.clear();
178
191
  this.#keyToScope.clear();
179
192
  this.#lastScope = null;
180
193
  return info;
181
194
  }
195
+ get currentSourceScopes() {
196
+ return this.#currentSourceScopes;
197
+ }
182
198
  get scopeStack() {
183
199
  return this.#scopeStack;
184
200
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sources":["./builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sources":["./builder.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,10 @@ import type {
21
21
  * `end*` without a matching `start*`.
22
22
  */
23
23
  export class ScopeInfoBuilder {
24
- #scopes: (OriginalScope | null)[] = [];
24
+ #scopes: (OriginalScope[] | null)[] = [];
25
25
  #ranges: GeneratedRange[] = [];
26
26
 
27
+ #currentSourceScopes: OriginalScope[] | null = null;
27
28
  #scopeStack: OriginalScope[] = [];
28
29
  #rangeStack: GeneratedRange[] = [];
29
30
 
@@ -31,11 +32,24 @@ export class ScopeInfoBuilder {
31
32
  #keyToScope = new Map<ScopeKey, OriginalScope>();
32
33
  #lastScope: OriginalScope | null = null;
33
34
 
34
- addNullScope(): this {
35
+ addNullSource(): this {
35
36
  this.#scopes.push(null);
36
37
  return this;
37
38
  }
38
39
 
40
+ startSource(): this {
41
+ this.#currentSourceScopes = [];
42
+ return this;
43
+ }
44
+
45
+ endSource(): this {
46
+ if (this.#currentSourceScopes) {
47
+ this.#scopes.push(this.#currentSourceScopes);
48
+ this.#currentSourceScopes = null;
49
+ }
50
+ return this;
51
+ }
52
+
39
53
  startScope(
40
54
  line: number,
41
55
  column: number,
@@ -100,7 +114,7 @@ export class ScopeInfoBuilder {
100
114
  scope.end = { line, column };
101
115
 
102
116
  if (this.#scopeStack.length === 0) {
103
- this.#scopes.push(scope);
117
+ this.#currentSourceScopes?.push(scope);
104
118
  } else {
105
119
  this.#scopeStack.at(-1)!.children.push(scope);
106
120
  }
@@ -227,6 +241,7 @@ export class ScopeInfoBuilder {
227
241
 
228
242
  this.#scopes = [];
229
243
  this.#ranges = [];
244
+ this.#currentSourceScopes = null;
230
245
  this.#knownScopes.clear();
231
246
  this.#keyToScope.clear();
232
247
  this.#lastScope = null;
@@ -234,6 +249,10 @@ export class ScopeInfoBuilder {
234
249
  return info;
235
250
  }
236
251
 
252
+ protected get currentSourceScopes(): ReadonlyArray<OriginalScope> | null {
253
+ return this.#currentSourceScopes;
254
+ }
255
+
237
256
  protected get scopeStack(): ReadonlyArray<OriginalScope> {
238
257
  return this.#scopeStack;
239
258
  }
@@ -7,13 +7,29 @@ import { ScopeInfoBuilder } from "./builder.js";
7
7
  * Similar to `ScopeInfoBuilder`, but with checks that scopes/ranges are well
8
8
  * nested and don't partially overlap.
9
9
  */ export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
10
- addNullScope() {
11
- this.#verifyEmptyScopeStack("add null scope");
12
- this.#verifyEmptyRangeStack("add null scope");
13
- super.addNullScope();
10
+ addNullSource() {
11
+ this.#verifyNoOpenSource("add null source");
12
+ this.#verifyEmptyScopeStack("add null source");
13
+ this.#verifyEmptyRangeStack("add null source");
14
+ super.addNullSource();
15
+ return this;
16
+ }
17
+ startSource() {
18
+ this.#verifyNoOpenSource("start source");
19
+ this.#verifyEmptyScopeStack("start source");
20
+ this.#verifyEmptyRangeStack("start source");
21
+ super.startSource();
22
+ return this;
23
+ }
24
+ endSource() {
25
+ this.#verifyOpenSource("end source");
26
+ this.#verifyEmptyScopeStack("end source");
27
+ this.#verifyEmptyRangeStack("end source");
28
+ super.endSource();
14
29
  return this;
15
30
  }
16
31
  startScope(line, column, options) {
32
+ this.#verifyOpenSource("start scope");
17
33
  this.#verifyEmptyRangeStack("start scope");
18
34
  const parent = this.scopeStack.at(-1);
19
35
  if (parent && comparePositions(parent.start, {
@@ -22,7 +38,7 @@ import { ScopeInfoBuilder } from "./builder.js";
22
38
  }) > 0) {
23
39
  throw new Error(`Scope start (${line}, ${column}) must not precede parent start (${parent.start.line}, ${parent.start.column})`);
24
40
  }
25
- const precedingSibling = parent?.children.at(-1);
41
+ const precedingSibling = parent ? parent.children.at(-1) : this.currentSourceScopes?.at(-1);
26
42
  if (precedingSibling && comparePositions(precedingSibling.end, {
27
43
  line,
28
44
  column
@@ -72,6 +88,7 @@ import { ScopeInfoBuilder } from "./builder.js";
72
88
  return this;
73
89
  }
74
90
  startRange(line, column, options) {
91
+ this.#verifyNoOpenSource("startRange");
75
92
  this.#verifyEmptyScopeStack("starRange");
76
93
  const parent = this.rangeStack.at(-1);
77
94
  if (parent && comparePositions(parent.start, {
@@ -177,9 +194,20 @@ import { ScopeInfoBuilder } from "./builder.js";
177
194
  if (this.scopeStack.length > 0) {
178
195
  throw new Error("Can't build ScopeInfo while an OriginalScope is unclosed.");
179
196
  }
197
+ this.#verifyNoOpenSource("build ScopeInfo");
180
198
  this.#verifyEmptyRangeStack("build ScopeInfo");
181
199
  return super.build();
182
200
  }
201
+ #verifyNoOpenSource(op) {
202
+ if (this.currentSourceScopes !== null) {
203
+ throw new Error(`Can't ${op} while a source is unclosed.`);
204
+ }
205
+ }
206
+ #verifyOpenSource(op) {
207
+ if (this.currentSourceScopes === null) {
208
+ throw new Error(`Can't ${op} without an open source.`);
209
+ }
210
+ }
183
211
  #verifyEmptyScopeStack(op) {
184
212
  if (this.scopeStack.length > 0) {
185
213
  throw new Error(`Can't ${op} while a OriginalScope is unclosed.`);
@@ -1 +1 @@
1
- {"version":3,"file":"safe_builder.js","sources":["./safe_builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe_builder.js","sources":["./safe_builder.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,30 @@ import { ScopeInfoBuilder, type ScopeKey } from "./builder.js";
17
17
  * nested and don't partially overlap.
18
18
  */
19
19
  export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
20
- override addNullScope(): this {
21
- this.#verifyEmptyScopeStack("add null scope");
22
- this.#verifyEmptyRangeStack("add null scope");
20
+ override addNullSource(): this {
21
+ this.#verifyNoOpenSource("add null source");
22
+ this.#verifyEmptyScopeStack("add null source");
23
+ this.#verifyEmptyRangeStack("add null source");
23
24
 
24
- super.addNullScope();
25
+ super.addNullSource();
26
+ return this;
27
+ }
28
+
29
+ override startSource(): this {
30
+ this.#verifyNoOpenSource("start source");
31
+ this.#verifyEmptyScopeStack("start source");
32
+ this.#verifyEmptyRangeStack("start source");
33
+
34
+ super.startSource();
35
+ return this;
36
+ }
37
+
38
+ override endSource(): this {
39
+ this.#verifyOpenSource("end source");
40
+ this.#verifyEmptyScopeStack("end source");
41
+ this.#verifyEmptyRangeStack("end source");
42
+
43
+ super.endSource();
25
44
  return this;
26
45
  }
27
46
 
@@ -36,6 +55,7 @@ export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
36
55
  key?: ScopeKey;
37
56
  },
38
57
  ): this {
58
+ this.#verifyOpenSource("start scope");
39
59
  this.#verifyEmptyRangeStack("start scope");
40
60
 
41
61
  const parent = this.scopeStack.at(-1);
@@ -46,7 +66,9 @@ export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
46
66
  );
47
67
  }
48
68
 
49
- const precedingSibling = parent?.children.at(-1);
69
+ const precedingSibling = parent
70
+ ? parent.children.at(-1)
71
+ : this.currentSourceScopes?.at(-1);
50
72
  if (
51
73
  precedingSibling &&
52
74
  comparePositions(precedingSibling.end, { line, column }) > 0
@@ -124,6 +146,7 @@ export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
124
146
  callSite?: OriginalPosition;
125
147
  },
126
148
  ): this {
149
+ this.#verifyNoOpenSource("startRange");
127
150
  this.#verifyEmptyScopeStack("starRange");
128
151
 
129
152
  const parent = this.rangeStack.at(-1);
@@ -280,11 +303,24 @@ export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
280
303
  "Can't build ScopeInfo while an OriginalScope is unclosed.",
281
304
  );
282
305
  }
306
+ this.#verifyNoOpenSource("build ScopeInfo");
283
307
  this.#verifyEmptyRangeStack("build ScopeInfo");
284
308
 
285
309
  return super.build();
286
310
  }
287
311
 
312
+ #verifyNoOpenSource(op: string): void {
313
+ if (this.currentSourceScopes !== null) {
314
+ throw new Error(`Can't ${op} while a source is unclosed.`);
315
+ }
316
+ }
317
+
318
+ #verifyOpenSource(op: string): void {
319
+ if (this.currentSourceScopes === null) {
320
+ throw new Error(`Can't ${op} without an open source.`);
321
+ }
322
+ }
323
+
288
324
  #verifyEmptyScopeStack(op: string): void {
289
325
  if (this.scopeStack.length > 0) {
290
326
  throw new Error(`Can't ${op} while a OriginalScope is unclosed.`);