@elurjs/ionic 1.6.1
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.
- package/CHANGELOG.md +287 -0
- package/MIGRATION.md +221 -0
- package/README.md +695 -0
- package/dist/lib/IonRouterOutlet.d.ts +154 -0
- package/dist/lib/__tests__/IonRouterOutlet.test.d.ts +1 -0
- package/dist/lib/__tests__/bundles.test.d.ts +1 -0
- package/dist/lib/__tests__/cache-policy.test.d.ts +1 -0
- package/dist/lib/__tests__/capacitor.test.d.ts +1 -0
- package/dist/lib/__tests__/components.test.d.ts +1 -0
- package/dist/lib/__tests__/devtools.test.d.ts +1 -0
- package/dist/lib/__tests__/lifecycle.test.d.ts +1 -0
- package/dist/lib/__tests__/mocks/ionic.d.ts +61 -0
- package/dist/lib/__tests__/navigation.test.d.ts +1 -0
- package/dist/lib/__tests__/overlays.test.d.ts +1 -0
- package/dist/lib/__tests__/page-state.test.d.ts +1 -0
- package/dist/lib/__tests__/phase0-bugs.test.d.ts +1 -0
- package/dist/lib/__tests__/setup.d.ts +1 -0
- package/dist/lib/__tests__/setup.test.d.ts +1 -0
- package/dist/lib/__tests__/tabs.test.d.ts +1 -0
- package/dist/lib/__tests__/vite-plugin.test.d.ts +1 -0
- package/dist/lib/bundles/all.cjs +2 -0
- package/dist/lib/bundles/all.cjs.map +1 -0
- package/dist/lib/bundles/all.d.ts +16 -0
- package/dist/lib/bundles/all.js +21 -0
- package/dist/lib/bundles/all.js.map +1 -0
- package/dist/lib/bundles/buttons.cjs +2 -0
- package/dist/lib/bundles/buttons.cjs.map +1 -0
- package/dist/lib/bundles/buttons.d.ts +7 -0
- package/dist/lib/bundles/buttons.js +17 -0
- package/dist/lib/bundles/buttons.js.map +1 -0
- package/dist/lib/bundles/feedback.cjs +2 -0
- package/dist/lib/bundles/feedback.cjs.map +1 -0
- package/dist/lib/bundles/feedback.d.ts +8 -0
- package/dist/lib/bundles/feedback.js +19 -0
- package/dist/lib/bundles/feedback.js.map +1 -0
- package/dist/lib/bundles/forms.cjs +2 -0
- package/dist/lib/bundles/forms.cjs.map +1 -0
- package/dist/lib/bundles/forms.d.ts +11 -0
- package/dist/lib/bundles/forms.js +47 -0
- package/dist/lib/bundles/forms.js.map +1 -0
- package/dist/lib/bundles/layout.cjs +2 -0
- package/dist/lib/bundles/layout.cjs.map +1 -0
- package/dist/lib/bundles/layout.d.ts +9 -0
- package/dist/lib/bundles/layout.js +33 -0
- package/dist/lib/bundles/layout.js.map +1 -0
- package/dist/lib/bundles/lists.cjs +2 -0
- package/dist/lib/bundles/lists.cjs.map +1 -0
- package/dist/lib/bundles/lists.d.ts +15 -0
- package/dist/lib/bundles/lists.js +65 -0
- package/dist/lib/bundles/lists.js.map +1 -0
- package/dist/lib/bundles/navigation.cjs +2 -0
- package/dist/lib/bundles/navigation.cjs.map +1 -0
- package/dist/lib/bundles/navigation.d.ts +9 -0
- package/dist/lib/bundles/navigation.js +29 -0
- package/dist/lib/bundles/navigation.js.map +1 -0
- package/dist/lib/bundles/overlays.cjs +2 -0
- package/dist/lib/bundles/overlays.cjs.map +1 -0
- package/dist/lib/bundles/overlays.d.ts +9 -0
- package/dist/lib/bundles/overlays.js +25 -0
- package/dist/lib/bundles/overlays.js.map +1 -0
- package/dist/lib/capacitor.cjs +2 -0
- package/dist/lib/capacitor.cjs.map +1 -0
- package/dist/lib/capacitor.d.ts +217 -0
- package/dist/lib/capacitor.js +223 -0
- package/dist/lib/capacitor.js.map +1 -0
- package/dist/lib/components/accordion-group.cjs +1 -0
- package/dist/lib/components/accordion-group.d.ts +11 -0
- package/dist/lib/components/accordion-group.js +2 -0
- package/dist/lib/components/accordion.cjs +1 -0
- package/dist/lib/components/accordion.d.ts +11 -0
- package/dist/lib/components/accordion.js +2 -0
- package/dist/lib/components/action-sheet.cjs +1 -0
- package/dist/lib/components/action-sheet.d.ts +11 -0
- package/dist/lib/components/action-sheet.js +2 -0
- package/dist/lib/components/alert.cjs +1 -0
- package/dist/lib/components/alert.d.ts +11 -0
- package/dist/lib/components/alert.js +2 -0
- package/dist/lib/components/avatar.cjs +1 -0
- package/dist/lib/components/avatar.d.ts +11 -0
- package/dist/lib/components/avatar.js +2 -0
- package/dist/lib/components/backdrop.cjs +1 -0
- package/dist/lib/components/backdrop.d.ts +11 -0
- package/dist/lib/components/backdrop.js +2 -0
- package/dist/lib/components/badge.cjs +1 -0
- package/dist/lib/components/badge.d.ts +11 -0
- package/dist/lib/components/badge.js +2 -0
- package/dist/lib/components/breadcrumb.cjs +1 -0
- package/dist/lib/components/breadcrumb.d.ts +11 -0
- package/dist/lib/components/breadcrumb.js +2 -0
- package/dist/lib/components/breadcrumbs.cjs +1 -0
- package/dist/lib/components/breadcrumbs.d.ts +11 -0
- package/dist/lib/components/breadcrumbs.js +2 -0
- package/dist/lib/components/button.cjs +1 -0
- package/dist/lib/components/button.d.ts +11 -0
- package/dist/lib/components/button.js +2 -0
- package/dist/lib/components/buttons.cjs +1 -0
- package/dist/lib/components/buttons.d.ts +11 -0
- package/dist/lib/components/buttons.js +2 -0
- package/dist/lib/components/card-content.cjs +1 -0
- package/dist/lib/components/card-content.d.ts +11 -0
- package/dist/lib/components/card-content.js +2 -0
- package/dist/lib/components/card-header.cjs +1 -0
- package/dist/lib/components/card-header.d.ts +11 -0
- package/dist/lib/components/card-header.js +2 -0
- package/dist/lib/components/card-subtitle.cjs +1 -0
- package/dist/lib/components/card-subtitle.d.ts +11 -0
- package/dist/lib/components/card-subtitle.js +2 -0
- package/dist/lib/components/card-title.cjs +1 -0
- package/dist/lib/components/card-title.d.ts +11 -0
- package/dist/lib/components/card-title.js +2 -0
- package/dist/lib/components/card.cjs +1 -0
- package/dist/lib/components/card.d.ts +11 -0
- package/dist/lib/components/card.js +2 -0
- package/dist/lib/components/checkbox.cjs +1 -0
- package/dist/lib/components/checkbox.d.ts +11 -0
- package/dist/lib/components/checkbox.js +2 -0
- package/dist/lib/components/chip.cjs +1 -0
- package/dist/lib/components/chip.d.ts +11 -0
- package/dist/lib/components/chip.js +2 -0
- package/dist/lib/components/col.cjs +1 -0
- package/dist/lib/components/col.d.ts +11 -0
- package/dist/lib/components/col.js +2 -0
- package/dist/lib/components/content.cjs +1 -0
- package/dist/lib/components/content.d.ts +11 -0
- package/dist/lib/components/content.js +2 -0
- package/dist/lib/components/datetime-button.cjs +1 -0
- package/dist/lib/components/datetime-button.d.ts +11 -0
- package/dist/lib/components/datetime-button.js +2 -0
- package/dist/lib/components/datetime.cjs +1 -0
- package/dist/lib/components/datetime.d.ts +11 -0
- package/dist/lib/components/datetime.js +2 -0
- package/dist/lib/components/fab-button.cjs +1 -0
- package/dist/lib/components/fab-button.d.ts +11 -0
- package/dist/lib/components/fab-button.js +2 -0
- package/dist/lib/components/fab-list.cjs +1 -0
- package/dist/lib/components/fab-list.d.ts +11 -0
- package/dist/lib/components/fab-list.js +2 -0
- package/dist/lib/components/fab.cjs +1 -0
- package/dist/lib/components/fab.d.ts +11 -0
- package/dist/lib/components/fab.js +2 -0
- package/dist/lib/components/footer.cjs +1 -0
- package/dist/lib/components/footer.d.ts +11 -0
- package/dist/lib/components/footer.js +2 -0
- package/dist/lib/components/grid.cjs +1 -0
- package/dist/lib/components/grid.d.ts +11 -0
- package/dist/lib/components/grid.js +2 -0
- package/dist/lib/components/header.cjs +1 -0
- package/dist/lib/components/header.d.ts +11 -0
- package/dist/lib/components/header.js +2 -0
- package/dist/lib/components/img.cjs +1 -0
- package/dist/lib/components/img.d.ts +11 -0
- package/dist/lib/components/img.js +2 -0
- package/dist/lib/components/infinite-scroll-content.cjs +1 -0
- package/dist/lib/components/infinite-scroll-content.d.ts +11 -0
- package/dist/lib/components/infinite-scroll-content.js +2 -0
- package/dist/lib/components/infinite-scroll.cjs +1 -0
- package/dist/lib/components/infinite-scroll.d.ts +11 -0
- package/dist/lib/components/infinite-scroll.js +2 -0
- package/dist/lib/components/input-otp.cjs +1 -0
- package/dist/lib/components/input-otp.d.ts +11 -0
- package/dist/lib/components/input-otp.js +2 -0
- package/dist/lib/components/input-password-toggle.cjs +1 -0
- package/dist/lib/components/input-password-toggle.d.ts +11 -0
- package/dist/lib/components/input-password-toggle.js +2 -0
- package/dist/lib/components/input.cjs +1 -0
- package/dist/lib/components/input.d.ts +11 -0
- package/dist/lib/components/input.js +2 -0
- package/dist/lib/components/item-divider.cjs +1 -0
- package/dist/lib/components/item-divider.d.ts +11 -0
- package/dist/lib/components/item-divider.js +2 -0
- package/dist/lib/components/item-group.cjs +1 -0
- package/dist/lib/components/item-group.d.ts +11 -0
- package/dist/lib/components/item-group.js +2 -0
- package/dist/lib/components/item-option.cjs +1 -0
- package/dist/lib/components/item-option.d.ts +11 -0
- package/dist/lib/components/item-option.js +2 -0
- package/dist/lib/components/item-options.cjs +1 -0
- package/dist/lib/components/item-options.d.ts +11 -0
- package/dist/lib/components/item-options.js +2 -0
- package/dist/lib/components/item-sliding.cjs +1 -0
- package/dist/lib/components/item-sliding.d.ts +11 -0
- package/dist/lib/components/item-sliding.js +2 -0
- package/dist/lib/components/item.cjs +1 -0
- package/dist/lib/components/item.d.ts +11 -0
- package/dist/lib/components/item.js +2 -0
- package/dist/lib/components/label.cjs +1 -0
- package/dist/lib/components/label.d.ts +11 -0
- package/dist/lib/components/label.js +2 -0
- package/dist/lib/components/list-header.cjs +1 -0
- package/dist/lib/components/list-header.d.ts +11 -0
- package/dist/lib/components/list-header.js +2 -0
- package/dist/lib/components/list.cjs +1 -0
- package/dist/lib/components/list.d.ts +11 -0
- package/dist/lib/components/list.js +2 -0
- package/dist/lib/components/loading.cjs +1 -0
- package/dist/lib/components/loading.d.ts +11 -0
- package/dist/lib/components/loading.js +2 -0
- package/dist/lib/components/manifest.cjs +2 -0
- package/dist/lib/components/manifest.cjs.map +1 -0
- package/dist/lib/components/manifest.d.ts +43 -0
- package/dist/lib/components/manifest.js +647 -0
- package/dist/lib/components/manifest.js.map +1 -0
- package/dist/lib/components/menu-button.cjs +1 -0
- package/dist/lib/components/menu-button.d.ts +11 -0
- package/dist/lib/components/menu-button.js +2 -0
- package/dist/lib/components/menu-toggle.cjs +1 -0
- package/dist/lib/components/menu-toggle.d.ts +11 -0
- package/dist/lib/components/menu-toggle.js +2 -0
- package/dist/lib/components/menu.cjs +1 -0
- package/dist/lib/components/menu.d.ts +11 -0
- package/dist/lib/components/menu.js +2 -0
- package/dist/lib/components/modal.cjs +1 -0
- package/dist/lib/components/modal.d.ts +11 -0
- package/dist/lib/components/modal.js +2 -0
- package/dist/lib/components/nav-link.cjs +1 -0
- package/dist/lib/components/nav-link.d.ts +11 -0
- package/dist/lib/components/nav-link.js +2 -0
- package/dist/lib/components/nav.cjs +1 -0
- package/dist/lib/components/nav.d.ts +11 -0
- package/dist/lib/components/nav.js +2 -0
- package/dist/lib/components/note.cjs +1 -0
- package/dist/lib/components/note.d.ts +11 -0
- package/dist/lib/components/note.js +2 -0
- package/dist/lib/components/picker-column-option.cjs +1 -0
- package/dist/lib/components/picker-column-option.d.ts +11 -0
- package/dist/lib/components/picker-column-option.js +2 -0
- package/dist/lib/components/picker-column.cjs +1 -0
- package/dist/lib/components/picker-column.d.ts +11 -0
- package/dist/lib/components/picker-column.js +2 -0
- package/dist/lib/components/picker.cjs +1 -0
- package/dist/lib/components/picker.d.ts +11 -0
- package/dist/lib/components/picker.js +2 -0
- package/dist/lib/components/popover.cjs +1 -0
- package/dist/lib/components/popover.d.ts +11 -0
- package/dist/lib/components/popover.js +2 -0
- package/dist/lib/components/progress-bar.cjs +1 -0
- package/dist/lib/components/progress-bar.d.ts +11 -0
- package/dist/lib/components/progress-bar.js +2 -0
- package/dist/lib/components/radio-group.cjs +1 -0
- package/dist/lib/components/radio-group.d.ts +11 -0
- package/dist/lib/components/radio-group.js +2 -0
- package/dist/lib/components/radio.cjs +1 -0
- package/dist/lib/components/radio.d.ts +11 -0
- package/dist/lib/components/radio.js +2 -0
- package/dist/lib/components/range.cjs +1 -0
- package/dist/lib/components/range.d.ts +11 -0
- package/dist/lib/components/range.js +2 -0
- package/dist/lib/components/refresher-content.cjs +1 -0
- package/dist/lib/components/refresher-content.d.ts +11 -0
- package/dist/lib/components/refresher-content.js +2 -0
- package/dist/lib/components/refresher.cjs +1 -0
- package/dist/lib/components/refresher.d.ts +11 -0
- package/dist/lib/components/refresher.js +2 -0
- package/dist/lib/components/reorder-group.cjs +1 -0
- package/dist/lib/components/reorder-group.d.ts +11 -0
- package/dist/lib/components/reorder-group.js +2 -0
- package/dist/lib/components/reorder.cjs +1 -0
- package/dist/lib/components/reorder.d.ts +11 -0
- package/dist/lib/components/reorder.js +2 -0
- package/dist/lib/components/ripple-effect.cjs +1 -0
- package/dist/lib/components/ripple-effect.d.ts +11 -0
- package/dist/lib/components/ripple-effect.js +2 -0
- package/dist/lib/components/router-link.cjs +1 -0
- package/dist/lib/components/router-link.d.ts +11 -0
- package/dist/lib/components/router-link.js +2 -0
- package/dist/lib/components/row.cjs +1 -0
- package/dist/lib/components/row.d.ts +11 -0
- package/dist/lib/components/row.js +2 -0
- package/dist/lib/components/searchbar.cjs +1 -0
- package/dist/lib/components/searchbar.d.ts +11 -0
- package/dist/lib/components/searchbar.js +2 -0
- package/dist/lib/components/segment-button.cjs +1 -0
- package/dist/lib/components/segment-button.d.ts +11 -0
- package/dist/lib/components/segment-button.js +2 -0
- package/dist/lib/components/segment-content.cjs +1 -0
- package/dist/lib/components/segment-content.d.ts +11 -0
- package/dist/lib/components/segment-content.js +2 -0
- package/dist/lib/components/segment-view.cjs +1 -0
- package/dist/lib/components/segment-view.d.ts +11 -0
- package/dist/lib/components/segment-view.js +2 -0
- package/dist/lib/components/segment.cjs +1 -0
- package/dist/lib/components/segment.d.ts +11 -0
- package/dist/lib/components/segment.js +2 -0
- package/dist/lib/components/select-modal.cjs +1 -0
- package/dist/lib/components/select-modal.d.ts +11 -0
- package/dist/lib/components/select-modal.js +2 -0
- package/dist/lib/components/select-option.cjs +1 -0
- package/dist/lib/components/select-option.d.ts +11 -0
- package/dist/lib/components/select-option.js +2 -0
- package/dist/lib/components/select-popover.cjs +1 -0
- package/dist/lib/components/select-popover.d.ts +11 -0
- package/dist/lib/components/select-popover.js +2 -0
- package/dist/lib/components/select.cjs +1 -0
- package/dist/lib/components/select.d.ts +11 -0
- package/dist/lib/components/select.js +2 -0
- package/dist/lib/components/skeleton-text.cjs +1 -0
- package/dist/lib/components/skeleton-text.d.ts +11 -0
- package/dist/lib/components/skeleton-text.js +2 -0
- package/dist/lib/components/spinner.cjs +1 -0
- package/dist/lib/components/spinner.d.ts +11 -0
- package/dist/lib/components/spinner.js +2 -0
- package/dist/lib/components/split-pane.cjs +1 -0
- package/dist/lib/components/split-pane.d.ts +11 -0
- package/dist/lib/components/split-pane.js +2 -0
- package/dist/lib/components/tab-bar.cjs +1 -0
- package/dist/lib/components/tab-bar.d.ts +11 -0
- package/dist/lib/components/tab-bar.js +2 -0
- package/dist/lib/components/tab-button.cjs +1 -0
- package/dist/lib/components/tab-button.d.ts +11 -0
- package/dist/lib/components/tab-button.js +2 -0
- package/dist/lib/components/tab.cjs +1 -0
- package/dist/lib/components/tab.d.ts +11 -0
- package/dist/lib/components/tab.js +2 -0
- package/dist/lib/components/tabs.cjs +1 -0
- package/dist/lib/components/tabs.d.ts +11 -0
- package/dist/lib/components/tabs.js +2 -0
- package/dist/lib/components/text.cjs +1 -0
- package/dist/lib/components/text.d.ts +11 -0
- package/dist/lib/components/text.js +2 -0
- package/dist/lib/components/textarea.cjs +1 -0
- package/dist/lib/components/textarea.d.ts +11 -0
- package/dist/lib/components/textarea.js +2 -0
- package/dist/lib/components/thumbnail.cjs +1 -0
- package/dist/lib/components/thumbnail.d.ts +11 -0
- package/dist/lib/components/thumbnail.js +2 -0
- package/dist/lib/components/title.cjs +1 -0
- package/dist/lib/components/title.d.ts +11 -0
- package/dist/lib/components/title.js +2 -0
- package/dist/lib/components/toast.cjs +1 -0
- package/dist/lib/components/toast.d.ts +11 -0
- package/dist/lib/components/toast.js +2 -0
- package/dist/lib/components/toggle.cjs +1 -0
- package/dist/lib/components/toggle.d.ts +11 -0
- package/dist/lib/components/toggle.js +2 -0
- package/dist/lib/components/toolbar.cjs +1 -0
- package/dist/lib/components/toolbar.d.ts +11 -0
- package/dist/lib/components/toolbar.js +2 -0
- package/dist/lib/components.cjs +1 -0
- package/dist/lib/components.d.ts +110 -0
- package/dist/lib/components.js +94 -0
- package/dist/lib/definitions-CmPIrLhr.js +282 -0
- package/dist/lib/definitions-CmPIrLhr.js.map +1 -0
- package/dist/lib/definitions-CrcjkKEd.cjs +2 -0
- package/dist/lib/definitions-CrcjkKEd.cjs.map +1 -0
- package/dist/lib/devtools.cjs +2 -0
- package/dist/lib/devtools.cjs.map +1 -0
- package/dist/lib/devtools.d.ts +54 -0
- package/dist/lib/devtools.js +46 -0
- package/dist/lib/devtools.js.map +1 -0
- package/dist/lib/elur-ionic.cjs +1 -0
- package/dist/lib/elur-ionic.cjs.map +1 -0
- package/dist/lib/elur-ionic.js +1 -0
- package/dist/lib/elur-ionic.js.map +1 -0
- package/dist/lib/index.d.ts +47 -0
- package/dist/lib/lifecycle.d.ts +62 -0
- package/dist/lib/navigation.cjs +2 -0
- package/dist/lib/navigation.cjs.map +1 -0
- package/dist/lib/navigation.d.ts +214 -0
- package/dist/lib/navigation.js +205 -0
- package/dist/lib/navigation.js.map +1 -0
- package/dist/lib/overlays.cjs +2 -0
- package/dist/lib/overlays.cjs.map +1 -0
- package/dist/lib/overlays.d.ts +400 -0
- package/dist/lib/overlays.js +161 -0
- package/dist/lib/overlays.js.map +1 -0
- package/dist/lib/page-state.cjs +2 -0
- package/dist/lib/page-state.cjs.map +1 -0
- package/dist/lib/page-state.d.ts +160 -0
- package/dist/lib/page-state.js +91 -0
- package/dist/lib/page-state.js.map +1 -0
- package/dist/lib/setup.d.ts +105 -0
- package/dist/lib/tabs-ByPLrzax.cjs +50 -0
- package/dist/lib/tabs-ByPLrzax.cjs.map +1 -0
- package/dist/lib/tabs-DjD1_PTM.js +178 -0
- package/dist/lib/tabs-DjD1_PTM.js.map +1 -0
- package/dist/lib/tabs.cjs +1 -0
- package/dist/lib/tabs.d.ts +83 -0
- package/dist/lib/tabs.js +2 -0
- package/dist/lib/vite-plugin.cjs +38 -0
- package/dist/lib/vite-plugin.cjs.map +1 -0
- package/dist/lib/vite-plugin.d.ts +61 -0
- package/dist/lib/vite-plugin.js +25411 -0
- package/dist/lib/vite-plugin.js.map +1 -0
- package/dist/lib/web-Bnz2Zs_W.cjs +2 -0
- package/dist/lib/web-Bnz2Zs_W.cjs.map +1 -0
- package/dist/lib/web-Ce5OM4dv.js +56 -0
- package/dist/lib/web-Ce5OM4dv.js.map +1 -0
- package/package.json +216 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin.cjs","names":["isLoop","bmpIdentifierStart","bmpIdentifier","supplementaryIdentifierStartCodes","supplementaryIdentifierCodes","isInSupplementarySet","isIdentifierStart","isIdentifierChar","reservedWords","keywords","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","isStrictReservedWord","isKeyword","Scope","_isDigit","forbiddenNumericSeparatorSiblings","isAllowedNumericSeparatorSibling","readStringContents","isStringEnd","readEscapedChar","readHexChar","readCodePoint","readInt","assert","parse","createDebug","enable$1","deprecationWarning","isArrayExpression","isAssignmentExpression","isBlockStatement","isCallExpression","isEmptyStatement","isExpressionStatement","isForStatement","isFunctionDeclaration","isIdentifier","isIfStatement","isStringLiteral","isNullLiteral","isRegExpLiteral","isMemberExpression","isNewExpression","isProgram","isObjectExpression","isObjectProperty","isRestElement","isSequenceExpression","isThisExpression","isUnaryExpression","isVariableDeclaration","isAssignmentPattern","isClassBody","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isForOfStatement","isImportDeclaration","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isMetaProperty","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isYieldExpression","isExportNamespaceSpecifier","isOptionalMemberExpression","isPrivateName","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isDeclareExportDeclaration","isGenericTypeAnnotation","isMixedTypeAnnotation","isEmptyTypeAnnotation","isNumberTypeAnnotation","isStringTypeAnnotation","isTupleTypeAnnotation","isTypeAnnotation","isUnionTypeAnnotation","isVoidTypeAnnotation","isJSXIdentifier","isJSXMemberExpression","isPlaceholder","isExportDefaultSpecifier","isTopicReference","isVoidPattern","isTSTypeReference","isTSArrayType","isTSInterfaceBody","isTSEnumMember","isTSTypeAnnotation","isExpression","isBinary","isStatement","isFor","isForXStatement","isFunction","isPureish","isLiteral","isMethod","isProperty","isPattern","isClass","isExportDeclaration","isModuleSpecifier","isFlow","isFlowType","isFlowBaseAnnotation","isTSType","isRestProperty","isSpreadProperty","matchesPattern","buildMatchMemberExpression","isCompatTag","isType","FLIPPED_ALIAS_KEYS","STATEMENT_OR_BLOCK_KEYS","LOGICAL_OPERATORS","BOOLEAN_NUMBER_BINARY_OPERATORS","BOOLEAN_BINARY_OPERATORS","NUMBER_BINARY_OPERATORS","BOOLEAN_UNARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","VISITOR_KEYS","DEPRECATED_KEYS","validate$2","DEPRECATED_ALIASES","TYPES","validate$1","validate","assignmentExpression","binaryExpression","blockStatement","callExpression","conditionalExpression","emptyStatement","expressionStatement","identifier","stringLiteral","numericLiteral","logicalExpression","memberExpression","program","objectExpression","restElement","returnStatement","sequenceExpression","thisExpression","unaryExpression","variableDeclaration","variableDeclarator","arrowFunctionExpression","exportNamedDeclaration","exportSpecifier","metaProperty","spreadElement","_super","yieldExpression","awaitExpression","anyTypeAnnotation","arrayTypeAnnotation","booleanTypeAnnotation","nullLiteralTypeAnnotation","genericTypeAnnotation","numberTypeAnnotation","stringTypeAnnotation","tupleTypeAnnotation","unionTypeAnnotation","voidTypeAnnotation","jsxIdentifier","ArrayExpression","AssignmentExpression","BinaryExpression","InterpreterDirective","Directive","DirectiveLiteral","BlockStatement","BreakStatement","CallExpression","CatchClause","ConditionalExpression","ContinueStatement","DebuggerStatement","DoWhileStatement","EmptyStatement","ExpressionStatement","File","ForInStatement","ForStatement","FunctionExpression","Identifier","IfStatement","LabeledStatement","StringLiteral","NumericLiteral","NullLiteral","BooleanLiteral","RegExpLiteral","LogicalExpression","MemberExpression","NewExpression","Program","ObjectExpression","ObjectMethod","ObjectProperty","RestElement","ReturnStatement","SequenceExpression","ParenthesizedExpression","SwitchCase","SwitchStatement","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","AssignmentPattern","ArrowFunctionExpression","ClassBody","ClassExpression","ClassDeclaration","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ForOfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","MetaProperty","ClassMethod","Super","TaggedTemplateExpression","TemplateElement","TemplateLiteral","YieldExpression","AwaitExpression","ImportExpression","Import","BigIntLiteral","ExportNamespaceSpecifier","OptionalMemberExpression","OptionalCallExpression","ClassProperty","ClassPrivateProperty","ClassPrivateMethod","PrivateName","StaticBlock","ImportAttribute","AnyTypeAnnotation","ArrayTypeAnnotation","BooleanTypeAnnotation","BooleanLiteralTypeAnnotation","NullLiteralTypeAnnotation","DeclareClass","DeclareFunction","DeclareInterface","DeclareModule","DeclareModuleExports","DeclareTypeAlias","DeclareOpaqueType","DeclareVariable","DeclareExportDeclaration","DeclareExportAllDeclaration","DeclaredPredicate","ExistsTypeAnnotation","FunctionTypeAnnotation","FunctionTypeParam","InferredPredicate","InterfaceExtends","InterfaceDeclaration","InterfaceTypeAnnotation","IntersectionTypeAnnotation","MixedTypeAnnotation","EmptyTypeAnnotation","NullableTypeAnnotation","NumberTypeAnnotation","ObjectTypeAnnotation","ObjectTypeInternalSlot","ObjectTypeCallProperty","ObjectTypeIndexer","ObjectTypeProperty","ObjectTypeSpreadProperty","OpaqueType","QualifiedTypeIdentifier","StringTypeAnnotation","SymbolTypeAnnotation","ThisTypeAnnotation","TupleTypeAnnotation","TypeofTypeAnnotation","TypeAlias","TypeAnnotation","TypeCastExpression","TypeParameter","TypeParameterInstantiation","UnionTypeAnnotation","Variance","VoidTypeAnnotation","EnumDeclaration","EnumBooleanBody","EnumNumberBody","EnumStringBody","EnumSymbolBody","EnumBooleanMember","EnumNumberMember","EnumStringMember","EnumDefaultedMember","IndexedAccessType","OptionalIndexedAccessType","JSXAttribute","JSXClosingElement","JSXElement","JSXEmptyExpression","JSXExpressionContainer","JSXSpreadChild","JSXIdentifier","JSXMemberExpression","JSXNamespacedName","JSXOpeningElement","JSXSpreadAttribute","JSXText","JSXFragment","JSXOpeningFragment","JSXClosingFragment","Placeholder","V8IntrinsicIdentifier","ArgumentPlaceholder","BindExpression","ClassAccessorProperty","Decorator","DoExpression","ExportDefaultSpecifier","ModuleExpression","TopicReference","VoidPattern","TSParameterProperty","TSDeclareFunction","TSDeclareMethod","TSQualifiedName","TSCallSignatureDeclaration","TSConstructSignatureDeclaration","TSPropertySignature","TSMethodSignature","TSIndexSignature","TSAnyKeyword","TSBooleanKeyword","TSBigIntKeyword","TSIntrinsicKeyword","TSNeverKeyword","TSNullKeyword","TSNumberKeyword","TSObjectKeyword","TSStringKeyword","TSSymbolKeyword","TSUndefinedKeyword","TSUnknownKeyword","TSVoidKeyword","TSThisType","TSFunctionType","TSConstructorType","TSTypeReference","TSTypePredicate","TSTypeQuery","TSTypeLiteral","TSArrayType","TSTupleType","TSOptionalType","TSRestType","TSNamedTupleMember","TSUnionType","TSIntersectionType","TSConditionalType","TSInferType","TSParenthesizedType","TSTypeOperator","TSIndexedAccessType","TSMappedType","TSTemplateLiteralType","TSLiteralType","TSClassImplements","TSInterfaceDeclaration","TSInterfaceBody","TSTypeAliasDeclaration","TSInstantiationExpression","TSAsExpression","TSSatisfiesExpression","TSTypeAssertion","TSEnumBody","TSEnumDeclaration","TSEnumMember","TSModuleDeclaration","TSModuleBlock","TSImportType","TSImportEqualsDeclaration","TSExternalModuleReference","TSNonNullExpression","TSExportAssignment","TSNamespaceExportDeclaration","TSTypeAnnotation","TSTypeParameterInstantiation","TSTypeParameter","inherits","assertExpressionStatement","assertExpression","createTypeAnnotationBasedOnTypeof","createFlowUnionType","createTSUnionType","buildUndefinedNode","cloneNode","addComments","addComment","inheritLeadingComments","inheritTrailingComments","inheritsComments","removeComments","FUNCTION_TYPES","ensureBlock","toIdentifier","toBindingIdentifierName","toComputedKey","toExpression","traverseFast","removeProperties","removePropertiesDeep","getAssignmentIdentifiers","getBindingIdentifiers","getOuterBindingIdentifiers","getFunctionName","traverse","isBinding","isBlockScoped","isReferenced","isScope","isVar","react","sortComparator","resolveUri","COLUMN","SOURCES_INDEX","SOURCE_LINE","SOURCE_COLUMN","NAMES_INDEX","cast","get","Buffer","isMemberExpression$1","_t","LogicalExpression","TaggedTemplateExpression","TemplateLiteral","UnaryExpression","ParenthesizedExpression","UpdateExpression","ConditionalExpression","NewExpression","isCallExpression","isMemberExpression","isNewExpression","SequenceExpression","isLiteral","CallExpression","AssignmentExpression","BinaryExpression","isIfStatement","VariableDeclarator","isIdentifier$1","TSAsExpression","TSNonNullExpression","isStatement$2","isClassDeclaration","RestElement","ObjectExpression","isAssignmentPattern","isIdentifier","ArrayExpression","RegExpLiteral","BooleanLiteral","NullLiteral","NumericLiteral","jsesc","StringLiteral","isStatement$1","TypeCastExpression","isExportDefaultDeclaration","isExportNamedDeclaration","index","VISITOR_KEYS$1","VISITOR_KEYS","isExpression","isStatement","isClassBody","isFunction","_t","merge","validate$1","isStatement$1","isIdentifier","isJSXIdentifier","isCallExpression","isFunction","isExpressionStatement","parse","cloneNode","stringLiteral","isStringLiteral","blockStatement","expressionStatement","identifier","isStatement","_t","_t.isDeclaration","_t.isMethod","_t.isObjectMethod","_t.isTSQualifiedName","globalsBuiltinLower","globalsBuiltinUpper","_t.isStringLiteral","traverse","_t.getBindingIdentifiers","parse","generator","_t.TYPES","_t.isPrivate"],"sources":["../../node_modules/@babel/parser/lib/index.js","../../node_modules/obug/dist/core.js","../../node_modules/obug/dist/browser.js","../../node_modules/@babel/code-frame/lib/common-shared.js","../../node_modules/@babel/code-frame/lib/browser.js","../../node_modules/@babel/helper-validator-identifier/lib/identifier-browser.js","../../node_modules/@babel/helper-validator-identifier/lib/index.js","../../node_modules/@babel/helper-string-parser/lib/index.js","../../node_modules/@babel/types/lib/index.js","../../node_modules/@babel/helper-globals/data/builtin-lower.json","../../node_modules/@babel/helper-globals/data/builtin-upper.json","../../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs","../../node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js","../../node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs","../../node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs","../../node_modules/jsesc/jsesc.js","../../node_modules/@babel/generator/lib/index.js","../../node_modules/@babel/template/lib/index.js","../../node_modules/@babel/traverse/lib/index.js","../../src/vite-plugin.ts"],"sourcesContent":["class Position {\n constructor(line, col, index) {\n this.line = undefined;\n this.column = undefined;\n if (index !== undefined) this.index = undefined;\n this.line = line;\n this.column = col;\n if (index !== undefined) this.index = index;\n }\n}\nclass SourceLocation {\n start;\n end;\n filename;\n identifierName;\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n}\nfunction createPositionWithColumnOffset(position, columnOffset) {\n const {\n line,\n column,\n index\n } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\nconst ModuleErrors = {\n ImportMetaOutsideModule: {\n message: `import.meta may appear only with 'sourceType: \"module\"'`,\n code\n },\n ImportOutsideModule: {\n message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n code\n }\n};\nconst NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n CatchClause: \"catch clause\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ImportSpecifier: \"import specifier\",\n ImportDefaultSpecifier: \"import default specifier\",\n ImportNamespaceSpecifier: \"import namespace specifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\"\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\"\n};\nconst toNodeDescription = node => node.type === \"UpdateExpression\" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type];\nconst StandardErrors = {\n AccessorIsGenerator: ({\n kind\n }) => `A ${kind}ter cannot be a generator.`,\n ArgumentsInClass: \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext: \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier: \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock: \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter: \"'await' is not allowed in async function parameters.\",\n AwaitUsingNotInAsyncContext: \"'await using' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncContext: \"'await' is only allowed within async functions and at the top levels of modules.\",\n BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n BadSetterRestParameter: \"A 'set' accessor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField: \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: ({\n kind\n }) => `Missing initializer in ${kind} declaration.`,\n DecoratorArgumentsOutsideParentheses: \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n DecoratorsBeforeAfterExport: \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n DecoratorConstructor: \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeferImportRequiresNamespace: 'Only `import defer * as x from \"./module\"` is valid.',\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport: \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: ({\n exportName\n }) => `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: ({\n localName,\n exportName\n }) => `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n ExportDefaultFromAsIdentifier: \"'from' is not allowed as an identifier after 'export default'.\",\n ForInOfLoopInitializer: ({\n type\n }) => `'${type === \"ForInStatement\" ? \"for-in\" : \"for-of\"}' loop variable declaration may not have an initializer.`,\n ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext: \"Generators can only be declared at the top level or inside a block.\",\n IllegalBreakContinue: ({\n type\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n IllegalLanguageModeDirective: \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportBindingIsString: ({\n importName\n }) => `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n ImportCallArity: ({\n phase\n }) => `\\`import${phase ? `.${phase}` : \"\"}()\\` requires exactly one or two arguments.`,\n ImportCallNotNewExpression: ({\n phase\n }) => `Cannot use new with import${phase ? `.${phase}` : \"\"}().`,\n ImportCallSpreadArgument: ({\n phase\n }) => `\\`...\\` is not allowed in \\`import${phase ? `.${phase}` : \"\"}()\\`.`,\n IncompatibleRegExpUVFlags: \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverDiscardElement: \"'void' must be followed by an expression when not used in a binding position.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDigit: ({\n radix\n }) => `Expected number in radix ${radix}.`,\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: ({\n reservedWord\n }) => `Escape sequence in keyword ${reservedWord}.`,\n InvalidIdentifier: ({\n identifierName\n }) => `Invalid identifier ${identifierName}.`,\n InvalidLhs: ({\n ancestor\n }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsBinding: ({\n ancestor\n }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsOptionalChaining: ({\n ancestor\n }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`,\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent: \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: ({\n unexpected\n }) => `Unexpected character '${unexpected}'.`,\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: ({\n identifierName\n }) => `Private name #${identifierName} is not defined.`,\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: ({\n labelName\n }) => `Label '${labelName}' is already declared.`,\n LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment: \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingPlugin: ({\n missingPlugin\n }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(\", \")}.`,\n MissingOneOfPlugins: ({\n missingPlugin\n }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(\", \")}.`,\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical: \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeInvalidValue: \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: ({\n key\n }) => `Duplicate key \"${key}\" is not allowed in module attributes.`,\n ModuleExportNameHasLoneSurrogate: ({\n surrogateCharCode\n }) => `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(16)}'.`,\n ModuleExportUndefined: ({\n localName\n }) => `Export '${localName}' is not defined.`,\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence: \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar: \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew: \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate: \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor: \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PrivateInExpectedIn: ({\n identifierName\n }) => `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n PrivateNameRedeclaration: ({\n identifierName\n }) => `Duplicate private name #${identifierName}.`,\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction: \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n SloppyFunctionAnnexB: \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n SourcePhaseImportRequiresDefault: 'Only `import source x from \"./module\"` is valid.',\n StaticPrototype: \"Classes may not have static property named prototype.\",\n SuperCallNotNewExpression: \"Cannot use new with super(...).\",\n SuperNotAllowed: \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport: \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: ({\n keyword\n }) => `Unexpected keyword '${keyword}'.`,\n UnexpectedLeadingDecorator: \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration: \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget: \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator: \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: ({\n reservedWord\n }) => `Unexpected reserved word '${reservedWord}'.`,\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: ({\n expected,\n unexpected\n }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${expected ? `, expected \"${expected}\"` : \"\"}`,\n UnexpectedTokenUnaryExponentiation: \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnexpectedUsingDeclaration: \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.\",\n UnexpectedVoidPattern: \"Unexpected void binding.\",\n UnsupportedDecoratorExport: \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport: \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport: \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: ({\n target,\n onlyValidPropertyName\n }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n UnsupportedParameterDecorator: \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator: \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper: \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n UsingDeclarationExport: \"Using declaration cannot be exported.\",\n UsingDeclarationHasBindingPattern: \"Using declaration cannot have destructuring patterns.\",\n VarRedeclaration: ({\n identifierName\n }) => `Identifier '${identifierName}' has already been declared.`,\n VoidPatternCatchClauseParam: \"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.\",\n VoidPatternInitializer: \"A void binding may not have an initializer.\",\n YieldBindingIdentifier: \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n YieldNotInGeneratorFunction: \"'yield' is only allowed within generator functions.\",\n ZeroDigitNumericSeparator: \"Numeric separator can not be used after leading 0.\"\n};\nconst StrictModeErrors = {\n StrictDelete: \"Deleting local variable in strict mode.\",\n StrictEvalArguments: ({\n referenceName\n }) => `Assigning to '${referenceName}' in strict mode.`,\n StrictEvalArgumentsBinding: ({\n bindingName\n }) => `Binding '${bindingName}' in strict mode.`,\n StrictFunction: \"In strict mode code, functions can only be declared at top level or inside a block.\",\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n StrictWith: \"'with' in strict mode.\"\n};\nconst ParseExpressionErrors = {\n ParseExpressionEmptyInput: \"Unexpected parseExpression() input: The input is empty or contains only comments.\",\n ParseExpressionExpectsEOF: ({\n unexpected\n }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \\`${String.fromCodePoint(unexpected)}\\`.`\n};\nconst UnparenthesizedPipeBodyDescriptions = new Set([\"ArrowFunctionExpression\", \"AssignmentExpression\", \"ConditionalExpression\", \"YieldExpression\"]);\nconst PipelineOperatorErrors = {\n PipeTopicRequiresHackPipes: 'Topic references are only supported when using the `\"proposal\": \"hack\"` version of the pipeline proposal.',\n PipeTopicUnbound: \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: ({\n token\n }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n PipeTopicUnused: \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: ({\n type\n }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type\n })}; please wrap it in parentheses.`,\n PipelineUnparenthesized: \"Cannot mix binary operator with solo-await F#-style pipeline. Please wrap the pipeline in parentheses.\"\n};\nconst FunctionBindErrors = {\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedBindRHS: \"The right-hand side of binding can not be super or import.\"\n};\nfunction defineHidden(obj, key, value) {\n Object.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n value\n });\n}\nfunction toParseErrorConstructor({\n toMessage,\n code,\n reasonCode,\n syntaxPlugin\n}) {\n const hasMissingPlugin = reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n return function constructor(loc, pos, details) {\n const error = new SyntaxError();\n error.code = code;\n error.reasonCode = reasonCode;\n error.loc = loc;\n error.pos = pos;\n error.syntaxPlugin = syntaxPlugin;\n if (hasMissingPlugin) {\n error.missingPlugin = details.missingPlugin;\n }\n defineHidden(error, \"clone\", function clone(overrides = {}) {\n const {\n line,\n column,\n index = pos\n } = overrides.loc ?? loc;\n return constructor(new Position(line, column), index, {\n ...details,\n ...overrides.details\n });\n });\n defineHidden(error, \"details\", details);\n Object.defineProperty(error, \"message\", {\n configurable: true,\n get() {\n const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n this.message = message;\n return message;\n },\n set(value) {\n Object.defineProperty(this, \"message\", {\n value,\n writable: true\n });\n }\n });\n return error;\n };\n}\nfunction ParseErrorEnum(argument, syntaxPlugin) {\n if (Array.isArray(argument)) {\n return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]);\n }\n const ParseErrorConstructors = {};\n for (const reasonCode of Object.keys(argument)) {\n const template = argument[reasonCode];\n const {\n message,\n ...rest\n } = typeof template === \"string\" ? {\n message: () => template\n } : typeof template === \"function\" ? {\n message: template\n } : template;\n const toMessage = typeof message === \"string\" ? () => message : message;\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n code: \"BABEL_PARSER_SYNTAX_ERROR\",\n reasonCode,\n toMessage,\n ...(syntaxPlugin ? {\n syntaxPlugin\n } : {}),\n ...rest\n });\n }\n return ParseErrorConstructors;\n}\nconst Errors = {\n ...ParseErrorEnum(ModuleErrors),\n ...ParseErrorEnum(StandardErrors),\n ...ParseErrorEnum(StrictModeErrors),\n ...ParseErrorEnum(ParseExpressionErrors),\n ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n ...ParseErrorEnum`functionBind`(FunctionBindErrors)\n};\nfunction createDefaultOptions() {\n return {\n sourceType: \"script\",\n sourceFilename: undefined,\n startIndex: 0,\n startColumn: 0,\n startLine: 1,\n allowAwaitOutsideFunction: false,\n allowReturnOutsideFunction: false,\n allowNewTargetOutsideFunction: false,\n allowImportExportEverywhere: false,\n allowSuperOutsideMethod: false,\n allowUndeclaredExports: false,\n allowYieldOutsideFunction: false,\n plugins: [],\n strictMode: undefined,\n ranges: false,\n locations: true,\n tokens: false,\n createImportExpressions: true,\n createParenthesizedExpressions: false,\n errorRecovery: false,\n attachComment: true,\n annexB: true\n };\n}\nfunction getOptions(opts) {\n const options = createDefaultOptions();\n if (opts == null) {\n return options;\n }\n if (opts.annexB != null && opts.annexB !== false) {\n throw new Error(\"The `annexB` option can only be set to `false`.\");\n }\n for (const key of Object.keys(options)) {\n if (opts[key] != null) options[key] = opts[key];\n }\n if (options.startLine === 1) {\n if (opts.startIndex == null && options.startColumn > 0) {\n options.startIndex = options.startColumn;\n } else if (opts.startColumn == null && options.startIndex > 0) {\n options.startColumn = options.startIndex;\n }\n } else if (opts.startColumn == null || opts.startIndex == null) {\n throw new Error(\"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\");\n }\n if (options.sourceType === \"commonjs\") {\n if (opts.allowAwaitOutsideFunction != null) {\n throw new Error(\"The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.\");\n }\n if (opts.allowReturnOutsideFunction != null) {\n throw new Error(\"`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.\");\n }\n if (opts.allowNewTargetOutsideFunction != null) {\n throw new Error(\"`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.\");\n }\n }\n return options;\n}\nfunction toESTreeLocation(node) {\n const {\n start,\n end\n } = node.loc;\n node.loc.start = new Position(start.line, start.column);\n node.loc.end = new Position(end.line, end.column);\n return node;\n}\nconst estree = superClass => class ESTreeParserMixin extends superClass {\n createPosition(loc) {\n return new Position(loc.line, loc.column);\n }\n parse() {\n const file = super.parse();\n if (this.optionFlags & 512) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n return toESTreeLocation(file);\n }\n parseRegExpLiteral({\n pattern,\n flags\n }) {\n let regex = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (_) {}\n const node = this.estreeParseLiteral(regex);\n node.regex = {\n pattern,\n flags\n };\n return node;\n }\n parseBigIntLiteral(value) {\n let bigInt;\n try {\n bigInt = BigInt(value);\n } catch {\n bigInt = null;\n }\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n return node;\n }\n estreeParseLiteral(value) {\n return this.parseLiteral(value, \"Literal\");\n }\n parseStringLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n parseNumericLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n parseNullLiteral() {\n return this.estreeParseLiteral(null);\n }\n parseBooleanLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n estreeParseChainExpression(node, endNode) {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNodeAtNode(chain, \"ChainExpression\", endNode);\n }\n directiveToStmt(directive) {\n const expression = directive.value;\n delete directive.value;\n this.castNodeTo(expression, \"Literal\");\n expression.raw = expression.extra.raw;\n expression.value = expression.extra.expressionValue;\n const stmt = this.castNodeTo(directive, \"ExpressionStatement\");\n stmt.expression = expression;\n stmt.directive = expression.extra.rawValue;\n delete expression.extra;\n return stmt;\n }\n fillOptionalPropertiesForTSESLint(node) {}\n cloneEstreeStringLiteral(node) {\n const {\n start,\n end,\n loc,\n range,\n raw,\n value\n } = node;\n const cloned = Object.create(node.constructor.prototype);\n cloned.type = \"Literal\";\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.raw = raw;\n cloned.value = value;\n return cloned;\n }\n initFunction(node, isAsync) {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n checkDeclaration(node) {\n if (node != null && this.isObjectProperty(node)) {\n this.checkDeclaration(node.value);\n } else {\n super.checkDeclaration(node);\n }\n }\n getObjectOrClassMethodParams(method) {\n return method.value.params;\n }\n isValidDirective(stmt) {\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && typeof stmt.expression.value === \"string\" && !stmt.expression.extra?.parenthesized;\n }\n parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse);\n const directiveStatements = node.directives.map(d => this.directiveToStmt(d));\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n parsePrivateName() {\n const node = super.parsePrivateName();\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n convertPrivateNameToPrivateIdentifier(node) {\n const name = super.getPrivateNameSV(node);\n delete node.id;\n node.name = name;\n return this.castNodeTo(node, \"PrivateIdentifier\");\n }\n isPrivateName(node) {\n return node.type === \"PrivateIdentifier\";\n }\n getPrivateNameSV(node) {\n return node.name;\n }\n parseLiteral(value, type) {\n const node = super.parseLiteral(value, type);\n node.raw = node.extra.raw;\n delete node.extra;\n return node;\n }\n parseFunctionBody(node, allowExpression, isMethod = false) {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n let funcNode = this.startNode();\n funcNode.kind = node.kind;\n funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n delete funcNode.kind;\n const {\n typeParameters\n } = node;\n if (typeParameters) {\n delete node.typeParameters;\n funcNode.typeParameters = typeParameters;\n this.resetStartLocationFromNode(funcNode, typeParameters);\n }\n const valueNode = this.castNodeTo(funcNode, this.hasPlugin(\"typescript\") && !funcNode.body ? \"TSEmptyBodyFunctionExpression\" : \"FunctionExpression\");\n node.value = valueNode;\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n if (this.hasPlugin(\"typescript\")) {\n if (node.abstract) {\n delete node.abstract;\n return this.finishNode(node, \"TSAbstractMethodDefinition\");\n }\n }\n if (type === \"ObjectMethod\") {\n if (node.kind === \"method\") {\n node.kind = \"init\";\n }\n node.shorthand = false;\n return this.finishNode(node, \"Property\");\n } else {\n return this.finishNode(node, \"MethodDefinition\");\n }\n }\n nameIsConstructor(key) {\n if (key.type === \"Literal\") return key.value === \"constructor\";\n return super.nameIsConstructor(key);\n }\n parseClassProperty(...args) {\n const propertyNode = super.parseClassProperty(...args);\n if (propertyNode.abstract && this.hasPlugin(\"typescript\")) {\n delete propertyNode.abstract;\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n return propertyNode;\n }\n parseClassPrivateProperty(...args) {\n const propertyNode = super.parseClassPrivateProperty(...args);\n if (propertyNode.abstract && this.hasPlugin(\"typescript\")) {\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n propertyNode.computed = false;\n return propertyNode;\n }\n parseClassAccessorProperty(node) {\n const accessorPropertyNode = super.parseClassAccessorProperty(node);\n if (accessorPropertyNode.abstract && this.hasPlugin(\"typescript\")) {\n delete accessorPropertyNode.abstract;\n this.castNodeTo(accessorPropertyNode, \"TSAbstractAccessorProperty\");\n } else {\n this.castNodeTo(accessorPropertyNode, \"AccessorProperty\");\n }\n return accessorPropertyNode;\n }\n parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {\n const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);\n if (node) {\n node.kind = \"init\";\n this.castNodeTo(node, \"Property\");\n }\n return node;\n }\n finishObjectProperty(node) {\n node.kind = \"init\";\n return this.finishNode(node, \"Property\");\n }\n isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {\n return type === \"Property\" ? \"value\" : super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);\n }\n isAssignable(node, isBinding) {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n return super.isAssignable(node, isBinding);\n }\n toAssignable(node, isLHS = false) {\n if (node != null && this.isObjectProperty(node)) {\n const {\n key,\n value\n } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.start);\n }\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n if (prop.type === \"Property\" && (prop.kind === \"get\" || prop.kind === \"set\")) {\n this.raise(Errors.PatternHasAccessor, prop.key);\n } else if (prop.type === \"Property\" && prop.method) {\n this.raise(Errors.PatternHasMethod, prop.key);\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n }\n }\n finishCallExpression(unfinished, optional) {\n const node = super.finishCallExpression(unfinished, optional);\n if (node.callee.type === \"Import\") {\n this.castNodeTo(node, \"ImportExpression\");\n node.source = node.arguments[0];\n node.options = node.arguments[1] ?? null;\n delete node.arguments;\n delete node.callee;\n } else if (node.type === \"OptionalCallExpression\") {\n this.castNodeTo(node, \"CallExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n parseExport(unfinished, decorators) {\n const exportStartLoc = this.state.lastTokStartLoc;\n const node = super.parseExport(unfinished, decorators);\n switch (node.type) {\n case \"ExportAllDeclaration\":\n node.exported = null;\n break;\n case \"ExportNamedDeclaration\":\n if (node.specifiers.length === 1 && node.specifiers[0].type === \"ExportNamespaceSpecifier\") {\n this.castNodeTo(node, \"ExportAllDeclaration\");\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n case \"ExportDefaultDeclaration\":\n {\n const {\n declaration\n } = node;\n if (declaration?.type === \"ClassDeclaration\" && declaration.decorators?.length > 0 && declaration.start === node.start) {\n this.resetStartLocation(node, exportStartLoc);\n }\n }\n break;\n }\n return node;\n }\n stopParseSubscript(base, state) {\n const node = super.stopParseSubscript(base, state);\n if (state.optionalChainMember) {\n return this.estreeParseChainExpression(node, base);\n }\n return node;\n }\n parseMember(base, startLoc, state, computed, optional) {\n const node = super.parseMember(base, startLoc, state, computed, optional);\n if (node.type === \"OptionalMemberExpression\") {\n this.castNodeTo(node, \"MemberExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n isOptionalMemberExpression(node) {\n if (node.type === \"ChainExpression\") {\n return node.expression.type === \"MemberExpression\";\n }\n return super.isOptionalMemberExpression(node);\n }\n hasPropertyAsPrivateName(node) {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n return super.hasPropertyAsPrivateName(node);\n }\n isObjectProperty(node) {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n isObjectMethod(node) {\n return node.type === \"Property\" && (node.method || node.kind === \"get\" || node.kind === \"set\");\n }\n castNodeTo(node, type) {\n const result = super.castNodeTo(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n cloneIdentifier(node) {\n const cloned = super.cloneIdentifier(node);\n this.fillOptionalPropertiesForTSESLint(cloned);\n return cloned;\n }\n cloneStringLiteral(node) {\n if (node.type === \"Literal\") {\n return this.cloneEstreeStringLiteral(node);\n }\n return super.cloneStringLiteral(node);\n }\n finishNodeAt(node, type, endLoc) {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n finishNodeAtNode(node, type, endNode) {\n return toESTreeLocation(super.finishNodeAtNode(node, type, endNode));\n }\n finishNode(node, type) {\n const result = super.finishNode(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n resetStartLocation(node, startLoc) {\n super.resetStartLocation(node, startLoc);\n toESTreeLocation(node);\n }\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n};\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\nclass ExportedTokenType {\n label;\n keyword;\n beforeExpr;\n startsExpr;\n rightAssociative;\n isLoop;\n isAssign;\n prefix;\n postfix;\n binop;\n constructor(label, conf = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n }\n}\nconst keywords$1 = new Map();\nfunction createKeyword(name, options = {}) {\n options.keyword = name;\n const token = createToken(name, options);\n keywords$1.set(name, token);\n return token;\n}\nfunction createBinop(name, binop) {\n return createToken(name, {\n beforeExpr,\n binop\n });\n}\nlet tokenTypeCounter = -1;\nconst tokenTypes = [];\nconst tokenLabels = [];\nconst tokenBinops = [];\nconst tokenBeforeExprs = [];\nconst tokenStartsExprs = [];\nconst tokenPrefixes = [];\nfunction createToken(name, options = {}) {\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n tokenTypes.push(new ExportedTokenType(name, options));\n return tokenTypeCounter;\n}\nfunction createKeywordLike(name, options = {}) {\n ++tokenTypeCounter;\n keywords$1.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n return tokenTypeCounter;\n}\nconst tt = {\n bracketL: createToken(\"[\", {\n beforeExpr,\n startsExpr\n }),\n bracketR: createToken(\"]\"),\n braceL: createToken(\"{\", {\n beforeExpr,\n startsExpr\n }),\n braceBarL: createToken(\"{|\", {\n beforeExpr,\n startsExpr\n }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", {\n beforeExpr,\n startsExpr\n }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", {\n beforeExpr\n }),\n semi: createToken(\";\", {\n beforeExpr\n }),\n colon: createToken(\":\", {\n beforeExpr\n }),\n doubleColon: createToken(\"::\", {\n beforeExpr\n }),\n dot: createToken(\".\"),\n question: createToken(\"?\", {\n beforeExpr\n }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", {\n beforeExpr\n }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", {\n beforeExpr\n }),\n backQuote: createToken(\"`\", {\n startsExpr\n }),\n dollarBraceL: createToken(\"${\", {\n beforeExpr,\n startsExpr\n }),\n templateTail: createToken(\"...`\", {\n startsExpr\n }),\n templateNonTail: createToken(\"...${\", {\n beforeExpr,\n startsExpr\n }),\n at: createToken(\"@\"),\n hash: createToken(\"#\", {\n startsExpr\n }),\n interpreterDirective: createToken(\"#!...\"),\n eq: createToken(\"=\", {\n beforeExpr,\n isAssign\n }),\n assign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n slashAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n xorAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n moduloAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n incDec: createToken(\"++/--\", {\n prefix,\n postfix,\n startsExpr\n }),\n bang: createToken(\"!\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n tilde: createToken(\"~\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n doubleCaret: createToken(\"^^\", {\n startsExpr\n }),\n doubleAt: createToken(\"@@\", {\n startsExpr\n }),\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"</>/<=/>=\", 7),\n gt: createBinop(\"</>/<=/>=\", 7),\n relational: createBinop(\"</>/<=/>=\", 7),\n bitShift: createBinop(\"<</>>/>>>\", 8),\n bitShiftL: createBinop(\"<</>>/>>>\", 8),\n bitShiftR: createBinop(\"<</>>/>>>\", 8),\n plusMin: createToken(\"+/-\", {\n beforeExpr,\n binop: 9,\n prefix,\n startsExpr\n }),\n modulo: createToken(\"%\", {\n binop: 10,\n startsExpr\n }),\n star: createToken(\"*\", {\n binop: 10\n }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true\n }),\n _in: createKeyword(\"in\", {\n beforeExpr,\n binop: 7\n }),\n _instanceof: createKeyword(\"instanceof\", {\n beforeExpr,\n binop: 7\n }),\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", {\n beforeExpr\n }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", {\n beforeExpr\n }),\n _else: createKeyword(\"else\", {\n beforeExpr\n }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", {\n startsExpr\n }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", {\n beforeExpr\n }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", {\n beforeExpr,\n startsExpr\n }),\n _this: createKeyword(\"this\", {\n startsExpr\n }),\n _super: createKeyword(\"super\", {\n startsExpr\n }),\n _class: createKeyword(\"class\", {\n startsExpr\n }),\n _extends: createKeyword(\"extends\", {\n beforeExpr\n }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", {\n startsExpr\n }),\n _null: createKeyword(\"null\", {\n startsExpr\n }),\n _true: createKeyword(\"true\", {\n startsExpr\n }),\n _false: createKeyword(\"false\", {\n startsExpr\n }),\n _typeof: createKeyword(\"typeof\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _void: createKeyword(\"void\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _delete: createKeyword(\"delete\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _do: createKeyword(\"do\", {\n isLoop,\n beforeExpr\n }),\n _for: createKeyword(\"for\", {\n isLoop\n }),\n _while: createKeyword(\"while\", {\n isLoop\n }),\n _as: createKeywordLike(\"as\", {\n startsExpr\n }),\n _assert: createKeywordLike(\"assert\", {\n startsExpr\n }),\n _async: createKeywordLike(\"async\", {\n startsExpr\n }),\n _await: createKeywordLike(\"await\", {\n startsExpr\n }),\n _defer: createKeywordLike(\"defer\", {\n startsExpr\n }),\n _from: createKeywordLike(\"from\", {\n startsExpr\n }),\n _get: createKeywordLike(\"get\", {\n startsExpr\n }),\n _let: createKeywordLike(\"let\", {\n startsExpr\n }),\n _meta: createKeywordLike(\"meta\", {\n startsExpr\n }),\n _of: createKeywordLike(\"of\", {\n startsExpr\n }),\n _sent: createKeywordLike(\"sent\", {\n startsExpr\n }),\n _set: createKeywordLike(\"set\", {\n startsExpr\n }),\n _source: createKeywordLike(\"source\", {\n startsExpr\n }),\n _static: createKeywordLike(\"static\", {\n startsExpr\n }),\n _using: createKeywordLike(\"using\", {\n startsExpr\n }),\n _yield: createKeywordLike(\"yield\", {\n startsExpr\n }),\n _asserts: createKeywordLike(\"asserts\", {\n startsExpr\n }),\n _checks: createKeywordLike(\"checks\", {\n startsExpr\n }),\n _exports: createKeywordLike(\"exports\", {\n startsExpr\n }),\n _global: createKeywordLike(\"global\", {\n startsExpr\n }),\n _implements: createKeywordLike(\"implements\", {\n startsExpr\n }),\n _intrinsic: createKeywordLike(\"intrinsic\", {\n startsExpr\n }),\n _infer: createKeywordLike(\"infer\", {\n startsExpr\n }),\n _is: createKeywordLike(\"is\", {\n startsExpr\n }),\n _mixins: createKeywordLike(\"mixins\", {\n startsExpr\n }),\n _proto: createKeywordLike(\"proto\", {\n startsExpr\n }),\n _require: createKeywordLike(\"require\", {\n startsExpr\n }),\n _satisfies: createKeywordLike(\"satisfies\", {\n startsExpr\n }),\n _keyof: createKeywordLike(\"keyof\", {\n startsExpr\n }),\n _readonly: createKeywordLike(\"readonly\", {\n startsExpr\n }),\n _unique: createKeywordLike(\"unique\", {\n startsExpr\n }),\n _abstract: createKeywordLike(\"abstract\", {\n startsExpr\n }),\n _declare: createKeywordLike(\"declare\", {\n startsExpr\n }),\n _enum: createKeywordLike(\"enum\", {\n startsExpr\n }),\n _module: createKeywordLike(\"module\", {\n startsExpr\n }),\n _namespace: createKeywordLike(\"namespace\", {\n startsExpr\n }),\n _interface: createKeywordLike(\"interface\", {\n startsExpr\n }),\n _type: createKeywordLike(\"type\", {\n startsExpr\n }),\n _opaque: createKeywordLike(\"opaque\", {\n startsExpr\n }),\n name: createToken(\"name\", {\n startsExpr\n }),\n placeholder: createToken(\"%%\", {\n startsExpr\n }),\n string: createToken(\"string\", {\n startsExpr\n }),\n num: createToken(\"num\", {\n startsExpr\n }),\n bigint: createToken(\"bigint\", {\n startsExpr\n }),\n regexp: createToken(\"regexp\", {\n startsExpr\n }),\n privateName: createToken(\"#name\", {\n startsExpr\n }),\n eof: createToken(\"eof\"),\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", {\n beforeExpr\n }),\n jsxTagStart: createToken(\"jsxTagStart\", {\n startsExpr\n }),\n jsxTagEnd: createToken(\"jsxTagEnd\")\n};\nfunction tokenIsIdentifier(token) {\n return token >= 89 && token <= 129;\n}\nfunction tokenKeywordOrIdentifierIsKeyword(token) {\n return token <= 88;\n}\nfunction tokenIsKeywordOrIdentifier(token) {\n return token >= 54 && token <= 129;\n}\nfunction tokenIsLiteralPropertyName(token) {\n return token >= 54 && token <= 132;\n}\nfunction tokenComesBeforeExpression(token) {\n return tokenBeforeExprs[token];\n}\nfunction tokenCanStartExpression(token) {\n return tokenStartsExprs[token];\n}\nfunction tokenIsAssignment(token) {\n return token >= 25 && token <= 29;\n}\nfunction tokenIsFlowInterfaceOrTypeOrOpaque(token) {\n return token >= 125 && token <= 127;\n}\nfunction tokenIsLoop(token) {\n return token >= 86 && token <= 88;\n}\nfunction tokenIsKeyword(token) {\n return token >= 54 && token <= 88;\n}\nfunction tokenIsOperator(token) {\n return token >= 35 && token <= 55;\n}\nfunction tokenIsPostfix(token) {\n return token === 30;\n}\nfunction tokenIsPrefix(token) {\n return tokenPrefixes[token];\n}\nfunction tokenIsTSTypeOperator(token) {\n return token >= 117 && token <= 119;\n}\nfunction tokenIsTSDeclarationStart(token) {\n return token >= 120 && token <= 126;\n}\nfunction tokenLabelName(token) {\n return tokenLabels[token];\n}\nfunction tokenOperatorPrecedence(token) {\n return tokenBinops[token];\n}\nfunction tokenIsRightAssociative(token) {\n return token === 53;\n}\nfunction tokenIsTemplate(token) {\n return token >= 20 && token <= 21;\n}\nfunction getExportedToken(token) {\n return tokenTypes[token];\n}\nclass TokContext {\n constructor(token, preserveSpace) {\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n token;\n preserveSpace;\n}\nconst types = {\n brace: new TokContext(\"{\"),\n j_oTag: new TokContext(\"<tag\"),\n j_cTag: new TokContext(\"</tag\"),\n j_expr: new TokContext(\"<tag>...</tag>\", true)\n};\nconst bmpIdentifierStart = /[\\p{ID_Start}\\u088f\\u0c5c\\u0cdc\\ua7ce\\ua7cf\\ua7d2\\ua7d4\\ua7f1]/u;\nconst bmpIdentifier = /[\\p{ID_Continue}\\u088f\\u0c5c\\u0cdc\\ua7ce\\ua7cf\\ua7d2\\ua7d4\\ua7f1\\u1acf-\\u1add\\u1ae0-\\u1aeb]/u;\nconst supplementaryIdentifierStartCodes = [2368, 25, 1388, 2, 3817, 43, 20677, 24, 3, 24, 287, 4, 6146, 7, 1290, 21, 98, 114, 22734, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 53307, 5, 5987, 11, 21763, 4297];\nconst supplementaryIdentifierCodes = [3834, 1, 3173, 7, 633, 9, 51450, 0, 3, 0, 8, 1, 6, 0];\nfunction isInSupplementarySet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && bmpIdentifierStart.test(String.fromCharCode(code));\n }\n return !isNaN(code) && code <= 0x10ffff && (bmpIdentifierStart.test(String.fromCodePoint(code)) || isInSupplementarySet(code, supplementaryIdentifierStartCodes));\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && bmpIdentifier.test(String.fromCharCode(code));\n }\n return !isNaN(code) && code <= 0x10ffff && (bmpIdentifier.test(String.fromCodePoint(code)) || isInSupplementarySet(code, supplementaryIdentifierStartCodes) || isInSupplementarySet(code, supplementaryIdentifierCodes));\n}\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\nfunction isIteratorStart(current, next, next2) {\n return current === 64 && next === 64 && isIdentifierStart(next2);\n}\nconst reservedWordLikeSet = new Set([\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\", \"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\", \"eval\", \"arguments\", \"enum\", \"await\"]);\nfunction canBeReservedWord(word) {\n return reservedWordLikeSet.has(word);\n}\nclass Scope {\n flags = 0;\n names = new Map();\n firstLexicalName = \"\";\n constructor(flags) {\n this.flags = flags;\n }\n}\nclass ScopeHandler {\n parser;\n scopeStack = [];\n inModule;\n undefinedExports = new Map();\n constructor(parser, inModule) {\n this.parser = parser;\n this.inModule = inModule;\n }\n get inTopLevel() {\n return (this.currentScope().flags & 1) > 0;\n }\n get inFunction() {\n return (this.currentVarScopeFlags() & 2) > 0;\n }\n get allowSuper() {\n return (this.currentThisScopeFlags() & 16) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & 32) > 0;\n }\n get allowNewTarget() {\n return (this.currentThisScopeFlags() & 512) > 0;\n }\n get inClass() {\n return (this.currentThisScopeFlags() & 64) > 0;\n }\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (flags & 64) > 0 && (flags & 2) === 0;\n }\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n if (flags & 128) {\n return true;\n }\n if (flags & (3715 | 64)) {\n return false;\n }\n }\n }\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & 2) > 0;\n }\n get inBareCaseStatement() {\n return (this.currentScope().flags & 256) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n createScope(flags) {\n return new Scope(flags);\n }\n enter(flags) {\n this.scopeStack.push(this.createScope(flags));\n }\n exit() {\n const scope = this.scopeStack.pop();\n return scope.flags;\n }\n treatFunctionsAsVarInScope(scope) {\n return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1);\n }\n declareName(name, bindingType, loc) {\n let scope = this.currentScope();\n if (bindingType & 8 || bindingType & 16) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n let type = scope.names.get(name) || 0;\n if (bindingType & 16) {\n type = type | 4;\n } else {\n if (!scope.firstLexicalName) {\n scope.firstLexicalName = name;\n }\n type = type | 2;\n }\n scope.names.set(name, type);\n if (bindingType & 8) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & 4) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.names.set(name, (scope.names.get(name) || 0) | 1);\n this.maybeExportDefined(scope, name);\n if (scope.flags & 3715) break;\n }\n }\n if (this.parser.inModule && scope.flags & 1) {\n this.undefinedExports.delete(name);\n }\n }\n maybeExportDefined(scope, name) {\n if (this.parser.inModule && scope.flags & 1) {\n this.undefinedExports.delete(name);\n }\n }\n checkRedeclarationInScope(scope, name, bindingType, loc) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name\n });\n }\n }\n isRedeclaredInScope(scope, name, bindingType) {\n if (!(bindingType & 1)) return false;\n if (bindingType & 8) {\n return scope.names.has(name);\n }\n const type = scope.names.get(name) || 0;\n if (bindingType & 16) {\n return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0;\n }\n return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0;\n }\n checkLocalExport(id) {\n const {\n name\n } = id;\n const topLevelScope = this.scopeStack[0];\n if (!topLevelScope.names.has(name)) {\n this.undefinedExports.set(name, id.start);\n }\n }\n currentScope() {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n currentVarScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n if (flags & 3715) {\n return flags;\n }\n }\n }\n currentThisScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n if (flags & (3715 | 64) && !(flags & 4)) {\n return flags;\n }\n }\n }\n}\nclass FlowScope extends Scope {\n declareFunctions = new Set();\n}\nclass FlowScopeHandler extends ScopeHandler {\n createScope(flags) {\n return new FlowScope(flags);\n }\n declareName(name, bindingType, loc) {\n const scope = this.currentScope();\n if (bindingType & 2048) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n super.declareName(name, bindingType, loc);\n }\n isRedeclaredInScope(scope, name, bindingType) {\n if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n if (bindingType & 2048 && !scope.declareFunctions.has(name)) {\n const type = scope.names.get(name);\n return (type & 4) > 0 || (type & 2) > 0;\n }\n return false;\n }\n checkLocalExport(id) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n}\nconst reservedTypes = new Set([\"_\", \"any\", \"bool\", \"boolean\", \"empty\", \"extends\", \"false\", \"interface\", \"mixed\", \"null\", \"number\", \"static\", \"string\", \"true\", \"typeof\", \"void\"]);\nconst FlowErrorTemplates = {\n AmbiguousConditionalArrow: \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n AmbiguousDeclareModuleKind: \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n AssignReservedType: ({\n reservedType\n }) => `Cannot overwrite reserved type ${reservedType}.`,\n DeclareClassElement: \"The `declare` modifier can only appear on class fields.\",\n DeclareClassFieldInitializer: \"Initializers are not allowed in fields with the `declare` modifier.\",\n DuplicateDeclareModuleExports: \"Duplicate `declare module.exports` statement.\",\n EnumBooleanMemberNotInitialized: ({\n memberName,\n enumName\n }) => `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n EnumDuplicateMemberName: ({\n memberName,\n enumName\n }) => `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n EnumInconsistentMemberValues: ({\n enumName\n }) => `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n EnumInvalidExplicitType: ({\n invalidEnumType,\n enumName\n }) => `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidExplicitTypeUnknownSupplied: ({\n enumName\n }) => `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerPrimaryType: ({\n enumName,\n memberName,\n explicitType\n }) => `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n EnumInvalidMemberInitializerSymbolType: ({\n enumName,\n memberName\n }) => `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerUnknownType: ({\n enumName,\n memberName\n }) => `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n EnumInvalidMemberName: ({\n enumName,\n memberName,\n suggestion\n }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n EnumNumberMemberNotInitialized: ({\n enumName,\n memberName\n }) => `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n EnumStringMemberInconsistentlyInitialized: ({\n enumName\n }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n ImportTypeShorthandOnlyInPureImport: \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n InexactInsideExact: \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n InexactInsideNonObject: \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n InvalidNonTypeImportInDeclareModule: \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n MissingTypeParamDefault: \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n NestedDeclareModule: \"`declare module` cannot be used inside another `declare module`.\",\n NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n PatternIsOptional: {\n message: \"A binding pattern parameter cannot be optional in an implementation signature.\"\n },\n SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n SpreadVariance: \"Spread properties cannot have variance.\",\n ThisParamAnnotationRequired: \"A type annotation is required for the `this` parameter.\",\n ThisParamBannedInConstructor: \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n ThisParamMustBeFirst: \"The `this` parameter must be the first function parameter.\",\n ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n TypeBeforeInitializer: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeCastInPattern: \"The type cast expression is expected to be wrapped with parenthesis.\",\n UnexpectedExplicitInexactInObject: \"Explicit inexact syntax must appear at the end of an inexact object.\",\n UnexpectedReservedType: ({\n reservedType\n }) => `Unexpected reserved type ${reservedType}.`,\n UnexpectedReservedUnderscore: \"`_` is only allowed as a type argument to call or new.\",\n UnexpectedSpaceBetweenModuloChecks: \"Spaces between `%` and `checks` are not allowed here.\",\n UnexpectedSpreadType: \"Spread operator cannot appear in class or interface definitions.\",\n UnexpectedSubtractionOperand: 'Unexpected token, expected \"number\" or \"bigint\".',\n UnexpectedTokenAfterTypeParameter: \"Expected an arrow function after this type parameter declaration.\",\n UnexpectedTypeParameterBeforeAsyncArrowFunction: \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n UnsupportedDeclareExportKind: ({\n unsupportedExportKind,\n suggestion\n }) => `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n UnsupportedStatementInDeclareModule: \"Only declares and type imports are allowed inside declare module.\",\n UnterminatedFlowComment: \"Unterminated flow-comment.\"\n};\nconst FlowErrors = ParseErrorEnum`flow`(FlowErrorTemplates);\nfunction isEsModuleType(bodyElement) {\n return bodyElement.type === \"DeclareExportAllDeclaration\" || bodyElement.type === \"DeclareExportDeclaration\" && (!bodyElement.declaration || bodyElement.declaration.type !== \"TypeAlias\" && bodyElement.declaration.type !== \"InterfaceDeclaration\");\n}\nfunction hasTypeImportKind(node) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\"\n};\nfunction partition(list, test) {\n const list1 = [];\n const list2 = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\nconst flow = superClass => class FlowParserMixin extends superClass {\n flowPragma = undefined;\n getScopeHandler() {\n return FlowScopeHandler;\n }\n shouldParseTypes() {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n finishToken(type, val) {\n if (type !== 130 && type !== 9 && type !== 24) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n super.finishToken(type, val);\n }\n addComment(comment) {\n if (this.flowPragma === undefined) {\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) ;else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n super.addComment(comment);\n }\n flowParseTypeInitialiser(tok) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || 10);\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n flowParsePredicate() {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n this.next();\n this.expectContextual(106);\n if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n }\n if (this.eat(6)) {\n node.value = super.parseExpression();\n this.expect(7);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n flowParseTypeAndPredicateInitialiser(allowLonePredicate) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(10);\n let type = null;\n let predicate = null;\n if (allowLonePredicate && this.match(50)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(50)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n flowParseDeclareClass(node) {\n this.next();\n this.flowParseInterfaceish(node, true);\n return this.finishNode(node, \"DeclareClass\");\n }\n flowParseDeclareFunction(node) {\n this.next();\n const id = node.id = this.parseIdentifier();\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n if (this.match(43)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n this.expect(6);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(7);\n [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(false);\n typeContainer.typeAnnotation = this.finishNode(typeNode, \"FunctionTypeAnnotation\");\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n this.resetEndLocation(id);\n this.semicolon();\n this.scope.declareName(node.id.name, 2048, node.id.start);\n return this.finishNode(node, \"DeclareFunction\");\n }\n flowParseDeclare(node, insideModule) {\n if (this.match(76)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(64)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(70)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(123)) {\n if (this.match(12)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc);\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(126)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(127)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(125)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(78)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n }\n throw this.unexpected();\n }\n flowParseDeclareVariable(node) {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier();\n this.scope.declareName(node.id.name, 5, node.id.start);\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n flowParseDeclareModule(node) {\n this.scope.enter(0);\n if (this.match(130)) {\n node.id = super.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n const bodyNode = this.startNode();\n const body = bodyNode.body = [];\n this.expect(2);\n while (!this.match(4)) {\n const bodyNode = this.startNode();\n if (this.match(79)) {\n this.next();\n if (!this.isContextual(126) && !this.match(83)) {\n this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc);\n }\n body.push(super.parseImport(bodyNode));\n } else {\n this.expectContextual(121, FlowErrors.UnsupportedStatementInDeclareModule);\n body.push(this.flowParseDeclare(bodyNode, true));\n }\n }\n this.scope.exit();\n this.expect(4);\n node.body = this.finishNode(bodyNode, \"BlockStatement\");\n let kind = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n }\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n flowParseDeclareExportDeclaration(node, insideModule) {\n this.expect(78);\n if (this.eat(61)) {\n if (this.match(64) || this.match(76)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (this.match(71) || this.isLet() || (this.isContextual(126) || this.isContextual(125)) && !insideModule) {\n const label = this.state.value;\n throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, {\n unsupportedExportKind: label,\n suggestion: exportSuggestions[label]\n });\n }\n if (this.match(70) || this.match(64) || this.match(76) || this.isContextual(127)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (this.match(51) || this.match(2) || this.isContextual(125) || this.isContextual(126) || this.isContextual(127)) {\n const result = this.parseExport(node, null);\n if (result.type === \"ExportNamedDeclaration\") {\n result.default = false;\n delete result.exportKind;\n return this.castNodeTo(result, \"DeclareExportDeclaration\");\n } else {\n return this.castNodeTo(result, \"DeclareExportAllDeclaration\");\n }\n }\n }\n throw this.unexpected();\n }\n flowParseDeclareModuleExports(node) {\n this.next();\n this.expectContextual(107);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n flowParseDeclareTypeAlias(node) {\n this.next();\n const finished = this.flowParseTypeAlias(node);\n this.castNodeTo(finished, \"DeclareTypeAlias\");\n return finished;\n }\n flowParseDeclareOpaqueType(node) {\n this.next();\n return this.flowParseOpaqueType(node, true);\n }\n flowParseDeclareInterface(node) {\n this.next();\n this.flowParseInterfaceish(node, false);\n return this.finishNode(node, \"DeclareInterface\");\n }\n flowParseInterfaceish(node, isClass) {\n node.id = this.flowParseRestrictedIdentifier(!isClass, true);\n this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.start);\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n node.extends = [];\n if (this.eat(77)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(8));\n }\n if (isClass) {\n const implemented = [];\n const mixins = [];\n if (this.eatContextual(113)) {\n do {\n mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(8));\n }\n if (this.eatContextual(109)) {\n do {\n implemented.push(this.flowParseClassImplements());\n } while (this.eat(8));\n }\n node.implements = implemented;\n node.mixins = mixins;\n }\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false\n });\n }\n flowParseInterfaceExtends() {\n const node = this.startNode();\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n return this.finishNode(node, \"InterfaceExtends\");\n }\n flowParseInterface(node) {\n this.flowParseInterfaceish(node, false);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n checkNotUnderscore(word) {\n if (word === \"_\") {\n this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc);\n }\n }\n checkReservedType(word, startLoc, declaration) {\n if (!reservedTypes.has(word)) return;\n this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, {\n reservedType: word\n });\n }\n flowParseRestrictedIdentifierName(liberal, declaration) {\n this.checkReservedType(this.state.value, this.state.startLoc, declaration);\n return this.parseIdentifierName(liberal);\n }\n flowParseRestrictedIdentifier(liberal, declaration) {\n const node = this.startNode();\n const name = this.flowParseRestrictedIdentifierName(liberal, declaration);\n return this.createIdentifier(node, name);\n }\n flowParseTypeAlias(node) {\n node.id = this.flowParseRestrictedIdentifier(false, true);\n this.scope.declareName(node.id.name, 8201, node.id.start);\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n node.right = this.flowParseTypeInitialiser(25);\n this.semicolon();\n return this.finishNode(node, \"TypeAlias\");\n }\n flowParseOpaqueType(node, declare) {\n this.expectContextual(126);\n node.id = this.flowParseRestrictedIdentifier(true, true);\n this.scope.declareName(node.id.name, 8201, node.id.start);\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n node.supertype = null;\n if (this.match(10)) {\n node.supertype = this.flowParseTypeInitialiser(10);\n }\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(25);\n }\n this.semicolon();\n return this.finishNode(node, declare ? \"DeclareOpaqueType\" : \"OpaqueType\");\n }\n flowParseTypeParameterBound() {\n if (this.match(10) || this.isContextual(77)) {\n const node = this.startNode();\n this.next();\n node.typeAnnotation = this.flowParseType();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n }\n flowParseTypeParameter(requireDefault = false) {\n const nodeStartLoc = this.state.startLoc;\n const node = this.startNode();\n const variance = this.flowParseVariance();\n node.name = this.flowParseRestrictedIdentifierName();\n node.variance = variance;\n node.bound = this.flowParseTypeParameterBound();\n if (this.match(25)) {\n this.eat(25);\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n }\n }\n return this.finishNode(node, \"TypeParameter\");\n }\n flowParseTypeParameterDeclaration() {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n this.state.inType = true;\n if (this.match(43) || this.match(138)) {\n this.next();\n } else {\n this.unexpected();\n }\n let defaultRequired = false;\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n node.params.push(typeParameter);\n if (typeParameter.default) {\n defaultRequired = true;\n }\n if (!this.match(44)) {\n this.expect(8);\n }\n } while (!this.match(44));\n this.expect(44);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n flowInTopLevelContext(cb) {\n if (this.curContext() !== types.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n flowParseTypeParameterInstantiationInExpression() {\n if (this.reScan_lt() !== 43) return;\n return this.flowParseTypeParameterInstantiation();\n }\n flowParseTypeParameterInstantiation() {\n const node = this.startNode();\n const oldInType = this.state.inType;\n this.state.inType = true;\n node.params = [];\n this.flowInTopLevelContext(() => {\n this.expect(43);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.match(44)) {\n node.params.push(this.flowParseType());\n if (!this.match(44)) {\n this.expect(8);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n });\n this.state.inType = oldInType;\n if (!this.state.inType && this.curContext() === types.brace) {\n this.reScan_lt_gt();\n }\n this.expect(44);\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n flowParseTypeParameterInstantiationCallOrNew() {\n if (this.reScan_lt() !== 43) return null;\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n this.state.inType = true;\n this.expect(43);\n while (!this.match(44)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.match(44)) {\n this.expect(8);\n }\n }\n this.expect(44);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n flowParseInterfaceType() {\n const node = this.startNode();\n this.expectContextual(125);\n node.extends = [];\n if (this.eat(77)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(8));\n }\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false\n });\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n flowParseObjectPropertyKey() {\n return this.match(131) || this.match(130) ? super.parseExprAtom() : this.parseIdentifier(true);\n }\n flowParseObjectTypeIndexer(node, isStatic, variance) {\n node.static = isStatic;\n if (this.lookahead().type === 10) {\n node.id = this.parseIdentifier(true);\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(1);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n flowParseObjectTypeInternalSlot(node, isStatic) {\n node.static = isStatic;\n node.id = this.parseIdentifier(true);\n this.expect(1);\n this.expect(1);\n if (this.match(43) || this.match(6)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAtNode(node));\n } else {\n node.method = false;\n if (this.eat(13)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n flowParseObjectTypeMethodish(node) {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n this.expect(6);\n if (this.match(74)) {\n node.this = this.flowParseFunctionTypeParam(true);\n node.this.name = null;\n if (!this.match(7)) {\n this.expect(8);\n }\n }\n while (!this.match(7) && !this.match(17)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(7)) {\n this.expect(8);\n }\n }\n if (this.eat(17)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n this.expect(7);\n node.returnType = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n flowParseObjectTypeCallProperty(node, isStatic) {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact\n }) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const nodeStart = this.startNode();\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(3)) {\n this.expect(3);\n endDelim = 5;\n exact = true;\n } else {\n this.expect(2);\n endDelim = 4;\n exact = false;\n }\n nodeStart.exact = exact;\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc = null;\n let inexactStartLoc = null;\n const node = this.startNode();\n if (allowProto && this.isContextual(114)) {\n const lookahead = this.lookahead();\n if (lookahead.type !== 10 && lookahead.type !== 13) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n if (allowStatic && this.isContextual(102)) {\n const lookahead = this.lookahead();\n if (lookahead.type !== 10 && lookahead.type !== 13) {\n this.next();\n isStatic = true;\n }\n }\n const variance = this.flowParseVariance();\n if (this.eat(0)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (this.eat(0)) {\n if (variance) {\n this.unexpected(variance.start);\n }\n nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));\n } else {\n nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));\n }\n } else if (this.match(6) || this.match(43)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.start);\n }\n nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));\n } else {\n let kind = \"init\";\n if (this.isContextual(95) || this.isContextual(100)) {\n const lookahead = this.lookahead();\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact ?? !exact);\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n this.flowObjectTypeSemicolon();\n if (inexactStartLoc && !this.match(4) && !this.match(5)) {\n this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc);\n }\n }\n this.expect(endDelim);\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n this.state.inType = oldInType;\n return out;\n }\n flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {\n if (this.eat(17)) {\n const isInexactToken = this.match(8) || this.match(9) || this.match(4) || this.match(5);\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc);\n } else if (!allowInexact) {\n this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.InexactVariance, variance);\n }\n return null;\n }\n if (!allowSpread) {\n this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc);\n }\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, variance);\n }\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n let optional = false;\n if (this.match(43) || this.match(6)) {\n node.method = true;\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.start);\n }\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAtNode(node));\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n } else if (!isStatic && !allowSpread && node.key.name === \"constructor\" && node.value.this) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this);\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n node.method = false;\n if (this.eat(13)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n node.optional = optional;\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n flowCheckGetterSetterParams(property) {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const value = property.value;\n const length = value.params.length + (value.rest ? 1 : 0);\n if (value.this) {\n this.raise(property.kind === \"get\" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, value.this);\n }\n if (length !== paramCount) {\n this.raise(property.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity, property);\n }\n if (property.kind === \"set\" && value.rest) {\n this.raise(Errors.BadSetterRestParameter, property);\n }\n }\n flowObjectTypeSemicolon() {\n if (!this.eat(9) && !this.eat(8) && !this.match(4) && !this.match(5)) {\n this.unexpected();\n }\n }\n flowParseQualifiedTypeIdentifier(startLoc, id) {\n startLoc ??= this.state.startLoc;\n let node = id || this.flowParseRestrictedIdentifier(true);\n while (this.eat(12)) {\n const node2 = this.startNodeAt(startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n return node;\n }\n flowParseGenericType(startLoc, id) {\n const node = this.startNodeAt(startLoc);\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n flowParseTypeofType() {\n const node = this.startNode();\n this.expect(83);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n flowParseTupleType() {\n const node = this.startNode();\n node.types = [];\n this.expect(0);\n while (this.state.pos < this.length && !this.match(1)) {\n node.types.push(this.flowParseType());\n if (this.match(1)) break;\n this.expect(8);\n }\n this.expect(1);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n flowParseFunctionTypeParam(first) {\n let name = null;\n let optional = false;\n let typeAnnotation;\n const node = this.startNode();\n const lh = this.lookahead();\n const isThis = this.state.type === 74;\n if (lh.type === 10 || lh.type === 13) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node);\n }\n name = this.parseIdentifier(isThis);\n if (this.eat(13)) {\n optional = true;\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n }\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n reinterpretTypeAsFunctionTypeParam(type) {\n const node = this.startNodeAtNode(type);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n flowParseFunctionTypeParams(params = []) {\n let rest = null;\n let _this = null;\n if (this.match(74)) {\n _this = this.flowParseFunctionTypeParam(true);\n _this.name = null;\n if (!this.match(7)) {\n this.expect(8);\n }\n }\n while (!this.match(7) && !this.match(17)) {\n params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(7)) {\n this.expect(8);\n }\n }\n if (this.eat(17)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n return {\n params,\n rest,\n _this\n };\n }\n flowIdentToTypeAnnotation(startLoc, node, id) {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startLoc, id);\n }\n }\n flowParsePrimaryType() {\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n switch (this.state.type) {\n case 2:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true\n });\n case 3:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false\n });\n case 0:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n case 43:\n {\n const node = this.startNode();\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(6);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(7);\n this.expect(15);\n node.returnType = this.flowParseType();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n case 6:\n {\n const node = this.startNode();\n this.next();\n if (!this.match(7) && !this.match(17)) {\n if (tokenIsIdentifier(this.state.type) || this.match(74)) {\n const token = this.lookahead().type;\n isGroupedType = token !== 13 && token !== 10;\n } else {\n isGroupedType = true;\n }\n }\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n if (this.state.noAnonFunctionType || !(this.match(8) || this.match(7) && this.lookahead().type === 15)) {\n this.expect(7);\n return type;\n } else {\n this.eat(8);\n }\n }\n if (type) {\n tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(7);\n this.expect(15);\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n case 130:\n return this.parseLiteral(this.state.value, \"StringLiteralTypeAnnotation\");\n case 81:\n case 82:\n node.value = this.match(81);\n this.next();\n return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n case 49:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(131)) {\n return this.parseLiteralAtNode(-this.state.value, \"NumberLiteralTypeAnnotation\", node);\n }\n if (this.match(132)) {\n return this.parseLiteralAtNode(-this.state.value, \"BigIntLiteralTypeAnnotation\", node);\n }\n throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc);\n }\n throw this.unexpected();\n case 131:\n return this.parseLiteral(this.state.value, \"NumberLiteralTypeAnnotation\");\n case 132:\n return this.parseLiteral(this.state.value, \"BigIntLiteralTypeAnnotation\");\n case 84:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n case 80:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n case 74:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n case 51:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n case 83:\n return this.flowParseTypeofType();\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(125)) {\n return this.flowParseInterfaceType();\n }\n return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());\n }\n }\n throw this.unexpected();\n }\n flowParsePostfixType() {\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n while ((this.match(0) || this.match(14)) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startLoc);\n const optional = this.eat(14);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(0);\n if (!optional && this.match(1)) {\n node.elementType = type;\n this.next();\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(1);\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode(node, \"OptionalIndexedAccessType\");\n } else {\n type = this.finishNode(node, \"IndexedAccessType\");\n }\n }\n }\n return type;\n }\n flowParsePrefixType() {\n const node = this.startNode();\n if (this.eat(13)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n flowParseAnonFunctionWithoutParens() {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(15)) {\n const node = this.startNodeAtNode(param);\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n flowParseIntersectionType() {\n const node = this.startNode();\n this.eat(41);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(41)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1 ? type : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n flowParseUnionType() {\n const node = this.startNode();\n this.eat(39);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(39)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1 ? type : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n flowParseType() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n flowParseTypeOrImplicitInstantiation() {\n if (this.state.type === 128 && this.state.value === \"_\") {\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n flowParseTypeAnnotation() {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n flowParseTypeAnnotatableIdentifier() {\n const node = this.startNode();\n const name = this.parseIdentifierName();\n if (this.match(10)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return this.createIdentifier(node, name);\n }\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocationFromNode(node.expression, node.typeAnnotation);\n return node.expression;\n }\n flowParseVariance() {\n let variance = null;\n if (this.match(49)) {\n variance = this.startNode();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n return this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n parseFunctionBody(node, allowExpressionBody, isMethod = false) {\n if (allowExpressionBody) {\n this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));\n return;\n }\n super.parseFunctionBody(node, false, isMethod);\n }\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(10)) {\n const typeNode = this.startNode();\n if (type === \"FunctionDeclaration\" || type === \"FunctionExpression\" || type === \"ArrowFunctionExpression\") {\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(true);\n } else {\n typeNode.typeAnnotation = this.flowParseTypeInitialiser();\n }\n node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, \"TypeAnnotation\") : null;\n }\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n parseStatementLike(flags) {\n if (this.state.strict && this.isContextual(125)) {\n const lookahead = this.lookahead();\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.isContextual(122)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n const stmt = super.parseStatementLike(flags);\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n parseExpressionStatement(node, expr, decorators) {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (this.match(76) || tokenIsIdentifier(this.state.type) || this.match(64) || this.match(70) || this.match(78)) {\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n return super.parseExpressionStatement(node, expr, decorators);\n }\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n if (type === 122 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return !this.state.containsEsc;\n }\n return super.shouldParseExportDeclaration();\n }\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n if (type === 122 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return this.state.containsEsc;\n }\n return super.isExportDefaultSpecifier();\n }\n parseExportDefaultExpression() {\n if (this.isContextual(122)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n parseConditional(expr, startLoc, refExpressionErrors) {\n if (!this.match(13)) return expr;\n if (refExpressionErrors != null) {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n this.expect(13);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startLoc);\n let {\n consequent,\n failed\n } = this.tryParseConditionalConsequent();\n const result = this.getArrowLikeExpressions(consequent);\n let valid = result[0];\n const invalid = result[1];\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n [valid] = this.getArrowLikeExpressions(consequent);\n }\n if (failed && valid.length > 1) {\n this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n }\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({\n consequent\n } = this.tryParseConditionalConsequent());\n }\n }\n this.getArrowLikeExpressions(consequent, true);\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(10);\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));\n return this.finishNode(node, \"ConditionalExpression\");\n }\n tryParseConditionalConsequent() {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(10);\n this.state.noArrowParamsConversionAt.pop();\n return {\n consequent,\n failed\n };\n }\n getArrowLikeExpressions(node, disallowInvalid) {\n const stack = [node];\n const arrows = [];\n while (stack.length !== 0) {\n const node = stack.pop();\n if (node.type === \"ArrowFunctionExpression\" && node.body.type !== \"BlockStatement\") {\n if (node.typeParameters || !node.returnType) {\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));\n }\n finishArrowValidation(node) {\n this.toAssignableList(node.params, node.extra?.trailingCommaLoc, false);\n this.scope.enter(514 | 4);\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n forwardNoArrowParamsConversionAt(node, parse) {\n let result;\n if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n return result;\n }\n parseParenItem(node, startLoc) {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(13)) {\n newNode.optional = true;\n this.resetEndLocation(node);\n }\n if (this.match(10)) {\n const typeCastNode = this.startNodeAt(startLoc);\n typeCastNode.expression = newNode;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n return newNode;\n }\n assertModuleNodeAllowed(node) {\n if (node.type === \"ImportDeclaration\" && (node.importKind === \"type\" || node.importKind === \"typeof\") || node.type === \"ExportNamedDeclaration\" && node.exportKind === \"type\" || node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\") {\n return;\n }\n super.assertModuleNodeAllowed(node);\n }\n parseExportDeclaration(node) {\n if (this.isContextual(126)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n if (this.match(2)) {\n node.specifiers = this.parseExportSpecifiers(true);\n super.parseExportFrom(node);\n return null;\n } else {\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(127)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(125)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseInterface(declarationNode);\n } else if (this.isContextual(122)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n eatExportStar(node) {\n if (super.eatExportStar(node)) return true;\n if (this.isContextual(126) && this.lookahead().type === 51) {\n node.exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n return false;\n }\n maybeParseExportNamespaceSpecifier(node) {\n const {\n startLoc\n } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n return hasNamespace;\n }\n parseClassId(node, isStatement, optionalId) {\n if ((!isStatement || optionalId) && this.isContextual(109)) {\n node.id = null;\n return;\n }\n super.parseClassId(node, isStatement, optionalId);\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n parseClassMember(classBody, member, state) {\n const {\n startLoc\n } = this.state;\n if (this.isContextual(121)) {\n if (super.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n member.declare = true;\n }\n super.parseClassMember(classBody, member, state);\n if (member.declare) {\n if (member.type !== \"ClassProperty\" && member.type !== \"ClassPrivateProperty\" && member.type !== \"PropertyDefinition\") {\n this.raise(FlowErrors.DeclareClassElement, startLoc);\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n }\n }\n }\n isIterator(word) {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n readIterator() {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n identifierName: fullWord\n });\n }\n this.finishToken(128, fullWord);\n }\n getTokenFromCode(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 123 && next === 124) {\n this.finishOp(3, 2);\n } else if (this.state.inType && (code === 62 || code === 60)) {\n this.finishOp(code === 62 ? 44 : 43, 1);\n } else if (this.state.inType && code === 63) {\n if (next === 46) {\n this.finishOp(14, 2);\n } else {\n this.finishOp(13, 1);\n }\n } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {\n this.state.pos += 2;\n this.readIterator();\n } else {\n super.getTokenFromCode(code);\n }\n }\n isAssignable(node, isBinding) {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n toAssignable(node, isLHS = false) {\n if (!isLHS && node.type === \"AssignmentExpression\" && node.left.type === \"TypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left);\n }\n super.toAssignable(node, isLHS);\n }\n toAssignableListItem(exprList, index, isLHS) {\n const node = exprList[index];\n if (node.type === \"TypeCastExpression\") {\n exprList[index] = this.typeCastToParameter(node);\n }\n super.toAssignableListItem(exprList, index, isLHS);\n }\n toReferencedList(exprList, isParenthesizedExpr) {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr?.type === \"TypeCastExpression\" && !expr.extra?.parenthesized && (exprList.length > 1 || !isParenthesizedExpr)) {\n this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n }\n }\n return exprList;\n }\n parseArrayLike(close, refExpressionErrors) {\n const node = super.parseArrayLike(close, refExpressionErrors);\n if (node.type === \"ArrayExpression\") {\n this.toReferencedList(node.elements);\n }\n return node;\n }\n isValidLVal(type, disallowCallExpression, isParenthesized, binding) {\n return type === \"TypeCastExpression\" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);\n }\n parseClassProperty(node) {\n if (this.match(10)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n parseClassPrivateProperty(node) {\n if (this.match(10)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n isClassMethod() {\n return this.match(43) || super.isClassMethod();\n }\n isClassProperty() {\n return this.match(10) || super.isClassProperty();\n }\n isNonstaticConstructor(method) {\n return !this.match(10) && super.isNonstaticConstructor(method);\n }\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n if (method.variance) {\n this.unexpected(method.variance.start);\n }\n delete method.variance;\n if (this.match(43)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n if (method.params && isConstructor) {\n const params = method.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n } else if (method.type === \"MethodDefinition\" && isConstructor && method.value.params) {\n const params = method.value.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n }\n }\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n if (method.variance) {\n this.unexpected(method.variance.start);\n }\n delete method.variance;\n if (this.match(43)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n flowParseClassImplements() {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(true);\n if (this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n return this.finishNode(node, \"ClassImplements\");\n }\n parseClassSuper(node) {\n super.parseClassSuper(node);\n if (node.superClass && (this.match(43) || this.match(47))) {\n node.superTypeArguments = this.flowParseTypeParameterInstantiationInExpression();\n }\n if (this.eatContextual(109)) {\n const implemented = node.implements = [];\n do {\n implemented.push(this.flowParseClassImplements());\n } while (this.eat(8));\n }\n }\n checkGetterSetterParams(method) {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length > 0) {\n const param = params[0];\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n }\n }\n }\n parsePropertyNamePrefixOperator(node) {\n node.variance = this.flowParseVariance();\n }\n parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n if (prop.variance) {\n this.unexpected(prop.variance.start);\n }\n delete prop.variance;\n let typeParameters;\n if (this.match(43) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(6)) this.unexpected();\n }\n const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n if (typeParameters) {\n (result.value || result).typeParameters = typeParameters;\n }\n return result;\n }\n parseFunctionParamType(param) {\n if (this.eat(13)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, param);\n }\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n }\n param.optional = true;\n }\n if (this.match(10)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n }\n if (this.match(25) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, param);\n }\n this.resetEndLocation(param);\n return param;\n }\n parseMaybeDefault(startLoc, left) {\n const node = super.parseMaybeDefault(startLoc, left);\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n }\n return node;\n }\n parseImportSpecifierLocal(node, specifier, type) {\n specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n isPotentialImportPhase(isExport) {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(126)) {\n if (!isExport) return true;\n const ch = this.lookaheadCharCode();\n return ch === 123 || ch === 42;\n }\n return !isExport && this.isContextual(83);\n }\n applyImportPhase(node, isExport, phase, loc) {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n if (!phase && this.match(61)) {\n return;\n }\n node.exportKind = phase === \"type\" ? phase : \"value\";\n } else {\n if (phase === \"type\" && this.match(51)) this.unexpected();\n node.importKind = phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {\n const firstIdent = specifier.imported;\n let specifierTypeKind = null;\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n let isBinding = false;\n if (this.isContextual(89) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = this.cloneIdentifier(as_ident);\n } else {\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: firstIdent.value\n });\n }\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n if (this.eatContextual(89)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = this.cloneIdentifier(specifier.imported);\n }\n }\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n }\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(specifier.local.name, specifier.local.start, true);\n }\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(specifier.local.name, specifier.start, true, true);\n }\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n parseBindingAtom() {\n switch (this.state.type) {\n case 74:\n return this.parseIdentifier(true);\n default:\n return super.parseBindingAtom();\n }\n }\n parseFunctionParams(node, isConstructor) {\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.match(43)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, isConstructor);\n }\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n if (this.match(10)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id);\n }\n }\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(10)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n shouldParseAsyncArrow() {\n return this.match(10) || super.shouldParseAsyncArrow();\n }\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n let state = null;\n let jsx;\n if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(43))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n if (jsx?.error || this.match(43)) {\n state = state || this.state.clone();\n let typeParameters;\n const arrow = this.tryParse(abort => {\n typeParameters = this.flowParseTypeParameterDeclaration();\n const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {\n const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n this.resetStartLocationFromNode(result, typeParameters);\n return result;\n });\n if (arrowExpression.extra?.parenthesized) abort();\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n return arrowExpression;\n }, state);\n let arrowExpression = null;\n if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === \"ArrowFunctionExpression\") {\n if (!arrow.error && !arrow.aborted) {\n if (arrow.node.async) {\n this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters);\n }\n return arrow.node;\n }\n arrowExpression = arrow.node;\n }\n if (jsx?.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n if (arrowExpression) {\n this.state = arrow.failState;\n return arrowExpression;\n }\n if (jsx?.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters);\n }\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n parseArrow(node) {\n if (this.match(10)) {\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(true);\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(15)) this.unexpected();\n return typeNode;\n });\n if (result.thrown) return null;\n if (result.error) this.state = result.failState;\n node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, \"TypeAnnotation\") : null;\n }\n return super.parseArrow(node);\n }\n shouldParseArrow(params) {\n return this.match(10) || super.shouldParseArrow(params);\n }\n setArrowFunctionParameters(node, params) {\n if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {\n node.params = params;\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {\n return;\n }\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n }\n }\n super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged);\n }\n parseParenAndDistinguishExpression(canStartArrow) {\n return super.parseParenAndDistinguishExpression(canStartArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start)));\n }\n parseSubscripts(base, startLoc, noCalls) {\n if (base.type === \"Identifier\" && base.name === \"async\" && this.state.noArrowAt.includes(startLoc.index)) {\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.arguments = super.parseCallExpressionArguments();\n base = this.finishNode(node, \"CallExpression\");\n } else if (base.type === \"Identifier\" && base.name === \"async\" && this.match(43)) {\n const state = this.state.clone();\n const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state);\n if (!arrow.error && !arrow.aborted) return arrow.node;\n const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state);\n if (result.node && !result.error) return result.node;\n if (arrow.node) {\n this.state = arrow.failState;\n return arrow.node;\n }\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n throw arrow.error || result.error;\n }\n return super.parseSubscripts(base, startLoc, noCalls);\n }\n parseSubscript(base, startLoc, noCalls, subscriptState) {\n if (this.match(14) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();\n this.expect(6);\n node.arguments = this.parseCallExpressionArguments();\n node.optional = true;\n return this.finishCallExpression(node, true);\n } else if (!noCalls && this.shouldParseTypes() && (this.match(43) || this.match(47))) {\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n const result = this.tryParse(() => {\n node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(6);\n node.arguments = super.parseCallExpressionArguments();\n if (subscriptState.optionalChainMember) {\n node.optional = false;\n }\n return this.finishCallExpression(node, subscriptState.optionalChainMember);\n });\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n return super.parseSubscript(base, startLoc, noCalls, subscriptState);\n }\n parseNewCallee(node) {\n super.parseNewCallee(node);\n let targs = null;\n if (this.shouldParseTypes() && this.match(43)) {\n targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;\n }\n node.typeArguments = targs;\n }\n parseAsyncArrowWithTypeParameters(startLoc) {\n const node = this.startNodeAt(startLoc);\n this.parseFunctionParams(node, false);\n if (!this.parseArrow(node)) return;\n return super.parseArrowExpression(node, undefined, true);\n }\n readToken_mult_modulo(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 42 && next === 47 && this.state.hasFlowComment) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n super.readToken_mult_modulo(code);\n }\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 124 && next === 125) {\n this.finishOp(5, 2);\n return;\n }\n super.readToken_pipe_amp(code);\n }\n parseTopLevel(file, program) {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition());\n }\n return fileNode;\n }\n skipBlockComment() {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n }\n this.hasFlowCommentCompletion();\n const commentSkip = this.skipFlowComment();\n if (commentSkip) {\n this.state.pos += commentSkip;\n this.state.hasFlowComment = true;\n }\n return;\n }\n return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n }\n skipFlowComment() {\n const {\n pos\n } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {\n shiftToFirstNonWhiteSpace++;\n }\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n if (ch2 === 58 && ch3 === 58) {\n return shiftToFirstNonWhiteSpace + 2;\n }\n if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === \"flow-include\") {\n return shiftToFirstNonWhiteSpace + 12;\n }\n if (ch2 === 58 && ch3 !== 58) {\n return shiftToFirstNonWhiteSpace;\n }\n return false;\n }\n hasFlowCommentCompletion() {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n }\n flowEnumErrorBooleanMemberNotInitialized(loc, names) {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, names);\n }\n flowEnumErrorInvalidMemberInitializer(loc, enumContext) {\n return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === \"symbol\" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext);\n }\n flowEnumErrorNumberMemberNotInitialized(loc, details) {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n }\n flowEnumErrorStringMemberInconsistentlyInitialized(node, details) {\n this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details);\n }\n flowEnumMemberInit() {\n const startLoc = this.state.startLoc;\n const endOfInit = () => this.match(8) || this.match(4);\n switch (this.state.type) {\n case 131:\n {\n const literal = this.parseNumericLiteral(this.state.value);\n if (endOfInit()) {\n return {\n type: \"number\",\n loc: literal.start,\n value: literal\n };\n }\n break;\n }\n case 130:\n {\n const literal = this.parseStringLiteral(this.state.value);\n if (endOfInit()) {\n return {\n type: \"string\",\n loc: literal.start,\n value: literal\n };\n }\n break;\n }\n case 81:\n case 82:\n {\n const literal = this.parseBooleanLiteral(this.match(81));\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.start,\n value: literal\n };\n }\n }\n }\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n flowEnumMemberRaw() {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(25) ? this.flowEnumMemberInit() : {\n type: \"none\",\n loc\n };\n return {\n id,\n init\n };\n }\n flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {\n const {\n explicitType\n } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n flowEnumMembers({\n enumName,\n explicitType\n }) {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: []\n };\n let hasUnknownMembers = false;\n while (!this.match(4)) {\n if (this.eat(17)) {\n hasUnknownMembers = true;\n break;\n }\n const memberNode = this.startNode();\n const {\n id,\n init\n } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, id, {\n memberName,\n suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n enumName\n });\n }\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n memberName,\n enumName\n });\n }\n seenNames.add(memberName);\n const context = {\n enumName,\n explicitType,\n memberName\n };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"boolean\");\n memberNode.init = init.value;\n members.booleanMembers.push(this.finishNode(memberNode, \"EnumBooleanMember\"));\n break;\n }\n case \"number\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(this.finishNode(memberNode, \"EnumNumberMember\"));\n break;\n }\n case \"string\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(this.finishNode(memberNode, \"EnumStringMember\"));\n break;\n }\n case \"invalid\":\n {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n case \"none\":\n {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n default:\n members.defaultedMembers.push(this.finishNode(memberNode, \"EnumDefaultedMember\"));\n }\n }\n }\n if (!this.match(4)) {\n this.expect(8);\n }\n }\n return {\n members,\n hasUnknownMembers\n };\n }\n flowEnumStringMembers(initializedMembers, defaultedMembers, {\n enumName\n }) {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName\n });\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName\n });\n }\n return initializedMembers;\n }\n }\n flowEnumParseExplicitType({\n enumName\n }) {\n if (!this.eatContextual(98)) return null;\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, {\n enumName\n });\n }\n const {\n value\n } = this.state;\n this.next();\n if (value !== \"boolean\" && value !== \"number\" && value !== \"string\" && value !== \"symbol\") {\n this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n enumName,\n invalidEnumType: value\n });\n }\n return value;\n }\n flowEnumBody(node, id) {\n const enumName = id.name;\n const nameLoc = id.start;\n const explicitType = this.flowEnumParseExplicitType({\n enumName\n });\n this.expect(2);\n const {\n members,\n hasUnknownMembers\n } = this.flowEnumMembers({\n enumName,\n explicitType\n });\n node.hasUnknownMembers = hasUnknownMembers;\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(4);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(4);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(4);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(4);\n return this.finishNode(node, \"EnumSymbolBody\");\n default:\n {\n const empty = () => {\n node.members = [];\n this.expect(4);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(4);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.start, {\n enumName,\n memberName: member.id.name\n });\n }\n node.members = members.booleanMembers;\n this.expect(4);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.start, {\n enumName,\n memberName: member.id.name\n });\n }\n node.members = members.numberMembers;\n this.expect(4);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n enumName\n });\n return empty();\n }\n }\n }\n }\n flowParseEnumDeclaration(node) {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n jsxParseOpeningElementAfterName(node) {\n if (this.shouldParseTypes()) {\n if (this.match(43) || this.match(47)) {\n node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n isLookaheadToken_lt() {\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === 60) {\n const afterNext = this.input.charCodeAt(next + 1);\n return afterNext !== 60 && afterNext !== 61;\n }\n return false;\n }\n reScan_lt_gt() {\n const {\n type\n } = this.state;\n if (type === 43) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === 44) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n reScan_lt() {\n const {\n type\n } = this.state;\n if (type === 47) {\n this.state.pos -= 2;\n this.finishOp(43, 1);\n return 43;\n }\n return type;\n }\n maybeUnwrapTypeCastExpression(node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n};\nconst entities = {\n __proto__: null,\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\"\n};\nconst lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nconst lineBreakG = new RegExp(lineBreak.source, \"g\");\nfunction isNewLine(code) {\n switch (code) {\n case 10:\n case 13:\n case 8232:\n case 8233:\n return true;\n default:\n return false;\n }\n}\nfunction hasNewLine(input, start, end) {\n for (let i = start; i < end; i++) {\n if (isNewLine(input.charCodeAt(i))) {\n return true;\n }\n }\n return false;\n}\nconst skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nconst skipWhiteSpaceInLine = /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\nfunction isWhitespace(code) {\n switch (code) {\n case 0x0009:\n case 0x000b:\n case 0x000c:\n case 32:\n case 160:\n case 5760:\n case 0x2000:\n case 0x2001:\n case 0x2002:\n case 0x2003:\n case 0x2004:\n case 0x2005:\n case 0x2006:\n case 0x2007:\n case 0x2008:\n case 0x2009:\n case 0x200a:\n case 0x202f:\n case 0x205f:\n case 0x3000:\n case 0xfeff:\n return true;\n default:\n return false;\n }\n}\nconst JsxErrorTemplates = {\n AttributeIsEmpty: \"JSX attributes must only be assigned a non-empty expression.\",\n MissingClosingTagElement: ({\n openingTagName\n }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n UnexpectedSequenceExpression: \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n UnexpectedToken: ({\n unexpected,\n HTMLEntity\n }) => `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n UnsupportedJsxValue: \"JSX value should be either an expression or a quoted JSX text.\",\n UnterminatedJsxContent: \"Unterminated JSX contents.\",\n UnwrappedAdjacentJSXElements: \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\"\n};\nconst JsxErrors = ParseErrorEnum`jsx`(JsxErrorTemplates);\nfunction isFragment(object) {\n return object ? object.type === \"JSXOpeningFragment\" || object.type === \"JSXClosingFragment\" : false;\n}\nfunction getQualifiedJSXName(object) {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n if (object.type === \"JSXMemberExpression\") {\n return getQualifiedJSXName(object.object) + \".\" + getQualifiedJSXName(object.property);\n }\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\nconst jsx = superClass => class JSXParserMixin extends superClass {\n jsxReadToken() {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc);\n }\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case 60:\n case 123:\n if (this.state.pos === this.state.start) {\n if (ch === 60 && this.state.canStartJSXElement) {\n ++this.state.pos;\n this.finishToken(138);\n } else {\n super.getTokenFromCode(ch);\n }\n return;\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(137, out);\n return;\n case 38:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n case 62:\n case 125:\n this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n unexpected: this.input[this.state.pos],\n HTMLEntity: ch === 125 ? \"}\" : \">\"\n });\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n jsxReadNewLine(normalizeCRLF) {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n return out;\n }\n jsxReadString(quote) {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n }\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === 38) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(130, out);\n }\n jsxReadEntity() {\n const startPos = ++this.state.pos;\n if (this.codePointAtPos(this.state.pos) === 35) {\n ++this.state.pos;\n let radix = 10;\n if (this.codePointAtPos(this.state.pos) === 120) {\n radix = 16;\n ++this.state.pos;\n }\n const codePoint = this.readInt(radix, undefined, false, \"bail\");\n if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {\n ++this.state.pos;\n return String.fromCodePoint(codePoint);\n }\n } else {\n let count = 0;\n let semi = false;\n while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) {\n ++this.state.pos;\n }\n if (semi) {\n const desc = this.input.slice(startPos, this.state.pos);\n const entity = entities[desc];\n ++this.state.pos;\n if (entity) {\n return entity;\n }\n }\n }\n this.state.pos = startPos;\n return \"&\";\n }\n jsxReadWord() {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === 45);\n this.finishToken(136, this.input.slice(start, this.state.pos));\n }\n jsxParseIdentifier() {\n const node = this.startNode();\n if (this.match(136)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n jsxParseNamespacedName() {\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(10)) return name;\n const node = this.startNodeAt(startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n jsxParseElementName() {\n const startLoc = this.state.startLoc;\n let node = this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(12)) {\n const newNode = this.startNodeAt(startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n jsxParseAttributeValue() {\n let node;\n switch (this.state.type) {\n case 2:\n node = this.startNode();\n this.setContext(types.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, types.j_oTag);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, node);\n }\n return node;\n case 138:\n case 130:\n return this.parseExprAtom();\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n }\n }\n jsxParseEmptyExpression() {\n const node = this.startNodeAt(this.state.lastTokEndLoc);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n jsxParseSpreadChild(node) {\n this.next();\n node.expression = this.parseExpression();\n this.setContext(types.j_expr);\n this.state.canStartJSXElement = true;\n this.expect(4);\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n jsxParseExpressionContainer(node, previousContext) {\n if (this.match(4)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n if (expression.type === \"SequenceExpression\" && !expression.extra?.parenthesized) {\n this.raise(JsxErrors.UnexpectedSequenceExpression, expression.expressions[1]);\n }\n node.expression = expression;\n }\n this.setContext(previousContext);\n this.state.canStartJSXElement = true;\n this.expect(4);\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n jsxParseAttribute() {\n if (this.match(2)) {\n const node = this.startNode();\n this.setContext(types.brace);\n this.next();\n this.expect(17);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(types.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(4);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n const node = this.startNode();\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(25) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n jsxParseOpeningElementAt(startLoc) {\n if (this.eat(139)) {\n const node = this.startNodeAt(startLoc);\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n const node = this.startNodeAt(startLoc);\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(node);\n }\n jsxParseOpeningElementAfterName(node) {\n const attributes = [];\n while (!this.match(52) && !this.match(139)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(52);\n this.expect(139);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n jsxParseClosingElementAt(startLoc) {\n if (this.eat(139)) {\n const node = this.startNodeAt(startLoc);\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n const node = this.startNodeAt(startLoc);\n node.name = this.jsxParseElementName();\n this.expect(139);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n jsxParseElementAt(startLoc) {\n const node = this.startNodeAt(startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startLoc);\n let closingElement = null;\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case 138:\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(52)) {\n this.setLoc(startLoc);\n closingElement = this.jsxParseClosingElementAt(startLoc);\n break contents;\n }\n children.push(this.jsxParseElementAt(startLoc));\n break;\n case 137:\n children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n break;\n case 2:\n {\n const node = this.startNode();\n this.setContext(types.brace);\n this.next();\n if (this.match(17)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(this.jsxParseExpressionContainer(node, types.j_expr));\n }\n break;\n }\n default:\n this.unexpected();\n }\n }\n if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {\n this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name)\n });\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name)\n });\n }\n }\n }\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.match(43)) {\n throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc);\n }\n return isFragment(openingElement) ? this.finishNode(node, \"JSXFragment\") : this.finishNode(node, \"JSXElement\");\n }\n jsxParseElement() {\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startLoc);\n }\n setContext(newContext) {\n const {\n context\n } = this.state;\n context[context.length - 1] = newContext;\n }\n parseExprAtom(refExpressionErrors) {\n if (this.match(138)) {\n return this.jsxParseElement();\n } else if (this.match(43) && this.input.charCodeAt(this.state.pos) !== 33) {\n this.replaceToken(138);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n getTokenFromCode(code) {\n const context = this.curContext();\n if (context === types.j_expr) {\n this.jsxReadToken();\n return;\n }\n if (context === types.j_oTag || context === types.j_cTag) {\n if (isIdentifierStart(code)) {\n this.jsxReadWord();\n return;\n }\n if (code === 62) {\n ++this.state.pos;\n this.finishToken(139);\n return;\n }\n if ((code === 34 || code === 39) && context === types.j_oTag) {\n this.jsxReadString(code);\n return;\n }\n }\n if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {\n ++this.state.pos;\n this.finishToken(138);\n return;\n }\n super.getTokenFromCode(code);\n }\n updateContext(prevType) {\n const {\n context,\n type\n } = this.state;\n if (type === 52 && prevType === 138) {\n context.splice(-2, 2, types.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === 138) {\n context.push(types.j_oTag);\n } else if (type === 139) {\n const out = context[context.length - 1];\n if (out === types.j_oTag && prevType === 52 || out === types.j_cTag) {\n context.pop();\n this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;\n } else {\n this.setContext(types.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n};\nclass TypeScriptScope extends Scope {\n tsNames = new Map();\n}\nclass TypeScriptScopeHandler extends ScopeHandler {\n get inTSNamespace() {\n const scopeStack = this.scopeStack;\n return scopeStack.length >= 2 && scopeStack[scopeStack.length - 1].flags === 0 && (scopeStack[scopeStack.length - 2].flags & 2048) > 0;\n }\n importsStack = [];\n createScope(flags) {\n this.importsStack.push(new Set());\n return new TypeScriptScope(flags);\n }\n enter(flags) {\n if (flags & (1024 | 2048)) {\n this.importsStack.push(new Set());\n }\n super.enter(flags);\n }\n exit() {\n const flags = super.exit();\n if (flags & (1024 | 2048)) {\n this.importsStack.pop();\n }\n return flags;\n }\n hasImport(name, allowShadow) {\n const len = this.importsStack.length;\n if (this.importsStack[len - 1].has(name)) {\n return true;\n }\n if (!allowShadow && len > 1) {\n for (let i = 0; i < len - 1; i++) {\n if (this.importsStack[i].has(name)) return true;\n }\n }\n return false;\n }\n declareName(name, bindingType, loc) {\n if (bindingType & 4096) {\n if (this.hasImport(name, true)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name\n });\n }\n this.importsStack[this.importsStack.length - 1].add(name);\n return;\n }\n const scope = this.currentScope();\n let type = scope.tsNames.get(name) || 0;\n if (bindingType & 1024) {\n this.maybeExportDefined(scope, name);\n scope.tsNames.set(name, type | 16);\n return;\n }\n super.declareName(name, bindingType, loc);\n if (bindingType & 2) {\n if (!(bindingType & 1)) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n type = type | 1;\n }\n if (bindingType & 256) {\n type = type | 2;\n }\n if (bindingType & 512) {\n type = type | 4;\n }\n if (bindingType & 128) {\n type = type | 8;\n }\n if (type) scope.tsNames.set(name, type);\n }\n isRedeclaredInScope(scope, name, bindingType) {\n const type = scope.tsNames.get(name);\n if ((type & 2) > 0) {\n if (bindingType & 256) {\n const isConst = (bindingType & 512) > 0;\n const wasConst = (type & 4) > 0;\n return isConst !== wasConst;\n }\n return true;\n }\n if (bindingType & 128 && (type & 8) > 0) {\n if (scope.names.get(name) & 2) {\n return !!(bindingType & 1);\n } else {\n return false;\n }\n }\n if (bindingType & 2 && (type & 1) > 0) {\n return true;\n }\n return super.isRedeclaredInScope(scope, name, bindingType);\n }\n checkLocalExport(id) {\n const {\n name\n } = id;\n if (this.hasImport(name)) return;\n const len = this.scopeStack.length;\n for (let i = len - 1; i >= 0; i--) {\n const scope = this.scopeStack[i];\n const type = scope.tsNames.get(name);\n if ((type & 1) > 0 || (type & 16) > 0) {\n return;\n }\n }\n super.checkLocalExport(id);\n }\n}\nclass BaseParser {\n sawUnambiguousESM = false;\n ambiguousScriptDifferentAst = false;\n sourceToOffsetPos(sourcePos) {\n return sourcePos + this.startIndex;\n }\n offsetToSourcePos(offsetPos) {\n return offsetPos - this.startIndex;\n }\n hasPlugin(pluginConfig) {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n const actualOptions = this.plugins.get(pluginName);\n for (const key of Object.keys(pluginOptions)) {\n if (actualOptions?.[key] !== pluginOptions[key]) {\n return false;\n }\n }\n return true;\n }\n }\n getPluginOption(plugin, name) {\n return this.plugins.get(plugin)?.[name];\n }\n}\nfunction setTrailingComments(node, comments) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\nfunction setLeadingComments(node, comments) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\nfunction setInnerComments(node, comments) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\nfunction adjustInnerComments(node, elements, commentWS) {\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\nclass CommentsParser extends BaseParser {\n addComment(comment) {\n if (this.filename) comment.loc.filename = this.filename;\n const {\n commentsLen\n } = this.state;\n if (this.comments.length !== commentsLen) {\n this.comments.length = commentsLen;\n }\n this.comments.push(comment);\n this.state.commentsLen++;\n }\n processComment(node) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n const nodeStart = node.start;\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n if (commentEnd > nodeStart) {\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n break;\n }\n }\n }\n finalizeComment(commentWS) {\n const {\n comments\n } = commentWS;\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n const node = commentWS.containingNode;\n const commentStart = commentWS.start;\n if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) {\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n case \"CallExpression\":\n case \"NewExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n case \"ImportExpression\":\n adjustInnerComments(node, [node.source, node.options ?? null], commentWS);\n break;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"TSTypeParameterDeclaration\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n case \"TSEnumBody\":\n adjustInnerComments(node, node.members, commentWS);\n break;\n case \"TSInterfaceBody\":\n adjustInnerComments(node, node.body, commentWS);\n break;\n default:\n {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n finalizeRemainingComments() {\n const {\n commentStack\n } = this.state;\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n this.state.commentStack = [];\n }\n resetPreviousNodeTrailingComments(node) {\n const {\n commentStack\n } = this.state;\n const {\n length\n } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n takeSurroundingComments(node, start, end) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n}\nclass State {\n flags = 2048;\n get strict() {\n return (this.flags & 1) > 0;\n }\n set strict(v) {\n if (v) this.flags |= 1;else this.flags &= -2;\n }\n startIndex;\n curLine;\n lineStart;\n startLoc;\n endLoc;\n init({\n strictMode,\n sourceType,\n startIndex,\n startLine,\n startColumn\n }) {\n this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === \"module\";\n this.startIndex = startIndex;\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex);\n }\n errors = [];\n noArrowAt = [];\n noArrowParamsConversionAt = [];\n get canStartArrow() {\n return (this.flags & 2) > 0;\n }\n set canStartArrow(v) {\n if (v) this.flags |= 2;else this.flags &= -3;\n }\n get inType() {\n return (this.flags & 4) > 0;\n }\n set inType(v) {\n if (v) this.flags |= 4;else this.flags &= -5;\n }\n get noAnonFunctionType() {\n return (this.flags & 8) > 0;\n }\n set noAnonFunctionType(v) {\n if (v) this.flags |= 8;else this.flags &= -9;\n }\n get hasFlowComment() {\n return (this.flags & 16) > 0;\n }\n set hasFlowComment(v) {\n if (v) this.flags |= 16;else this.flags &= -17;\n }\n get isAmbientContext() {\n return (this.flags & 32) > 0;\n }\n set isAmbientContext(v) {\n if (v) this.flags |= 32;else this.flags &= -33;\n }\n get inAbstractClass() {\n return (this.flags & 64) > 0;\n }\n set inAbstractClass(v) {\n if (v) this.flags |= 64;else this.flags &= -65;\n }\n get inDisallowConditionalTypesContext() {\n return (this.flags & 128) > 0;\n }\n set inDisallowConditionalTypesContext(v) {\n if (v) this.flags |= 128;else this.flags &= -129;\n }\n get inConditionalConsequent() {\n return (this.flags & 256) > 0;\n }\n set inConditionalConsequent(v) {\n if (v) this.flags |= 256;else this.flags &= -257;\n }\n get inHackPipelineBody() {\n return (this.flags & 512) > 0;\n }\n set inHackPipelineBody(v) {\n if (v) this.flags |= 512;else this.flags &= -513;\n }\n get seenTopicReference() {\n return (this.flags & 1024) > 0;\n }\n set seenTopicReference(v) {\n if (v) this.flags |= 1024;else this.flags &= -1025;\n }\n labels = [];\n commentsLen = 0;\n commentStack = [];\n pos = 0;\n type = 135;\n value = null;\n start = 0;\n end = 0;\n lastTokEndLoc = null;\n lastTokStartLoc = null;\n context = [types.brace];\n get canStartJSXElement() {\n return (this.flags & 2048) > 0;\n }\n set canStartJSXElement(v) {\n if (v) this.flags |= 2048;else this.flags &= -2049;\n }\n get containsEsc() {\n return (this.flags & 4096) > 0;\n }\n set containsEsc(v) {\n if (v) this.flags |= 4096;else this.flags &= -4097;\n }\n firstInvalidTemplateEscapePos = null;\n get hasTopLevelAwait() {\n return (this.flags & 8192) > 0;\n }\n set hasTopLevelAwait(v) {\n if (v) this.flags |= 8192;else this.flags &= -8193;\n }\n strictErrors = new Map();\n tokensLength = 0;\n curPosition() {\n return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex);\n }\n clone() {\n const state = new State();\n state.flags = this.flags;\n state.startIndex = this.startIndex;\n state.curLine = this.curLine;\n state.lineStart = this.lineStart;\n state.startLoc = this.startLoc;\n state.endLoc = this.endLoc;\n state.errors = this.errors.slice();\n state.noArrowAt = this.noArrowAt.slice();\n state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n state.labels = this.labels.slice();\n state.commentsLen = this.commentsLen;\n state.commentStack = this.commentStack.slice();\n state.pos = this.pos;\n state.type = this.type;\n state.value = this.value;\n state.start = this.start;\n state.end = this.end;\n state.lastTokEndLoc = this.lastTokEndLoc;\n state.lastTokStartLoc = this.lastTokStartLoc;\n state.context = this.context.slice();\n state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n state.strictErrors = this.strictErrors;\n state.tokensLength = this.tokensLength;\n return state;\n }\n}\nvar _isDigit = function isDigit(code) {\n return code >= 48 && code <= 57;\n};\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),\n hex: new Set([46, 88, 95, 120])\n};\nconst isAllowedNumericSeparatorSibling = {\n bin: ch => ch === 48 || ch === 49,\n oct: ch => ch >= 48 && ch <= 55,\n dec: ch => ch >= 48 && ch <= 57,\n hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n};\nfunction readStringContents(type, input, pos, lineStart, curLine, errors) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const {\n length\n } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === 92) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(input, pos, lineStart, curLine, type === \"template\", errors);\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = {\n pos,\n lineStart,\n curLine\n };\n } else {\n out += res.ch;\n }\n ({\n pos,\n lineStart,\n curLine\n } = res);\n chunkStart = pos;\n } else if (ch === 8232 || ch === 8233) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === 10 || ch === 13) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (ch === 13 && input.charCodeAt(pos) === 10) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine\n };\n}\nfunction isStringEnd(type, ch, input, pos) {\n if (type === \"template\") {\n return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;\n }\n return ch === (type === \"double\" ? 34 : 39);\n}\nfunction readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {\n const throwOnInvalid = !inTemplate;\n pos++;\n const res = ch => ({\n pos,\n ch,\n lineStart,\n curLine\n });\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case 110:\n return res(\"\\n\");\n case 114:\n return res(\"\\r\");\n case 120:\n {\n let code;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case 117:\n {\n let code;\n ({\n code,\n pos\n } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case 116:\n return res(\"\\t\");\n case 98:\n return res(\"\\b\");\n case 118:\n return res(\"\\u000b\");\n case 102:\n return res(\"\\f\");\n case 13:\n if (input.charCodeAt(pos) === 10) {\n ++pos;\n }\n case 10:\n lineStart = pos;\n ++curLine;\n case 8232:\n case 8233:\n return res(\"\");\n case 56:\n case 57:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n default:\n if (ch >= 48 && ch <= 55) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n let octalStr = match[0];\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (octalStr !== \"0\" || next === 56 || next === 57) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n return res(String.fromCharCode(octal));\n }\n return res(String.fromCharCode(ch));\n }\n}\nfunction readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {\n const initialPos = pos;\n let n;\n ({\n n,\n pos\n } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return {\n code: n,\n pos\n };\n}\nfunction readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {\n const start = pos;\n const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;\n let invalid = false;\n let total = 0;\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n if (code === 95 && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n if (!allowNumSeparator) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n ++pos;\n continue;\n }\n if (code >= 97) {\n val = code - 97 + 10;\n } else if (code >= 65) {\n val = code - 65 + 10;\n } else if (_isDigit(code)) {\n val = code - 48;\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n if (val <= 9 && bailOnError) {\n return {\n n: null,\n pos\n };\n } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || len != null && pos - start !== len || invalid) {\n return {\n n: null,\n pos\n };\n }\n return {\n n: total,\n pos\n };\n}\nfunction readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {\n const ch = input.charCodeAt(pos);\n let code;\n if (ch === 123) {\n ++pos;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, input.indexOf(\"}\", pos) - pos, true, throwOnInvalid, errors));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return {\n code: null,\n pos\n };\n }\n }\n } else {\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));\n }\n return {\n code,\n pos\n };\n}\nfunction buildPosition(pos, lineStart, curLine) {\n return new Position(curLine, pos - lineStart, pos);\n}\nconst VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);\nclass Token {\n constructor(state) {\n const startIndex = state.startIndex || 0;\n this.type = state.type;\n this.value = state.value;\n this.start = startIndex + state.start;\n this.end = startIndex + state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n}\nlet locDataCache;\nclass Tokenizer extends CommentsParser {\n isLookahead;\n tokens = [];\n constructor(options, input) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.comments = [];\n this.isLookahead = false;\n if (!locDataCache || locDataCache.length < (this.length + 1) * 2) {\n locDataCache = new Uint32Array((this.length + 1) * 2);\n }\n this.locData = locDataCache;\n }\n setLoc(loc) {\n const dataIndex = this.offsetToSourcePos(loc.index);\n this.locData[dataIndex * 2] = loc.line;\n this.locData[dataIndex * 2 + 1] = loc.column;\n }\n getLoc(locIndex) {\n const dataIndex = this.offsetToSourcePos(locIndex);\n const loc = new Position(this.locData[dataIndex * 2], this.locData[dataIndex * 2 + 1], locIndex);\n return loc;\n }\n pushToken(token) {\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n next() {\n this.checkKeywordEscapes();\n if (this.optionFlags & 512) {\n this.pushToken(new Token(this.state));\n }\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n eat(type) {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n match(type) {\n return this.state.type === type;\n }\n createLookaheadState(state) {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition\n };\n }\n lookahead() {\n const old = this.state;\n this.state = this.createLookaheadState(old);\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n const curr = this.state;\n this.state = old;\n return curr;\n }\n nextTokenStart() {\n return this.nextTokenStartSince(this.state.pos);\n }\n nextTokenStartSince(pos) {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n lookaheadCharCode() {\n return this.lookaheadCharCodeSince(this.state.pos);\n }\n lookaheadCharCodeSince(pos) {\n return this.input.charCodeAt(this.nextTokenStartSince(pos));\n }\n nextTokenInLineStart() {\n return this.nextTokenInLineStartSince(this.state.pos);\n }\n nextTokenInLineStartSince(pos) {\n skipWhiteSpaceInLine.lastIndex = pos;\n return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos;\n }\n lookaheadInLineCharCode() {\n return this.input.charCodeAt(this.nextTokenInLineStart());\n }\n codePointAtPos(pos) {\n let cp = this.input.charCodeAt(pos);\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n return cp;\n }\n setStrict(strict) {\n this.state.strict = strict;\n if (strict) {\n this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at));\n this.state.strictErrors.clear();\n }\n }\n curContext() {\n return this.state.context[this.state.context.length - 1];\n }\n nextToken() {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(135);\n return;\n }\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n skipBlockComment(commentEnd) {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(commentEnd, start + 2);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n this.state.pos = end + commentEnd.length;\n lineBreakG.lastIndex = start + 2;\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n if (this.isLookahead) return;\n const comment = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end + commentEnd.length),\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.optionFlags & 512) this.pushToken(comment);\n return comment;\n }\n skipLineComment(startSkip) {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt(this.state.pos += startSkip);\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n if (this.isLookahead) return;\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n const comment = {\n type: \"CommentLine\",\n value,\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end),\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.optionFlags & 512) this.pushToken(comment);\n return comment;\n }\n skipSpace() {\n const spaceStart = this.state.pos;\n const comments = this.optionFlags & 8192 ? [] : null;\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case 32:\n case 160:\n case 9:\n ++this.state.pos;\n break;\n case 13:\n if (this.input.charCodeAt(this.state.pos + 1) === 10) {\n ++this.state.pos;\n }\n case 10:\n case 8232:\n case 8233:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n case 47:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case 42:\n {\n const comment = this.skipBlockComment(\"*/\");\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n case 47:\n {\n const comment = this.skipLineComment(2);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n default:\n break loop;\n }\n break;\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (ch === 45 && !this.inModule && this.optionFlags & 16384) {\n const pos = this.state.pos;\n if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {\n const comment = this.skipLineComment(3);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n } else {\n break loop;\n }\n } else if (ch === 60 && !this.inModule && this.optionFlags & 16384) {\n const pos = this.state.pos;\n if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {\n const comment = this.skipLineComment(4);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n } else {\n break loop;\n }\n } else {\n break loop;\n }\n }\n }\n if (comments?.length > 0) {\n const end = this.state.pos;\n const commentWhitespace = {\n start: this.sourceToOffsetPos(spaceStart),\n end: this.sourceToOffsetPos(end),\n comments: comments,\n leadingNode: null,\n trailingNode: null,\n containingNode: null\n };\n this.state.commentStack.push(commentWhitespace);\n }\n }\n finishToken(type, val) {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n if (!this.isLookahead) {\n this.updateContext(prevType);\n }\n }\n replaceToken(type) {\n this.state.type = type;\n this.updateContext();\n }\n readToken_numberSign() {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n const nextPos = this.state.pos + 1;\n const next = this.codePointAtPos(nextPos);\n if (next >= 48 && next <= 57) {\n throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition());\n }\n if (isIdentifierStart(next)) {\n ++this.state.pos;\n this.finishToken(134, this.readWord1(next));\n } else if (next === 92) {\n ++this.state.pos;\n this.finishToken(134, this.readWord1());\n } else {\n this.finishOp(23, 1);\n }\n }\n readToken_dot() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next >= 48 && next <= 57) {\n this.readNumber(true);\n return;\n }\n if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {\n this.state.pos += 3;\n this.finishToken(17);\n } else {\n ++this.state.pos;\n this.finishToken(12);\n }\n }\n readToken_slash() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 61) {\n this.finishOp(27, 2);\n } else {\n this.finishOp(52, 1);\n }\n }\n readToken_interpreter() {\n if (this.state.pos !== 0 || this.length < 2) return false;\n let ch = this.input.charCodeAt(this.state.pos + 1);\n if (ch !== 33) return false;\n const start = this.state.pos;\n this.state.pos += 1;\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n const value = this.input.slice(start + 2, this.state.pos);\n this.finishToken(24, value);\n return true;\n }\n readToken_mult_modulo(code) {\n let type = code === 42 ? 51 : 50;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 42 && next === 42) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = 53;\n }\n if (next === 61 && !this.state.inType) {\n width++;\n type = code === 37 ? 29 : 26;\n }\n this.finishOp(type, width);\n }\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === 61) {\n this.finishOp(26, 3);\n } else {\n this.finishOp(code === 124 ? 37 : 38, 2);\n }\n return;\n }\n if (code === 124) {\n if (next === 62) {\n this.finishOp(35, 2);\n return;\n }\n }\n if (next === 61) {\n this.finishOp(26, 2);\n return;\n }\n this.finishOp(code === 124 ? 39 : 41, 1);\n }\n readToken_caret() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 61 && !this.state.inType) {\n this.finishOp(28, 2);\n } else if (next === 94 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"^^\"\n }])) {\n this.finishOp(33, 2);\n const lookaheadCh = this.input.codePointAt(this.state.pos);\n if (lookaheadCh === 94) {\n this.unexpected();\n }\n } else {\n this.finishOp(40, 1);\n }\n }\n readToken_atSign() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 64 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"@@\"\n }])) {\n this.finishOp(34, 2);\n } else {\n this.finishOp(22, 1);\n }\n }\n readToken_plus_min(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === code) {\n this.finishOp(30, 2);\n return;\n }\n if (next === 61) {\n this.finishOp(26, 2);\n } else {\n this.finishOp(49, 1);\n }\n }\n readToken_lt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n if (next === 60) {\n if (this.input.charCodeAt(pos + 2) === 61) {\n this.finishOp(26, 3);\n return;\n }\n this.finishOp(47, 2);\n return;\n }\n if (next === 61) {\n this.finishOp(45, 2);\n return;\n }\n this.finishOp(43, 1);\n }\n readToken_gt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n if (next === 62) {\n const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(pos + size) === 61) {\n this.finishOp(26, size + 1);\n return;\n }\n this.finishOp(48, size);\n return;\n }\n if (next === 61) {\n this.finishOp(45, 2);\n return;\n }\n this.finishOp(44, 1);\n }\n readToken_eq_excl(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 61) {\n this.finishOp(42, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);\n return;\n }\n if (code === 61 && next === 62) {\n this.state.pos += 2;\n this.finishToken(15);\n return;\n }\n this.finishOp(code === 61 ? 25 : 31, 1);\n }\n readToken_question() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n if (next === 63) {\n if (next2 === 61) {\n this.finishOp(26, 3);\n } else {\n this.finishOp(36, 2);\n }\n } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {\n this.state.pos += 2;\n this.finishToken(14);\n } else {\n ++this.state.pos;\n this.finishToken(13);\n }\n }\n getTokenFromCode(code) {\n switch (code) {\n case 46:\n this.readToken_dot();\n return;\n case 40:\n ++this.state.pos;\n this.finishToken(6);\n return;\n case 41:\n ++this.state.pos;\n this.finishToken(7);\n return;\n case 59:\n ++this.state.pos;\n this.finishToken(9);\n return;\n case 44:\n ++this.state.pos;\n this.finishToken(8);\n return;\n case 91:\n ++this.state.pos;\n this.finishToken(0);\n return;\n case 93:\n ++this.state.pos;\n this.finishToken(1);\n return;\n case 123:\n ++this.state.pos;\n this.finishToken(2);\n return;\n case 125:\n ++this.state.pos;\n this.finishToken(4);\n return;\n case 58:\n if (this.hasPlugin(\"functionBind\") && this.input.charCodeAt(this.state.pos + 1) === 58) {\n this.finishOp(11, 2);\n } else {\n ++this.state.pos;\n this.finishToken(10);\n }\n return;\n case 63:\n this.readToken_question();\n return;\n case 96:\n this.readTemplateToken();\n return;\n case 48:\n {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 120 || next === 88) {\n this.readRadixNumber(16);\n return;\n }\n if (next === 111 || next === 79) {\n this.readRadixNumber(8);\n return;\n }\n if (next === 98 || next === 66) {\n this.readRadixNumber(2);\n return;\n }\n }\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n this.readNumber(false);\n return;\n case 34:\n case 39:\n this.readString(code);\n return;\n case 47:\n this.readToken_slash();\n return;\n case 37:\n case 42:\n this.readToken_mult_modulo(code);\n return;\n case 124:\n case 38:\n this.readToken_pipe_amp(code);\n return;\n case 94:\n this.readToken_caret();\n return;\n case 43:\n case 45:\n this.readToken_plus_min(code);\n return;\n case 60:\n this.readToken_lt();\n return;\n case 62:\n this.readToken_gt();\n return;\n case 61:\n case 33:\n this.readToken_eq_excl(code);\n return;\n case 126:\n this.finishOp(32, 1);\n return;\n case 64:\n this.readToken_atSign();\n return;\n case 35:\n this.readToken_numberSign();\n return;\n case 92:\n this.readWord();\n return;\n default:\n if (isIdentifierStart(code)) {\n this.readWord(code);\n return;\n }\n }\n throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), {\n unexpected: String.fromCodePoint(code)\n });\n }\n finishOp(type, size) {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n readRegexp() {\n const startLoc = this.state.startLoc;\n const start = this.state.start + 1;\n let escaped, inClass;\n let {\n pos\n } = this.state;\n for (;; ++pos) {\n if (pos >= this.length) {\n throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));\n }\n const ch = this.input.charCodeAt(pos);\n if (isNewLine(ch)) {\n throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));\n }\n if (escaped) {\n escaped = false;\n } else {\n if (ch === 91) {\n inClass = true;\n } else if (ch === 93 && inClass) {\n inClass = false;\n } else if (ch === 47 && !inClass) {\n break;\n }\n escaped = ch === 92;\n }\n }\n const content = this.input.slice(start, pos);\n ++pos;\n let mods = \"\";\n const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);\n while (pos < this.length) {\n const cp = this.codePointAtPos(pos);\n const char = String.fromCharCode(cp);\n if (VALID_REGEX_FLAGS.has(cp)) {\n if (cp === 118) {\n if (mods.includes(\"u\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n }\n } else if (cp === 117) {\n if (mods.includes(\"v\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n }\n }\n if (mods.includes(char)) {\n this.raise(Errors.DuplicateRegExpFlags, nextPos());\n }\n } else if (isIdentifierChar(cp) || cp === 92) {\n this.raise(Errors.MalformedRegExpFlags, nextPos());\n } else {\n break;\n }\n ++pos;\n mods += char;\n }\n this.state.pos = pos;\n this.finishToken(133, {\n pattern: content,\n flags: mods\n });\n }\n readInt(radix, len, forceLen = false, allowNumSeparator = true) {\n const {\n n,\n pos\n } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false);\n this.state.pos = pos;\n return n;\n }\n readRadixNumber(radix) {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isBigInt = false;\n this.state.pos += 2;\n const val = this.readInt(radix);\n if (val == null) {\n this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), {\n radix\n });\n }\n const next = this.input.charCodeAt(this.state.pos);\n if (next === 110) {\n ++this.state.pos;\n isBigInt = true;\n }\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n }\n if (isBigInt) {\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(132, str);\n return;\n }\n this.finishToken(131, val);\n }\n readNumber(startsWithDot) {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isFloat = false;\n let isBigInt = false;\n let isOctal = false;\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(Errors.InvalidNumber, this.state.curPosition());\n }\n const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (hasLeadingZero) {\n const integer = this.input.slice(start, this.state.pos);\n this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n if (!this.state.strict) {\n const underscorePos = integer.indexOf(\"_\");\n if (underscorePos > 0) {\n this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos));\n }\n }\n isOctal = hasLeadingZero && !/[89]/.test(integer);\n }\n let next = this.input.charCodeAt(this.state.pos);\n if (next === 46 && !isOctal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n if ((next === 69 || next === 101) && !isOctal) {\n next = this.input.charCodeAt(++this.state.pos);\n if (next === 43 || next === 45) {\n ++this.state.pos;\n }\n if (this.readInt(10) === null) {\n this.raise(Errors.InvalidOrMissingExponent, startLoc);\n }\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n const str = this.input.slice(start, this.state.pos).replaceAll(\"_\", \"\");\n if (next === 110) {\n if (isFloat || hasLeadingZero) {\n this.raise(Errors.InvalidBigIntLiteral, startLoc);\n }\n ++this.state.pos;\n isBigInt = true;\n }\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n }\n if (isBigInt) {\n this.finishToken(132, str);\n return;\n }\n const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(131, val);\n }\n readCodePoint(throwOnInvalid) {\n const {\n code,\n pos\n } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint);\n this.state.pos = pos;\n return code;\n }\n readString(quote) {\n const {\n str,\n pos,\n curLine,\n lineStart\n } = readStringContents(quote === 34 ? \"double\" : \"single\", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string);\n this.state.pos = pos + 1;\n this.state.lineStart = lineStart;\n this.state.curLine = curLine;\n this.finishToken(130, str);\n }\n readTemplateContinuation() {\n if (!this.match(4)) {\n this.unexpected(null, 4);\n }\n this.state.pos--;\n this.readTemplateToken();\n }\n readTemplateToken() {\n const opening = this.input[this.state.pos];\n const {\n str,\n firstInvalidLoc,\n pos,\n curLine,\n lineStart\n } = readStringContents(\"template\", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template);\n this.state.pos = pos + 1;\n this.state.lineStart = lineStart;\n this.state.curLine = curLine;\n if (firstInvalidLoc) {\n this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos));\n }\n if (this.input.codePointAt(pos) === 96) {\n this.finishToken(20, firstInvalidLoc ? null : opening + str + \"`\");\n } else {\n this.state.pos++;\n this.finishToken(21, firstInvalidLoc ? null : opening + str + \"${\");\n }\n }\n recordStrictModeErrors(toParseError, at) {\n const index = at.index;\n if (this.state.strict && !this.state.strictErrors.has(index)) {\n this.raise(toParseError, at);\n } else {\n this.state.strictErrors.set(index, [toParseError, at]);\n }\n }\n readWord1(firstCode) {\n this.state.containsEsc = false;\n let word = \"\";\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n if (firstCode !== undefined) {\n this.state.pos += firstCode <= 0xffff ? 1 : 2;\n }\n while (this.state.pos < this.length) {\n const ch = this.codePointAtPos(this.state.pos);\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) {\n this.state.containsEsc = true;\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.curPosition();\n const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n if (this.input.charCodeAt(++this.state.pos) !== 117) {\n this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n chunkStart = this.state.pos - 1;\n continue;\n }\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n }\n word += String.fromCodePoint(esc);\n }\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n readWord(firstCode) {\n const word = this.readWord1(firstCode);\n const type = keywords$1.get(word);\n if (type !== undefined) {\n this.finishToken(type, tokenLabelName(type));\n } else {\n this.finishToken(128, word);\n }\n }\n checkKeywordEscapes() {\n const {\n type\n } = this.state;\n if (tokenIsKeyword(type) && this.state.containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n reservedWord: tokenLabelName(type)\n });\n }\n }\n raise(toParseError, at, details = {}) {\n const loc = at instanceof Position ? at : typeof at === \"number\" ? this.getLoc(at) : this.optionFlags & 256 ? at.loc.start : this.getLoc(at.start);\n const pos = at instanceof Position ? loc.index : typeof at === \"number\" ? at : at.start;\n const error = toParseError(loc, pos, details);\n if (!(this.optionFlags & 4096)) throw error;\n if (!this.isLookahead) this.state.errors.push(error);\n return error;\n }\n raiseOverwrite(toParseError, at, details = {}) {\n const loc = at instanceof Position ? at : this.optionFlags & 256 ? at.loc.start : this.getLoc(at.start);\n const pos = at instanceof Position ? loc.index : at.start;\n const errors = this.state.errors;\n for (let i = errors.length - 1; i >= 0; i--) {\n const error = errors[i];\n if (error.pos === pos) {\n return errors[i] = toParseError(loc, pos, details);\n }\n if (error.pos < pos) break;\n }\n return this.raise(toParseError, loc, details);\n }\n updateContext(prevType) {}\n unexpected(loc, type) {\n throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, {\n expected: type ? tokenLabelName(type) : null\n });\n }\n expectPlugin(pluginName, loc) {\n if (this.hasPlugin(pluginName)) {\n return true;\n }\n throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, {\n missingPlugin: [pluginName]\n });\n }\n expectOnePlugin(pluginNames) {\n if (!pluginNames.some(name => this.hasPlugin(name))) {\n throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n missingPlugin: pluginNames\n });\n }\n }\n errorBuilder(error) {\n return (pos, lineStart, curLine) => {\n this.raise(error, buildPosition(pos, lineStart, curLine));\n };\n }\n errorHandlers_readInt = {\n invalidDigit: (pos, lineStart, curLine, radix) => {\n if (!(this.optionFlags & 4096)) return false;\n this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n radix\n });\n return true;\n },\n numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence),\n unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator)\n };\n errorHandlers_readCodePoint = {\n ...this.errorHandlers_readInt,\n invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint)\n };\n errorHandlers_readStringContents_string = {\n ...this.errorHandlers_readCodePoint,\n strictNumericEscape: (pos, lineStart, curLine) => {\n this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine));\n },\n unterminated: (pos, lineStart, curLine) => {\n throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine));\n }\n };\n errorHandlers_readStringContents_template = {\n ...this.errorHandlers_readCodePoint,\n strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n unterminated: (pos, lineStart, curLine) => {\n throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine));\n }\n };\n}\nclass ClassScope {\n privateNames = new Set();\n loneAccessors = new Map();\n undefinedPrivateNames = new Map();\n}\nclass ClassScopeHandler {\n parser;\n stack = [];\n constructor(parser) {\n this.parser = parser;\n }\n current() {\n return this.stack[this.stack.length - 1];\n }\n enter() {\n this.stack.push(new ClassScope());\n }\n exit() {\n const oldClassScope = this.stack.pop();\n const current = this.current();\n for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n if (current) {\n if (!current.undefinedPrivateNames.has(name)) {\n current.undefinedPrivateNames.set(name, loc);\n }\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n identifierName: name\n });\n }\n }\n }\n declarePrivateName(name, elementType, loc) {\n const {\n privateNames,\n loneAccessors,\n undefinedPrivateNames\n } = this.current();\n let redefined = privateNames.has(name);\n if (elementType & 3) {\n const accessor = redefined && loneAccessors.get(name);\n if (accessor) {\n const oldStatic = accessor & 4;\n const newStatic = elementType & 4;\n const oldKind = accessor & 3;\n const newKind = elementType & 3;\n redefined = oldKind === newKind || oldStatic !== newStatic;\n if (!redefined) loneAccessors.delete(name);\n } else if (!redefined) {\n loneAccessors.set(name, elementType);\n }\n }\n if (redefined) {\n this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n identifierName: name\n });\n }\n privateNames.add(name);\n undefinedPrivateNames.delete(name);\n }\n usePrivateName(name, loc) {\n let classScope;\n for (classScope of this.stack) {\n if (classScope.privateNames.has(name)) return;\n }\n if (classScope) {\n classScope.undefinedPrivateNames.set(name, loc);\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n identifierName: name\n });\n }\n }\n}\nclass ExpressionScope {\n constructor(type = 0) {\n this.type = type;\n }\n canBeArrowParameterDeclaration() {\n return this.type === 2 || this.type === 1;\n }\n isCertainlyParameterDeclaration() {\n return this.type === 3;\n }\n}\nclass ArrowHeadParsingScope extends ExpressionScope {\n declarationErrors = new Map();\n constructor(type) {\n super(type);\n }\n recordDeclarationError(ParsingErrorClass, index) {\n this.declarationErrors.set(index, ParsingErrorClass);\n }\n clearDeclarationError(index) {\n this.declarationErrors.delete(index);\n }\n iterateErrors(iterator) {\n this.declarationErrors.forEach(iterator);\n }\n}\nclass ExpressionScopeHandler {\n parser;\n stack = [new ExpressionScope()];\n constructor(parser) {\n this.parser = parser;\n }\n enter(scope) {\n this.stack.push(scope);\n }\n exit() {\n this.stack.pop();\n }\n recordParameterInitializerError(toParseError, loc) {\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n while (!scope.isCertainlyParameterDeclaration()) {\n if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(toParseError, loc);\n } else {\n return;\n }\n scope = stack[--i];\n }\n this.parser.raise(toParseError, loc);\n }\n recordArrowParameterBindingError(error, node) {\n const {\n stack\n } = this;\n const scope = stack[stack.length - 1];\n const origin = node.start;\n if (scope.isCertainlyParameterDeclaration()) {\n this.parser.raise(error, origin);\n } else if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(error, origin);\n } else {\n return;\n }\n }\n recordAsyncArrowParametersError(at) {\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n while (scope.canBeArrowParameterDeclaration()) {\n if (scope.type === 2) {\n scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n }\n scope = stack[--i];\n }\n }\n validateAsPattern() {\n const {\n stack\n } = this;\n const currentScope = stack[stack.length - 1];\n if (!currentScope.canBeArrowParameterDeclaration()) return;\n currentScope.iterateErrors((toParseError, key) => {\n this.parser.raise(toParseError, key);\n let i = stack.length - 2;\n let scope = stack[i];\n while (scope.canBeArrowParameterDeclaration()) {\n scope.clearDeclarationError(key);\n scope = stack[--i];\n }\n });\n }\n}\nfunction newParameterDeclarationScope() {\n return new ExpressionScope(3);\n}\nfunction newArrowHeadScope() {\n return new ArrowHeadParsingScope(1);\n}\nfunction newAsyncArrowScope() {\n return new ArrowHeadParsingScope(2);\n}\nfunction newExpressionScope() {\n return new ExpressionScope();\n}\nclass ProductionParameterHandler {\n stacks = [];\n enter(flags) {\n this.stacks.push(flags);\n }\n exit() {\n this.stacks.pop();\n }\n currentFlags() {\n return this.stacks[this.stacks.length - 1];\n }\n get hasAwait() {\n return (this.currentFlags() & 2) > 0;\n }\n get hasYield() {\n return (this.currentFlags() & 1) > 0;\n }\n get hasReturn() {\n return (this.currentFlags() & 4) > 0;\n }\n get hasIn() {\n return (this.currentFlags() & 8) > 0;\n }\n get inFSharpPipelineDirectBody() {\n return (this.currentFlags() & 16) === 0;\n }\n}\nfunction functionFlags(isAsync, isGenerator) {\n return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0);\n}\nclass UtilParser extends Tokenizer {\n addExtra(node, key, value, enumerable = true) {\n if (!node) return;\n let {\n extra\n } = node;\n if (extra == null) {\n extra = {};\n node.extra = extra;\n }\n if (enumerable) {\n extra[key] = value;\n } else {\n Object.defineProperty(extra, key, {\n enumerable,\n value\n });\n }\n }\n isContextual(token) {\n return this.state.type === token && !this.state.containsEsc;\n }\n isUnparsedContextual(nameStart, name) {\n if (this.input.startsWith(name, nameStart)) {\n const nextCh = this.input.charCodeAt(nameStart + name.length);\n return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);\n }\n return false;\n }\n isLookaheadContextual(name) {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n eatContextual(token) {\n if (this.isContextual(token)) {\n this.next();\n return true;\n }\n return false;\n }\n expectContextual(token, toParseError) {\n if (!this.eatContextual(token)) {\n if (toParseError != null) {\n throw this.raise(toParseError, this.state.startLoc);\n }\n this.unexpected(null, token);\n }\n }\n canInsertSemicolon() {\n return this.match(135) || this.match(4) || this.hasPrecedingLineBreak();\n }\n hasPrecedingLineBreak() {\n return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start);\n }\n hasFollowingLineBreak() {\n return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n }\n isLineTerminator() {\n return this.eat(9) || this.canInsertSemicolon();\n }\n semicolon(allowAsi = true) {\n if (allowAsi ? this.isLineTerminator() : this.eat(9)) return;\n this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);\n }\n expect(type, loc) {\n if (!this.eat(type)) {\n this.unexpected(loc, type);\n }\n }\n tryParse(fn, oldState = this.state.clone()) {\n const abortSignal = {\n node: null\n };\n try {\n const node = fn((node = null) => {\n abortSignal.node = node;\n throw abortSignal;\n });\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n this.state.tokensLength = failState.tokensLength;\n return {\n node,\n error: failState.errors[oldState.errors.length],\n thrown: false,\n aborted: false,\n failState\n };\n }\n return {\n node: node,\n error: null,\n thrown: false,\n aborted: false,\n failState: null\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n if (error instanceof SyntaxError) {\n return {\n node: null,\n error,\n thrown: true,\n aborted: false,\n failState\n };\n }\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState\n };\n }\n throw error;\n }\n }\n checkExpressionErrors(refExpressionErrors, andThrow) {\n if (!refExpressionErrors) return false;\n const {\n shorthandAssignLoc,\n doubleProtoLoc,\n privateKeyLoc,\n optionalParametersLoc,\n voidPatternLoc\n } = refExpressionErrors;\n const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc;\n if (!andThrow) {\n return hasErrors;\n }\n if (shorthandAssignLoc != null) {\n this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n }\n if (doubleProtoLoc != null) {\n this.raise(Errors.DuplicateProto, doubleProtoLoc);\n }\n if (privateKeyLoc != null) {\n this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n }\n if (optionalParametersLoc != null) {\n this.unexpected(optionalParametersLoc);\n }\n if (voidPatternLoc != null) {\n this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc);\n }\n }\n isLiteralPropertyName() {\n return tokenIsLiteralPropertyName(this.state.type);\n }\n isPrivateName(node) {\n return node.type === \"PrivateName\";\n }\n getPrivateNameSV(node) {\n return node.id.name;\n }\n hasPropertyAsPrivateName(node) {\n return (node.type === \"MemberExpression\" || node.type === \"OptionalMemberExpression\") && this.isPrivateName(node.property);\n }\n isObjectProperty(node) {\n return node.type === \"ObjectProperty\";\n }\n isObjectMethod(node) {\n return node.type === \"ObjectMethod\";\n }\n initializeScopes(inModule = this.options.sourceType === \"module\") {\n const oldLabels = this.state.labels;\n this.state.labels = [];\n const oldExportedIdentifiers = this.exportedIdentifiers;\n this.exportedIdentifiers = new Set();\n const oldInModule = this.inModule;\n this.inModule = inModule;\n const oldScope = this.scope;\n const ScopeHandler = this.getScopeHandler();\n this.scope = new ScopeHandler(this, inModule);\n const oldProdParam = this.prodParam;\n this.prodParam = new ProductionParameterHandler();\n const oldClassScope = this.classScope;\n this.classScope = new ClassScopeHandler(this);\n const oldExpressionScope = this.expressionScope;\n this.expressionScope = new ExpressionScopeHandler(this);\n return () => {\n this.state.labels = oldLabels;\n this.exportedIdentifiers = oldExportedIdentifiers;\n this.inModule = oldInModule;\n this.scope = oldScope;\n this.prodParam = oldProdParam;\n this.classScope = oldClassScope;\n this.expressionScope = oldExpressionScope;\n };\n }\n enterInitialScopes() {\n let paramFlags = 0;\n if (this.inModule || this.optionFlags & 1) {\n paramFlags |= 2;\n }\n if (this.optionFlags & 32) {\n paramFlags |= 1;\n }\n const isCommonJS = !this.inModule && this.options.sourceType === \"commonjs\";\n if (isCommonJS || this.optionFlags & 2) {\n paramFlags |= 4;\n }\n this.prodParam.enter(paramFlags);\n let scopeFlags = isCommonJS ? 514 : 1;\n if (this.optionFlags & 4) {\n scopeFlags |= 512;\n }\n if (this.optionFlags & 16) {\n scopeFlags |= 16 | 32;\n }\n this.scope.enter(scopeFlags);\n }\n checkDestructuringPrivate(refExpressionErrors) {\n const {\n privateKeyLoc\n } = refExpressionErrors;\n if (privateKeyLoc !== null) {\n this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n }\n }\n}\nclass ExpressionErrors {\n shorthandAssignLoc = null;\n doubleProtoLoc = null;\n privateKeyLoc = null;\n optionalParametersLoc = null;\n voidPatternLoc = null;\n}\nclass Node {\n constructor(optionFlags, filename, pos, loc) {\n this.start = pos;\n this.end = 0;\n if (loc !== undefined) this.loc = new SourceLocation(loc);\n if (optionFlags & 128) this.range = [pos, 0];\n if (loc !== undefined && filename) {\n this.loc.filename = filename;\n }\n }\n type = \"\";\n}\nconst NodePrototype = Node.prototype;\nclass NodeUtils extends UtilParser {\n createPosition(loc) {\n return loc;\n }\n startNode() {\n const {\n startLoc\n } = this.state;\n this.setLoc(startLoc);\n return this.startNodeAt(startLoc);\n }\n startNodeAt(loc) {\n const {\n optionFlags,\n filename\n } = this;\n if (!(optionFlags & 256)) {\n return new Node(optionFlags, filename, loc.index);\n }\n return new Node(optionFlags, filename, loc.index, this.createPosition(loc));\n }\n startNodeAtNode(type) {\n const {\n optionFlags,\n filename\n } = this;\n if (!(optionFlags & 256)) {\n return new Node(optionFlags, filename, type.start);\n }\n return new Node(optionFlags, filename, type.start, type.loc.start);\n }\n finishNode(node, type) {\n return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n }\n finishNodeAt(node, type, endLoc) {\n node.type = type;\n node.end = endLoc.index;\n const {\n optionFlags\n } = this;\n if (optionFlags & 256) {\n node.loc.end = this.createPosition(endLoc);\n }\n if (optionFlags & 128) node.range[1] = endLoc.index;\n if (optionFlags & 8192) this.processComment(node);\n return node;\n }\n finishNodeAtNode(node, type, endNode) {\n node.type = type;\n node.end = endNode.end;\n const {\n optionFlags\n } = this;\n if (optionFlags & 256) {\n node.loc.end = endNode.loc.end;\n }\n if (optionFlags & 128) node.range[1] = node.end;\n if (optionFlags & 8192) this.processComment(node);\n return node;\n }\n resetStartLocation(node, startLoc) {\n node.start = startLoc.index;\n const {\n optionFlags\n } = this;\n if (optionFlags & 256) {\n node.loc.start = this.createPosition(startLoc);\n }\n if (optionFlags & 128) node.range[0] = startLoc.index;\n }\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n node.end = endLoc.index;\n const {\n optionFlags\n } = this;\n if (optionFlags & 256) {\n node.loc.end = this.createPosition(endLoc);\n }\n if (optionFlags & 128) node.range[1] = endLoc.index;\n }\n resetStartLocationFromNode(node, locationNode) {\n node.start = locationNode.start;\n const {\n optionFlags\n } = this;\n if (optionFlags & 256) {\n node.loc.start = locationNode.loc.start;\n }\n if (optionFlags & 128) node.range[0] = locationNode.start;\n }\n resetEndLocationFromNode(node, locationNode) {\n node.end = locationNode.end;\n const {\n optionFlags\n } = this;\n if (optionFlags & 256) {\n node.loc.end = locationNode.loc.end;\n }\n if (optionFlags & 128) node.range[1] = locationNode.end;\n }\n castNodeTo(node, type) {\n node.type = type;\n return node;\n }\n cloneIdentifier(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n name\n } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.name = name;\n if (node.extra) cloned.extra = node.extra;\n return cloned;\n }\n cloneStringLiteral(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n extra\n } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.extra = extra;\n cloned.value = node.value;\n return cloned;\n }\n}\nconst unwrapParenthesizedExpression = node => {\n return node.type === \"ParenthesizedExpression\" ? unwrapParenthesizedExpression(node.expression) : node;\n};\nclass LValParser extends NodeUtils {\n toAssignable(node, isLHS = false) {\n let parenthesized = undefined;\n if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n parenthesized = unwrapParenthesizedExpression(node);\n if (isLHS) {\n if (parenthesized.type === \"Identifier\") {\n this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node);\n } else if (parenthesized.type !== \"CallExpression\" && parenthesized.type !== \"MemberExpression\" && !this.isOptionalMemberExpression(parenthesized)) {\n this.raise(Errors.InvalidParenthesizedAssignment, node);\n }\n } else {\n this.raise(Errors.InvalidParenthesizedAssignment, node);\n }\n }\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n case \"VoidPattern\":\n break;\n case \"ObjectExpression\":\n this.castNodeTo(node, \"ObjectPattern\");\n for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n if (isLast && prop.type === \"RestElement\" && node.extra?.trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n }\n }\n break;\n case \"ObjectProperty\":\n {\n const {\n key,\n value\n } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.start);\n }\n this.toAssignable(value, isLHS);\n break;\n }\n case \"SpreadElement\":\n {\n throw new Error(\"Internal @babel/parser error (this is a bug, please report it).\" + \" SpreadElement should be converted by .toAssignable's caller.\");\n }\n case \"ArrayExpression\":\n this.castNodeTo(node, \"ArrayPattern\");\n this.toAssignableList(node.elements, node.extra?.trailingCommaLoc, isLHS);\n break;\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(Errors.MissingEqInAssignment, this.optionFlags & 256 ? node.left.loc.end : node.left);\n }\n this.castNodeTo(node, \"AssignmentPattern\");\n delete node.operator;\n if (node.left.type === \"VoidPattern\") {\n this.raise(Errors.VoidPatternInitializer, node.left);\n }\n this.toAssignable(node.left, isLHS);\n break;\n case \"ParenthesizedExpression\":\n this.toAssignable(parenthesized, isLHS);\n break;\n }\n }\n toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n if (prop.type === \"ObjectMethod\") {\n this.raise(prop.kind === \"get\" || prop.kind === \"set\" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key);\n } else if (prop.type === \"SpreadElement\") {\n this.castNodeTo(prop, \"RestElement\");\n const arg = prop.argument;\n this.checkToRestConversion(arg, false);\n this.toAssignable(arg, isLHS);\n if (!isLast) {\n this.raise(Errors.RestTrailingComma, prop);\n }\n } else {\n this.toAssignable(prop, isLHS);\n }\n }\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n const end = exprList.length - 1;\n for (let i = 0; i <= end; i++) {\n const elt = exprList[i];\n if (!elt) continue;\n this.toAssignableListItem(exprList, i, isLHS);\n if (elt.type === \"RestElement\") {\n if (i < end) {\n this.raise(Errors.RestTrailingComma, elt);\n } else if (trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n }\n }\n }\n }\n toAssignableListItem(exprList, index, isLHS) {\n const node = exprList[index];\n if (node.type === \"SpreadElement\") {\n this.castNodeTo(node, \"RestElement\");\n const arg = node.argument;\n this.checkToRestConversion(arg, true);\n this.toAssignable(arg, isLHS);\n } else {\n this.toAssignable(node, isLHS);\n }\n }\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n case \"VoidPattern\":\n return true;\n case \"ObjectExpression\":\n {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return prop.type !== \"ObjectMethod\" && (i === last || prop.type !== \"SpreadElement\") && this.isAssignable(prop);\n });\n }\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n case \"ArrayExpression\":\n return node.elements.every(element => element === null || this.isAssignable(element));\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n case \"ParenthesizedExpression\":\n return this.isAssignable(node.expression);\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n default:\n return false;\n }\n }\n toReferencedList(exprList, isParenthesizedExpr) {\n return exprList;\n }\n parseSpread(refExpressionErrors) {\n const node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined);\n return this.finishNode(node, \"SpreadElement\");\n }\n parseRestBinding() {\n const node = this.startNode();\n this.next();\n const argument = this.parseBindingAtom();\n if (argument.type === \"VoidPattern\") {\n this.raise(Errors.UnexpectedVoidPattern, argument);\n }\n node.argument = argument;\n return this.finishNode(node, \"RestElement\");\n }\n parseBindingAtom() {\n switch (this.state.type) {\n case 0:\n {\n const node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(1, 93, 1);\n return this.finishNode(node, \"ArrayPattern\");\n }\n case 2:\n return this.parseObjectLike(4, true);\n case 84:\n return this.parseVoidPattern(null);\n }\n return this.parseIdentifier();\n }\n parseBindingList(close, closeCharCode, flags) {\n const allowEmpty = flags & 1;\n const elts = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(8);\n }\n if (allowEmpty && this.match(8)) {\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(17)) {\n let rest = this.parseRestBinding();\n if (flags & 2) {\n rest = this.parseFunctionParamType(rest);\n }\n elts.push(rest);\n if (!this.checkCommaAfterRest(closeCharCode)) {\n this.expect(close);\n break;\n }\n } else {\n const decorators = [];\n if (flags & 2) {\n if (this.match(22) && this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);\n }\n while (this.match(22)) {\n decorators.push(this.parseDecorator());\n }\n }\n elts.push(this.parseBindingElement(flags, decorators));\n }\n }\n return elts;\n }\n parseBindingRestProperty(prop) {\n this.next();\n if (this.hasPlugin(\"discardBinding\") && this.match(84)) {\n prop.argument = this.parseVoidPattern(null);\n this.raise(Errors.UnexpectedVoidPattern, prop.argument);\n } else {\n prop.argument = this.parseIdentifier();\n }\n this.checkCommaAfterRest(125);\n return this.finishNode(prop, \"RestElement\");\n }\n parseBindingProperty() {\n const {\n type,\n startLoc\n } = this.state;\n if (type === 17) {\n return this.parseBindingRestProperty(this.startNode());\n }\n const prop = this.startNode();\n if (type === 134) {\n this.expectPlugin(\"destructuringPrivate\", startLoc);\n this.classScope.usePrivateName(this.state.value, startLoc);\n prop.key = this.parsePrivateName();\n } else {\n this.parsePropertyName(prop);\n }\n prop.method = false;\n return this.parseObjPropValue(prop, startLoc, false, false, true, false);\n }\n parseBindingElement(flags, decorators) {\n const {\n startLoc\n } = this.state;\n const left = this.parseMaybeDefault();\n if (flags & 2) {\n this.parseFunctionParamType(left);\n }\n if (decorators.length) {\n left.decorators = decorators;\n this.resetStartLocationFromNode(left, decorators[0]);\n }\n const elt = this.parseMaybeDefault(startLoc, left);\n return elt;\n }\n parseFunctionParamType(param) {\n return param;\n }\n parseMaybeDefault(startLoc, left) {\n startLoc ??= this.state.startLoc;\n left = left ?? this.parseBindingAtom();\n if (!this.eat(25)) return left;\n const node = this.startNodeAt(startLoc);\n if (left.type === \"VoidPattern\") {\n this.raise(Errors.VoidPatternInitializer, left);\n }\n node.left = left;\n node.right = this.parseMaybeAssignAllowIn();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {\n switch (type) {\n case \"AssignmentPattern\":\n return \"left\";\n case \"RestElement\":\n return \"argument\";\n case \"ObjectProperty\":\n return \"value\";\n case \"ParenthesizedExpression\":\n return \"expression\";\n case \"ArrayPattern\":\n return \"elements\";\n case \"ObjectPattern\":\n return \"properties\";\n case \"VoidPattern\":\n return true;\n case \"CallExpression\":\n if (!disallowCallExpression && !this.state.strict && this.optionFlags & 16384) {\n return true;\n }\n }\n return false;\n }\n isOptionalMemberExpression(expression) {\n return expression.type === \"OptionalMemberExpression\";\n }\n checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false, disallowCallExpression = false) {\n const type = expression.type;\n if (this.isObjectMethod(expression)) return;\n const isOptionalMemberExpression = this.isOptionalMemberExpression(expression);\n if (isOptionalMemberExpression || type === \"MemberExpression\") {\n if (isOptionalMemberExpression) {\n this.expectPlugin(\"optionalChainingAssign\", expression.start);\n if (ancestor.type !== \"AssignmentExpression\") {\n this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n ancestor\n });\n }\n }\n if (binding !== 64) {\n this.raise(Errors.InvalidPropertyBindingPattern, expression);\n }\n return;\n }\n if (type === \"Identifier\") {\n this.checkIdentifier(expression, binding, strictModeChanged);\n const {\n name\n } = expression;\n if (checkClashes) {\n if (checkClashes.has(name)) {\n this.raise(Errors.ParamDupe, expression);\n } else {\n checkClashes.add(name);\n }\n }\n return;\n } else if (type === \"VoidPattern\" && ancestor.type === \"CatchClause\") {\n this.raise(Errors.VoidPatternCatchClauseParam, expression);\n }\n const unwrappedExpression = unwrapParenthesizedExpression(expression);\n disallowCallExpression ||= unwrappedExpression.type === \"CallExpression\" && (unwrappedExpression.callee.type === \"Import\" || unwrappedExpression.callee.type === \"Super\");\n const validity = this.isValidLVal(type, disallowCallExpression, !(hasParenthesizedAncestor || expression.extra?.parenthesized) && ancestor.type === \"AssignmentExpression\", binding);\n if (validity === true) return;\n if (validity === false) {\n const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding;\n this.raise(ParseErrorClass, expression, {\n ancestor\n });\n return;\n }\n let key, isParenthesizedExpression;\n if (typeof validity === \"string\") {\n key = validity;\n isParenthesizedExpression = type === \"ParenthesizedExpression\";\n } else {\n [key, isParenthesizedExpression] = validity;\n }\n const nextAncestor = type === \"ArrayPattern\" || type === \"ObjectPattern\" ? {\n type\n } : ancestor;\n const val = expression[key];\n if (Array.isArray(val)) {\n for (const child of val) {\n if (child) {\n this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, true);\n }\n }\n } else if (val) {\n this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, disallowCallExpression);\n }\n }\n checkIdentifier(at, bindingType, strictModeChanged = false) {\n if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {\n if (bindingType === 64) {\n this.raise(Errors.StrictEvalArguments, at, {\n referenceName: at.name\n });\n } else {\n this.raise(Errors.StrictEvalArgumentsBinding, at, {\n bindingName: at.name\n });\n }\n }\n if (bindingType & 8192 && at.name === \"let\") {\n this.raise(Errors.LetInLexicalBinding, at);\n }\n if (!(bindingType & 64)) {\n this.declareNameFromIdentifier(at, bindingType);\n }\n }\n declareNameFromIdentifier(identifier, binding) {\n this.scope.declareName(identifier.name, binding, identifier.start);\n }\n checkToRestConversion(node, allowPattern) {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.checkToRestConversion(node.expression, allowPattern);\n break;\n case \"Identifier\":\n case \"MemberExpression\":\n break;\n case \"ArrayExpression\":\n case \"ObjectExpression\":\n if (allowPattern) break;\n default:\n this.raise(Errors.InvalidRestAssignmentPattern, node);\n }\n }\n checkCommaAfterRest(close) {\n if (!this.match(8)) {\n return false;\n }\n this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc);\n return true;\n }\n}\nclass ExpressionParser extends LValParser {\n checkProto(prop, sawProto, refExpressionErrors) {\n if (prop.type === \"SpreadElement\" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {\n return sawProto;\n }\n const key = prop.key;\n const name = key.type === \"Identifier\" ? key.name : key.value;\n if (name === \"__proto__\") {\n if (sawProto) {\n if (refExpressionErrors) {\n if (refExpressionErrors.doubleProtoLoc === null) {\n refExpressionErrors.doubleProtoLoc = this.getLoc(key.start);\n }\n } else {\n this.raise(Errors.DuplicateProto, key);\n }\n }\n return true;\n }\n return sawProto;\n }\n shouldExitDescending(expr) {\n return expr.type === \"ArrowFunctionExpression\" && !expr.extra?.parenthesized;\n }\n getExpression() {\n this.enterInitialScopes();\n this.nextToken();\n if (this.match(135)) {\n throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc);\n }\n const expr = this.parseExpression();\n if (!this.match(135)) {\n throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, {\n unexpected: this.input.codePointAt(this.state.start)\n });\n }\n this.finalizeRemainingComments();\n expr.comments = this.comments;\n expr.errors = this.state.errors;\n if (this.optionFlags & 512) {\n expr.tokens = createExportedTokens(this.tokens);\n }\n return expr;\n }\n parseExpression(disallowIn, refExpressionErrors) {\n if (disallowIn) {\n return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n parseExpressionBase(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(refExpressionErrors);\n if (this.match(8)) {\n const node = this.startNodeAt(startLoc);\n node.expressions = [expr];\n while (this.eat(8)) {\n node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n }\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n }\n parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {\n return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {\n return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n setOptionalParametersError(refExpressionErrors) {\n refExpressionErrors.optionalParametersLoc = this.state.startLoc;\n }\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n const startLoc = this.state.startLoc;\n const isYield = this.isContextual(104);\n if (isYield) {\n if (this.prodParam.hasYield) {\n this.next();\n let left = this.parseYield(startLoc);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startLoc);\n }\n return left;\n }\n }\n let ownExpressionErrors;\n if (refExpressionErrors) {\n ownExpressionErrors = false;\n } else {\n refExpressionErrors = new ExpressionErrors();\n ownExpressionErrors = true;\n }\n this.state.canStartArrow = true;\n let left = this.parseMaybeConditional(refExpressionErrors);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startLoc);\n }\n if (tokenIsAssignment(this.state.type)) {\n const node = this.startNodeAt(startLoc);\n const operator = this.state.value;\n node.operator = operator;\n if (this.match(25)) {\n this.toAssignable(left, true);\n node.left = left;\n const startIndex = startLoc.index;\n if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) {\n refExpressionErrors.doubleProtoLoc = null;\n }\n if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) {\n refExpressionErrors.shorthandAssignLoc = null;\n }\n if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) {\n this.checkDestructuringPrivate(refExpressionErrors);\n refExpressionErrors.privateKeyLoc = null;\n }\n if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) {\n refExpressionErrors.voidPatternLoc = null;\n }\n } else {\n node.left = left;\n }\n this.next();\n node.right = this.parseMaybeAssign();\n this.checkLVal(left, this.finishNode(node, \"AssignmentExpression\"), undefined, undefined, undefined, undefined, operator === \"||=\" || operator === \"&&=\" || operator === \"??=\");\n return node;\n } else if (ownExpressionErrors) {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n if (isYield) {\n const {\n type\n } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(50);\n if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc);\n return this.parseYield(startLoc);\n }\n }\n return left;\n }\n parseMaybeConditional(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const expr = this.parseExprOps(refExpressionErrors);\n if (this.shouldExitDescending(expr)) {\n return expr;\n }\n return this.parseConditional(expr, startLoc, refExpressionErrors);\n }\n parseConditional(expr, startLoc, refExpressionErrors) {\n if (this.eat(13)) {\n const node = this.startNodeAt(startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssignAllowIn();\n this.expect(10);\n node.alternate = this.parseMaybeAssign();\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n }\n parseMaybeUnaryOrPrivate(refExpressionErrors) {\n return this.match(134) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);\n }\n parseExprOps(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n if (this.shouldExitDescending(expr)) {\n return expr;\n }\n this.state.canStartArrow = false;\n return this.parseExprOp(expr, startLoc, -1);\n }\n parseExprOp(left, leftStartLoc, minPrec) {\n if (this.isPrivateName(left)) {\n const value = this.getPrivateNameSV(left);\n if (minPrec >= tokenOperatorPrecedence(54) || !this.prodParam.hasIn || !this.match(54)) {\n this.raise(Errors.PrivateInExpectedIn, leftStartLoc, {\n identifierName: value\n });\n }\n this.classScope.usePrivateName(value, leftStartLoc);\n }\n const op = this.state.type;\n if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(54))) {\n let prec = tokenOperatorPrecedence(op);\n if (prec > minPrec) {\n if (op === 35) {\n this.expectPlugin(\"pipelineOperator\");\n if (this.prodParam.inFSharpPipelineDirectBody) {\n return left;\n }\n }\n const node = this.startNodeAt(leftStartLoc);\n node.left = left;\n node.operator = this.state.value;\n const logical = op === 37 || op === 38;\n const coalesce = op === 36;\n if (coalesce) {\n prec = tokenOperatorPrecedence(38);\n }\n this.next();\n node.right = this.parseExprOpRightExpr(op, prec);\n const finishedNode = this.finishNode(node, logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\");\n const nextOp = this.state.type;\n if (coalesce && (nextOp === 37 || nextOp === 38) || logical && nextOp === 36) {\n throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc);\n }\n return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n }\n }\n return left;\n }\n parseExprOpRightExpr(op, prec) {\n switch (op) {\n case 35:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"hack\":\n return this.withTopicBindingContext(() => {\n return this.parseHackPipeBody();\n });\n case \"fsharp\":\n return this.parseFSharpPipelineBody(prec);\n }\n default:\n return this.parseExprOpBaseRightExpr(op, prec);\n }\n }\n parseExprOpBaseRightExpr(op, prec) {\n const startLoc = this.state.startLoc;\n return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);\n }\n parseHackPipeBody() {\n const {\n startLoc\n } = this.state;\n const body = this.parseMaybeAssign();\n const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);\n if (requiredParentheses && !body.extra?.parenthesized) {\n this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n type: body.type\n });\n }\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(Errors.PipeTopicUnused, startLoc);\n }\n return body;\n }\n checkExponentialAfterUnary(node) {\n if (this.match(53)) {\n this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n }\n }\n parseMaybeUnary(refExpressionErrors, sawUnary) {\n const startLoc = this.state.startLoc;\n const isAwait = this.isContextual(92);\n if (isAwait && this.recordAwaitIfAllowed()) {\n this.next();\n const expr = this.parseAwait(startLoc);\n if (!sawUnary) this.checkExponentialAfterUnary(expr);\n return expr;\n }\n const update = this.match(30);\n const node = this.startNode();\n if (tokenIsPrefix(this.state.type)) {\n node.operator = this.state.value;\n node.prefix = true;\n this.state.canStartArrow = false;\n if (this.match(68)) {\n this.expectPlugin(\"throwExpressions\");\n }\n const isDelete = this.match(85);\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refExpressionErrors, true);\n if (this.state.strict && isDelete) {\n const arg = node.argument;\n if (arg.type === \"Identifier\") {\n this.raise(Errors.StrictDelete, node);\n } else if (this.hasPropertyAsPrivateName(arg)) {\n this.raise(Errors.DeletePrivateField, node);\n }\n }\n if (!update) {\n if (!sawUnary) {\n this.checkExponentialAfterUnary(node);\n }\n return this.finishNode(node, \"UnaryExpression\");\n }\n }\n const expr = this.parseUpdate(node, update, refExpressionErrors);\n if (isAwait) {\n const {\n type\n } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(50);\n if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n return this.parseAwait(startLoc);\n }\n }\n return expr;\n }\n parseUpdate(node, update, refExpressionErrors) {\n if (update) {\n const result = this.finishNode(node, \"UpdateExpression\");\n this.checkLVal(result.argument, result);\n return result;\n }\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refExpressionErrors);\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.next();\n this.checkLVal(expr, expr = this.finishNode(node, \"UpdateExpression\"));\n }\n return expr;\n }\n parseExprSubscripts(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n this.setLoc(startLoc);\n const expr = this.parseExprAtom(refExpressionErrors);\n if (this.shouldExitDescending(expr)) {\n return expr;\n }\n return this.parseSubscripts(expr, startLoc);\n }\n parseSubscripts(base, startLoc, noCalls) {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n stop: false\n };\n do {\n base = this.parseSubscript(base, startLoc, noCalls, state);\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n return base;\n }\n parseSubscript(base, startLoc, noCalls, state) {\n const {\n type\n } = this.state;\n if (!noCalls && type === 11) {\n return this.parseBind(base, startLoc, state);\n } else if (tokenIsTemplate(type)) {\n return this.parseTaggedTemplateExpression(base, startLoc, state);\n }\n let optional = false;\n if (type === 14) {\n if (noCalls) {\n this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n if (this.lookaheadCharCode() === 40) {\n return this.stopParseSubscript(base, state);\n }\n }\n state.optionalChainMember = optional = true;\n this.next();\n }\n if (!noCalls && this.match(6)) {\n return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional);\n } else {\n const computed = this.eat(0);\n if (computed || optional || this.eat(12)) {\n return this.parseMember(base, startLoc, state, computed, optional);\n } else {\n return this.stopParseSubscript(base, state);\n }\n }\n }\n stopParseSubscript(base, state) {\n state.stop = true;\n return base;\n }\n parseMember(base, startLoc, state, computed, optional) {\n const node = this.startNodeAt(startLoc);\n node.object = base;\n node.computed = computed;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(1);\n } else if (this.match(134)) {\n if (base.type === \"Super\") {\n this.raise(Errors.SuperPrivateField, startLoc);\n }\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n if (state.optionalChainMember) {\n node.optional = optional;\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else {\n return this.finishNode(node, \"MemberExpression\");\n }\n }\n parseBind(base, startLoc, state) {\n const node = this.startNodeAt(startLoc);\n node.object = base;\n this.next();\n const isImport = this.match(79);\n const callee = this.parseNoCallExpr();\n if (callee.type === \"Super\" || isImport && callee.type === \"ImportExpression\" || callee.type === \"Import\") {\n throw this.raise(Errors.UnsupportedBindRHS, callee);\n }\n node.callee = callee;\n state.stop = true;\n return this.parseSubscripts(this.finishNode(node, \"BindExpression\"), startLoc, false);\n }\n parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) {\n let refExpressionErrors = null;\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n const {\n maybeAsyncArrow,\n optionalChainMember\n } = state;\n if (maybeAsyncArrow) {\n this.expressionScope.enter(newAsyncArrowScope());\n refExpressionErrors = new ExpressionErrors();\n }\n if (optionalChainMember) {\n node.optional = optional;\n }\n if (optional) {\n node.arguments = this.parseCallExpressionArguments();\n } else {\n node.arguments = this.parseCallExpressionArguments(base.type !== \"Super\", node, refExpressionErrors);\n }\n let finishedNode = this.finishCallExpression(node, optionalChainMember);\n if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n state.stop = true;\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode);\n } else {\n if (maybeAsyncArrow) {\n this.checkExpressionErrors(refExpressionErrors, true);\n this.expressionScope.exit();\n }\n this.toReferencedList(node.arguments);\n }\n return finishedNode;\n }\n parseTaggedTemplateExpression(base, startLoc, state) {\n const node = this.startNodeAt(startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n if (state.optionalChainMember) {\n this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n }\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n atPossibleAsyncArrow(base) {\n return base.type === \"Identifier\" && base.name === \"async\" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.state.canStartArrow;\n }\n finishCallExpression(node, optional) {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length === 0 || node.arguments.length > 2) {\n this.raise(Errors.ImportCallArity, node);\n } else {\n for (const arg of node.arguments) {\n if (arg.type === \"SpreadElement\") {\n this.raise(Errors.ImportCallSpreadArgument, arg);\n }\n }\n }\n }\n return this.finishNode(node, optional ? \"OptionalCallExpression\" : \"CallExpression\");\n }\n parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) {\n const elts = [];\n let first = true;\n while (!this.eat(7)) {\n if (first) {\n first = false;\n } else {\n this.expect(8);\n if (this.match(7)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n this.next();\n break;\n }\n }\n elts.push(this.parseExprListItem(7, false, refExpressionErrors, allowPlaceholder));\n }\n return elts;\n }\n shouldParseAsyncArrow() {\n return this.match(15) && !this.canInsertSemicolon();\n }\n parseAsyncArrowFromCallExpression(node, call) {\n this.resetPreviousNodeTrailingComments(call);\n this.expect(15);\n this.parseArrowExpression(node, call.arguments, true, call.extra?.trailingCommaLoc);\n if (call.innerComments) {\n setInnerComments(node, call.innerComments);\n }\n if (call.callee.trailingComments) {\n setInnerComments(node, call.callee.trailingComments);\n }\n return node;\n }\n parseNoCallExpr() {\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n }\n parseExprAtom(refExpressionErrors) {\n let node;\n let decorators = null;\n const {\n type\n } = this.state;\n switch (type) {\n case 75:\n return this.parseSuper();\n case 79:\n node = this.startNode();\n this.next();\n if (this.match(12)) {\n return this.parseImportMetaPropertyOrPhaseCall(node);\n }\n if (this.match(6)) {\n if (this.optionFlags & 1024) {\n return this.parseImportCall(node);\n } else {\n return this.finishNode(node, \"Import\");\n }\n } else {\n this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);\n return this.finishNode(node, \"Import\");\n }\n case 74:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n case 86:\n {\n return this.parseDo(this.startNode(), false);\n }\n case 52:\n case 27:\n {\n this.readRegexp();\n return this.parseRegExpLiteral(this.state.value);\n }\n case 131:\n return this.parseNumericLiteral(this.state.value);\n case 132:\n return this.parseBigIntLiteral(this.state.value);\n case 130:\n return this.parseStringLiteral(this.state.value);\n case 80:\n return this.parseNullLiteral();\n case 81:\n return this.parseBooleanLiteral(true);\n case 82:\n return this.parseBooleanLiteral(false);\n case 6:\n {\n return this.parseParenAndDistinguishExpression(this.state.canStartArrow);\n }\n case 0:\n {\n return this.parseArrayLike(1, refExpressionErrors);\n }\n case 2:\n {\n return this.parseObjectLike(4, false, refExpressionErrors);\n }\n case 64:\n return this.parseFunctionOrFunctionSent();\n case 22:\n decorators = this.parseDecorators();\n case 76:\n return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false);\n case 73:\n return this.parseNewOrNewTarget();\n case 21:\n case 20:\n return this.parseTemplate(false);\n case 11:\n {\n node = this.startNode();\n this.next();\n node.object = null;\n const callee = node.callee = this.parseNoCallExpr();\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(Errors.UnsupportedBind, callee);\n }\n }\n case 134:\n {\n this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n identifierName: this.state.value\n });\n return this.parsePrivateName();\n }\n case 29:\n {\n return this.parseTopicReferenceThenEqualsSign(50, \"%\");\n }\n case 28:\n {\n return this.parseTopicReferenceThenEqualsSign(40, \"^\");\n }\n case 33:\n case 34:\n {\n return this.parseTopicReference(\"hack\");\n }\n case 40:\n case 50:\n case 23:\n {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n if (pipeProposal) {\n return this.parseTopicReference(pipeProposal);\n }\n throw this.unexpected();\n }\n case 43:\n {\n const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {\n throw this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n }\n throw this.unexpected();\n }\n default:\n if (tokenIsIdentifier(type)) {\n if (this.isContextual(123) && this.lookaheadInLineCharCode() === 123) {\n return this.parseModuleExpression();\n }\n const {\n canStartArrow,\n containsEsc\n } = this.state;\n const id = this.parseIdentifier();\n if (!containsEsc && id.name === \"async\" && !this.canInsertSemicolon()) {\n const {\n type\n } = this.state;\n if (type === 64) {\n this.resetPreviousNodeTrailingComments(id);\n this.next();\n return this.parseAsyncFunctionExpression(this.startNodeAtNode(id));\n } else if (tokenIsIdentifier(type)) {\n if (canStartArrow && this.lookaheadCharCode() === 61) {\n return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));\n } else {\n return id;\n }\n } else if (type === 86) {\n this.resetPreviousNodeTrailingComments(id);\n return this.parseDo(this.startNodeAtNode(id), true);\n }\n }\n if (canStartArrow && this.match(15) && !this.canInsertSemicolon()) {\n this.next();\n return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);\n }\n return id;\n } else {\n throw this.unexpected();\n }\n }\n }\n parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n if (pipeProposal) {\n this.state.type = topicTokenType;\n this.state.value = topicTokenValue;\n this.state.pos--;\n this.state.end--;\n this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n return this.parseTopicReference(pipeProposal);\n }\n throw this.unexpected();\n }\n parseTopicReference(pipeProposal) {\n const node = this.startNode();\n const startLoc = this.state.startLoc;\n const tokenType = this.state.type;\n this.next();\n return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n }\n finishTopicReference(node, startLoc, pipeProposal, tokenType) {\n if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(Errors.PipeTopicUnbound, startLoc);\n }\n this.registerTopicReference();\n return this.finishNode(node, \"TopicReference\");\n } else {\n throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n token: tokenLabelName(tokenType)\n });\n }\n }\n testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {\n switch (pipeProposal) {\n case \"hack\":\n {\n return this.hasPlugin([\"pipelineOperator\", {\n topicToken: tokenLabelName(tokenType)\n }]);\n }\n default:\n throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n }\n }\n parseAsyncArrowUnaryFunction(node) {\n this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n const params = [this.parseIdentifier()];\n this.prodParam.exit();\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n }\n this.expect(15);\n return this.parseArrowExpression(node, params, true);\n }\n parseDo(node, isAsync) {\n this.expectPlugin(\"doExpressions\");\n if (isAsync) {\n this.expectPlugin(\"asyncDoExpressions\");\n }\n node.async = isAsync;\n this.next();\n const oldLabels = this.state.labels;\n this.state.labels = [];\n if (isAsync) {\n this.prodParam.enter(2);\n node.body = this.parseBlock();\n this.prodParam.exit();\n } else {\n node.body = this.parseBlock();\n }\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n parseSuper() {\n const node = this.startNode();\n this.next();\n if (this.match(6) && !this.scope.allowDirectSuper) {\n this.raise(Errors.SuperNotAllowed, node);\n } else if (!this.scope.allowSuper) {\n this.raise(Errors.UnexpectedSuper, node);\n }\n if (!this.match(6) && !this.match(0) && !this.match(12)) {\n this.raise(Errors.UnsupportedSuper, node);\n }\n return this.finishNode(node, \"Super\");\n }\n parsePrivateName() {\n const node = this.startNode();\n const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1));\n const name = this.state.value;\n this.next();\n node.id = this.createIdentifier(id, name);\n return this.finishNode(node, \"PrivateName\");\n }\n parseFunctionOrFunctionSent() {\n const node = this.startNode();\n this.next();\n if (this.prodParam.hasYield && this.match(12)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"function\");\n this.next();\n if (this.match(99)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n this.unexpected();\n }\n return this.parseMetaProperty(node, meta, \"sent\");\n }\n return this.parseFunction(node);\n }\n parseMetaProperty(node, meta, propertyName) {\n node.meta = meta;\n const containsEsc = this.state.containsEsc;\n node.property = this.parseIdentifier(true);\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(Errors.UnsupportedMetaProperty, node.property, {\n target: meta.name,\n onlyValidPropertyName: propertyName\n });\n }\n return this.finishNode(node, \"MetaProperty\");\n }\n parseImportMetaPropertyOrPhaseCall(node) {\n this.next();\n if (this.isContextual(101) || this.isContextual(93)) {\n const isSource = this.isContextual(101);\n this.expectPlugin(isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\");\n this.next();\n node.phase = isSource ? \"source\" : \"defer\";\n return this.parseImportCall(node);\n } else {\n const id = this.createIdentifierAt(this.startNodeAtNode(node), \"import\", this.state.lastTokStartLoc);\n if (this.isContextual(97)) {\n if (!this.inModule) {\n this.raise(Errors.ImportMetaOutsideModule, id);\n }\n this.sawUnambiguousESM = true;\n }\n return this.parseMetaProperty(node, id, \"meta\");\n }\n }\n parseLiteralAtNode(value, type, node) {\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(node, \"raw\", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));\n node.value = value;\n this.next();\n return this.finishNode(node, type);\n }\n parseLiteral(value, type) {\n const node = this.startNode();\n return this.parseLiteralAtNode(value, type, node);\n }\n parseStringLiteral(value) {\n return this.parseLiteral(value, \"StringLiteral\");\n }\n parseNumericLiteral(value) {\n return this.parseLiteral(value, \"NumericLiteral\");\n }\n parseBigIntLiteral(value) {\n let bigInt;\n try {\n bigInt = BigInt(value);\n } catch {\n bigInt = null;\n }\n const node = this.parseLiteral(bigInt, \"BigIntLiteral\");\n return node;\n }\n parseRegExpLiteral(value) {\n const node = this.startNode();\n this.addExtra(node, \"raw\", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));\n node.pattern = value.pattern;\n node.flags = value.flags;\n this.next();\n return this.finishNode(node, \"RegExpLiteral\");\n }\n parseBooleanLiteral(value) {\n const node = this.startNode();\n node.value = value;\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n parseNullLiteral() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n }\n parseParenAndDistinguishExpression(canStartArrow) {\n const startLoc = this.state.startLoc;\n let val;\n this.next();\n this.expressionScope.enter(newArrowHeadScope());\n const innerStartLoc = this.state.startLoc;\n const exprList = [];\n const refExpressionErrors = new ExpressionErrors();\n let first = true;\n let spreadStartLoc;\n let optionalCommaStartLoc;\n while (!this.match(7)) {\n if (first) {\n first = false;\n } else {\n this.expect(8, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);\n if (this.match(7)) {\n optionalCommaStartLoc = this.state.startLoc;\n break;\n }\n }\n if (this.match(17)) {\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStartLoc = this.state.startLoc;\n exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc));\n if (!this.checkCommaAfterRest(41)) {\n break;\n }\n } else {\n exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(7, refExpressionErrors, this.parseParenItem));\n }\n }\n const innerEndLoc = this.state.lastTokEndLoc;\n this.expect(7);\n let arrowNode = this.startNodeAt(startLoc);\n if (canStartArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n this.parseArrowExpression(arrowNode, exprList, false);\n return arrowNode;\n }\n this.expressionScope.exit();\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStartLoc);\n }\n if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n if (spreadStartLoc) this.unexpected(spreadStartLoc);\n this.checkExpressionErrors(refExpressionErrors, true);\n this.toReferencedList(exprList, true);\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartLoc);\n val.expressions = exprList;\n this.finishNode(val, \"SequenceExpression\");\n this.resetEndLocation(val, innerEndLoc);\n } else {\n val = exprList[0];\n }\n return this.wrapParenthesis(startLoc, val);\n }\n wrapParenthesis(startLoc, expression) {\n if (!(this.optionFlags & 2048)) {\n this.addExtra(expression, \"parenthesized\", true);\n this.addExtra(expression, \"parenStart\", startLoc.index);\n this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index);\n return expression;\n }\n const parenExpression = this.startNodeAt(startLoc);\n parenExpression.expression = expression;\n return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n }\n shouldParseArrow(params) {\n return !this.canInsertSemicolon();\n }\n parseArrow(node) {\n if (this.eat(15)) {\n return node;\n }\n }\n parseParenItem(node, startLoc) {\n return node;\n }\n parseNewOrNewTarget() {\n const node = this.startNode();\n this.next();\n if (this.match(12)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"new\");\n this.next();\n const metaProp = this.parseMetaProperty(node, meta, \"target\");\n if (!this.scope.allowNewTarget) {\n this.raise(Errors.UnexpectedNewTarget, metaProp);\n }\n return metaProp;\n }\n return this.parseNew(node);\n }\n parseNew(node) {\n this.parseNewCallee(node);\n if (this.eat(6)) {\n const args = this.parseExprList(7);\n this.toReferencedList(args);\n node.arguments = args;\n } else {\n node.arguments = [];\n }\n return this.finishNode(node, \"NewExpression\");\n }\n parseNewCallee(node) {\n const isImport = this.match(79);\n const callee = this.parseNoCallExpr();\n node.callee = callee;\n if (isImport && callee.type === \"ImportExpression\") {\n this.raise(Errors.ImportCallNotNewExpression, callee, callee);\n }\n if (callee.type === \"Import\") {\n this.raise(Errors.ImportCallNotNewExpression, callee);\n }\n if (callee.type === \"Super\") {\n this.raise(Errors.SuperCallNotNewExpression, callee);\n }\n }\n parseTemplateElement(isTagged) {\n const {\n start,\n startLoc,\n end,\n value\n } = this.state;\n const elemStart = start + 1;\n const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1));\n if (value === null) {\n if (!isTagged) {\n this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1));\n }\n }\n const isTail = this.match(20);\n const endOffset = isTail ? -1 : -2;\n const elemEnd = end + endOffset;\n elem.value = {\n raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n cooked: value === null ? null : value.slice(1, endOffset)\n };\n elem.tail = isTail;\n this.next();\n const finishedNode = this.finishNode(elem, \"TemplateElement\");\n this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));\n return finishedNode;\n }\n parseTemplate(isTagged) {\n const node = this.startNode();\n let curElt = this.parseTemplateElement(isTagged);\n const quasis = [curElt];\n const substitutions = [];\n while (!curElt.tail) {\n substitutions.push(this.parseTemplateSubstitution());\n this.readTemplateContinuation();\n quasis.push(curElt = this.parseTemplateElement(isTagged));\n }\n node.expressions = substitutions;\n node.quasis = quasis;\n return this.finishNode(node, \"TemplateLiteral\");\n }\n parseTemplateSubstitution() {\n return this.parseExpression();\n }\n parseObjectLike(close, isPattern, refExpressionErrors) {\n let sawProto = false;\n let first = true;\n const node = this.startNode();\n node.properties = [];\n this.next();\n while (!this.match(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(8);\n if (this.match(close)) {\n this.addTrailingCommaExtraToNode(node);\n break;\n }\n }\n let prop;\n if (isPattern) {\n prop = this.parseBindingProperty();\n } else {\n prop = this.parsePropertyDefinition(refExpressionErrors);\n sawProto = this.checkProto(prop, sawProto, refExpressionErrors);\n }\n node.properties.push(prop);\n }\n this.next();\n const type = isPattern ? \"ObjectPattern\" : \"ObjectExpression\";\n return this.finishNode(node, type);\n }\n addTrailingCommaExtraToNode(node) {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc.index);\n this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n }\n maybeAsyncOrAccessorProp(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && (this.isLiteralPropertyName() || this.match(0) || this.match(51));\n }\n parsePropertyDefinition(refExpressionErrors) {\n const decorators = [];\n if (this.match(22)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n }\n while (this.match(22)) {\n decorators.push(this.parseDecorator());\n }\n }\n const prop = this.startNode();\n let isAsync = false;\n let isAccessor = false;\n let startLoc;\n if (this.match(17)) {\n if (decorators.length) this.unexpected();\n return this.parseSpread();\n }\n if (decorators.length) {\n prop.decorators = decorators;\n }\n prop.method = false;\n if (refExpressionErrors) {\n startLoc = this.state.startLoc;\n }\n let isGenerator = this.eat(51);\n this.parsePropertyNamePrefixOperator(prop);\n const containsEsc = this.state.containsEsc;\n this.parsePropertyName(prop, refExpressionErrors);\n if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n const {\n key\n } = prop;\n const keyName = key.name;\n if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n isAsync = true;\n this.resetPreviousNodeTrailingComments(key);\n isGenerator = this.eat(51);\n this.parsePropertyName(prop);\n }\n if (keyName === \"get\" || keyName === \"set\") {\n isAccessor = true;\n this.resetPreviousNodeTrailingComments(key);\n prop.kind = keyName;\n if (this.match(51)) {\n isGenerator = true;\n this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n kind: keyName\n });\n this.next();\n }\n this.parsePropertyName(prop);\n }\n }\n return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);\n }\n getGetterSetterExpectedParamCount(method) {\n return method.kind === \"get\" ? 0 : 1;\n }\n getObjectOrClassMethodParams(method) {\n return method.params;\n }\n checkGetterSetterParams(method) {\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length !== paramCount) {\n this.raise(method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity, method);\n }\n if (method.kind === \"set\" && params[params.length - 1]?.type === \"RestElement\") {\n this.raise(Errors.BadSetterRestParameter, method);\n }\n }\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n if (isAccessor) {\n const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, \"ObjectMethod\");\n this.checkGetterSetterParams(finishedProp);\n return finishedProp;\n }\n if (isAsync || isGenerator || this.match(6)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(prop, isGenerator, isAsync, false, false, \"ObjectMethod\");\n }\n }\n parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {\n prop.shorthand = false;\n if (this.eat(10)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(4, refExpressionErrors);\n return this.finishObjectProperty(prop);\n }\n if (!prop.computed && prop.key.type === \"Identifier\") {\n this.checkReservedWord(prop.key.name, prop.key.start, true, false);\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));\n } else if (this.match(25)) {\n const shorthandAssignLoc = this.state.startLoc;\n if (refExpressionErrors != null) {\n if (refExpressionErrors.shorthandAssignLoc === null) {\n refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n }\n } else {\n this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n }\n prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));\n } else {\n prop.value = this.cloneIdentifier(prop.key);\n }\n prop.shorthand = true;\n return this.finishObjectProperty(prop);\n }\n }\n finishObjectProperty(node) {\n return this.finishNode(node, \"ObjectProperty\");\n }\n parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);\n if (!node) this.unexpected();\n return node;\n }\n parsePropertyName(prop, refExpressionErrors) {\n if (this.eat(0)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssignAllowIn();\n this.expect(1);\n } else {\n const {\n type,\n value\n } = this.state;\n let key;\n if (tokenIsKeywordOrIdentifier(type)) {\n key = this.parseIdentifier(true);\n } else {\n switch (type) {\n case 131:\n key = this.parseNumericLiteral(value);\n break;\n case 130:\n key = this.parseStringLiteral(value);\n break;\n case 132:\n key = this.parseBigIntLiteral(value);\n break;\n case 134:\n {\n const privateKeyLoc = this.state.startLoc;\n if (refExpressionErrors != null) {\n if (refExpressionErrors.privateKeyLoc === null) {\n refExpressionErrors.privateKeyLoc = privateKeyLoc;\n }\n } else {\n this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n }\n key = this.parsePrivateName();\n break;\n }\n default:\n this.unexpected();\n }\n }\n prop.key = key;\n if (type !== 134) {\n prop.computed = false;\n }\n }\n }\n initFunction(node, isAsync) {\n node.id = null;\n node.generator = false;\n node.async = isAsync;\n }\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n this.initFunction(node, isAsync);\n node.generator = isGenerator;\n this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0));\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n this.parseFunctionParams(node, isConstructor);\n const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n this.prodParam.exit();\n this.scope.exit();\n return finishedNode;\n }\n parseArrayLike(close, refExpressionErrors) {\n const node = this.startNode();\n this.next();\n node.elements = this.parseExprList(close, true, refExpressionErrors, node);\n return this.finishNode(node, \"ArrayExpression\");\n }\n parseArrowExpression(node, params, isAsync, trailingCommaLoc) {\n this.scope.enter(514 | 4);\n let flags = functionFlags(isAsync, false);\n if (!this.match(2)) {\n flags |= this.prodParam.currentFlags() & (8 | 16);\n }\n this.prodParam.enter(flags);\n this.initFunction(node, isAsync);\n if (params) {\n this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n }\n this.parseFunctionBody(node, true);\n this.prodParam.exit();\n this.scope.exit();\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n setArrowFunctionParameters(node, params, trailingCommaLoc) {\n this.toAssignableList(params, trailingCommaLoc, false);\n node.params = params;\n }\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n this.parseFunctionBody(node, false, isMethod);\n return this.finishNode(node, type);\n }\n parseFunctionBody(node, allowExpression, isMethod = false) {\n const isExpression = allowExpression && !this.match(2);\n this.expressionScope.enter(newExpressionScope());\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const oldStrict = this.state.strict;\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(this.prodParam.currentFlags() | 4);\n node.body = this.parseBlock(true, false, hasStrictModeDirective => {\n const nonSimple = !this.isSimpleParamList(node.params);\n if (hasStrictModeDirective && nonSimple) {\n this.raise(Errors.IllegalLanguageModeDirective, (node.kind === \"method\" || node.kind === \"constructor\") && !!node.key ? this.optionFlags & 256 ? node.key.loc.end : node.key : node);\n }\n const strictModeChanged = !oldStrict && this.state.strict;\n this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);\n if (this.state.strict && node.id) {\n this.checkIdentifier(node.id, 65, strictModeChanged);\n }\n });\n this.prodParam.exit();\n this.state.labels = oldLabels;\n }\n this.expressionScope.exit();\n }\n isSimpleParameter(node) {\n return node.type === \"Identifier\";\n }\n isSimpleParamList(params) {\n for (let i = 0, len = params.length; i < len; i++) {\n if (!this.isSimpleParameter(params[i])) return false;\n }\n return true;\n }\n checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n const checkClashes = !allowDuplicates && new Set();\n const formalParameters = {\n type: \"FormalParameters\"\n };\n for (const param of node.params) {\n this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged);\n }\n }\n parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {\n const elts = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(8);\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n this.next();\n break;\n }\n }\n elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors));\n }\n return elts;\n }\n parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) {\n let elt;\n if (this.match(8)) {\n if (!allowEmpty) {\n this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n unexpected: \",\"\n });\n }\n elt = null;\n } else if (this.match(17)) {\n const spreadNodeStartLoc = this.state.startLoc;\n elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc);\n } else if (this.match(13)) {\n this.expectPlugin(\"partialApplication\");\n if (!allowPlaceholder) {\n this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n }\n const node = this.startNode();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem);\n }\n return elt;\n }\n parseIdentifier(liberal) {\n const node = this.startNode();\n const name = this.parseIdentifierName(liberal);\n return this.createIdentifier(node, name);\n }\n createIdentifier(node, name) {\n node.name = name;\n if (this.optionFlags & 256) {\n node.loc.identifierName = name;\n }\n return this.finishNode(node, \"Identifier\");\n }\n createIdentifierAt(node, name, endLoc) {\n node.name = name;\n if (this.optionFlags & 256) {\n node.loc.identifierName = name;\n }\n return this.finishNodeAt(node, \"Identifier\", endLoc);\n }\n parseIdentifierName(liberal) {\n let name;\n const {\n start,\n type\n } = this.state;\n if (tokenIsKeywordOrIdentifier(type)) {\n name = this.state.value;\n } else {\n this.unexpected();\n }\n const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n if (liberal) {\n if (tokenIsKeyword) {\n this.replaceToken(128);\n }\n } else {\n this.checkReservedWord(name, this.sourceToOffsetPos(start), tokenIsKeyword, false);\n }\n this.next();\n return name;\n }\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (word.length > 10) {\n return;\n }\n if (!canBeReservedWord(word)) {\n return;\n }\n if (checkKeywords && isKeyword(word)) {\n this.raise(Errors.UnexpectedKeyword, startLoc, {\n keyword: word\n });\n return;\n }\n const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;\n if (reservedTest(word, this.inModule)) {\n this.raise(Errors.UnexpectedReservedWord, startLoc, {\n reservedWord: word\n });\n return;\n } else if (word === \"yield\") {\n if (this.prodParam.hasYield) {\n this.raise(Errors.YieldBindingIdentifier, startLoc);\n return;\n }\n } else if (word === \"await\") {\n if (this.prodParam.hasAwait) {\n this.raise(Errors.AwaitBindingIdentifier, startLoc);\n return;\n }\n if (this.scope.inStaticBlock) {\n this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n return;\n }\n this.expressionScope.recordAsyncArrowParametersError(startLoc);\n } else if (word === \"arguments\") {\n if (this.scope.inClassAndNotInNonArrowFunction) {\n this.raise(Errors.ArgumentsInClass, startLoc);\n return;\n }\n }\n }\n recordAwaitIfAllowed() {\n const isAwaitAllowed = this.prodParam.hasAwait;\n if (isAwaitAllowed && !this.scope.inFunction) {\n this.state.hasTopLevelAwait = true;\n }\n return isAwaitAllowed;\n }\n parseAwait(startLoc, soloAwait) {\n const startIndex = startLoc.index;\n this.setLoc(startLoc);\n const node = this.startNodeAt(startLoc);\n this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, startIndex);\n if (this.eat(51)) {\n this.raise(Errors.ObsoleteAwaitStar, startLoc);\n }\n if (!this.scope.inFunction && !(this.optionFlags & 1)) {\n if (this.isAmbiguousPrefixOrIdentifier()) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n if (!soloAwait) {\n node.argument = this.parseMaybeUnary(null, true);\n }\n return this.finishNode(node, \"AwaitExpression\");\n }\n isAmbiguousPrefixOrIdentifier() {\n if (this.hasPrecedingLineBreak()) return true;\n const {\n type\n } = this.state;\n return type === 49 || type === 6 || type === 0 || tokenIsTemplate(type) || type === 98 && !this.state.containsEsc || type === 133 || type === 52 || this.hasPlugin(\"v8intrinsic\") && type === 50;\n }\n parseYield(startLoc) {\n this.setLoc(startLoc);\n const node = this.startNodeAt(startLoc);\n this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, startLoc.index);\n let delegating = false;\n let argument = null;\n if (!this.hasPrecedingLineBreak()) {\n delegating = this.eat(51);\n switch (this.state.type) {\n case 9:\n case 135:\n case 4:\n case 7:\n case 1:\n case 5:\n case 10:\n case 8:\n if (!delegating) break;\n default:\n argument = this.parseMaybeAssign();\n }\n }\n node.delegate = delegating;\n node.argument = argument;\n return this.finishNode(node, \"YieldExpression\");\n }\n parseImportCall(node) {\n this.next();\n const args = this.parseCallExpressionArguments();\n if (args.length === 0 || args.length > 2) {\n this.raise(Errors.ImportCallArity, node, node);\n } else {\n for (const arg of args) {\n if (arg.type === \"SpreadElement\") {\n this.raise(Errors.ImportCallSpreadArgument, arg, node);\n }\n }\n }\n node.source = args[0];\n node.options = args[1] ?? null;\n return this.finishNode(node, \"ImportExpression\");\n }\n withTopicBindingContext(callback) {\n const oldInHackPipelineBody = this.state.inHackPipelineBody;\n this.state.inHackPipelineBody = true;\n const oldSeenTopicReference = this.state.seenTopicReference;\n this.state.seenTopicReference = false;\n try {\n return callback();\n } finally {\n this.state.inHackPipelineBody = oldInHackPipelineBody;\n this.state.seenTopicReference = oldSeenTopicReference;\n }\n }\n allowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToSet = (8 | 16) & ~flags;\n if (prodParamToSet) {\n this.prodParam.enter(flags | 8 | 16);\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n return callback();\n }\n disallowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToClear = 8 & flags;\n const prodParamToSet = 16 & ~flags;\n if (prodParamToClear || prodParamToSet) {\n this.prodParam.enter(flags & -9 | 16);\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n return callback();\n }\n registerTopicReference() {\n this.state.seenTopicReference = true;\n }\n topicReferenceIsAllowedInCurrentContext() {\n return this.state.inHackPipelineBody;\n }\n topicReferenceWasUsedInCurrentContext() {\n return this.state.seenTopicReference;\n }\n parseFSharpPipelineBody(prec) {\n const startLoc = this.state.startLoc;\n this.prodParam.enter(this.prodParam.currentFlags() & -17);\n let ret;\n if (this.isContextual(92) && this.recordAwaitIfAllowed()) {\n this.next();\n ret = this.parseAwait(startLoc, true);\n const nextOp = this.state.type;\n if (tokenIsOperator(nextOp) && nextOp !== 35 && (this.prodParam.hasIn || nextOp !== 54)) {\n this.raise(Errors.PipelineUnparenthesized, startLoc);\n }\n } else {\n this.state.canStartArrow = true;\n ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec);\n }\n this.prodParam.exit();\n return ret;\n }\n parseModuleExpression() {\n this.expectPlugin(\"moduleBlocks\");\n const node = this.startNode();\n this.next();\n if (!this.match(2)) {\n this.unexpected(null, 2);\n }\n const program = this.startNodeAt(this.state.endLoc);\n this.next();\n const revertScopes = this.initializeScopes(true);\n this.enterInitialScopes();\n try {\n node.body = this.parseProgram(program, 4, \"module\");\n } finally {\n revertScopes();\n }\n return this.finishNode(node, \"ModuleExpression\");\n }\n parseVoidPattern(refExpressionErrors) {\n this.expectPlugin(\"discardBinding\");\n const node = this.startNode();\n if (refExpressionErrors != null) {\n refExpressionErrors.voidPatternLoc = this.state.startLoc;\n }\n this.next();\n return this.finishNode(node, \"VoidPattern\");\n }\n parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) {\n if (refExpressionErrors != null && this.match(84)) {\n const nextCode = this.lookaheadCharCode();\n if (nextCode === 44 || nextCode === (close === 1 ? 93 : close === 4 ? 125 : 41) || nextCode === 61) {\n return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors));\n }\n }\n return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse);\n }\n parsePropertyNamePrefixOperator(prop) {}\n}\nconst loopLabel = {\n kind: 1\n },\n switchLabel = {\n kind: 2\n };\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\nfunction createExportedTokens(tokens) {\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const {\n type\n } = token;\n if (typeof type === \"number\") {\n token.type = getExportedToken(type);\n }\n }\n return tokens;\n}\nclass StatementParser extends ExpressionParser {\n parseTopLevel(file, program) {\n file.program = this.parseProgram(program, 135, this.options.sourceType === \"module\" ? \"module\" : \"script\");\n file.comments = this.comments;\n if (this.optionFlags & 512) {\n file.tokens = createExportedTokens(this.tokens);\n }\n return this.finishNode(file, \"File\");\n }\n parseProgram(program, end, sourceType) {\n program.sourceType = sourceType;\n program.interpreter = this.parseInterpreterDirective();\n this.parseBlockBody(program, true, true, end);\n if (this.inModule) {\n if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) {\n for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n this.raise(Errors.ModuleExportUndefined, at, {\n localName\n });\n }\n }\n this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n }\n let finishedProgram;\n if (end === 135) {\n finishedProgram = this.finishNode(program, \"Program\");\n } else {\n finishedProgram = this.finishNodeAt(program, \"Program\", createPositionWithColumnOffset(this.state.startLoc, -1));\n }\n return finishedProgram;\n }\n stmtToDirective(stmt) {\n const directive = this.castNodeTo(stmt, \"Directive\");\n const directiveLiteral = this.castNodeTo(stmt.expression, \"DirectiveLiteral\");\n const expressionValue = directiveLiteral.value;\n const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end));\n const val = directiveLiteral.value = raw.slice(1, -1);\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n directive.value = directiveLiteral;\n delete stmt.expression;\n return directive;\n }\n parseInterpreterDirective() {\n if (!this.match(24)) {\n return null;\n }\n const node = this.startNode();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n isLet() {\n if (!this.isContextual(96)) {\n return false;\n }\n return this.hasFollowingBindingAtom();\n }\n isUsing() {\n if (!this.isContextual(103)) {\n return false;\n }\n return this.nextTokenIsIdentifierOnSameLine();\n }\n isForUsing() {\n if (!this.isContextual(103)) {\n return false;\n }\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n if (this.isUnparsedContextual(next, \"of\")) {\n const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2);\n if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) {\n return false;\n }\n }\n if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, \"void\")) {\n return true;\n }\n return false;\n }\n nextTokenIsIdentifierOnSameLine() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifier(nextCh, next);\n }\n isAwaitUsing() {\n if (!this.isContextual(92)) {\n return false;\n }\n let next = this.nextTokenInLineStart();\n if (this.isUnparsedContextual(next, \"using\")) {\n next = this.nextTokenInLineStartSince(next + 5);\n const nextCh = this.codePointAtPos(next);\n if (this.chStartsBindingIdentifier(nextCh, next)) {\n return true;\n }\n }\n return false;\n }\n chStartsBindingIdentifier(ch, pos) {\n if (isIdentifierStart(ch)) {\n keywordRelationalOperator.lastIndex = pos;\n if (keywordRelationalOperator.test(this.input)) {\n const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n if (!isIdentifierChar(endCh) && endCh !== 92) {\n return false;\n }\n }\n return true;\n } else if (ch === 92) {\n return true;\n } else {\n return false;\n }\n }\n chStartsBindingPattern(ch) {\n return ch === 91 || ch === 123;\n }\n hasFollowingBindingAtom() {\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next);\n }\n hasInLineFollowingBindingIdentifierOrBrace() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next);\n }\n allowsUsing() {\n return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement;\n }\n parseModuleItem() {\n return this.parseStatementLike(1 | 2 | 4 | 8);\n }\n parseStatementListItem() {\n return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8));\n }\n parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) {\n let flags = 0;\n if (this.options.annexB && !this.state.strict) {\n flags |= 4;\n if (allowLabeledFunction) {\n flags |= 8;\n }\n }\n return this.parseStatementLike(flags);\n }\n parseStatement() {\n return this.parseStatementLike(0);\n }\n parseStatementLike(flags) {\n let decorators = null;\n if (this.match(22)) {\n decorators = this.parseDecorators(true);\n }\n return this.parseStatementContent(flags, decorators);\n }\n parseStatementContent(flags, decorators) {\n const startType = this.state.type;\n const node = this.startNode();\n const allowDeclaration = !!(flags & 2);\n const allowFunctionDeclaration = !!(flags & 4);\n const topLevel = flags & 1;\n switch (startType) {\n case 56:\n return this.parseBreakContinueStatement(node, true);\n case 59:\n return this.parseBreakContinueStatement(node, false);\n case 60:\n return this.parseDebuggerStatement(node);\n case 86:\n return this.parseDoWhileStatement(node);\n case 87:\n return this.parseForStatement(node);\n case 64:\n if (this.lookaheadCharCode() === 46) break;\n if (!allowFunctionDeclaration) {\n this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc);\n }\n return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration);\n case 76:\n if (!allowDeclaration) this.unexpected();\n return this.parseClass(this.maybeTakeDecorators(decorators, node), true);\n case 65:\n return this.parseIfStatement(node);\n case 66:\n return this.parseReturnStatement(node);\n case 67:\n return this.parseSwitchStatement(node);\n case 68:\n return this.parseThrowStatement(node);\n case 69:\n return this.parseTryStatement(node);\n case 92:\n if (this.isAwaitUsing()) {\n if (!this.allowsUsing()) {\n this.raise(Errors.UnexpectedUsingDeclaration, node);\n } else if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, node);\n } else if (!this.recordAwaitIfAllowed()) {\n this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n }\n this.next();\n return this.parseVarStatement(node, \"await using\");\n }\n break;\n case 103:\n if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) {\n break;\n }\n if (!this.allowsUsing()) {\n this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n } else if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n }\n return this.parseVarStatement(node, \"using\");\n case 96:\n {\n if (this.state.containsEsc) {\n break;\n }\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n if (nextCh !== 91) {\n if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) {\n break;\n }\n }\n }\n case 71:\n {\n if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n }\n }\n case 70:\n {\n const kind = this.state.value;\n return this.parseVarStatement(node, kind);\n }\n case 88:\n return this.parseWhileStatement(node);\n case 72:\n return this.parseWithStatement(node);\n case 2:\n return this.parseBlock();\n case 9:\n return this.parseEmptyStatement(node);\n case 79:\n {\n const nextTokenCharCode = this.lookaheadCharCode();\n if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {\n break;\n }\n }\n case 78:\n {\n if (!(this.optionFlags & 8) && !topLevel) {\n this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n }\n this.next();\n let result;\n if (startType === 79) {\n result = this.parseImport(node);\n } else {\n result = this.parseExport(node, decorators);\n }\n this.assertModuleNodeAllowed(result);\n return result;\n }\n default:\n {\n if (this.isAsyncFunction()) {\n if (!allowDeclaration) {\n this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc);\n }\n this.next();\n return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration);\n }\n }\n }\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n if (tokenIsIdentifier(startType) && expr.type === \"Identifier\" && this.eat(10)) {\n return this.parseLabeledStatement(node, maybeName, expr, flags);\n } else {\n return this.parseExpressionStatement(node, expr, decorators);\n }\n }\n assertModuleNodeAllowed(node) {\n if (!(this.optionFlags & 8) && !this.inModule) {\n this.raise(Errors.ImportOutsideModule, node);\n }\n }\n maybeTakeDecorators(maybeDecorators, classNode, exportNode) {\n if (maybeDecorators) {\n if (classNode.decorators?.length) {\n this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]);\n classNode.decorators.unshift(...maybeDecorators);\n } else {\n classNode.decorators = maybeDecorators;\n }\n this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n }\n return classNode;\n }\n canHaveLeadingDecorator() {\n return this.match(76);\n }\n parseDecorators(allowExport) {\n const decorators = [];\n do {\n decorators.push(this.parseDecorator());\n } while (this.match(22));\n if (this.match(78)) {\n if (!allowExport) {\n this.unexpected();\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n }\n return decorators;\n }\n parseDecorator() {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n const node = this.startNode();\n this.next();\n if (this.hasPlugin(\"decorators\")) {\n const startLoc = this.state.startLoc;\n let expr;\n if (this.match(6)) {\n const startLoc = this.state.startLoc;\n this.next();\n expr = this.parseExpression();\n this.expect(7);\n expr = this.wrapParenthesis(startLoc, expr);\n const paramsStartLoc = this.state.startLoc;\n node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n if (node.expression !== expr) {\n this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc);\n }\n } else {\n expr = this.parseIdentifier(false);\n while (this.eat(12)) {\n const node = this.startNodeAt(startLoc);\n node.object = expr;\n if (this.match(134)) {\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n }\n } else {\n this.state.canStartArrow = false;\n node.expression = this.parseExprSubscripts();\n }\n return this.finishNode(node, \"Decorator\");\n }\n parseMaybeDecoratorArguments(expr, startLoc) {\n if (this.eat(6)) {\n const node = this.startNodeAt(startLoc);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments();\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n return expr;\n }\n parseBreakContinueStatement(node, isBreak) {\n this.next();\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n this.verifyBreakContinue(node, isBreak);\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n }\n verifyBreakContinue(node, isBreak) {\n let i;\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === 1)) {\n break;\n }\n if (node.label && isBreak) break;\n }\n }\n if (i === this.state.labels.length) {\n const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n this.raise(Errors.IllegalBreakContinue, node, {\n type\n });\n }\n }\n parseDebuggerStatement(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n parseHeaderExpression() {\n this.expect(6);\n const val = this.parseExpression();\n this.expect(7);\n return val;\n }\n parseDoWhileStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n node.body = this.parseStatement();\n this.state.labels.pop();\n this.expect(88);\n node.test = this.parseHeaderExpression();\n this.eat(9);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n parseForStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n let awaitAt = null;\n if (this.isContextual(92) && this.recordAwaitIfAllowed()) {\n awaitAt = this.state.startLoc;\n this.next();\n }\n this.scope.enter(0);\n this.expect(6);\n if (this.match(9)) {\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, null);\n }\n const startsWithLet = this.isContextual(96);\n {\n const startsWithAwaitUsing = this.isAwaitUsing();\n const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing();\n const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration;\n if (this.match(70) || this.match(71) || isLetOrUsing) {\n const initNode = this.startNode();\n let kind;\n if (startsWithAwaitUsing) {\n kind = \"await using\";\n if (!this.recordAwaitIfAllowed()) {\n this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n }\n this.next();\n } else {\n kind = this.state.value;\n }\n this.next();\n this.parseVar(initNode, true, kind);\n const init = this.finishNode(initNode, \"VariableDeclaration\");\n const isForIn = this.match(54);\n if (isForIn && starsWithUsingDeclaration) {\n this.raise(Errors.ForInUsing, init);\n }\n if ((isForIn || this.isContextual(98)) && init.declarations.length === 1) {\n return this.parseForIn(node, init, awaitAt);\n }\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n }\n const startsWithAsync = this.isContextual(91);\n const refExpressionErrors = new ExpressionErrors();\n const init = this.parseExpression(true, refExpressionErrors);\n const isForOf = this.isContextual(98);\n if (isForOf) {\n if (startsWithLet) {\n this.raise(Errors.ForOfLet, init);\n }\n if (awaitAt === null && startsWithAsync && init.type === \"Identifier\") {\n this.raise(Errors.ForOfAsync, init);\n }\n }\n if (isForOf || this.match(54)) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.toAssignable(init, true);\n const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n this.checkLVal(init, {\n type\n });\n return this.parseForIn(node, init, awaitAt);\n } else {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n parseFunctionStatement(node, isAsync, isHangingDeclaration) {\n this.next();\n return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0));\n }\n parseIfStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n node.alternate = this.eat(62) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null;\n return this.finishNode(node, \"IfStatement\");\n }\n parseReturnStatement(node) {\n if (!this.prodParam.hasReturn) {\n this.raise(Errors.IllegalReturn, this.state.startLoc);\n }\n this.next();\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n return this.finishNode(node, \"ReturnStatement\");\n }\n parseSwitchStatement(node) {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases = node.cases = [];\n this.expect(2);\n this.state.labels.push(switchLabel);\n this.scope.enter(256);\n let cur;\n for (let sawDefault; !this.match(4);) {\n if (this.match(57) || this.match(61)) {\n const isCase = this.match(57);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc);\n }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(10);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatementListItem());\n } else {\n this.unexpected();\n }\n }\n }\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next();\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n parseThrowStatement(node) {\n this.next();\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);\n }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n parseCatchClauseParam() {\n const param = this.parseBindingAtom();\n this.scope.enter(this.options.annexB && param.type === \"Identifier\" ? 8 : 0);\n this.checkLVal(param, {\n type: \"CatchClause\"\n }, 9);\n return param;\n }\n parseTryStatement(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.match(58)) {\n const clause = this.startNode();\n this.next();\n if (this.match(6)) {\n this.expect(6);\n clause.param = this.parseCatchClauseParam();\n this.expect(7);\n } else {\n clause.param = null;\n this.scope.enter(0);\n }\n clause.body = this.parseBlock(false, false);\n this.scope.exit();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(63) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer) {\n this.raise(Errors.NoCatchOrFinally, node);\n }\n return this.finishNode(node, \"TryStatement\");\n }\n parseVarStatement(node, kind, allowMissingInitializer = false) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n parseWhileStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n node.body = this.parseStatement();\n this.state.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n }\n parseWithStatement(node) {\n if (this.state.strict) {\n this.raise(Errors.StrictWith, this.state.startLoc);\n }\n this.next();\n node.object = this.parseHeaderExpression();\n node.body = this.parseStatement();\n return this.finishNode(node, \"WithStatement\");\n }\n parseEmptyStatement(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n parseLabeledStatement(node, maybeName, expr, flags) {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(Errors.LabelRedeclaration, expr, {\n labelName: maybeName\n });\n }\n }\n const kind = tokenIsLoop(this.state.type) ? 1 : this.match(67) ? 2 : null;\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n if (label.statementStart === node.start) {\n label.statementStart = this.sourceToOffsetPos(this.state.start);\n label.kind = kind;\n } else {\n break;\n }\n }\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.sourceToOffsetPos(this.state.start)\n });\n node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n parseExpressionStatement(node, expr, decorators) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {\n const node = this.startNode();\n if (allowDirectives) {\n this.state.strictErrors.clear();\n }\n this.expect(2);\n if (createNewLexicalScope) {\n this.scope.enter(0);\n }\n this.parseBlockBody(node, allowDirectives, false, 4, afterBlockParse);\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n return this.finishNode(node, \"BlockStatement\");\n }\n isValidDirective(stmt) {\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"StringLiteral\" && !stmt.expression.extra.parenthesized;\n }\n parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n const body = node.body = [];\n const directives = node.directives = [];\n this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);\n }\n parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {\n const oldStrict = this.state.strict;\n let hasStrictModeDirective = false;\n let parsedNonDirective = false;\n while (!this.match(end)) {\n const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem();\n if (directives && !parsedNonDirective) {\n if (this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n if (!hasStrictModeDirective && directive.value.value === \"use strict\") {\n hasStrictModeDirective = true;\n this.setStrict(true);\n }\n continue;\n }\n parsedNonDirective = true;\n this.state.strictErrors.clear();\n }\n body.push(stmt);\n }\n afterBlockParse?.call(this, hasStrictModeDirective);\n if (!oldStrict) {\n this.setStrict(false);\n }\n this.next();\n }\n parseFor(node, init) {\n node.init = init;\n this.semicolon(false);\n node.test = this.match(9) ? null : this.parseExpression();\n this.semicolon(false);\n node.update = this.match(7) ? null : this.parseExpression();\n this.expect(7);\n node.body = this.parseStatement();\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n }\n parseForIn(node, init, awaitAt) {\n const isForIn = this.match(54);\n this.next();\n if (isForIn) {\n if (awaitAt !== null) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt !== null;\n }\n if (init.type === \"VariableDeclaration\" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== \"var\" || init.declarations[0].id.type !== \"Identifier\")) {\n this.raise(Errors.ForInOfLoopInitializer, init, {\n type: isForIn ? \"ForInStatement\" : \"ForOfStatement\"\n });\n }\n if (init.type === \"AssignmentPattern\") {\n this.raise(Errors.InvalidLhs, init, {\n ancestor: {\n type: \"ForStatement\"\n }\n });\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();\n this.expect(7);\n node.body = this.parseStatement();\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n parseVar(node, isFor, kind, allowMissingInitializer = false) {\n const declarations = node.declarations = [];\n node.kind = kind;\n for (;;) {\n const decl = this.startNode();\n this.parseVarId(decl, kind);\n decl.init = !this.eat(25) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();\n if (decl.init === null && !allowMissingInitializer) {\n if (decl.id.type !== \"Identifier\" && !(isFor && (this.match(54) || this.isContextual(98)))) {\n this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {\n kind: \"destructuring\"\n });\n } else if ((kind === \"const\" || kind === \"using\" || kind === \"await using\") && !(this.match(54) || this.isContextual(98))) {\n this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {\n kind\n });\n }\n }\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(8)) break;\n }\n return node;\n }\n parseVarId(decl, kind) {\n const id = this.parseBindingAtom();\n if (kind === \"using\" || kind === \"await using\") {\n if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n this.raise(Errors.UsingDeclarationHasBindingPattern, id);\n }\n } else {\n if (id.type === \"VoidPattern\") {\n this.raise(Errors.UnexpectedVoidPattern, id);\n }\n }\n this.checkLVal(id, {\n type: \"VariableDeclarator\"\n }, kind === \"var\" ? 5 : 8201);\n decl.id = id;\n }\n parseAsyncFunctionExpression(node) {\n return this.parseFunction(node, 8);\n }\n parseFunction(node, flags = 0) {\n const hangingDeclaration = flags & 2;\n const isDeclaration = !!(flags & 1);\n const requireId = isDeclaration && !(flags & 4);\n const isAsync = !!(flags & 8);\n this.initFunction(node, isAsync);\n if (this.match(51)) {\n if (hangingDeclaration) {\n this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc);\n }\n this.next();\n node.generator = true;\n }\n if (isDeclaration) {\n node.id = this.parseFunctionId(requireId);\n }\n this.scope.enter(514);\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n if (!isDeclaration) {\n node.id = this.parseFunctionId();\n }\n this.parseFunctionParams(node, false);\n this.parseFunctionBodyAndFinish(node, isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\");\n this.prodParam.exit();\n this.scope.exit();\n if (isDeclaration && !hangingDeclaration) {\n this.registerFunctionStatementId(node);\n }\n return node;\n }\n parseFunctionId(requireId) {\n return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;\n }\n parseFunctionParams(node, isConstructor) {\n this.expect(6);\n this.expressionScope.enter(newParameterDeclarationScope());\n node.params = this.parseBindingList(7, 41, 2 | (isConstructor ? 4 : 0));\n this.expressionScope.exit();\n }\n registerFunctionStatementId(node) {\n if (!node.id) return;\n this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.start);\n }\n parseClass(node, isStatement, optionalId) {\n this.next();\n const oldStrict = this.state.strict;\n this.state.strict = true;\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n node.body = this.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n }\n isClassProperty() {\n return this.match(25) || this.match(9) || this.match(4);\n }\n isClassMethod() {\n return this.match(6);\n }\n nameIsConstructor(key) {\n return key.type === \"Identifier\" && key.name === \"constructor\" || key.type === \"StringLiteral\" && key.value === \"constructor\";\n }\n isNonstaticConstructor(method) {\n return !method.computed && !method.static && this.nameIsConstructor(method.key);\n }\n parseClassBody(hadSuperClass, oldStrict) {\n this.classScope.enter();\n const state = {\n hadConstructor: false,\n hadSuperClass\n };\n let decorators = [];\n const classBody = this.startNode();\n classBody.body = [];\n this.expect(2);\n while (!this.match(4)) {\n if (this.eat(9)) {\n if (decorators.length > 0) {\n throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc);\n }\n continue;\n }\n if (this.match(22)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n const member = this.startNode();\n if (decorators.length) {\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n this.parseClassMember(classBody, member, state);\n }\n this.state.strict = oldStrict;\n this.next();\n if (decorators.length) {\n throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n }\n this.classScope.exit();\n return this.finishNode(classBody, \"ClassBody\");\n }\n parseClassMemberFromModifier(classBody, member) {\n const key = this.parseIdentifier(true);\n if (this.isClassMethod()) {\n const method = member;\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(classBody, method, false, false, false, false);\n return true;\n } else if (this.isClassProperty()) {\n const prop = member;\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return true;\n }\n this.resetPreviousNodeTrailingComments(key);\n return false;\n }\n parseClassMember(classBody, member, state) {\n const isStatic = this.isContextual(102);\n if (isStatic) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n if (this.eat(2)) {\n this.parseClassStaticBlock(classBody, member);\n return;\n }\n }\n this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const publicMethod = member;\n const privateMethod = member;\n const publicProp = member;\n const privateProp = member;\n const accessorProp = member;\n const method = publicMethod;\n const publicMember = publicMethod;\n member.static = isStatic;\n this.parsePropertyNamePrefixOperator(member);\n if (this.eat(51)) {\n method.kind = \"method\";\n const isPrivateName = this.match(134);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(method);\n if (isPrivateName) {\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n }\n this.pushClassMethod(classBody, publicMethod, true, false, false, false);\n return;\n }\n const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n const key = this.parseClassElementName(member);\n const maybeContextualKw = isContextual ? key.name : null;\n const isPrivate = this.isPrivateName(key);\n const maybeQuestionTokenStartLoc = this.state.startLoc;\n this.parsePostMemberNameModifiers(publicMember);\n if (this.isClassMethod()) {\n method.kind = \"method\";\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n if (publicMethod.decorators && publicMethod.decorators.length > 0) {\n this.raise(Errors.DecoratorConstructor, member);\n }\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(Errors.DuplicateConstructor, key);\n }\n if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n this.raise(Errors.OverrideOnConstructor, key);\n }\n state.hadConstructor = true;\n allowsDirectSuper = state.hadSuperClass;\n }\n this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n this.resetPreviousNodeTrailingComments(key);\n const isGenerator = this.eat(51);\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStartLoc);\n }\n method.kind = \"method\";\n const isPrivate = this.match(134);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(publicMember);\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n }\n this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);\n }\n } else if ((maybeContextualKw === \"get\" || maybeContextualKw === \"set\") && !(this.match(51) && this.isLineTerminator())) {\n this.resetPreviousNodeTrailingComments(key);\n method.kind = maybeContextualKw;\n const isPrivate = this.match(134);\n this.parseClassElementName(publicMethod);\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n }\n this.pushClassMethod(classBody, publicMethod, false, false, false, false);\n }\n this.checkGetterSetterParams(publicMethod);\n } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n this.expectPlugin(\"decoratorAutoAccessors\");\n this.resetPreviousNodeTrailingComments(key);\n const isPrivate = this.match(134);\n this.parseClassElementName(publicProp);\n this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n } else if (this.isLineTerminator()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n parseClassElementName(member) {\n const {\n type,\n value\n } = this.state;\n if ((type === 128 || type === 130) && member.static && value === \"prototype\") {\n this.raise(Errors.StaticPrototype, this.state.startLoc);\n }\n if (type === 134) {\n if (value === \"constructor\") {\n this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n }\n const key = this.parsePrivateName();\n member.key = key;\n return key;\n }\n this.parsePropertyName(member);\n return member.key;\n }\n parseClassStaticBlock(classBody, member) {\n this.scope.enter(576 | 128 | 16);\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(0);\n const body = member.body = [];\n this.parseBlockOrModuleBlockBody(body, undefined, false, 4);\n this.prodParam.exit();\n this.scope.exit();\n this.state.labels = oldLabels;\n classBody.body.push(this.finishNode(member, \"StaticBlock\"));\n if (member.decorators?.length) {\n this.raise(Errors.DecoratorStaticBlock, member);\n }\n }\n pushClassProperty(classBody, prop) {\n if (!prop.computed && this.nameIsConstructor(prop.key)) {\n this.raise(Errors.ConstructorClassField, prop.key);\n }\n classBody.body.push(this.parseClassProperty(prop));\n }\n pushClassPrivateProperty(classBody, prop) {\n const node = this.parseClassPrivateProperty(prop);\n classBody.body.push(node);\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.start);\n }\n pushClassAccessorProperty(classBody, prop, isPrivate) {\n if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n this.raise(Errors.ConstructorClassField, prop.key);\n }\n const node = this.parseClassAccessorProperty(prop);\n classBody.body.push(node);\n if (isPrivate) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.start);\n }\n }\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true));\n }\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const node = this.parseMethod(method, isGenerator, isAsync, false, false, \"ClassPrivateMethod\", true);\n classBody.body.push(node);\n const kind = node.kind === \"get\" ? node.static ? 6 : 2 : node.kind === \"set\" ? node.static ? 5 : 1 : 0;\n this.declareClassPrivateMethodInScope(node, kind);\n }\n declareClassPrivateMethodInScope(node, kind) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.start);\n }\n parsePostMemberNameModifiers(methodOrProp) {}\n parseClassPrivateProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n parseClassProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassProperty\");\n }\n parseClassAccessorProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassAccessorProperty\");\n }\n parseInitializer(node) {\n this.scope.enter(576 | 16);\n this.expressionScope.enter(newExpressionScope());\n this.prodParam.enter(0);\n node.value = this.eat(25) ? this.parseMaybeAssignAllowIn() : null;\n this.expressionScope.exit();\n this.prodParam.exit();\n this.scope.exit();\n }\n parseClassId(node, isStatement, optionalId, bindingType = 8331) {\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n if (isStatement) {\n this.declareNameFromIdentifier(node.id, bindingType);\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n throw this.raise(Errors.MissingClassName, this.state.startLoc);\n }\n }\n }\n parseClassSuper(node) {\n if (this.eat(77)) {\n this.state.canStartArrow = false;\n node.superClass = this.parseExprSubscripts();\n } else {\n node.superClass = null;\n }\n }\n parseExport(node, decorators) {\n const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true);\n const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);\n const parseAfterDefault = !hasDefault || this.eat(8);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(8));\n const isFromRequired = hasDefault || hasStar;\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.parseExportFrom(node, true);\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n this.unexpected(null, 2);\n }\n if (hasNamespace && parseAfterNamespace) {\n this.unexpected(null, 94);\n }\n let hasDeclaration;\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.parseExportFrom(node, isFromRequired);\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(node);\n }\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n const node2 = node;\n this.checkExport(node2, true, false, !!node2.source);\n if (node2.declaration?.type === \"ClassDeclaration\") {\n this.maybeTakeDecorators(decorators, node2.declaration, node2);\n } else if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.sawUnambiguousESM = true;\n return this.finishNode(node2, \"ExportNamedDeclaration\");\n }\n if (this.eat(61)) {\n const node2 = node;\n const decl = this.parseExportDefaultExpression();\n node2.declaration = decl;\n if (decl.type === \"ClassDeclaration\") {\n this.maybeTakeDecorators(decorators, decl, node2);\n } else if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.checkExport(node2, true, true);\n this.sawUnambiguousESM = true;\n return this.finishNode(node2, \"ExportDefaultDeclaration\");\n }\n throw this.unexpected(null, 2);\n }\n eatExportStar(_) {\n return this.eat(51);\n }\n maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {\n if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier?.start);\n const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n const specifier = this.startNodeAtNode(id);\n specifier.exported = id;\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return true;\n }\n return false;\n }\n maybeParseExportNamespaceSpecifier(node) {\n if (this.isContextual(89)) {\n node.specifiers ??= [];\n const specifier = this.startNodeAt(this.state.lastTokStartLoc);\n this.next();\n specifier.exported = this.parseModuleExportName();\n node.specifiers.push(this.finishNode(specifier, \"ExportNamespaceSpecifier\"));\n return true;\n }\n return false;\n }\n maybeParseExportNamedSpecifiers(node) {\n if (this.match(2)) {\n const node2 = node;\n if (!node2.specifiers) node2.specifiers = [];\n const isTypeExport = node2.exportKind === \"type\";\n node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n node2.source = null;\n node2.attributes = [];\n node2.declaration = null;\n return true;\n }\n return false;\n }\n maybeParseExportDeclaration(node) {\n if (this.shouldParseExportDeclaration()) {\n node.specifiers = [];\n node.source = null;\n node.attributes = [];\n node.declaration = this.parseExportDeclaration(node);\n return true;\n }\n return false;\n }\n isAsyncFunction() {\n if (!this.isContextual(91)) return false;\n const next = this.nextTokenInLineStart();\n return this.isUnparsedContextual(next, \"function\");\n }\n parseExportDefaultExpression() {\n const expr = this.startNode();\n if (this.match(64)) {\n this.next();\n return this.parseFunction(expr, 1 | 4);\n } else if (this.isAsyncFunction()) {\n this.next();\n this.next();\n return this.parseFunction(expr, 1 | 4 | 8);\n }\n if (this.match(76)) {\n return this.parseClass(expr, true, true);\n }\n if (this.match(22)) {\n return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true);\n }\n if (this.match(71) || this.match(70) || this.isLet() || this.isUsing() || this.isAwaitUsing()) {\n throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n }\n const res = this.parseMaybeAssignAllowIn();\n this.semicolon();\n return res;\n }\n parseExportDeclaration(node) {\n if (this.match(76)) {\n const node = this.parseClass(this.startNode(), true, false);\n return node;\n }\n return this.parseStatementListItem();\n }\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n if (tokenIsIdentifier(type)) {\n if (type === 91 && !this.state.containsEsc || type === 96) {\n return false;\n }\n if ((type === 126 || type === 125) && !this.state.containsEsc) {\n const next = this.nextTokenStart();\n const nextChar = this.input.charCodeAt(next);\n if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith(\"from\", next)) {\n this.expectOnePlugin([\"flow\", \"typescript\"]);\n return false;\n }\n }\n } else if (!this.match(61)) {\n return false;\n }\n const next = this.nextTokenStart();\n const hasFrom = this.isUnparsedContextual(next, \"from\");\n if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {\n return true;\n }\n if (this.match(61) && hasFrom) {\n const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));\n return nextAfterFrom === 34 || nextAfterFrom === 39;\n }\n return false;\n }\n parseExportFrom(node, expect) {\n if (this.eatContextual(94)) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n this.maybeParseImportAttributes(node);\n } else if (expect) {\n this.unexpected();\n }\n this.semicolon();\n }\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n if (type === 22) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n if (this.hasPlugin(\"decorators\")) {\n return true;\n }\n }\n if (this.isUsing()) {\n this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n return true;\n }\n if (this.isAwaitUsing()) {\n this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n return true;\n }\n return type === 70 || type === 71 || type === 64 || type === 76 || this.isLet() || this.isAsyncFunction();\n }\n checkExport(node, checkNames, isDefault, isFrom) {\n if (checkNames) {\n if (isDefault) {\n this.checkDuplicateExports(node, \"default\");\n if (this.hasPlugin(\"exportDefaultFrom\")) {\n const declaration = node.declaration;\n if (declaration.type === \"Identifier\" && declaration.name === \"from\" && declaration.end - declaration.start === 4 && !declaration.extra?.parenthesized) {\n this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n }\n }\n } else if (node.specifiers?.length) {\n for (const specifier of node.specifiers) {\n const {\n exported\n } = specifier;\n const exportName = exported.type === \"Identifier\" ? exported.name : exported.value;\n this.checkDuplicateExports(specifier, exportName);\n if (!isFrom && specifier.local) {\n const {\n local\n } = specifier;\n if (local.type !== \"Identifier\") {\n this.raise(Errors.ExportBindingIsString, specifier, {\n localName: local.value,\n exportName\n });\n } else {\n this.checkReservedWord(local.name, local.start, true, false);\n this.scope.checkLocalExport(local);\n }\n }\n }\n } else if (node.declaration) {\n const decl = node.declaration;\n if (decl.type === \"FunctionDeclaration\" || decl.type === \"ClassDeclaration\") {\n const {\n id\n } = decl;\n if (!id) throw new Error(\"Assertion failure\");\n this.checkDuplicateExports(node, id.name);\n } else if (decl.type === \"VariableDeclaration\") {\n for (const declaration of decl.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n }\n checkDeclaration(node) {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n checkDuplicateExports(node, exportName) {\n if (this.exportedIdentifiers.has(exportName)) {\n if (exportName === \"default\") {\n this.raise(Errors.DuplicateDefaultExport, node);\n } else {\n this.raise(Errors.DuplicateExport, node, {\n exportName\n });\n }\n }\n this.exportedIdentifiers.add(exportName);\n }\n parseExportSpecifiers(isInTypeExport) {\n const nodes = [];\n let first = true;\n this.expect(2);\n while (!this.eat(4)) {\n if (first) {\n first = false;\n } else {\n this.expect(8);\n if (this.eat(4)) break;\n }\n const isMaybeTypeOnly = this.isContextual(126);\n const isString = this.match(130);\n const node = this.startNode();\n node.local = this.parseModuleExportName();\n nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));\n }\n return nodes;\n }\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (this.eatContextual(89)) {\n node.exported = this.parseModuleExportName();\n } else if (isString) {\n node.exported = this.cloneStringLiteral(node.local);\n } else if (!node.exported) {\n node.exported = this.cloneIdentifier(node.local);\n }\n return this.finishNode(node, \"ExportSpecifier\");\n }\n parseModuleExportName() {\n if (this.match(130)) {\n const result = this.parseStringLiteral(this.state.value);\n const surrogate = loneSurrogate.exec(result.value);\n if (surrogate) {\n this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n surrogateCharCode: surrogate[0].charCodeAt(0)\n });\n }\n return result;\n }\n return this.parseIdentifier(true);\n }\n checkImportPhase(node) {\n const {\n specifiers\n } = node;\n const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null;\n if (node.phase === \"source\") {\n if (singleBindingType !== \"ImportDefaultSpecifier\") {\n this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0]);\n }\n } else if (node.phase === \"defer\") {\n if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n this.raise(Errors.DeferImportRequiresNamespace, specifiers[0]);\n }\n }\n }\n isPotentialImportPhase(isExport) {\n if (isExport) return false;\n return this.isContextual(101) || this.isContextual(93);\n }\n applyImportPhase(node, isExport, phase, loc) {\n if (isExport) {\n return;\n }\n if (phase === \"source\") {\n this.expectPlugin(\"sourcePhaseImports\", loc);\n node.phase = \"source\";\n } else if (phase === \"defer\") {\n this.expectPlugin(\"deferredImportEvaluation\", loc);\n node.phase = \"defer\";\n } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n node.phase = null;\n }\n }\n parseMaybeImportPhase(node, isExport) {\n if (!this.isPotentialImportPhase(isExport)) {\n this.applyImportPhase(node, isExport, null);\n return null;\n }\n const phaseIdentifier = this.startNode();\n const phaseIdentifierName = this.parseIdentifierName(true);\n const {\n type\n } = this.state;\n const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 94 || this.lookaheadCharCode() === 102 : type !== 8;\n if (isImportPhase) {\n this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.start);\n return null;\n } else {\n this.applyImportPhase(node, isExport, null);\n return this.createIdentifier(phaseIdentifier, phaseIdentifierName);\n }\n }\n isPrecedingIdImportPhase(phase) {\n const {\n type\n } = this.state;\n return tokenIsIdentifier(type) ? type !== 94 || this.lookaheadCharCode() === 102 : type !== 8;\n }\n parseImport(node) {\n if (this.match(130)) {\n return this.parseImportSourceAndAttributes(node);\n }\n return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false));\n }\n parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) {\n node.specifiers = [];\n const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier);\n const parseNext = !hasDefault || this.eat(8);\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(94);\n return this.parseImportSourceAndAttributes(node);\n }\n parseImportSourceAndAttributes(node) {\n node.specifiers ??= [];\n node.source = this.parseImportSource();\n this.maybeParseImportAttributes(node);\n this.checkImportPhase(node);\n this.semicolon();\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"ImportDeclaration\");\n }\n parseImportSource() {\n if (!this.match(130)) this.unexpected();\n return this.parseExprAtom();\n }\n parseImportSpecifierLocal(node, specifier, type) {\n specifier.local = this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n finishImportSpecifier(specifier, type, bindingType = 8201) {\n this.checkLVal(specifier.local, {\n type\n }, bindingType);\n return this.finishNode(specifier, type);\n }\n parseImportAttributes() {\n this.expect(2);\n const attrs = [];\n const attrNames = new Set();\n do {\n if (this.match(4)) {\n break;\n }\n const node = this.startNode();\n const keyName = this.state.value;\n if (attrNames.has(keyName)) {\n this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, {\n key: keyName\n });\n }\n attrNames.add(keyName);\n if (this.match(130)) {\n node.key = this.parseStringLiteral(keyName);\n } else {\n node.key = this.parseIdentifier(true);\n }\n this.expect(10);\n if (!this.match(130)) {\n throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);\n }\n node.value = this.parseStringLiteral(this.state.value);\n attrs.push(this.finishNode(node, \"ImportAttribute\"));\n } while (this.eat(8));\n this.expect(4);\n return attrs;\n }\n maybeParseImportAttributes(node) {\n let attributes;\n if (this.match(72)) {\n if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) {\n return;\n }\n this.next();\n attributes = this.parseImportAttributes();\n } else {\n attributes = [];\n }\n node.attributes = attributes;\n }\n maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) {\n if (maybeDefaultIdentifier) {\n const specifier = this.startNodeAtNode(maybeDefaultIdentifier);\n specifier.local = maybeDefaultIdentifier;\n node.specifiers.push(this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"));\n return true;\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n this.parseImportSpecifierLocal(node, this.startNode(), \"ImportDefaultSpecifier\");\n return true;\n }\n return false;\n }\n maybeParseStarImportSpecifier(node) {\n if (this.match(51)) {\n const specifier = this.startNode();\n this.next();\n this.expectContextual(89);\n this.parseImportSpecifierLocal(node, specifier, \"ImportNamespaceSpecifier\");\n return true;\n }\n return false;\n }\n parseNamedImportSpecifiers(node) {\n let first = true;\n this.expect(2);\n while (!this.eat(4)) {\n if (first) {\n first = false;\n } else {\n if (this.eat(10)) {\n throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n }\n this.expect(8);\n if (this.eat(4)) break;\n }\n const specifier = this.startNode();\n const importedIsString = this.match(130);\n const isMaybeTypeOnly = this.isContextual(126);\n specifier.imported = this.parseModuleExportName();\n const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === \"type\" || node.importKind === \"typeof\", isMaybeTypeOnly, undefined);\n node.specifiers.push(importSpecifier);\n }\n }\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {\n if (this.eatContextual(89)) {\n specifier.local = this.parseIdentifier();\n } else {\n const {\n imported\n } = specifier;\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: imported.value\n });\n }\n this.checkReservedWord(imported.name, specifier.start, true, true);\n if (!specifier.local) {\n specifier.local = this.cloneIdentifier(imported);\n }\n }\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\", bindingType);\n }\n isThisParam(param) {\n return param.type === \"Identifier\" && param.name === \"this\";\n }\n}\nconst keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y;\nfunction nonNull(x) {\n if (x == null) {\n throw new Error(`Unexpected ${x} value.`);\n }\n return x;\n}\nfunction assert(x) {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\nconst TSErrorTemplates = {\n AbstractMethodHasImplementation: ({\n methodName\n }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n AbstractPropertyHasInitializer: ({\n propertyName\n }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n AccessorCannotBeOptional: \"An 'accessor' property cannot be declared optional.\",\n AccessorCannotDeclareThisParameter: \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n ConstructorHasTypeParameters: \"Type parameters cannot appear on a constructor declaration.\",\n DeclaratorDefiniteAssertionRequiresTypeAnnotation: \"Declarations with definite assignment assertions must also have type annotations.\",\n DeclaratorDefiniteAssertionWithInitializer: \"Declarations with initializers cannot also have definite assignment assertions.\",\n DeclareAccessor: ({\n kind\n }) => `'declare' is not allowed in ${kind}ters.`,\n DeclareClassFieldHasInitializer: \"Initializers are not allowed in ambient contexts.\",\n DeclareFunctionHasImplementation: \"An implementation cannot be declared in ambient contexts.\",\n DecoratorAbstractMethod: ({\n kind\n }) => `Decorators can't be used with ${kind.startsWith(\"a\") ? \"an\" : \"a\"} ${kind}.`,\n DuplicateAccessibilityModifier: ({\n modifier\n }) => `Accessibility modifier already seen: '${modifier}'.`,\n DuplicateModifier: ({\n modifier\n }) => `Duplicate modifier: '${modifier}'.`,\n EmptyHeritageClauseType: ({\n token\n }) => `'${token}' list cannot be empty.`,\n EmptyNamespaceName: \"Namespace must be given a name.\",\n EmptyTypeArguments: \"Type argument list cannot be empty.\",\n EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n ExpectedAmbientAfterExportDeclare: \"'export declare' must be followed by an ambient declaration.\",\n ExportAssignmentInTSNamespace: \"An export assignment cannot be used in a namespace.\",\n ExportInTSNamespace: \"Export declarations are not permitted in a namespace.\",\n ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n ImportInTSNamespace: \"Import declarations in a namespace cannot reference a module.\",\n IncompatibleModifiers: ({\n modifiers\n }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n IndexSignatureHasAbstract: \"Index signatures cannot have the 'abstract' modifier.\",\n IndexSignatureHasAccessibility: ({\n modifier\n }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n IndexSignatureHasDeclare: \"Index signatures cannot have the 'declare' modifier.\",\n IndexSignatureHasOverride: \"'override' modifier cannot appear on an index signature.\",\n IndexSignatureHasStatic: \"Index signatures cannot have the 'static' modifier.\",\n InitializerNotAllowedInAmbientContext: \"Initializers are not allowed in ambient contexts.\",\n InlineModuleDeclarationMustUseString: \"`module ... {}` declarations must have a string name. Use `namespace ... {}` instead.\",\n InvalidHeritageClauseType: ({\n token\n }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,\n InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`,\n InvalidModifierOnTypeMember: ({\n modifier\n }) => `'${modifier}' modifier cannot appear on a type member.`,\n InvalidModifierOnTypeParameter: ({\n modifier\n }) => `'${modifier}' modifier cannot appear on a type parameter.`,\n InvalidModifierOnTypeParameterPositions: ({\n modifier\n }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`,\n InvalidModifiersOrder: ({\n orderedModifiers\n }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n InvalidNamespaceName: value => `Namespace name cannot be '${value}'.`,\n InvalidPropertyAccessAfterInstantiationExpression: \"Invalid property access after an instantiation expression. \" + \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n InvalidTupleMemberLabel: \"Tuple members must be labeled with a simple identifier.\",\n MissingInterfaceName: \"'interface' declarations must be followed by an identifier.\",\n NamespaceExportInTSNamespace: \"Global module exports may only appear at top level.\",\n NonAbstractClassHasAbstractMethod: \"Abstract methods can only appear within an abstract class.\",\n NonClassMethodPropertyHasAbstractModifier: \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n OptionalTypeBeforeRequired: \"A required element cannot follow an optional element.\",\n OverrideNotInSubClass: \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n PatternIsOptional: \"A binding pattern parameter cannot be optional in an implementation signature.\",\n PrivateElementHasAbstract: \"Private elements cannot have the 'abstract' modifier.\",\n PrivateElementHasAccessibility: ({\n modifier\n }) => `Private elements cannot have an accessibility modifier ('${modifier}').`,\n ReadonlyForMethodSignature: \"'readonly' modifier can only appear on a property declaration or index signature.\",\n ReservedArrowTypeParam: \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n ReservedTypeAssertion: \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n SetAccessorCannotHaveOptionalParameter: \"A 'set' accessor cannot have an optional parameter.\",\n SetAccessorCannotHaveRestParameter: \"A 'set' accessor cannot have rest parameter.\",\n SetAccessorCannotHaveReturnType: \"A 'set' accessor cannot have a return type annotation.\",\n SingleTypeParameterWithoutTrailingComma: ({\n typeParameterName\n }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n StaticBlockCannotHaveModifier: \"Static class blocks cannot have any modifier.\",\n TupleOptionalAfterType: \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n TypeAnnotationAfterAssign: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeImportCannotSpecifyDefaultAndNamed: \"A type-only import can specify a default import or named bindings, but not both.\",\n TypeModifierIsUsedInTypeExports: \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n TypeModifierIsUsedInTypeImports: \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n UnexpectedParameterInitializer: \"A parameter initializer is only allowed in a function or constructor implementation.\",\n UnexpectedParameterModifier: \"A parameter property is only allowed in a constructor implementation.\",\n UnexpectedReadonly: \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n UnexpectedTypeDeclaration: type => `'${type}' declarations can only be declared inside a block.`,\n UnsupportedImportTypeArgument: \"Argument in a type import must be a string literal.\",\n UnsupportedParameterPropertyKind: \"A parameter property may not be declared using a binding pattern.\",\n UnsupportedSignatureParameterKind: ({\n type\n }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.`\n};\nconst TSErrors = ParseErrorEnum`typescript`(TSErrorTemplates);\nfunction keywordTypeFromName(value) {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n case \"boolean\":\n return \"TSBooleanKeyword\";\n case \"bigint\":\n return \"TSBigIntKeyword\";\n case \"never\":\n return \"TSNeverKeyword\";\n case \"number\":\n return \"TSNumberKeyword\";\n case \"object\":\n return \"TSObjectKeyword\";\n case \"string\":\n return \"TSStringKeyword\";\n case \"symbol\":\n return \"TSSymbolKeyword\";\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n case \"unknown\":\n return \"TSUnknownKeyword\";\n default:\n return undefined;\n }\n}\nfunction tsIsAccessModifier(modifier) {\n return modifier === \"private\" || modifier === \"public\" || modifier === \"protected\";\n}\nfunction tsIsVarianceAnnotations(modifier) {\n return modifier === \"in\" || modifier === \"out\";\n}\nfunction tsIsEntityName(node) {\n if (node.extra?.parenthesized) {\n return false;\n }\n switch (node.type) {\n case \"Identifier\":\n return true;\n case \"MemberExpression\":\n return !node.computed && tsIsEntityName(node.object);\n case \"TSInstantiationExpression\":\n return tsIsEntityName(node.expression);\n default:\n return false;\n }\n}\nconst typescript = superClass => class TypeScriptParserMixin extends superClass {\n getScopeHandler() {\n return TypeScriptScopeHandler;\n }\n tsIsIdentifier() {\n return tokenIsIdentifier(this.state.type);\n }\n tsTokenCanFollowModifier() {\n return this.match(0) || this.match(2) || this.match(51) || this.match(17) || this.match(134) || this.isLiteralPropertyName();\n }\n tsNextTokenOnSameLineAndCanFollowModifier() {\n this.next();\n if (this.hasPrecedingLineBreak()) {\n return false;\n }\n return this.tsTokenCanFollowModifier();\n }\n tsNextTokenCanFollowModifier() {\n if (this.match(102)) {\n this.next();\n return this.tsTokenCanFollowModifier();\n }\n return this.tsNextTokenOnSameLineAndCanFollowModifier();\n }\n tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) {\n if (!tokenIsIdentifier(this.state.type) && this.state.type !== 54 && this.state.type !== 71) {\n return undefined;\n }\n const modifier = this.state.value;\n if (allowedModifiers.includes(modifier)) {\n if (hasSeenStaticModifier && this.match(102)) {\n return undefined;\n }\n if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n return undefined;\n }\n if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n return modifier;\n }\n }\n return undefined;\n }\n tsParseModifiers({\n allowedModifiers,\n disallowedModifiers,\n stopOnStartOfClassStaticBlock,\n errorTemplate = TSErrors.InvalidModifierOnTypeMember\n }, modified) {\n const enforceOrder = (loc, modifier, before, after) => {\n if (modifier === before && modified[after]) {\n this.raise(TSErrors.InvalidModifiersOrder, loc, {\n orderedModifiers: [before, after]\n });\n }\n };\n const incompatible = (loc, modifier, mod1, mod2) => {\n if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {\n this.raise(TSErrors.IncompatibleModifiers, loc, {\n modifiers: [mod1, mod2]\n });\n }\n };\n for (;;) {\n const {\n startLoc\n } = this.state;\n const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers ?? []), stopOnStartOfClassStaticBlock, modified.static);\n if (!modifier) break;\n if (tsIsAccessModifier(modifier)) {\n if (modified.accessibility) {\n this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n modifier\n });\n } else {\n enforceOrder(startLoc, modifier, modifier, \"override\");\n enforceOrder(startLoc, modifier, modifier, \"static\");\n enforceOrder(startLoc, modifier, modifier, \"readonly\");\n modified.accessibility = modifier;\n }\n } else if (tsIsVarianceAnnotations(modifier)) {\n if (modified[modifier]) {\n this.raise(TSErrors.DuplicateModifier, startLoc, {\n modifier\n });\n }\n modified[modifier] = true;\n enforceOrder(startLoc, modifier, \"in\", \"out\");\n } else {\n if (Object.hasOwn(modified, modifier)) {\n this.raise(TSErrors.DuplicateModifier, startLoc, {\n modifier\n });\n } else {\n enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n enforceOrder(startLoc, modifier, \"static\", \"override\");\n enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n incompatible(startLoc, modifier, \"declare\", \"override\");\n incompatible(startLoc, modifier, \"static\", \"abstract\");\n }\n modified[modifier] = true;\n }\n if (disallowedModifiers?.includes(modifier)) {\n this.raise(errorTemplate, startLoc, {\n modifier\n });\n }\n }\n }\n tsIsListTerminator(kind) {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(4);\n case \"HeritageClauseElement\":\n return this.match(2);\n case \"TupleElementTypes\":\n return this.match(1);\n case \"TypeParametersOrArguments\":\n return this.match(44);\n }\n }\n tsParseList(kind, parseElement) {\n const result = [];\n while (!this.tsIsListTerminator(kind)) {\n result.push(parseElement());\n }\n return result;\n }\n tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {\n return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));\n }\n tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {\n const result = [];\n let trailingCommaPos = -1;\n for (;;) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n trailingCommaPos = -1;\n const element = parseElement();\n if (element == null) {\n return undefined;\n }\n result.push(element);\n if (this.eat(8)) {\n trailingCommaPos = this.state.lastTokStartLoc.index;\n continue;\n }\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n if (expectSuccess) {\n this.expect(8);\n }\n return undefined;\n }\n if (refTrailingCommaPos) {\n refTrailingCommaPos.value = trailingCommaPos;\n }\n return result;\n }\n tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(0);\n } else {\n this.expect(43);\n }\n }\n const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);\n if (bracket) {\n this.expect(1);\n } else {\n this.expect(44);\n }\n return result;\n }\n tsParseImportType() {\n const node = this.startNode();\n this.expect(79);\n this.expect(6);\n if (!this.match(130)) {\n this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n node.source = this.tsParseNonConditionalType();\n } else {\n node.source = this.parseStringLiteral(this.state.value);\n }\n if (this.eat(8)) {\n node.options = this.tsParseImportTypeOptions();\n } else {\n node.options = null;\n }\n this.expect(7);\n if (this.eat(12)) {\n node.qualifier = this.tsParseEntityName(1 | 2);\n }\n if (this.match(43)) {\n node.typeArguments = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSImportType\");\n }\n tsParseImportTypeOptions() {\n const node = this.startNode();\n this.expect(2);\n const withProperty = this.startNode();\n if (this.isContextual(72)) {\n withProperty.method = false;\n withProperty.key = this.parseIdentifier(true);\n withProperty.computed = false;\n withProperty.shorthand = false;\n } else {\n this.unexpected(null, 72);\n }\n this.expect(10);\n withProperty.value = this.tsParseImportTypeWithPropertyValue();\n node.properties = [this.finishObjectProperty(withProperty)];\n this.eat(8);\n this.expect(4);\n return this.finishNode(node, \"ObjectExpression\");\n }\n tsParseImportTypeWithPropertyValue() {\n const node = this.startNode();\n const properties = [];\n this.expect(2);\n while (!this.match(4)) {\n const type = this.state.type;\n if (tokenIsIdentifier(type) || type === 130) {\n properties.push(super.parsePropertyDefinition(null));\n } else {\n this.unexpected();\n }\n this.eat(8);\n }\n node.properties = properties;\n this.next();\n return this.finishNode(node, \"ObjectExpression\");\n }\n tsParseEntityName(flags) {\n let entity;\n if (flags & 1 && this.match(74)) {\n if (flags & 2) {\n entity = this.parseIdentifier(true);\n } else {\n const node = this.startNode();\n this.next();\n entity = this.finishNode(node, \"ThisExpression\");\n }\n } else {\n entity = this.parseIdentifier(!!(flags & 1));\n }\n while (this.eat(12)) {\n const node = this.startNodeAtNode(entity);\n node.left = entity;\n node.right = this.parseIdentifier(!!(flags & 1));\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n return entity;\n }\n tsParseTypeReference() {\n const node = this.startNode();\n node.typeName = this.tsParseEntityName(1);\n if (!this.hasPrecedingLineBreak() && this.match(43)) {\n node.typeArguments = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSTypeReference\");\n }\n tsParseThisTypePredicate(lhs) {\n this.next();\n const node = this.startNodeAtNode(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(false);\n node.asserts = false;\n return this.finishNode(node, \"TSTypePredicate\");\n }\n tsParseThisTypeNode() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n tsParseTypeQuery() {\n const node = this.startNode();\n this.expect(83);\n if (this.match(79)) {\n node.exprName = this.tsParseImportType();\n } else {\n node.exprName = this.tsParseEntityName(1);\n }\n if (!this.hasPrecedingLineBreak() && this.match(43)) {\n node.typeArguments = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSTypeQuery\");\n }\n tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"in\", \"out\"],\n disallowedModifiers: [\"const\", \"public\", \"private\", \"protected\", \"readonly\", \"declare\", \"abstract\", \"override\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter\n });\n tsParseConstModifier = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"const\"],\n disallowedModifiers: [\"in\", \"out\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions\n });\n tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"in\", \"out\", \"const\"],\n disallowedModifiers: [\"public\", \"private\", \"protected\", \"readonly\", \"declare\", \"abstract\", \"override\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter\n });\n tsParseTypeParameter(parseModifiers) {\n const node = this.startNode();\n parseModifiers(node);\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsEatThenParseType(77);\n node.default = this.tsEatThenParseType(25);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n tsTryParseTypeParameters(parseModifiers) {\n if (this.match(43)) {\n return this.tsParseTypeParameters(parseModifiers);\n }\n }\n tsParseTypeParameters(parseModifiers) {\n const node = this.startNode();\n if (this.match(43) || this.match(138)) {\n this.next();\n } else {\n this.unexpected();\n }\n const refTrailingCommaPos = {\n value: -1\n };\n node.params = this.tsParseBracketedList(\"TypeParametersOrArguments\", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeParameters, node);\n }\n if (refTrailingCommaPos.value !== -1) {\n this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n }\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n tsFillSignature(returnToken, signature) {\n const returnTokenRequired = returnToken === 15;\n const paramsKey = \"params\";\n const returnTypeKey = \"returnType\";\n signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n this.expect(6);\n signature[paramsKey] = this.tsParseBindingListForSignature();\n if (returnTokenRequired) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (this.match(returnToken)) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n }\n tsParseBindingListForSignature() {\n const list = super.parseBindingList(7, 41, 2);\n for (const pattern of list) {\n const {\n type\n } = pattern;\n if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n type\n });\n }\n }\n return list;\n }\n tsParseTypeMemberSemicolon() {\n if (!this.eat(8) && !this.isLineTerminator()) {\n this.expect(9);\n }\n }\n tsParseSignatureMember(kind, node) {\n this.tsFillSignature(10, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n tsIsUnambiguouslyIndexSignature() {\n this.next();\n if (tokenIsIdentifier(this.state.type)) {\n this.next();\n return this.match(10);\n }\n return false;\n }\n tsTryParseIndexSignature(node) {\n if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {\n return;\n }\n this.expect(0);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id);\n this.expect(1);\n node.parameters = [id];\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n tsParsePropertyOrMethodSignature(node, readonly) {\n if (this.eat(13)) node.optional = true;\n if (this.match(6) || this.match(43)) {\n if (readonly) {\n this.raise(TSErrors.ReadonlyForMethodSignature, node);\n }\n const method = node;\n if (method.kind && this.match(43)) {\n this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition());\n }\n this.tsFillSignature(10, method);\n this.tsParseTypeMemberSemicolon();\n if (method.kind === \"get\") {\n if (method.params.length > 0) {\n this.raise(Errors.BadGetterArity, this.state.curPosition());\n if (this.isThisParam(method.params[0])) {\n this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());\n }\n }\n } else if (method.kind === \"set\") {\n if (method.params.length !== 1) {\n this.raise(Errors.BadSetterArity, this.state.curPosition());\n } else {\n const firstParameter = method.params[0];\n if (this.isThisParam(firstParameter)) {\n this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());\n }\n if (firstParameter.type === \"Identifier\" && firstParameter.optional) {\n this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition());\n }\n if (firstParameter.type === \"RestElement\") {\n this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition());\n }\n }\n if (method.returnType) {\n this.raise(TSErrors.SetAccessorCannotHaveReturnType, method.returnType);\n }\n } else {\n method.kind = \"method\";\n }\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property = node;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n tsParseTypeMember() {\n const node = this.startNode();\n if (this.match(6) || this.match(43)) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n if (this.match(73)) {\n const id = this.startNode();\n this.next();\n if (this.match(6) || this.match(43)) {\n return this.tsParseSignatureMember(\"TSConstructSignatureDeclaration\", node);\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n this.tsParseModifiers({\n allowedModifiers: [\"readonly\"],\n disallowedModifiers: [\"declare\", \"abstract\", \"private\", \"protected\", \"public\", \"static\", \"override\"]\n }, node);\n const idx = this.tsTryParseIndexSignature(node);\n if (idx) {\n return idx;\n }\n super.parsePropertyName(node);\n if (!node.computed && node.key.type === \"Identifier\" && (node.key.name === \"get\" || node.key.name === \"set\") && this.tsTokenCanFollowModifier()) {\n node.kind = node.key.name;\n super.parsePropertyName(node);\n if (!this.match(6) && !this.match(43)) {\n this.unexpected(null, 6);\n }\n }\n return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n }\n tsParseTypeLiteral() {\n const node = this.startNode();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n tsParseObjectTypeMembers() {\n this.expect(2);\n const members = this.tsParseList(\"TypeMembers\", this.tsParseTypeMember.bind(this));\n this.expect(4);\n return members;\n }\n tsIsStartOfMappedType() {\n this.next();\n if (this.eat(49)) {\n return this.isContextual(118);\n }\n if (this.isContextual(118)) {\n this.next();\n }\n if (!this.match(0)) {\n return false;\n }\n this.next();\n if (!this.tsIsIdentifier()) {\n return false;\n }\n this.next();\n return this.match(54);\n }\n tsParseMappedType() {\n const node = this.startNode();\n this.expect(2);\n if (this.match(49)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(118);\n } else if (this.eatContextual(118)) {\n node.readonly = true;\n }\n this.expect(0);\n node.key = this.tsParseTypeParameterName();\n node.constraint = this.tsExpectThenParseType(54);\n node.nameType = this.eatContextual(89) ? this.tsParseType() : null;\n this.expect(1);\n if (this.match(49)) {\n node.optional = this.state.value;\n this.next();\n this.expect(13);\n } else if (this.eat(13)) {\n node.optional = true;\n }\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(4);\n return this.finishNode(node, \"TSMappedType\");\n }\n tsParseTupleType() {\n const node = this.startNode();\n node.elementTypes = this.tsParseBracketedList(\"TupleElementTypes\", this.tsParseTupleElementType.bind(this), true, false);\n let seenOptionalElement = false;\n node.elementTypes.forEach(elementNode => {\n const {\n type\n } = elementNode;\n if (seenOptionalElement && type !== \"TSRestType\" && type !== \"TSOptionalType\" && !(type === \"TSNamedTupleMember\" && elementNode.optional)) {\n this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n }\n seenOptionalElement ||= type === \"TSNamedTupleMember\" && elementNode.optional || type === \"TSOptionalType\";\n });\n return this.finishNode(node, \"TSTupleType\");\n }\n tsParseTupleElementType() {\n const restStartLoc = this.state.startLoc;\n const rest = this.eat(17);\n const {\n startLoc\n } = this.state;\n let labeled;\n let label;\n let optional;\n let type;\n const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n if (chAfterWord === 58) {\n labeled = true;\n optional = false;\n label = this.parseIdentifier(true);\n this.expect(10);\n type = this.tsParseType();\n } else if (chAfterWord === 63) {\n optional = true;\n const wordName = this.state.value;\n const typeOrLabel = this.tsParseNonArrayType();\n if (this.lookaheadCharCode() === 58) {\n labeled = true;\n label = this.createIdentifier(this.startNodeAt(startLoc), wordName);\n this.expect(13);\n this.expect(10);\n type = this.tsParseType();\n } else {\n labeled = false;\n type = typeOrLabel;\n this.expect(13);\n }\n } else {\n type = this.tsParseType();\n optional = this.eat(13);\n labeled = this.eat(10);\n }\n if (labeled) {\n let labeledNode;\n if (label) {\n labeledNode = this.startNodeAt(startLoc);\n labeledNode.optional = optional;\n labeledNode.label = label;\n labeledNode.elementType = type;\n if (this.eat(13)) {\n labeledNode.optional = true;\n this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc);\n }\n } else {\n labeledNode = this.startNodeAt(startLoc);\n labeledNode.optional = optional;\n this.raise(TSErrors.InvalidTupleMemberLabel, type);\n labeledNode.label = type;\n labeledNode.elementType = this.tsParseType();\n }\n type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n } else if (optional) {\n const optionalTypeNode = this.startNodeAt(startLoc);\n optionalTypeNode.typeAnnotation = type;\n type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n if (rest) {\n const restNode = this.startNodeAt(restStartLoc);\n restNode.typeAnnotation = type;\n type = this.finishNode(restNode, \"TSRestType\");\n }\n return type;\n }\n tsParseParenthesizedType() {\n const node = this.startNode();\n this.expect(6);\n node.typeAnnotation = this.tsParseType();\n this.expect(7);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n tsParseFunctionOrConstructorType(type, abstract) {\n const node = this.startNode();\n if (type === \"TSConstructorType\") {\n node.abstract = !!abstract;\n if (abstract) this.next();\n this.next();\n }\n this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(15, node));\n return this.finishNode(node, type);\n }\n tsParseLiteralTypeNode() {\n const node = this.startNode();\n switch (this.state.type) {\n case 131:\n case 132:\n case 130:\n case 81:\n case 82:\n node.literal = super.parseExprAtom();\n break;\n default:\n this.unexpected();\n }\n return this.finishNode(node, \"TSLiteralType\");\n }\n tsParseTemplateLiteralType() {\n const startLoc = this.state.startLoc;\n let curElt = this.parseTemplateElement(false);\n const quasis = [curElt];\n if (curElt.tail) {\n const node = this.startNodeAt(startLoc);\n const literal = this.startNodeAt(startLoc);\n literal.expressions = [];\n literal.quasis = quasis;\n node.literal = this.finishNode(literal, \"TemplateLiteral\");\n return this.finishNode(node, \"TSLiteralType\");\n } else {\n const substitutions = [];\n while (!curElt.tail) {\n substitutions.push(this.tsParseType());\n this.readTemplateContinuation();\n quasis.push(curElt = this.parseTemplateElement(false));\n }\n const node = this.startNodeAt(startLoc);\n node.types = substitutions;\n node.quasis = quasis;\n return this.finishNode(node, \"TSTemplateLiteralType\");\n }\n }\n parseTemplateSubstitution() {\n if (this.state.inType) return this.tsParseType();\n return super.parseTemplateSubstitution();\n }\n tsParseThisTypeOrThisTypePredicate() {\n const thisKeyword = this.tsParseThisTypeNode();\n if (this.isContextual(112) && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n tsParseNonArrayType() {\n switch (this.state.type) {\n case 130:\n case 131:\n case 132:\n case 81:\n case 82:\n return this.tsParseLiteralTypeNode();\n case 49:\n if (this.state.value === \"-\") {\n const node = this.startNode();\n const nextToken = this.lookahead();\n if (nextToken.type !== 131 && nextToken.type !== 132) {\n this.unexpected();\n }\n node.literal = this.parseMaybeUnary();\n return this.finishNode(node, \"TSLiteralType\");\n }\n break;\n case 74:\n return this.tsParseThisTypeOrThisTypePredicate();\n case 83:\n return this.tsParseTypeQuery();\n case 79:\n return this.tsParseImportType();\n case 2:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();\n case 0:\n return this.tsParseTupleType();\n case 6:\n if (!(this.optionFlags & 2048)) {\n const startLoc = this.state.startLoc;\n this.next();\n const type = this.tsParseType();\n this.expect(7);\n this.addExtra(type, \"parenthesized\", true);\n this.addExtra(type, \"parenStart\", startLoc.index);\n return type;\n }\n return this.tsParseParenthesizedType();\n case 21:\n case 20:\n return this.tsParseTemplateLiteralType();\n default:\n {\n const {\n type\n } = this.state;\n if (tokenIsIdentifier(type) || type === 84 || type === 80) {\n const nodeType = type === 84 ? \"TSVoidKeyword\" : type === 80 ? \"TSNullKeyword\" : keywordTypeFromName(this.state.value);\n if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, nodeType);\n }\n return this.tsParseTypeReference();\n }\n }\n }\n throw this.unexpected();\n }\n tsParseArrayTypeOrHigher() {\n const {\n startLoc\n } = this.state;\n let type = this.tsParseNonArrayType();\n while (!this.hasPrecedingLineBreak() && this.eat(0)) {\n if (this.match(1)) {\n const node = this.startNodeAt(startLoc);\n node.elementType = type;\n this.expect(1);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node = this.startNodeAt(startLoc);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(1);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n return type;\n }\n tsParseTypeOperator() {\n const node = this.startNode();\n const operator = this.state.value;\n this.next();\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n return this.finishNode(node, \"TSTypeOperator\");\n }\n tsCheckTypeAnnotationForReadOnly(node) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n default:\n this.raise(TSErrors.UnexpectedReadonly, node);\n }\n }\n tsParseInferType() {\n const node = this.startNode();\n this.expectContextual(111);\n const typeParameter = this.startNode();\n typeParameter.name = this.tsParseTypeParameterName();\n typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType());\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n tsParseConstraintForInferType() {\n if (this.eat(77)) {\n const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType());\n if (this.state.inDisallowConditionalTypesContext || !this.match(13)) {\n return constraint;\n }\n }\n }\n tsParseTypeOperatorOrHigher() {\n const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(111) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher());\n }\n tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {\n const node = this.startNode();\n const hasLeadingOperator = this.eat(operator);\n const types = [];\n do {\n types.push(parseConstituentType());\n } while (this.eat(operator));\n if (types.length === 1 && !hasLeadingOperator) {\n return types[0];\n }\n node.types = types;\n return this.finishNode(node, kind);\n }\n tsParseIntersectionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSIntersectionType\", this.tsParseTypeOperatorOrHigher.bind(this), 41);\n }\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSUnionType\", this.tsParseIntersectionTypeOrHigher.bind(this), 39);\n }\n tsIsStartOfFunctionType() {\n if (this.match(43)) {\n return true;\n }\n return this.match(6) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));\n }\n tsSkipParameterStart() {\n if (tokenIsIdentifier(this.state.type) || this.match(74)) {\n this.next();\n return true;\n }\n if (this.match(2)) {\n const {\n errors\n } = this.state;\n const previousErrorCount = errors.length;\n try {\n this.parseObjectLike(4, true);\n return errors.length === previousErrorCount;\n } catch {\n return false;\n }\n }\n if (this.match(0)) {\n this.next();\n const {\n errors\n } = this.state;\n const previousErrorCount = errors.length;\n try {\n super.parseBindingList(1, 93, 1);\n return errors.length === previousErrorCount;\n } catch {\n return false;\n }\n }\n return false;\n }\n tsIsUnambiguouslyStartOfFunctionType() {\n this.next();\n if (this.match(7) || this.match(17)) {\n return true;\n }\n if (this.tsSkipParameterStart()) {\n if (this.match(10) || this.match(8) || this.match(13) || this.match(25)) {\n return true;\n }\n if (this.match(7)) {\n this.next();\n if (this.match(15)) {\n return true;\n }\n }\n }\n return false;\n }\n tsParseTypeOrTypePredicateAnnotation(returnToken) {\n return this.tsInType(() => {\n const t = this.startNode();\n this.expect(returnToken);\n const node = this.startNode();\n const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));\n if (asserts && this.match(74)) {\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n if (thisTypePredicate.type === \"TSThisType\") {\n node.parameterName = thisTypePredicate;\n node.asserts = true;\n node.typeAnnotation = null;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n this.resetStartLocationFromNode(thisTypePredicate, node);\n thisTypePredicate.asserts = true;\n }\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n if (!typePredicateVariable) {\n if (!asserts) {\n return this.tsParseTypeAnnotation(false, t);\n }\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n node.typeAnnotation = null;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n const type = this.tsParseTypeAnnotation(false);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n tsTryParseTypeOrTypePredicateAnnotation() {\n if (this.match(10)) {\n return this.tsParseTypeOrTypePredicateAnnotation(10);\n }\n }\n tsTryParseTypeAnnotation() {\n if (this.match(10)) {\n return this.tsParseTypeAnnotation();\n }\n }\n tsTryParseType() {\n return this.tsEatThenParseType(10);\n }\n tsParseTypePredicatePrefix() {\n const id = this.parseIdentifier();\n if (this.isContextual(112) && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n tsParseTypePredicateAsserts() {\n if (this.state.type !== 105) {\n return false;\n }\n const containsEsc = this.state.containsEsc;\n this.next();\n if (!tokenIsIdentifier(this.state.type) && !this.match(74)) {\n return false;\n }\n if (containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, {\n reservedWord: \"asserts\"\n });\n }\n return true;\n }\n tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {\n this.tsInType(() => {\n if (eatColon) this.expect(10);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n tsParseType() {\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(77)) {\n return type;\n }\n const node = this.startNodeAtNode(type);\n node.checkType = type;\n node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType());\n this.expect(13);\n node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());\n this.expect(10);\n node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());\n return this.finishNode(node, \"TSConditionalType\");\n }\n isAbstractConstructorSignature() {\n return this.isContextual(120) && this.isLookaheadContextual(\"new\");\n }\n tsParseNonConditionalType() {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n if (this.match(73)) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n } else if (this.isAbstractConstructorSignature()) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\", true);\n }\n return this.tsParseUnionTypeOrHigher();\n }\n tsParseTypeAssertion() {\n if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n }\n const node = this.startNode();\n node.typeAnnotation = this.tsInType(() => {\n this.next();\n return this.match(71) ? this.tsParseTypeReference() : this.tsParseType();\n });\n this.expect(44);\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n tsParseHeritageClause(token) {\n const originalStartLoc = this.state.startLoc;\n const delimitedList = this.tsParseDelimitedList(\"HeritageClauseElement\", () => {\n const expression = (this.state.canStartArrow = false, super.parseExprSubscripts());\n if (!tsIsEntityName(expression)) {\n this.raise(TSErrors.InvalidHeritageClauseType, expression.start, {\n token\n });\n }\n const nodeType = token === \"extends\" ? \"TSInterfaceHeritage\" : \"TSClassImplements\";\n if (expression.type === \"TSInstantiationExpression\") {\n expression.type = nodeType;\n return expression;\n }\n const node = this.startNodeAtNode(expression);\n node.expression = expression;\n if (this.match(43) || this.match(47)) {\n node.typeArguments = this.tsParseTypeArgumentsInExpression();\n }\n return this.finishNode(node, nodeType);\n });\n if (!delimitedList.length) {\n this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n token\n });\n }\n return delimitedList;\n }\n tsParseInterfaceDeclaration(node, properties = {}) {\n if (this.hasFollowingLineBreak()) return null;\n this.expectContextual(125);\n if (properties.declare) node.declare = true;\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, 130);\n } else {\n node.id = null;\n this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n }\n node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);\n if (this.eat(77)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n const body = this.startNode();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n tsParseTypeAliasDeclaration(node) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, 2);\n node.typeAnnotation = this.tsInType(() => {\n node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers);\n this.expect(25);\n if (this.isContextual(110) && this.lookaheadCharCode() !== 46) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSIntrinsicKeyword\");\n }\n return this.tsParseType();\n });\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n tsInTopLevelContext(cb) {\n if (this.curContext() !== types.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n tsInType(cb) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n tsInDisallowConditionalTypesContext(cb) {\n const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = true;\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n }\n tsInAllowConditionalTypesContext(cb) {\n const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = false;\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n }\n tsEatThenParseType(token) {\n if (this.match(token)) {\n return this.tsNextThenParseType();\n }\n }\n tsExpectThenParseType(token) {\n return this.tsInType(() => {\n this.expect(token);\n return this.tsParseType();\n });\n }\n tsNextThenParseType() {\n return this.tsInType(() => {\n this.next();\n return this.tsParseType();\n });\n }\n tsParseEnumMember() {\n const node = this.startNode();\n node.id = this.match(130) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true);\n if (this.eat(25)) {\n node.initializer = super.parseMaybeAssignAllowIn();\n }\n return this.finishNode(node, \"TSEnumMember\");\n }\n tsParseEnumDeclaration(node, properties = {}) {\n if (properties.const) node.const = true;\n if (properties.declare) node.declare = true;\n this.expectContextual(122);\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, node.const ? 8971 : 8459);\n node.body = this.tsParseEnumBody();\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n tsParseEnumBody() {\n const node = this.startNode();\n this.expect(2);\n node.members = this.tsParseDelimitedList(\"EnumMembers\", this.tsParseEnumMember.bind(this));\n this.expect(4);\n return this.finishNode(node, \"TSEnumBody\");\n }\n tsParseModuleBlock(isGlobal) {\n const node = this.startNode();\n if (!isGlobal) {\n this.scope.enter(0);\n }\n this.expect(2);\n super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 4);\n if (!isGlobal) {\n this.scope.exit();\n }\n return this.finishNode(node, \"TSModuleBlock\");\n }\n tsParseNamespaceDeclaration(node) {\n node.id = this.tsParseEntityName(0);\n if (node.id.type === \"Identifier\") {\n this.checkIdentifier(node.id, 1024);\n }\n this.scope.enter(2048);\n this.prodParam.enter(0);\n node.body = this.tsParseModuleBlock(false);\n this.prodParam.exit();\n this.scope.exit();\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n tsParseAmbientExternalModuleDeclaration(node) {\n const isGlobal = this.isContextual(108);\n if (isGlobal) {\n node.kind = \"global\";\n node.id = this.parseIdentifier();\n } else {\n node.kind = \"module\";\n const {\n type,\n value\n } = this.state;\n if (type === 130) {\n node.id = super.parseStringLiteral(value);\n } else if (tokenIsIdentifier(type)) {\n this.raise(TSErrors.InlineModuleDeclarationMustUseString, this.state.startLoc);\n node.id = this.tsParseEntityName(0);\n } else if (type === 2) {\n this.raise(TSErrors.EmptyNamespaceName, this.state.startLoc);\n } else {\n this.raise(TSErrors.InvalidNamespaceName, this.state.startLoc, value);\n node.id = super.parseExprAtom();\n }\n }\n if (this.match(2)) {\n if (!isGlobal) {\n this.scope.enter(1024);\n }\n this.prodParam.enter(0);\n node.body = this.tsParseModuleBlock(isGlobal);\n this.prodParam.exit();\n if (!isGlobal) {\n this.scope.exit();\n }\n } else {\n this.semicolon();\n }\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier) {\n node.id = maybeDefaultIdentifier || this.parseIdentifier();\n this.checkIdentifier(node.id, 4096);\n this.expect(25);\n const moduleReference = this.tsParseModuleReference();\n if (node.importKind === \"type\" && moduleReference.type !== \"TSExternalModuleReference\") {\n this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n }\n node.moduleReference = moduleReference;\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n tsIsExternalModuleReference() {\n return this.isContextual(115) && this.lookaheadCharCode() === 40;\n }\n tsParseModuleReference() {\n return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0);\n }\n tsParseExternalModuleReference() {\n const node = this.startNode();\n this.expectContextual(115);\n this.expect(6);\n if (!this.match(130)) {\n this.unexpected();\n }\n node.expression = super.parseExprAtom();\n this.expect(7);\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n tsLookAhead(f) {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n tsTryParseAndCatch(f) {\n const result = this.tryParse(abort => f() || abort());\n if (result.aborted || !result.node) return;\n if (result.error) this.state = result.failState;\n return result.node;\n }\n tsTryParse(f) {\n const state = this.state.clone();\n const result = f();\n if (result !== undefined && result !== false) {\n return result;\n }\n this.state = state;\n }\n tsTryParseDeclare(node) {\n if (this.isLineTerminator()) {\n return;\n }\n const startType = this.state.type;\n return this.tsInAmbientContext(() => {\n switch (startType) {\n case 64:\n node.declare = true;\n return super.parseFunctionStatement(node, false, false);\n case 76:\n node.declare = true;\n return this.parseClass(node, true, false);\n case 122:\n return this.tsParseEnumDeclaration(node, {\n declare: true\n });\n case 108:\n return this.tsParseAmbientExternalModuleDeclaration(node);\n case 96:\n if (this.state.containsEsc) {\n return;\n }\n case 71:\n case 70:\n if (!this.match(71) || !this.isLookaheadContextual(\"enum\")) {\n node.declare = true;\n return this.parseVarStatement(node, this.state.value, true);\n }\n this.expect(71);\n return this.tsParseEnumDeclaration(node, {\n const: true,\n declare: true\n });\n case 103:\n if (this.isUsing()) {\n this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, \"declare\");\n node.declare = true;\n return this.parseVarStatement(node, \"using\", true);\n }\n break;\n case 92:\n if (this.isAwaitUsing()) {\n this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, \"declare\");\n node.declare = true;\n this.next();\n return this.parseVarStatement(node, \"await using\", true);\n }\n break;\n case 125:\n {\n const result = this.tsParseInterfaceDeclaration(node, {\n declare: true\n });\n if (result) return result;\n }\n default:\n if (tokenIsIdentifier(startType)) {\n return this.tsParseDeclaration(node, this.state.type, true, null);\n }\n }\n });\n }\n tsTryParseExportDeclaration() {\n return this.tsParseDeclaration(this.startNode(), this.state.type, true, null);\n }\n tsParseDeclaration(node, type, next, decorators) {\n switch (type) {\n case 120:\n if (this.tsCheckLineTerminator(next) && (this.match(76) || tokenIsIdentifier(this.state.type))) {\n return this.tsParseAbstractDeclaration(node, decorators);\n }\n break;\n case 123:\n if (this.tsCheckLineTerminator(next)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n }\n break;\n case 124:\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n node.kind = \"namespace\";\n return this.tsParseNamespaceDeclaration(node);\n }\n break;\n case 126:\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n tsCheckLineTerminator(next) {\n if (next) {\n if (this.hasFollowingLineBreak()) return false;\n this.next();\n return true;\n }\n return !this.isLineTerminator();\n }\n tsTryParseGenericAsyncArrowFunction(startLoc) {\n if (!this.match(43)) return;\n const res = this.tsTryParseAndCatch(() => {\n const node = this.startNodeAt(startLoc);\n node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(15);\n return node;\n });\n if (!res) return;\n return super.parseArrowExpression(res, null, true);\n }\n tsParseTypeArgumentsInExpression() {\n if (this.reScan_lt() !== 43) return;\n return this.tsParseTypeArguments();\n }\n tsParseTypeArguments() {\n const node = this.startNode();\n node.params = this.tsInType(() => this.tsInTopLevelContext(() => {\n this.expect(43);\n return this.tsParseDelimitedList(\"TypeParametersOrArguments\", this.tsParseType.bind(this));\n }));\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeArguments, node);\n } else if (!this.state.inType && this.curContext() === types.brace) {\n this.reScan_lt_gt();\n }\n this.expect(44);\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n tsIsDeclarationStart() {\n return tokenIsTSDeclarationStart(this.state.type);\n }\n isExportDefaultSpecifier() {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n parseBindingElement(flags, decorators) {\n const startLoc = decorators.length ? null : this.state.startLoc;\n const modified = {};\n this.tsParseModifiers({\n allowedModifiers: [\"public\", \"private\", \"protected\", \"override\", \"readonly\"]\n }, modified);\n const accessibility = modified.accessibility;\n const override = modified.override;\n const readonly = modified.readonly;\n if (!(flags & 4) && (accessibility || readonly || override)) {\n this.raise(TSErrors.UnexpectedParameterModifier, startLoc || decorators[0]);\n }\n const startLoc2 = this.state.startLoc;\n const left = this.parseMaybeDefault(startLoc2);\n if (flags & 2) {\n this.parseFunctionParamType(left);\n }\n const elt = this.parseMaybeDefault(startLoc2, left);\n if (accessibility || readonly || override) {\n const pp = startLoc ? this.startNodeAt(startLoc) : this.startNodeAtNode(decorators[0]);\n if (decorators.length) {\n pp.decorators = decorators;\n } else {\n this.setLoc(startLoc);\n }\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (override) pp.override = override;\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(TSErrors.UnsupportedParameterPropertyKind, startLoc || decorators[0]);\n }\n pp.parameter = elt;\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n if (decorators.length) {\n left.decorators = decorators;\n }\n return elt;\n }\n isSimpleParameter(node) {\n return node.type === \"TSParameterProperty\" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node);\n }\n tsDisallowOptionalPattern(node) {\n for (const param of node.params) {\n if (param.type !== \"Identifier\" && param.optional && !this.state.isAmbientContext) {\n this.raise(TSErrors.PatternIsOptional, param);\n }\n }\n }\n setArrowFunctionParameters(node, params, trailingCommaLoc) {\n super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n this.tsDisallowOptionalPattern(node);\n }\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(10)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(10);\n }\n const bodilessType = type === \"FunctionDeclaration\" ? \"TSDeclareFunction\" : type === \"ClassMethod\" || type === \"ClassPrivateMethod\" ? \"TSDeclareMethod\" : undefined;\n if (bodilessType && !this.match(2) && this.isLineTerminator()) {\n if (bodilessType === \"TSDeclareMethod\" && node.kind === \"constructor\") {\n for (const param of node.params) {\n if (param.type === \"TSParameterProperty\") {\n this.raise(TSErrors.UnexpectedParameterModifier, param);\n } else if (param.type === \"AssignmentPattern\") {\n this.raise(TSErrors.UnexpectedParameterInitializer, param);\n }\n }\n } else {\n for (const param of node.params) {\n if (param.type === \"AssignmentPattern\") {\n this.raise(TSErrors.UnexpectedParameterInitializer, param);\n }\n }\n }\n return this.finishNode(node, bodilessType);\n }\n if (bodilessType && this.state.isAmbientContext) {\n this.raise(TSErrors.DeclareFunctionHasImplementation, this.state.startLoc);\n if (bodilessType === \"TSDeclareFunction\" && node.declare) {\n return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n }\n }\n this.tsDisallowOptionalPattern(node);\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n registerFunctionStatementId(node) {\n if (!node.body && node.id) {\n this.checkIdentifier(node.id, 1024);\n } else {\n super.registerFunctionStatementId(node);\n }\n }\n tsCheckForInvalidTypeCasts(items) {\n items.forEach(node => {\n if (node?.type === \"TSTypeCastExpression\") {\n this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n }\n });\n }\n toReferencedList(exprList, isInParens) {\n this.tsCheckForInvalidTypeCasts(exprList);\n return exprList;\n }\n parseArrayLike(close, refExpressionErrors) {\n const node = super.parseArrayLike(close, refExpressionErrors);\n if (node.type === \"ArrayExpression\") {\n this.tsCheckForInvalidTypeCasts(node.elements);\n }\n return node;\n }\n parseSubscript(base, startLoc, noCalls, state) {\n if (!this.hasPrecedingLineBreak() && this.match(31)) {\n this.state.canStartJSXElement = false;\n this.next();\n const nonNullExpression = this.startNodeAt(startLoc);\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n let isOptionalCall = false;\n if (this.match(14) && this.lookaheadCharCode() === 60) {\n if (noCalls) {\n state.stop = true;\n return base;\n }\n state.optionalChainMember = isOptionalCall = true;\n this.next();\n }\n if (this.match(43) || this.match(47)) {\n let missingParenErrorLoc;\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsyncArrow(base)) {\n const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc);\n if (asyncArrowFn) {\n state.stop = true;\n return asyncArrowFn;\n }\n }\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n if (!typeArguments) return;\n if (isOptionalCall && !this.match(6)) {\n missingParenErrorLoc = this.state.curPosition();\n return;\n }\n if (tokenIsTemplate(this.state.type)) {\n const result = super.parseTaggedTemplateExpression(base, startLoc, state);\n result.typeArguments = typeArguments;\n return result;\n }\n if (!noCalls && this.eat(6)) {\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments();\n this.tsCheckForInvalidTypeCasts(node.arguments);\n node.typeArguments = typeArguments;\n if (state.optionalChainMember) {\n node.optional = isOptionalCall;\n }\n return this.finishCallExpression(node, state.optionalChainMember);\n }\n const tokenType = this.state.type;\n if (tokenType === 44 || tokenType === 48 || tokenType !== 6 && tokenType !== 89 && tokenType !== 116 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) {\n return;\n }\n const node = this.startNodeAt(startLoc);\n node.expression = base;\n node.typeArguments = typeArguments;\n return this.finishNode(node, \"TSInstantiationExpression\");\n });\n if (missingParenErrorLoc) {\n this.unexpected(missingParenErrorLoc, 6);\n }\n if (result) {\n if (result.type === \"TSInstantiationExpression\") {\n if (this.match(12) || this.match(14) && this.lookaheadCharCode() !== 40) {\n this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc);\n }\n if (!this.match(12) && !this.match(14)) {\n result.expression = super.stopParseSubscript(base, state);\n }\n }\n return result;\n }\n }\n return super.parseSubscript(base, startLoc, noCalls, state);\n }\n parseNewCallee(node) {\n super.parseNewCallee(node);\n const {\n callee\n } = node;\n if (callee.type === \"TSInstantiationExpression\" && !callee.extra?.parenthesized) {\n node.typeArguments = callee.typeArguments;\n node.callee = callee.expression;\n }\n }\n parseExprOp(left, leftStartLoc, minPrec) {\n let isSatisfies;\n if (tokenOperatorPrecedence(54) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(89) || (isSatisfies = this.isContextual(116)))) {\n const node = this.startNodeAt(leftStartLoc);\n node.expression = left;\n node.typeAnnotation = this.tsInType(() => {\n this.next();\n if (this.match(71)) {\n if (isSatisfies) {\n this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n keyword: \"const\"\n });\n }\n return this.tsParseTypeReference();\n }\n return this.tsParseType();\n });\n const result = this.finishNode(node, isSatisfies ? \"TSSatisfiesExpression\" : \"TSAsExpression\");\n this.reScan_lt_gt();\n return this.parseExprOp(result, leftStartLoc, minPrec);\n }\n return super.parseExprOp(left, leftStartLoc, minPrec);\n }\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (!this.state.isAmbientContext) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n checkDuplicateExports() {}\n isPotentialImportPhase(isExport) {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(126)) {\n const ch = this.lookaheadCharCode();\n return isExport ? ch === 123 || ch === 42 : ch !== 61;\n }\n return !isExport && this.isContextual(83);\n }\n applyImportPhase(node, isExport, phase, loc) {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n node.exportKind = phase === \"type\" ? \"type\" : \"value\";\n } else {\n node.importKind = phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n parseImport(node) {\n if (this.match(130)) {\n node.importKind = \"value\";\n if (this.scope.inTSNamespace) {\n this.raise(TSErrors.ImportInTSNamespace, node);\n }\n return super.parseImport(node);\n }\n let importNode;\n if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) {\n node.importKind = \"value\";\n const result = this.tsParseImportEqualsDeclaration(node);\n if (this.scope.inTSNamespace && result.moduleReference.type === \"TSExternalModuleReference\") {\n this.raise(TSErrors.ImportInTSNamespace, node);\n }\n return result;\n } else if (this.isContextual(126)) {\n const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false);\n if (this.lookaheadCharCode() === 61) {\n if (this.scope.inTSNamespace) {\n this.raise(TSErrors.ImportInTSNamespace, node);\n }\n return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier);\n } else {\n importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier);\n }\n } else {\n importNode = super.parseImport(node);\n }\n if (importNode.importKind === \"type\" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === \"ImportDefaultSpecifier\") {\n this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n } else if (this.scope.inTSNamespace) {\n this.raise(TSErrors.ImportInTSNamespace, importNode);\n }\n return importNode;\n }\n parseExport(node, decorators) {\n if (this.match(79)) {\n const nodeImportEquals = this.startNode();\n this.next();\n let maybeDefaultIdentifier = null;\n if (this.isContextual(126) && this.isPotentialImportPhase(false)) {\n maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false);\n } else {\n nodeImportEquals.importKind = \"value\";\n }\n const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier);\n node.attributes = [];\n node.declaration = declaration;\n node.exportKind = \"value\";\n node.source = null;\n node.specifiers = [];\n return this.finishNode(node, \"ExportNamedDeclaration\");\n } else if (this.eat(25)) {\n const assign = node;\n assign.expression = super.parseExpression();\n this.semicolon();\n this.sawUnambiguousESM = true;\n if (this.scope.inTSNamespace) {\n this.raise(TSErrors.ExportAssignmentInTSNamespace, assign);\n }\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(89)) {\n const decl = node;\n this.expectContextual(124);\n decl.id = this.parseIdentifier();\n this.checkIdentifier(decl.id, 8201);\n this.semicolon();\n if (this.scope.inTSNamespace) {\n this.raise(TSErrors.NamespaceExportInTSNamespace, decl);\n }\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n const result = super.parseExport(node, decorators);\n if (this.scope.inTSNamespace && (result.type !== \"ExportNamedDeclaration\" || result.source || !result.declaration && !this.state.isAmbientContext)) {\n this.raise(TSErrors.ExportInTSNamespace, result);\n }\n return result;\n }\n }\n isAbstractClass() {\n return this.isContextual(120) && this.isLookaheadContextual(\"class\");\n }\n parseExportDefaultExpression() {\n if (this.isAbstractClass()) {\n const cls = this.startNode();\n this.next();\n cls.abstract = true;\n return this.parseClass(cls, true, true);\n }\n if (this.match(125)) {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) return result;\n }\n return super.parseExportDefaultExpression();\n }\n parseVarStatement(node, kind, allowMissingInitializer = false) {\n const {\n isAmbientContext\n } = this.state;\n const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext);\n if (isAmbientContext && !node.declare && (kind === \"using\" || kind === \"await using\")) {\n this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind);\n return declaration;\n }\n for (const declarator of declaration.declarations) {\n const {\n id,\n init,\n definite\n } = declarator;\n if (definite) {\n if (init) {\n this.raise(TSErrors.DeclaratorDefiniteAssertionWithInitializer, id);\n } else if (!id.typeAnnotation) {\n this.raise(TSErrors.DeclaratorDefiniteAssertionRequiresTypeAnnotation, id);\n }\n }\n if (isAmbientContext && init) {\n if (kind === \"var\" || kind === \"let\" || !!id.typeAnnotation) {\n this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n } else if (!isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))) {\n this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init);\n }\n }\n }\n return declaration;\n }\n parseStatementContent(flags, decorators) {\n const allowDeclaration = !!(flags & 2);\n if (!this.state.containsEsc) {\n switch (this.state.type) {\n case 71:\n {\n if (this.isLookaheadContextual(\"enum\")) {\n const node = this.startNode();\n this.next();\n return this.tsParseEnumDeclaration(node, {\n const: true\n });\n }\n break;\n }\n case 120:\n case 121:\n {\n if (this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()) {\n const token = this.state.type;\n const node = this.startNode();\n this.next();\n const declaration = token === 121 ? this.tsTryParseDeclare(node) : this.tsParseAbstractDeclaration(node, decorators);\n if (declaration) {\n if (token === 121) {\n declaration.declare = true;\n }\n return declaration;\n } else {\n node.expression = this.createIdentifier(this.startNodeAtNode(node), token === 121 ? \"declare\" : \"abstract\");\n this.semicolon(false);\n return this.finishNode(node, \"ExpressionStatement\");\n }\n }\n break;\n }\n case 122:\n return this.tsParseEnumDeclaration(this.startNode());\n case 108:\n {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === 123) {\n const node = this.startNode();\n return this.tsParseAmbientExternalModuleDeclaration(node);\n }\n break;\n }\n case 125:\n {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) {\n if (!allowDeclaration) {\n this.raise(TSErrors.UnexpectedTypeDeclaration, result, \"interface\");\n }\n return result;\n }\n break;\n }\n case 123:\n {\n if (this.nextTokenIsStringLiteralOnSameLine()) {\n const node = this.startNode();\n this.next();\n return this.tsParseDeclaration(node, 123, false, decorators);\n } else if (this.nextTokenIsIdentifierOnSameLine()) {\n this.raise(TSErrors.InlineModuleDeclarationMustUseString, this.state.startLoc);\n const node = this.startNode();\n this.next();\n return this.tsParseDeclaration(node, 124, false, decorators);\n }\n break;\n }\n case 124:\n {\n if (this.nextTokenIsIdentifierOnSameLine()) {\n const node = this.startNode();\n this.next();\n return this.tsParseDeclaration(node, 124, false, decorators);\n }\n break;\n }\n case 126:\n {\n if (this.nextTokenIsIdentifierOnSameLine()) {\n const node = this.startNode();\n if (!allowDeclaration) {\n this.raise(TSErrors.UnexpectedTypeDeclaration, node, \"type\");\n }\n this.next();\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n }\n return super.parseStatementContent(flags, decorators);\n }\n parseAccessModifier() {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n tsHasSomeModifiers(member, modifiers) {\n return modifiers.some(modifier => {\n if (tsIsAccessModifier(modifier)) {\n return member.accessibility === modifier;\n }\n return !!member[modifier];\n });\n }\n tsIsStartOfStaticBlocks() {\n return this.isContextual(102) && this.lookaheadCharCode() === 123;\n }\n parseClassMember(classBody, member, state) {\n const modifiers = [\"declare\", \"private\", \"public\", \"protected\", \"override\", \"abstract\", \"readonly\", \"static\"];\n this.tsParseModifiers({\n allowedModifiers: modifiers,\n disallowedModifiers: [\"in\", \"out\"],\n stopOnStartOfClassStaticBlock: true,\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions\n }, member);\n const callParseClassMemberWithIsStatic = () => {\n if (this.tsIsStartOfStaticBlocks()) {\n this.next();\n this.next();\n if (this.tsHasSomeModifiers(member, modifiers)) {\n this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition());\n }\n super.parseClassStaticBlock(classBody, member);\n } else {\n this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);\n }\n };\n if (member.declare) {\n this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n } else {\n callParseClassMemberWithIsStatic();\n }\n if (member.decorators && member.decorators.length > 0 && !this.hasPlugin(\"decorators-legacy\")) {\n if (member.type === \"TSAbstractMethodDefinition\" || member.type === \"TSDeclareMethod\") {\n this.raise(TSErrors.DecoratorAbstractMethod, member, {\n kind: \"abstract method\"\n });\n } else if (member.type === \"ClassProperty\" && member.abstract || member.type === \"ClassProperty\" && member.declare || member.type === \"TSAbstractPropertyDefinition\" || member.type === \"PropertyDefinition\" && member.declare) {\n this.raise(TSErrors.DecoratorAbstractMethod, member, {\n kind: member.declare ? \"declare field\" : \"abstract field\"\n });\n }\n }\n }\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const idx = this.tsTryParseIndexSignature(member);\n if (idx) {\n classBody.body.push(idx);\n if (member.abstract) {\n this.raise(TSErrors.IndexSignatureHasAbstract, member);\n }\n if (member.accessibility) {\n this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n modifier: member.accessibility\n });\n }\n if (member.declare) {\n this.raise(TSErrors.IndexSignatureHasDeclare, member);\n }\n if (member.override) {\n this.raise(TSErrors.IndexSignatureHasOverride, member);\n }\n return;\n }\n if (!this.state.inAbstractClass && member.abstract) {\n this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n }\n if (member.override) {\n if (!state.hadSuperClass) {\n this.raise(TSErrors.OverrideNotInSubClass, member);\n }\n }\n super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n parsePostMemberNameModifiers(methodOrProp) {\n const optional = this.eat(13);\n if (optional) methodOrProp.optional = true;\n if (methodOrProp.readonly && this.match(6)) {\n this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n }\n if (methodOrProp.declare && this.match(6)) {\n this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n }\n }\n shouldParseExportDeclaration() {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n parseConditional(expr, startLoc, refExpressionErrors) {\n if (!this.match(13)) return expr;\n if (refExpressionErrors != null) {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n this.next();\n const node = this.startNodeAt(startLoc);\n node.test = expr;\n const oldInConditionalConsequent = this.state.inConditionalConsequent;\n this.state.inConditionalConsequent = true;\n node.consequent = this.parseMaybeAssignAllowIn();\n this.state.inConditionalConsequent = oldInConditionalConsequent;\n this.expect(10);\n node.alternate = this.parseMaybeAssign();\n return this.finishNode(node, \"ConditionalExpression\");\n }\n parseParenItem(node, startLoc) {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(13)) {\n newNode.optional = true;\n this.resetEndLocation(node);\n }\n if (this.match(10)) {\n const typeCastNode = this.startNodeAt(startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n return node;\n }\n parseExportDeclaration(node) {\n if (!this.state.isAmbientContext && this.isContextual(121)) {\n return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n }\n const startLoc = this.state.startLoc;\n const isDeclare = this.eatContextual(121);\n if (isDeclare && (this.isContextual(121) || !this.shouldParseExportDeclaration())) {\n throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc);\n }\n const isIdentifier = tokenIsIdentifier(this.state.type);\n const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node);\n if (!declaration) return null;\n if (declaration.type === \"TSInterfaceDeclaration\" || declaration.type === \"TSTypeAliasDeclaration\" || isDeclare) {\n node.exportKind = \"type\";\n }\n if (isDeclare && declaration.type !== \"TSImportEqualsDeclaration\") {\n this.resetStartLocation(declaration, startLoc);\n declaration.declare = true;\n }\n return declaration;\n }\n parseClassId(node, isStatement, optionalId, bindingType) {\n if ((!isStatement || optionalId) && this.isContextual(109)) {\n node.id = null;\n return;\n }\n super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331);\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);\n if (typeParameters) node.typeParameters = typeParameters;\n }\n parseClassPropertyAnnotation(node) {\n if (!node.optional) {\n if (this.eat(31)) {\n node.definite = true;\n } else if (this.eat(13)) {\n node.optional = true;\n }\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n if (node.definite) {\n if (this.match(25)) {\n this.raise(TSErrors.DeclaratorDefiniteAssertionWithInitializer, node);\n } else if (!type) {\n this.raise(TSErrors.DeclaratorDefiniteAssertionRequiresTypeAnnotation, node);\n }\n }\n }\n parseClassProperty(node) {\n this.parseClassPropertyAnnotation(node);\n if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(25)) {\n this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc);\n }\n if (node.abstract && this.match(25)) {\n const {\n key\n } = node;\n this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, {\n propertyName: key.type === \"Identifier\" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`\n });\n }\n return super.parseClassProperty(node);\n }\n parseClassPrivateProperty(node) {\n if (node.abstract) {\n this.raise(TSErrors.PrivateElementHasAbstract, node);\n }\n if (node.accessibility) {\n this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n modifier: node.accessibility\n });\n }\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n parseClassAccessorProperty(node) {\n this.parseClassPropertyAnnotation(node);\n if (node.optional) {\n this.raise(TSErrors.AccessorCannotBeOptional, node);\n }\n return super.parseClassAccessorProperty(node);\n }\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters && isConstructor) {\n this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n }\n const {\n declare = false,\n kind\n } = method;\n if (declare && (kind === \"get\" || kind === \"set\")) {\n this.raise(TSErrors.DeclareAccessor, method, {\n kind\n });\n }\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n }\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n declareClassPrivateMethodInScope(node, kind) {\n if (node.type === \"TSDeclareMethod\") return;\n if (node.type === \"MethodDefinition\" && node.value.body == null) {\n return;\n }\n super.declareClassPrivateMethodInScope(node, kind);\n }\n parseClassSuper(node) {\n super.parseClassSuper(node);\n if (node.superClass) {\n if (node.superClass.type === \"TSInstantiationExpression\") {\n const tsInstantiationExpression = node.superClass;\n const superClass = tsInstantiationExpression.expression;\n this.takeSurroundingComments(superClass, superClass.start, superClass.end);\n const superTypeArguments = tsInstantiationExpression.typeArguments;\n this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end);\n node.superClass = superClass;\n node.superTypeArguments = superTypeArguments;\n } else if (this.match(43) || this.match(47)) {\n node.superTypeArguments = this.tsParseTypeArgumentsInExpression();\n }\n }\n if (this.eatContextual(109)) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters) prop.typeParameters = typeParameters;\n return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n }\n parseFunctionParams(node, isConstructor) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, isConstructor);\n }\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n if (decl.id.type === \"Identifier\" && !this.hasPrecedingLineBreak() && this.eat(31)) {\n decl.definite = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id);\n }\n }\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(10)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n let state;\n let jsx;\n let typeCast;\n if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(43))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n if (!jsx?.error && !this.match(43)) {\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n if (!state || state === this.state) state = this.state.clone();\n let typeParameters;\n const arrow = this.tryParse(abort => {\n typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n if (expr.type !== \"ArrowFunctionExpression\" || expr.extra?.parenthesized) {\n abort();\n }\n if (typeParameters?.params.length !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n expr.typeParameters = typeParameters;\n if (this.hasPlugin(\"jsx\") && expr.typeParameters.params.length === 1 && !expr.typeParameters.extra?.trailingComma) {\n const parameter = expr.typeParameters.params[0];\n if (!parameter.constraint) {\n this.raise(TSErrors.SingleTypeParameterWithoutTrailingComma, this.optionFlags & 256 ? createPositionWithColumnOffset(parameter.loc.end, 1) : parameter, {\n typeParameterName: parameter.name.name\n });\n }\n }\n return expr;\n }, state);\n if (!arrow.error && !arrow.aborted) {\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n if (!jsx) {\n assert(!this.hasPlugin(\"jsx\"));\n typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!typeCast.error) return typeCast.node;\n }\n if (jsx?.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n if (arrow.node) {\n this.state = arrow.failState;\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n if (typeCast?.node) {\n this.state = typeCast.failState;\n return typeCast.node;\n }\n throw jsx?.error || arrow.error || typeCast?.error;\n }\n reportReservedArrowTypeParam(node) {\n if (node.params.length === 1 && !node.params[0].constraint && !node.extra?.trailingComma && this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedArrowTypeParam, node);\n }\n }\n parseMaybeUnary(refExpressionErrors, sawUnary) {\n if (!this.hasPlugin(\"jsx\") && this.match(43)) {\n return this.tsParseTypeAssertion();\n }\n return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n }\n parseArrow(node) {\n if (this.match(10)) {\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(10);\n if (this.canInsertSemicolon() || !this.match(15)) abort();\n return returnType;\n });\n if (result.aborted) return;\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n node.returnType = result.node;\n }\n }\n return super.parseArrow(node);\n }\n parseFunctionParamType(param) {\n if (this.eat(13)) {\n param.optional = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n return param;\n }\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return this.isAssignable(node.expression, isBinding);\n case \"TSParameterProperty\":\n return true;\n default:\n return super.isAssignable(node, isBinding);\n }\n }\n toAssignable(node, isLHS = false) {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.toAssignableParenthesizedExpression(node, isLHS);\n break;\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n if (isLHS) {\n this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node);\n } else {\n this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n }\n this.toAssignable(node.expression, isLHS);\n break;\n case \"AssignmentExpression\":\n if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left);\n }\n default:\n super.toAssignable(node, isLHS);\n }\n }\n toAssignableParenthesizedExpression(node, isLHS) {\n switch (node.expression.type) {\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isLHS);\n break;\n default:\n super.toAssignable(node, isLHS);\n }\n }\n checkToRestConversion(node, allowPattern) {\n switch (node.type) {\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n this.checkToRestConversion(node.expression, false);\n break;\n default:\n super.checkToRestConversion(node, allowPattern);\n }\n }\n isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {\n switch (type) {\n case \"TSTypeCastExpression\":\n return true;\n case \"TSParameterProperty\":\n return \"parameter\";\n case \"TSNonNullExpression\":\n return \"expression\";\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n return (binding !== 64 || !isUnparenthesizedInAssign) && [\"expression\", true];\n default:\n return super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);\n }\n }\n parseBindingAtom() {\n if (this.state.type === 74) {\n return this.parseIdentifier(true);\n }\n return super.parseBindingAtom();\n }\n parseMaybeDecoratorArguments(expr, startLoc) {\n if (this.match(43) || this.match(47)) {\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n if (this.match(6)) {\n const call = super.parseMaybeDecoratorArguments(expr, startLoc);\n call.typeArguments = typeArguments;\n return call;\n }\n this.unexpected(null, 6);\n }\n return super.parseMaybeDecoratorArguments(expr, startLoc);\n }\n checkCommaAfterRest(close) {\n if (this.state.isAmbientContext && this.match(8) && this.lookaheadCharCode() === close) {\n this.next();\n return false;\n }\n return super.checkCommaAfterRest(close);\n }\n isClassMethod() {\n return this.match(43) || super.isClassMethod();\n }\n isClassProperty() {\n return this.match(31) || this.match(10) || super.isClassProperty();\n }\n parseMaybeDefault(startLoc, left) {\n const node = super.parseMaybeDefault(startLoc, left);\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n }\n return node;\n }\n getTokenFromCode(code) {\n if (this.state.inType) {\n if (code === 62) {\n this.finishOp(44, 1);\n return;\n }\n if (code === 60) {\n this.finishOp(43, 1);\n return;\n }\n }\n super.getTokenFromCode(code);\n }\n reScan_lt_gt() {\n const {\n type\n } = this.state;\n if (type === 43) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === 44) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n reScan_lt() {\n const {\n type\n } = this.state;\n if (type === 47) {\n this.state.pos -= 2;\n this.finishOp(43, 1);\n return 43;\n }\n return type;\n }\n toAssignableListItem(exprList, index, isLHS) {\n const node = exprList[index];\n if (node.type === \"TSTypeCastExpression\") {\n exprList[index] = this.typeCastToParameter(node);\n }\n super.toAssignableListItem(exprList, index, isLHS);\n }\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocationFromNode(node.expression, node.typeAnnotation);\n return node.expression;\n }\n shouldParseArrow(params) {\n if (this.match(10)) {\n return params.every(expr => this.isAssignable(expr, true));\n }\n return super.shouldParseArrow(params);\n }\n shouldParseAsyncArrow() {\n if (this.match(10)) {\n if (this.state.inConditionalConsequent) return false;\n return true;\n }\n return super.shouldParseAsyncArrow();\n }\n parseParenAndDistinguishExpression(canStartArrow) {\n const oldInConditionalConsequent = this.state.inConditionalConsequent;\n this.state.inConditionalConsequent = false;\n const result = super.parseParenAndDistinguishExpression(canStartArrow);\n this.state.inConditionalConsequent = oldInConditionalConsequent;\n return result;\n }\n canHaveLeadingDecorator() {\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n jsxParseOpeningElementAfterName(node) {\n if (this.match(43) || this.match(47)) {\n const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());\n if (typeArguments) {\n node.typeArguments = typeArguments;\n }\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n getGetterSetterExpectedParamCount(method) {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n const firstParam = params[0];\n const hasContextParam = firstParam && this.isThisParam(firstParam);\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n parseCatchClauseParam() {\n const param = super.parseCatchClauseParam();\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n param.typeAnnotation = type;\n this.resetEndLocation(param);\n }\n return param;\n }\n tsInAmbientContext(cb) {\n const {\n isAmbientContext: oldIsAmbientContext,\n strict: oldStrict\n } = this.state;\n this.state.isAmbientContext = true;\n this.state.strict = false;\n try {\n return cb();\n } finally {\n this.state.isAmbientContext = oldIsAmbientContext;\n this.state.strict = oldStrict;\n }\n }\n parseClass(node, isStatement, optionalId) {\n const oldInAbstractClass = this.state.inAbstractClass;\n this.state.inAbstractClass = !!node.abstract;\n try {\n return super.parseClass(node, isStatement, optionalId);\n } finally {\n this.state.inAbstractClass = oldInAbstractClass;\n }\n }\n tsParseAbstractDeclaration(node, decorators) {\n if (this.match(76)) {\n node.abstract = true;\n return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false));\n } else if (this.isContextual(125)) {\n if (!this.hasFollowingLineBreak()) {\n node.abstract = true;\n this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node);\n return this.tsParseInterfaceDeclaration(node);\n } else {\n return null;\n }\n }\n throw this.unexpected(null, 76);\n }\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {\n const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n if (method.abstract || method.type === \"TSAbstractMethodDefinition\") {\n const hasEstreePlugin = this.hasPlugin(\"estree\");\n const methodFn = hasEstreePlugin ? method.value : method;\n if (methodFn.body) {\n const {\n key\n } = method;\n this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n methodName: key.type === \"Identifier\" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`\n });\n }\n }\n return method;\n }\n tsParseTypeParameterName() {\n return this.parseIdentifier();\n }\n shouldParseAsAmbientContext() {\n return !!this.getPluginOption(\"typescript\", \"dts\");\n }\n parse() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n return super.parse();\n }\n getExpression() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n return super.getExpression();\n }\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (!isString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);\n return this.finishNode(node, \"ExportSpecifier\");\n }\n node.exportKind = \"value\";\n return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);\n }\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {\n if (!importedIsString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);\n return this.finishNode(specifier, \"ImportSpecifier\");\n }\n specifier.importKind = \"value\";\n return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096);\n }\n parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {\n const leftOfAsKey = isImport ? \"imported\" : \"local\";\n const rightOfAsKey = isImport ? \"local\" : \"exported\";\n let leftOfAs = node[leftOfAsKey];\n let rightOfAs;\n let hasTypeSpecifier = false;\n let canParseAsKeyword = true;\n const loc = leftOfAs.start;\n if (this.isContextual(89)) {\n const firstAs = this.parseIdentifier();\n if (this.isContextual(89)) {\n const secondAs = this.parseIdentifier();\n if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n canParseAsKeyword = false;\n } else {\n rightOfAs = secondAs;\n canParseAsKeyword = false;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n canParseAsKeyword = false;\n rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n } else {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n if (isImport) {\n leftOfAs = this.parseIdentifier(true);\n if (!this.isContextual(89)) {\n this.checkReservedWord(leftOfAs.name, leftOfAs.start, true, true);\n }\n } else {\n leftOfAs = this.parseModuleExportName();\n }\n }\n if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc);\n }\n node[leftOfAsKey] = leftOfAs;\n node[rightOfAsKey] = rightOfAs;\n const kindKey = isImport ? \"importKind\" : \"exportKind\";\n node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n if (canParseAsKeyword && this.eatContextual(89)) {\n node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n }\n if (!node[rightOfAsKey]) {\n node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]);\n }\n if (isImport) {\n this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096);\n }\n }\n fillOptionalPropertiesForTSESLint(node) {\n switch (node.type) {\n case \"ExpressionStatement\":\n node.directive ??= undefined;\n return;\n case \"RestElement\":\n node.value = undefined;\n case \"Identifier\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"ObjectPattern\":\n node.decorators ??= [];\n node.optional ??= false;\n node.typeAnnotation ??= undefined;\n return;\n case \"TSParameterProperty\":\n node.accessibility ??= undefined;\n node.decorators ??= [];\n node.override ??= false;\n node.readonly ??= false;\n node.static ??= false;\n return;\n case \"TSEmptyBodyFunctionExpression\":\n node.body = null;\n case \"TSDeclareFunction\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n node.declare ??= false;\n node.returnType ??= undefined;\n node.typeParameters ??= undefined;\n return;\n case \"Property\":\n node.optional ??= false;\n return;\n case \"TSMethodSignature\":\n case \"TSPropertySignature\":\n node.optional ??= false;\n case \"TSIndexSignature\":\n node.accessibility ??= undefined;\n node.readonly ??= false;\n node.static ??= false;\n return;\n case \"TSAbstractPropertyDefinition\":\n case \"PropertyDefinition\":\n case \"TSAbstractAccessorProperty\":\n case \"AccessorProperty\":\n node.declare ??= false;\n node.definite ??= false;\n node.readonly ??= false;\n node.typeAnnotation ??= undefined;\n case \"TSAbstractMethodDefinition\":\n case \"MethodDefinition\":\n node.accessibility ??= undefined;\n node.decorators ??= [];\n node.override ??= false;\n node.optional ??= false;\n return;\n case \"ClassExpression\":\n node.id ??= null;\n case \"ClassDeclaration\":\n node.abstract ??= false;\n node.declare ??= false;\n node.decorators ??= [];\n node.implements ??= [];\n node.superTypeArguments ??= undefined;\n node.typeParameters ??= undefined;\n return;\n case \"TSTypeAliasDeclaration\":\n case \"VariableDeclaration\":\n node.declare ??= false;\n return;\n case \"VariableDeclarator\":\n node.definite ??= false;\n return;\n case \"TSEnumDeclaration\":\n node.const ??= false;\n node.declare ??= false;\n return;\n case \"TSEnumMember\":\n node.computed ??= false;\n return;\n case \"TSImportType\":\n node.qualifier ??= null;\n node.options ??= null;\n node.typeArguments ??= null;\n return;\n case \"TSInterfaceDeclaration\":\n node.declare ??= false;\n node.extends ??= [];\n return;\n case \"TSMappedType\":\n node.optional ??= false;\n node.readonly ??= undefined;\n return;\n case \"TSModuleDeclaration\":\n node.declare ??= false;\n node.global ??= node.kind === \"global\";\n return;\n case \"TSTypeParameter\":\n node.const ??= false;\n node.in ??= false;\n node.out ??= false;\n return;\n }\n }\n chStartsBindingIdentifierAndNotRelationalOperator(ch, pos) {\n if (isIdentifierStart(ch)) {\n keywordAndTSRelationalOperator.lastIndex = pos;\n if (keywordAndTSRelationalOperator.test(this.input)) {\n const endCh = this.codePointAtPos(keywordAndTSRelationalOperator.lastIndex);\n if (!isIdentifierChar(endCh) && endCh !== 92) {\n return false;\n }\n }\n return true;\n } else if (ch === 92) {\n return true;\n } else {\n return false;\n }\n }\n nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifierAndNotRelationalOperator(nextCh, next);\n }\n nextTokenIsStringLiteralOnSameLine() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return nextCh === 34 || nextCh === 39;\n }\n};\nfunction isPossiblyLiteralEnum(expression) {\n if (expression.type !== \"MemberExpression\") return false;\n const {\n computed,\n property\n } = expression;\n if (computed && property.type !== \"StringLiteral\" && (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)) {\n return false;\n }\n return isUncomputedMemberExpressionChain(expression.object);\n}\nfunction isValidAmbientConstInitializer(expression, estree) {\n const {\n type\n } = expression;\n if (expression.extra?.parenthesized) {\n return false;\n }\n if (estree) {\n if (type === \"Literal\") {\n const {\n value\n } = expression;\n if (typeof value === \"string\" || typeof value === \"boolean\") {\n return true;\n }\n }\n } else {\n if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n return true;\n }\n }\n if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n return true;\n }\n if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n return true;\n }\n if (isPossiblyLiteralEnum(expression)) {\n return true;\n }\n return false;\n}\nfunction isNumber(expression, estree) {\n if (estree) {\n return expression.type === \"Literal\" && (typeof expression.value === \"number\" || \"bigint\" in expression);\n }\n return expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\";\n}\nfunction isNegativeNumber(expression, estree) {\n if (expression.type === \"UnaryExpression\") {\n const {\n operator,\n argument\n } = expression;\n if (operator === \"-\" && isNumber(argument, estree)) {\n return true;\n }\n }\n return false;\n}\nfunction isUncomputedMemberExpressionChain(expression) {\n if (expression.type === \"Identifier\") return true;\n if (expression.type !== \"MemberExpression\" || expression.computed) {\n return false;\n }\n return isUncomputedMemberExpressionChain(expression.object);\n}\nconst PlaceholderErrorTemplates = {\n ClassNameIsRequired: \"A class name is required.\",\n UnexpectedSpace: \"Unexpected space in placeholder.\"\n};\nconst PlaceholderErrors = ParseErrorEnum`placeholders`(PlaceholderErrorTemplates);\nconst placeholders = superClass => class PlaceholdersParserMixin extends superClass {\n parsePlaceholder(expectedNode) {\n if (this.match(129)) {\n const node = this.startNode();\n this.next();\n this.assertNoSpace();\n node.name = super.parseIdentifier(true);\n this.assertNoSpace();\n this.expect(129);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n finishPlaceholder(node, expectedNode) {\n let placeholder = node;\n if (!placeholder.expectedNode || !placeholder.type) {\n placeholder = this.finishNode(placeholder, \"Placeholder\");\n }\n placeholder.expectedNode = expectedNode;\n return placeholder;\n }\n getTokenFromCode(code) {\n if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {\n this.finishOp(129, 2);\n } else {\n super.getTokenFromCode(code);\n }\n }\n parseExprAtom(refExpressionErrors) {\n return this.parsePlaceholder(\"Expression\") || super.parseExprAtom(refExpressionErrors);\n }\n parseIdentifier(liberal) {\n return this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal);\n }\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (word !== undefined) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n cloneIdentifier(node) {\n const cloned = super.cloneIdentifier(node);\n if (cloned.type === \"Placeholder\") {\n cloned.expectedNode = node.expectedNode;\n }\n return cloned;\n }\n cloneStringLiteral(node) {\n if (node.type === \"Placeholder\") {\n return this.cloneIdentifier(node);\n }\n return super.cloneStringLiteral(node);\n }\n parseBindingAtom() {\n return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n }\n isValidLVal(type, disallowCallExpression, isParenthesized, binding) {\n return type === \"Placeholder\" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);\n }\n toAssignable(node, isLHS) {\n if (node && node.type === \"Placeholder\" && node.expectedNode === \"Expression\") {\n node.expectedNode = \"Pattern\";\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n chStartsBindingIdentifier(ch, pos) {\n if (super.chStartsBindingIdentifier(ch, pos)) {\n return true;\n }\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) {\n return true;\n }\n return false;\n }\n verifyBreakContinue(node, isBreak) {\n if (node.label?.type === \"Placeholder\") return;\n super.verifyBreakContinue(node, isBreak);\n }\n parseExpressionStatement(node, expr) {\n if (expr.type !== \"Placeholder\" || expr.extra?.parenthesized) {\n return super.parseExpressionStatement(node, expr);\n }\n if (this.match(10)) {\n const stmt = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n this.semicolon();\n const stmtPlaceholder = node;\n stmtPlaceholder.name = expr.name;\n return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n }\n parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {\n return this.parsePlaceholder(\"BlockStatement\") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse);\n }\n parseFunctionId(requireId) {\n return this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId);\n }\n parseClass(node, isStatement, optionalId) {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n this.next();\n const oldStrict = this.state.strict;\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (placeholder) {\n if (this.match(77) || this.match(129) || this.match(2)) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc);\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n super.parseClassSuper(node);\n node.body = this.parsePlaceholder(\"ClassBody\") || super.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, type);\n }\n parseExport(node, decorators) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(node, decorators);\n const node2 = node;\n if (!this.isContextual(94) && !this.match(8)) {\n node2.specifiers = [];\n node2.source = null;\n node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node2, \"ExportNamedDeclaration\");\n }\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = placeholder;\n node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return super.parseExport(node2, decorators);\n }\n isExportDefaultSpecifier() {\n if (this.match(61)) {\n const next = this.nextTokenStart();\n if (this.isUnparsedContextual(next, \"from\")) {\n if (this.input.startsWith(tokenLabelName(129), this.nextTokenStartSince(next + 4))) {\n return true;\n }\n }\n }\n return super.isExportDefaultSpecifier();\n }\n maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {\n if (node.specifiers?.length) {\n return true;\n }\n return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);\n }\n checkExport(node) {\n const {\n specifiers\n } = node;\n if (specifiers?.length) {\n node.specifiers = specifiers.filter(node => node.exported.type === \"Placeholder\");\n }\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n parseImport(node) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(node);\n node.specifiers = [];\n if (!this.isContextual(94) && !this.match(8)) {\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n const specifier = this.startNodeAtNode(placeholder);\n specifier.local = placeholder;\n node.specifiers.push(this.finishNode(specifier, \"ImportDefaultSpecifier\"));\n if (this.eat(8)) {\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n this.expectContextual(94);\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n parseImportSource() {\n return this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource();\n }\n assertNoSpace() {\n if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) {\n this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);\n }\n }\n};\nconst v8intrinsic = superClass => class V8IntrinsicMixin extends superClass {\n parseV8Intrinsic() {\n if (this.match(50)) {\n const v8IntrinsicStartLoc = this.state.startLoc;\n const node = this.startNode();\n this.next();\n if (tokenIsIdentifier(this.state.type)) {\n const name = this.parseIdentifierName();\n const identifier = this.createIdentifier(node, name);\n this.castNodeTo(identifier, \"V8IntrinsicIdentifier\");\n if (this.match(6)) {\n return identifier;\n }\n }\n this.unexpected(v8IntrinsicStartLoc);\n }\n }\n parseExprAtom(refExpressionErrors) {\n return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors);\n }\n};\nconst PIPELINE_PROPOSALS = [\"fsharp\", \"hack\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\nfunction validatePlugins(pluginsMap) {\n if (pluginsMap.has(\"decorators\")) {\n if (pluginsMap.has(\"decorators-legacy\")) {\n throw new Error(\"Cannot use the decorators and decorators-legacy plugin together\");\n }\n }\n if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n if (pluginsMap.has(\"pipelineOperator\")) {\n const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n if (!PIPELINE_PROPOSALS.includes(proposal)) {\n const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`);\n }\n if (proposal === \"hack\") {\n if (pluginsMap.has(\"placeholders\")) {\n throw new Error(\"Cannot combine placeholders plugin and Hack-style pipes.\");\n }\n if (pluginsMap.has(\"v8intrinsic\")) {\n throw new Error(\"Cannot combine v8intrinsic plugin and Hack-style pipes.\");\n }\n const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n if (!TOPIC_TOKENS.includes(topicToken)) {\n const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`);\n }\n }\n }\n if (pluginsMap.has(\"moduleAttributes\")) {\n throw new Error(\"`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.\");\n }\n if (pluginsMap.has(\"importAssertions\")) {\n throw new Error(\"`importAssertions` has been removed in Babel 8, please use import attributes instead.\");\n }\n if (pluginsMap.has(\"deprecatedImportAssert\")) {\n console.warn(\"`deprecatedImportAssert` has been removed in Babel 8, please use import attributes instead.\");\n } else if (pluginsMap.has(\"importAttributes\") && pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax) {\n console.warn(\"The 'importAttributes' plugin has been removed in Babel 8. Please migrate any usage of `assert`-style attributes to `with`.\");\n }\n if (pluginsMap.has(\"recordAndTuple\")) {\n throw new Error(\"The 'recordAndTuple' plugin has been removed in Babel 8. Please remove it from your configuration.\");\n }\n if (pluginsMap.has(\"asyncDoExpressions\") && !pluginsMap.has(\"doExpressions\")) {\n const error = new Error(\"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\");\n error.missingPlugins = \"doExpressions\";\n throw error;\n }\n if (pluginsMap.has(\"optionalChainingAssign\") && pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\") {\n throw new Error(\"The 'optionalChainingAssign' plugin requires a 'version' option,\" + \" representing the last proposal update. Currently, the\" + \" only supported value is '2023-07'.\");\n }\n if (pluginsMap.has(\"discardBinding\") && pluginsMap.get(\"discardBinding\").syntaxType !== \"void\") {\n throw new Error(\"The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.\");\n }\n if (pluginsMap.has(\"decimal\")) {\n throw new Error(\"The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.\");\n }\n if (pluginsMap.has(\"importReflection\")) {\n throw new Error(\"The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and \" + \"replace 'import module' with 'import source' in your code.\");\n }\n}\nconst mixinPlugins = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders\n};\nconst mixinPluginNames = Object.keys(mixinPlugins);\nclass Parser extends StatementParser {\n constructor(options, input, pluginsMap) {\n const normalizedOptions = getOptions(options);\n super(normalizedOptions, input);\n this.options = normalizedOptions;\n this.initializeScopes();\n this.plugins = pluginsMap;\n this.filename = normalizedOptions.sourceFilename;\n this.startIndex = normalizedOptions.startIndex;\n let optionFlags = 0;\n if (normalizedOptions.allowAwaitOutsideFunction) {\n optionFlags |= 1;\n }\n if (normalizedOptions.allowReturnOutsideFunction) {\n optionFlags |= 2;\n }\n if (normalizedOptions.allowImportExportEverywhere) {\n optionFlags |= 8;\n }\n if (normalizedOptions.allowSuperOutsideMethod) {\n optionFlags |= 16;\n }\n if (normalizedOptions.allowUndeclaredExports) {\n optionFlags |= 64;\n }\n if (normalizedOptions.allowNewTargetOutsideFunction) {\n optionFlags |= 4;\n }\n if (normalizedOptions.allowYieldOutsideFunction) {\n optionFlags |= 32;\n }\n if (normalizedOptions.ranges) {\n optionFlags |= 128;\n }\n if (normalizedOptions.locations === true) {\n optionFlags |= 256;\n }\n if (normalizedOptions.tokens) {\n optionFlags |= 512;\n }\n if (normalizedOptions.createImportExpressions) {\n optionFlags |= 1024;\n }\n if (normalizedOptions.createParenthesizedExpressions) {\n optionFlags |= 2048;\n }\n if (normalizedOptions.errorRecovery) {\n optionFlags |= 4096;\n }\n if (normalizedOptions.attachComment) {\n optionFlags |= 8192;\n }\n if (normalizedOptions.annexB) {\n optionFlags |= 16384;\n }\n this.optionFlags = optionFlags;\n }\n getScopeHandler() {\n return ScopeHandler;\n }\n parse() {\n this.enterInitialScopes();\n const file = this.startNode();\n const program = this.startNode();\n this.nextToken();\n file.errors = [];\n const result = this.parseTopLevel(file, program);\n result.errors = this.state.errors;\n result.comments.length = this.state.commentsLen;\n return result;\n }\n}\nfunction parse(input, options) {\n if (options?.sourceType === \"unambiguous\") {\n options = {\n ...options\n };\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n if (parser.ambiguousScriptDifferentAst) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n } else {\n ast.program.sourceType = \"script\";\n }\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\nfunction parseExpression(input, options) {\n const parser = getParser(options, input);\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n return parser.getExpression();\n}\nfunction generateExportedTokenTypes(internalTokenTypes) {\n const tokenTypes = {};\n for (const typeName of Object.keys(internalTokenTypes)) {\n tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n }\n return tokenTypes;\n}\nconst tokTypes = generateExportedTokenTypes(tt);\nfunction getParser(options, input) {\n let cls = Parser;\n const pluginsMap = new Map();\n if (options?.plugins) {\n for (const plugin of options.plugins) {\n let name, opts;\n if (typeof plugin === \"string\") {\n name = plugin;\n } else {\n [name, opts] = plugin;\n }\n if (!pluginsMap.has(name)) {\n pluginsMap.set(name, opts || {});\n }\n }\n validatePlugins(pluginsMap);\n cls = getParserClass(pluginsMap);\n }\n return new cls(options, input, pluginsMap);\n}\nconst parserClassCache = new Map();\nfunction getParserClass(pluginsMap) {\n const pluginList = [];\n for (const name of mixinPluginNames) {\n if (pluginsMap.has(name)) {\n pluginList.push(name);\n }\n }\n const key = pluginList.join(\"|\");\n let cls = parserClassCache.get(key);\n if (!cls) {\n cls = Parser;\n for (const plugin of pluginList) {\n cls = mixinPlugins[plugin](cls);\n }\n parserClassCache.set(key, cls);\n }\n return cls;\n}\nfunction getLine(locData, pos) {\n if (pos < 0 || pos * 2 >= locData.length) {\n throw new Error(`Position ${pos} is out of bounds for location data.`);\n }\n return locData[pos * 2];\n}\nfunction getColumn(locData, pos) {\n if (pos < 0 || pos * 2 + 1 >= locData.length) {\n throw new Error(`Position ${pos} is out of bounds for location data.`);\n }\n return locData[pos * 2 + 1];\n}\nexport { getColumn, getLine, parse, parseExpression, tokTypes };\n//# sourceMappingURL=index.js.map\n","//#region src/utils.ts\n/**\n* Coerce `value`.\n*/\nfunction coerce(value) {\n\tif (value instanceof Error) return value.stack || value.message;\n\treturn value;\n}\n/**\n* Selects a color for a debug namespace\n* @return An ANSI color code for the given namespace\n*/\nfunction selectColor(colors, namespace) {\n\tlet hash = 0;\n\tfor (let i = 0; i < namespace.length; i++) {\n\t\thash = (hash << 5) - hash + namespace.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\treturn colors[Math.abs(hash) % colors.length];\n}\n/**\n* Checks if the given string matches a namespace template, honoring\n* asterisks as wildcards.\n*/\nfunction matchesTemplate(search, template) {\n\tlet searchIndex = 0;\n\tlet templateIndex = 0;\n\tlet starIndex = -1;\n\tlet matchIndex = 0;\n\twhile (searchIndex < search.length) if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === \"*\")) if (template[templateIndex] === \"*\") {\n\t\tstarIndex = templateIndex;\n\t\tmatchIndex = searchIndex;\n\t\ttemplateIndex++;\n\t} else {\n\t\tsearchIndex++;\n\t\ttemplateIndex++;\n\t}\n\telse if (starIndex !== -1) {\n\t\ttemplateIndex = starIndex + 1;\n\t\tmatchIndex++;\n\t\tsearchIndex = matchIndex;\n\t} else return false;\n\twhile (templateIndex < template.length && template[templateIndex] === \"*\") templateIndex++;\n\treturn templateIndex === template.length;\n}\nfunction humanize(value) {\n\tif (value >= 1e3) return `${(value / 1e3).toFixed(1)}s`;\n\treturn `${value}ms`;\n}\n//#endregion\n//#region src/core.ts\nlet globalNamespaces = \"\";\n/**\n* Returns a string of the currently enabled debug namespaces.\n*/\nfunction namespaces() {\n\treturn globalNamespaces;\n}\nfunction createDebug(namespace, options) {\n\tlet prevTime;\n\tlet enableOverride;\n\tlet namespacesCache;\n\tlet enabledCache;\n\tconst debug = (...args) => {\n\t\tif (!debug.enabled) return;\n\t\tconst curr = Date.now();\n\t\tconst diff = curr - (prevTime || curr);\n\t\tprevTime = curr;\n\t\targs[0] = coerce(args[0]);\n\t\tif (typeof args[0] !== \"string\") args.unshift(\"%O\");\n\t\tlet index = 0;\n\t\targs[0] = args[0].replace(/%([a-z%])/gi, (match, format) => {\n\t\t\tif (match === \"%%\") return \"%\";\n\t\t\tindex++;\n\t\t\tconst formatter = options.formatters[format];\n\t\t\tif (typeof formatter === \"function\") {\n\t\t\t\tconst value = args[index];\n\t\t\t\tmatch = formatter.call(debug, value);\n\t\t\t\targs.splice(index, 1);\n\t\t\t\tindex--;\n\t\t\t}\n\t\t\treturn match;\n\t\t});\n\t\toptions.formatArgs.call(debug, diff, args);\n\t\tdebug.log(...args);\n\t};\n\tdebug.extend = function(namespace, delimiter = \":\") {\n\t\treturn createDebug(this.namespace + delimiter + namespace, {\n\t\t\tuseColors: this.useColors,\n\t\t\tcolor: this.color,\n\t\t\tformatArgs: this.formatArgs,\n\t\t\tformatters: this.formatters,\n\t\t\tinspectOpts: this.inspectOpts,\n\t\t\tlog: this.log,\n\t\t\thumanize: this.humanize\n\t\t});\n\t};\n\tObject.assign(debug, options);\n\tdebug.namespace = namespace;\n\tObject.defineProperty(debug, \"enabled\", {\n\t\tenumerable: true,\n\t\tconfigurable: false,\n\t\tget: () => {\n\t\t\tif (enableOverride != null) return enableOverride;\n\t\t\tif (namespacesCache !== globalNamespaces) {\n\t\t\t\tnamespacesCache = globalNamespaces;\n\t\t\t\tenabledCache = enabled(namespace);\n\t\t\t}\n\t\t\treturn enabledCache;\n\t\t},\n\t\tset: (v) => {\n\t\t\tenableOverride = v;\n\t\t}\n\t});\n\treturn debug;\n}\nlet names = [];\nlet skips = [];\nfunction enable(namespaces) {\n\tglobalNamespaces = namespaces;\n\tnames = [];\n\tskips = [];\n\tconst split = globalNamespaces.trim().replace(/\\s+/g, \",\").split(\",\").filter(Boolean);\n\tfor (const ns of split) if (ns[0] === \"-\") skips.push(ns.slice(1));\n\telse names.push(ns);\n}\n/**\n* Disable debug output.\n*/\nfunction disable() {\n\tconst namespaces = [...names, ...skips.map((namespace) => `-${namespace}`)].join(\",\");\n\tenable(\"\");\n\treturn namespaces;\n}\n/**\n* Returns true if the given mode name is enabled, false otherwise.\n*/\nfunction enabled(name) {\n\tfor (const skip of skips) if (matchesTemplate(name, skip)) return false;\n\tfor (const ns of names) if (matchesTemplate(name, ns)) return true;\n\treturn false;\n}\n//#endregion\nexport { namespaces as a, enabled as i, disable as n, humanize as o, enable as r, selectColor as s, createDebug as t };\n","import { a as namespaces, i as enabled, n as disable, o as humanize, r as enable$1, s as selectColor, t as createDebug$1 } from \"./core.js\";\n//#region src/browser.ts\nconst colors = [\n\t\"#0000CC\",\n\t\"#0000FF\",\n\t\"#0033CC\",\n\t\"#0033FF\",\n\t\"#0066CC\",\n\t\"#0066FF\",\n\t\"#0099CC\",\n\t\"#0099FF\",\n\t\"#00CC00\",\n\t\"#00CC33\",\n\t\"#00CC66\",\n\t\"#00CC99\",\n\t\"#00CCCC\",\n\t\"#00CCFF\",\n\t\"#3300CC\",\n\t\"#3300FF\",\n\t\"#3333CC\",\n\t\"#3333FF\",\n\t\"#3366CC\",\n\t\"#3366FF\",\n\t\"#3399CC\",\n\t\"#3399FF\",\n\t\"#33CC00\",\n\t\"#33CC33\",\n\t\"#33CC66\",\n\t\"#33CC99\",\n\t\"#33CCCC\",\n\t\"#33CCFF\",\n\t\"#6600CC\",\n\t\"#6600FF\",\n\t\"#6633CC\",\n\t\"#6633FF\",\n\t\"#66CC00\",\n\t\"#66CC33\",\n\t\"#9900CC\",\n\t\"#9900FF\",\n\t\"#9933CC\",\n\t\"#9933FF\",\n\t\"#99CC00\",\n\t\"#99CC33\",\n\t\"#CC0000\",\n\t\"#CC0033\",\n\t\"#CC0066\",\n\t\"#CC0099\",\n\t\"#CC00CC\",\n\t\"#CC00FF\",\n\t\"#CC3300\",\n\t\"#CC3333\",\n\t\"#CC3366\",\n\t\"#CC3399\",\n\t\"#CC33CC\",\n\t\"#CC33FF\",\n\t\"#CC6600\",\n\t\"#CC6633\",\n\t\"#CC9900\",\n\t\"#CC9933\",\n\t\"#CCCC00\",\n\t\"#CCCC33\",\n\t\"#FF0000\",\n\t\"#FF0033\",\n\t\"#FF0066\",\n\t\"#FF0099\",\n\t\"#FF00CC\",\n\t\"#FF00FF\",\n\t\"#FF3300\",\n\t\"#FF3333\",\n\t\"#FF3366\",\n\t\"#FF3399\",\n\t\"#FF33CC\",\n\t\"#FF33FF\",\n\t\"#FF6600\",\n\t\"#FF6633\",\n\t\"#FF9900\",\n\t\"#FF9933\",\n\t\"#FFCC00\",\n\t\"#FFCC33\"\n];\n/**\n* Colorize log arguments if enabled.\n*/\nfunction formatArgs(diff, args) {\n\tconst { useColors } = this;\n\targs[0] = `${(useColors ? \"%c\" : \"\") + this.namespace + (useColors ? \" %c\" : \" \") + args[0] + (useColors ? \"%c \" : \" \")}+${this.humanize(diff)}`;\n\tif (!useColors) return;\n\tconst c = `color: ${this.color}`;\n\targs.splice(1, 0, c, \"color: inherit\");\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-z%]/gi, (match) => {\n\t\tif (match === \"%%\") return;\n\t\tindex++;\n\t\tif (match === \"%c\") lastC = index;\n\t});\n\targs.splice(lastC, 0, c);\n}\n/**\n* Invokes `console.debug()` when available.\n* No-op when `console.debug` is not a \"function\".\n* If `console.debug` is not available, falls back\n* to `console.log`.\n*/\nconst log = console.debug || console.log || (() => {});\nconst storage = localstorage();\nconst defaultOptions = {\n\tuseColors: true,\n\tformatArgs,\n\tformatters: { \n\t/**\n\t* Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n\t*/\nj(v) {\n\t\ttry {\n\t\t\treturn JSON.stringify(v);\n\t\t} catch (error) {\n\t\t\treturn `[UnexpectedJSONParseError]: ${error.message}`;\n\t\t}\n\t} },\n\tinspectOpts: {},\n\thumanize,\n\tlog\n};\nfunction createDebug(namespace, options) {\n\tvar _ref;\n\tconst color = (_ref = options && options.color) !== null && _ref !== void 0 ? _ref : selectColor(colors, namespace);\n\treturn createDebug$1(namespace, Object.assign(defaultOptions, { color }, options));\n}\n/**\n* Localstorage attempts to return the localstorage.\n*\n* This is necessary because safari throws\n* when a user disables cookies/localstorage\n* and you attempt to access it.\n*/\nfunction localstorage() {\n\ttry {\n\t\treturn localStorage;\n\t} catch (_unused) {}\n}\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = storage.getItem(\"debug\") || storage.getItem(\"DEBUG\");\n\t} catch (_unused2) {}\n\tif (!r && typeof process !== \"undefined\" && \"env\" in process) r = process.env.DEBUG;\n\treturn r || \"\";\n}\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) storage.setItem(\"debug\", namespaces);\n\t\telse storage.removeItem(\"debug\");\n\t} catch (_unused3) {}\n}\n/**\n* Enables a debug mode by namespaces. This can include modes\n* separated by a colon and wildcards.\n*/\nfunction enable(namespaces) {\n\tsave(namespaces);\n\tenable$1(namespaces);\n}\nenable$1(load());\n//#endregion\nexport { createDebug, disable, enable, enabled, namespaces };\n","const NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source, opts, startLineBaseZero) {\n const startLoc = {\n column: null,\n line: -1,\n ...loc.start\n };\n const endLoc = {\n ...startLoc,\n ...loc.end\n };\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n if (startLine === -1) {\n start = 0;\n }\n if (endLine === -1) {\n end = source.length;\n }\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (startColumn == null) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn != null) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n const safeStart = startColumn ?? 0;\n const safeEnd = endColumn ?? safeStart;\n markerLines[startLine] = [safeStart, safeEnd - safeStart];\n }\n }\n return {\n start,\n end,\n markerLines\n };\n}\nfunction _codeFrameColumns(rawLines, loc, opts = {}, colorOpts) {\n const {\n defs,\n highlight\n } = colorOpts || {\n defs: {\n gutter: String,\n marker: String,\n message: String,\n reset: String\n },\n highlight: String\n };\n const startLineBaseZero = (opts.startLine || 1) - 1;\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts, startLineBaseZero);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end + startLineBaseZero).length;\n const highlightedLines = highlight(rawLines);\n let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, hasMarker[0]).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", defs.gutter(gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, defs.marker(\"^\").repeat(numberOfMarkers)].join(\"\");\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [defs.marker(\">\"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n return defs.reset(frame);\n}\n\nexport { _codeFrameColumns };\n//# sourceMappingURL=common-shared.js.map\n","import { _codeFrameColumns } from './common-shared.js';\n\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n return _codeFrameColumns(rawLines, loc, opts);\n}\nfunction highlight(code) {\n return code;\n}\n\nexport { codeFrameColumns, highlight };\n//# sourceMappingURL=browser.js.map\n","const bmpIdentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nconst bmpIdentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\nconst bmpIdentifierStart = new RegExp(\"[\" + bmpIdentifierStartChars + \"]\");\nconst bmpIdentifier = new RegExp(\"[\" + bmpIdentifierStartChars + bmpIdentifierChars + \"]\");\nconst supplementaryIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst supplementaryIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInSupplementarySet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && bmpIdentifierStart.test(String.fromCharCode(code));\n }\n return isInSupplementarySet(code, supplementaryIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && bmpIdentifier.test(String.fromCharCode(code));\n }\n return isInSupplementarySet(code, supplementaryIdentifierStartCodes) || isInSupplementarySet(code, supplementaryIdentifierCodes);\n}\nfunction isIdentifierName(name) {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n\nexport { isIdentifierChar, isIdentifierName, isIdentifierStart };\n//# sourceMappingURL=identifier-browser.js.map\n","export { isIdentifierChar, isIdentifierName, isIdentifierStart } from '#identifier';\n\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\nexport { isKeyword, isReservedWord, isStrictBindOnlyReservedWord, isStrictBindReservedWord, isStrictReservedWord };\n//# sourceMappingURL=index.js.map\n","var _isDigit = function isDigit(code) {\n return code >= 48 && code <= 57;\n};\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),\n hex: new Set([46, 88, 95, 120])\n};\nconst isAllowedNumericSeparatorSibling = {\n bin: ch => ch === 48 || ch === 49,\n oct: ch => ch >= 48 && ch <= 55,\n dec: ch => ch >= 48 && ch <= 57,\n hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n};\nfunction readStringContents(type, input, pos, lineStart, curLine, errors) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const {\n length\n } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === 92) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(input, pos, lineStart, curLine, type === \"template\", errors);\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = {\n pos,\n lineStart,\n curLine\n };\n } else {\n out += res.ch;\n }\n ({\n pos,\n lineStart,\n curLine\n } = res);\n chunkStart = pos;\n } else if (ch === 8232 || ch === 8233) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === 10 || ch === 13) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (ch === 13 && input.charCodeAt(pos) === 10) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine\n };\n}\nfunction isStringEnd(type, ch, input, pos) {\n if (type === \"template\") {\n return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;\n }\n return ch === (type === \"double\" ? 34 : 39);\n}\nfunction readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {\n const throwOnInvalid = !inTemplate;\n pos++;\n const res = ch => ({\n pos,\n ch,\n lineStart,\n curLine\n });\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case 110:\n return res(\"\\n\");\n case 114:\n return res(\"\\r\");\n case 120:\n {\n let code;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case 117:\n {\n let code;\n ({\n code,\n pos\n } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case 116:\n return res(\"\\t\");\n case 98:\n return res(\"\\b\");\n case 118:\n return res(\"\\u000b\");\n case 102:\n return res(\"\\f\");\n case 13:\n if (input.charCodeAt(pos) === 10) {\n ++pos;\n }\n case 10:\n lineStart = pos;\n ++curLine;\n case 8232:\n case 8233:\n return res(\"\");\n case 56:\n case 57:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n default:\n if (ch >= 48 && ch <= 55) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n let octalStr = match[0];\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (octalStr !== \"0\" || next === 56 || next === 57) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n return res(String.fromCharCode(octal));\n }\n return res(String.fromCharCode(ch));\n }\n}\nfunction readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {\n const initialPos = pos;\n let n;\n ({\n n,\n pos\n } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return {\n code: n,\n pos\n };\n}\nfunction readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {\n const start = pos;\n const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;\n let invalid = false;\n let total = 0;\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n if (code === 95 && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n if (!allowNumSeparator) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n ++pos;\n continue;\n }\n if (code >= 97) {\n val = code - 97 + 10;\n } else if (code >= 65) {\n val = code - 65 + 10;\n } else if (_isDigit(code)) {\n val = code - 48;\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n if (val <= 9 && bailOnError) {\n return {\n n: null,\n pos\n };\n } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || len != null && pos - start !== len || invalid) {\n return {\n n: null,\n pos\n };\n }\n return {\n n: total,\n pos\n };\n}\nfunction readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {\n const ch = input.charCodeAt(pos);\n let code;\n if (ch === 123) {\n ++pos;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, input.indexOf(\"}\", pos) - pos, true, throwOnInvalid, errors));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return {\n code: null,\n pos\n };\n }\n }\n } else {\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));\n }\n return {\n code,\n pos\n };\n}\n\nexport { readCodePoint, readInt, readStringContents };\n//# sourceMappingURL=index.js.map\n","import { isKeyword, isStrictReservedWord, isIdentifierName, isReservedWord, isIdentifierChar } from '@babel/helper-validator-identifier';\nimport { readStringContents } from '@babel/helper-string-parser';\n\nfunction shallowEqual(actual, expected) {\n const keys = Object.keys(expected);\n for (const key of keys) {\n if (actual[key] !== expected[key]) {\n return false;\n }\n }\n return true;\n}\n\nconst warnings = new Set();\nfunction deprecationWarning(oldName, newName, prefix = \"\", cacheKey = oldName) {\n if (warnings.has(cacheKey)) return;\n warnings.add(cacheKey);\n const {\n internal,\n trace\n } = captureShortStackTrace(1, 2);\n if (internal) {\n return;\n }\n console.warn(`${prefix}\\`${oldName}\\` has been deprecated, please migrate to \\`${newName}\\`\\n${trace}`);\n}\nfunction captureShortStackTrace(skip, length) {\n const {\n stackTraceLimit,\n prepareStackTrace\n } = Error;\n let stackTrace;\n Error.stackTraceLimit = 1 + skip + length;\n Error.prepareStackTrace = function (err, stack) {\n stackTrace = stack;\n };\n new Error().stack;\n Error.stackTraceLimit = stackTraceLimit;\n Error.prepareStackTrace = prepareStackTrace;\n if (!stackTrace) return {\n internal: false,\n trace: \"\"\n };\n const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);\n return {\n internal: /[\\\\/]@babel[\\\\/]/.test(shortStackTrace[1].getFileName()),\n trace: shortStackTrace.map(frame => ` at ${frame}`).join(\"\\n\")\n };\n}\n\nfunction isArrayExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrayExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isAssignmentExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"AssignmentExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBinaryExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"BinaryExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isInterpreterDirective(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterpreterDirective\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDirective(node, opts) {\n if (!node) return false;\n if (node.type !== \"Directive\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDirectiveLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"DirectiveLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBlockStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"BlockStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBreakStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"BreakStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isCallExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"CallExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isCatchClause(node, opts) {\n if (!node) return false;\n if (node.type !== \"CatchClause\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isConditionalExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ConditionalExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isContinueStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ContinueStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDebuggerStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"DebuggerStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDoWhileStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"DoWhileStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEmptyStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"EmptyStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExpressionStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExpressionStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFile(node, opts) {\n if (!node) return false;\n if (node.type !== \"File\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isForInStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ForInStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isForStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ForStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunctionDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunctionExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"Identifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isIfStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"IfStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isLabeledStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"LabeledStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isStringLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"StringLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNumericLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"NumericLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNullLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"NullLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBooleanLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"BooleanLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isRegExpLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"RegExpLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isLogicalExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"LogicalExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isMemberExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"MemberExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNewExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"NewExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isProgram(node, opts) {\n if (!node) return false;\n if (node.type !== \"Program\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectMethod\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isRestElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"RestElement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isReturnStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ReturnStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSequenceExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"SequenceExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isParenthesizedExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ParenthesizedExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSwitchCase(node, opts) {\n if (!node) return false;\n if (node.type !== \"SwitchCase\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSwitchStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"SwitchStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isThisExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ThisExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isThrowStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ThrowStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTryStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"TryStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isUnaryExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"UnaryExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isUpdateExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"UpdateExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isVariableDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"VariableDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isVariableDeclarator(node, opts) {\n if (!node) return false;\n if (node.type !== \"VariableDeclarator\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isWhileStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"WhileStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isWithStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"WithStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isAssignmentPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"AssignmentPattern\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isArrayPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrayPattern\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isArrowFunctionExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrowFunctionExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportAllDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportAllDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportDefaultDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportDefaultDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportNamedDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportNamedDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportSpecifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isForOfStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ForOfStatement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportDefaultSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportDefaultSpecifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportNamespaceSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportNamespaceSpecifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportSpecifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isMetaProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"MetaProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassMethod\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectPattern\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSpreadElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"SpreadElement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSuper(node, opts) {\n if (!node) return false;\n if (node.type !== \"Super\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTaggedTemplateExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TaggedTemplateExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTemplateElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"TemplateElement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTemplateLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"TemplateLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isYieldExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"YieldExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isAwaitExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"AwaitExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImport(node, opts) {\n if (!node) return false;\n if (node.type !== \"Import\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBigIntLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"BigIntLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportNamespaceSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportNamespaceSpecifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isOptionalMemberExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"OptionalMemberExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isOptionalCallExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"OptionalCallExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassPrivateProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassPrivateProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassPrivateMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassPrivateMethod\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isPrivateName(node, opts) {\n if (!node) return false;\n if (node.type !== \"PrivateName\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isStaticBlock(node, opts) {\n if (!node) return false;\n if (node.type !== \"StaticBlock\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportAttribute(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportAttribute\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isAnyTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"AnyTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isArrayTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrayTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBooleanTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"BooleanTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBooleanLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNullLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassImplements(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassImplements\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareClass(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareClass\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareFunction(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareFunction\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareInterface(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareInterface\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareModule(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareModule\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareModuleExports(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareModuleExports\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareTypeAlias(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareTypeAlias\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareOpaqueType(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareOpaqueType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareVariable(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareVariable\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareExportDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareExportDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclareExportAllDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareExportAllDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclaredPredicate(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclaredPredicate\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExistsTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExistsTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunctionTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunctionTypeParam(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionTypeParam\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isGenericTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"GenericTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isInferredPredicate(node, opts) {\n if (!node) return false;\n if (node.type !== \"InferredPredicate\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isInterfaceExtends(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterfaceExtends\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isInterfaceDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterfaceDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isInterfaceTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterfaceTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isIntersectionTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"IntersectionTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isMixedTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"MixedTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEmptyTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"EmptyTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNullableTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NullableTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNumberLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBigIntLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"BigIntLiteralTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNumberTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NumberTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectTypeInternalSlot(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeInternalSlot\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectTypeCallProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeCallProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectTypeIndexer(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeIndexer\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectTypeProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectTypeSpreadProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isOpaqueType(node, opts) {\n if (!node) return false;\n if (node.type !== \"OpaqueType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isQualifiedTypeIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"QualifiedTypeIdentifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isStringLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isStringTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"StringTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSymbolTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"SymbolTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isThisTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ThisTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTupleTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TupleTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeofTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeofTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeAlias(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeAlias\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeCastExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeCastExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeParameter(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeParameter\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeParameterDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeParameterDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeParameterInstantiation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeParameterInstantiation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isUnionTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"UnionTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isVariance(node, opts) {\n if (!node) return false;\n if (node.type !== \"Variance\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isVoidTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"VoidTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumBooleanBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumBooleanBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumNumberBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumNumberBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumStringBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumStringBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumSymbolBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumSymbolBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumBooleanMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumBooleanMember\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumNumberMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumNumberMember\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumStringMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumStringMember\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumDefaultedMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumDefaultedMember\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isIndexedAccessType(node, opts) {\n if (!node) return false;\n if (node.type !== \"IndexedAccessType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isOptionalIndexedAccessType(node, opts) {\n if (!node) return false;\n if (node.type !== \"OptionalIndexedAccessType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXAttribute(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXAttribute\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXClosingElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXClosingElement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXElement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXEmptyExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXEmptyExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXExpressionContainer(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXExpressionContainer\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXSpreadChild(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXSpreadChild\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXIdentifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXMemberExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXMemberExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXNamespacedName(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXNamespacedName\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXOpeningElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXOpeningElement\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXSpreadAttribute(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXSpreadAttribute\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXText(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXText\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXFragment(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXFragment\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXOpeningFragment(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXOpeningFragment\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSXClosingFragment(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXClosingFragment\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isPlaceholder(node, opts) {\n if (!node) return false;\n if (node.type !== \"Placeholder\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isV8IntrinsicIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"V8IntrinsicIdentifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isArgumentPlaceholder(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArgumentPlaceholder\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBindExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"BindExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClassAccessorProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassAccessorProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDecorator(node, opts) {\n if (!node) return false;\n if (node.type !== \"Decorator\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDoExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"DoExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportDefaultSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportDefaultSpecifier\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isModuleExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ModuleExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTopicReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"TopicReference\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isVoidPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"VoidPattern\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSParameterProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSParameterProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSDeclareFunction(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSDeclareFunction\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSDeclareMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSDeclareMethod\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSQualifiedName(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSQualifiedName\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSCallSignatureDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSCallSignatureDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSConstructSignatureDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSPropertySignature(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSPropertySignature\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSMethodSignature(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSMethodSignature\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSIndexSignature(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIndexSignature\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSAnyKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSAnyKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSBooleanKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSBooleanKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSBigIntKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSBigIntKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSIntrinsicKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIntrinsicKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSNeverKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNeverKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSNullKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNullKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSNumberKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNumberKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSObjectKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSObjectKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSStringKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSStringKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSSymbolKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSSymbolKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSUndefinedKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSUndefinedKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSUnknownKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSUnknownKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSVoidKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSVoidKeyword\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSThisType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSThisType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSFunctionType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSFunctionType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSConstructorType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSConstructorType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeReference\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypePredicate(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypePredicate\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeQuery(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeQuery\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSArrayType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSArrayType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTupleType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTupleType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSOptionalType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSOptionalType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSRestType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSRestType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSNamedTupleMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNamedTupleMember\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSUnionType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSUnionType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSIntersectionType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIntersectionType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSConditionalType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSConditionalType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSInferType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInferType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSParenthesizedType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSParenthesizedType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeOperator(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeOperator\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSIndexedAccessType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIndexedAccessType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSMappedType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSMappedType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTemplateLiteralType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTemplateLiteralType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSLiteralType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSLiteralType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSClassImplements(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSClassImplements\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSInterfaceHeritage(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInterfaceHeritage\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSInterfaceDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInterfaceDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSInterfaceBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInterfaceBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeAliasDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeAliasDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSInstantiationExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInstantiationExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSAsExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSAsExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSSatisfiesExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSSatisfiesExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeAssertion(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeAssertion\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSEnumBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSEnumBody\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSEnumDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSEnumDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSEnumMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSEnumMember\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSModuleDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSModuleDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSModuleBlock(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSModuleBlock\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSImportType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSImportType\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSImportEqualsDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSImportEqualsDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSExternalModuleReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSExternalModuleReference\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSNonNullExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNonNullExpression\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSExportAssignment(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSExportAssignment\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSNamespaceExportDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeAnnotation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeParameterInstantiation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeParameterInstantiation\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeParameterDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeParameterDeclaration\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeParameter(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeParameter\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isStandardized(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"InterpreterDirective\":\n case \"Directive\":\n case \"DirectiveLiteral\":\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"CallExpression\":\n case \"CatchClause\":\n case \"ConditionalExpression\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"File\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"Program\":\n case \"ObjectExpression\":\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"RestElement\":\n case \"ReturnStatement\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"ThisExpression\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"VariableDeclaration\":\n case \"VariableDeclarator\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ArrowFunctionExpression\":\n case \"ClassBody\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ExportSpecifier\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"MetaProperty\":\n case \"ClassMethod\":\n case \"ObjectPattern\":\n case \"SpreadElement\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateElement\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"ImportExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"ExportNamespaceSpecifier\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n case \"StaticBlock\":\n case \"ImportAttribute\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Identifier\":\n case \"StringLiteral\":\n case \"BlockStatement\":\n case \"ClassBody\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExpression(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"CallExpression\":\n case \"ConditionalExpression\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ObjectExpression\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"ThisExpression\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"MetaProperty\":\n case \"TaggedTemplateExpression\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"ImportExpression\":\n case \"BigIntLiteral\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"TypeCastExpression\":\n case \"JSXElement\":\n case \"JSXFragment\":\n case \"BindExpression\":\n case \"DoExpression\":\n case \"ModuleExpression\":\n case \"TopicReference\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Expression\":\n case \"Identifier\":\n case \"StringLiteral\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBinary(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isScopable(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBlockParent(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isBlock(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"Program\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isStatement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"ReturnStatement\":\n case \"SwitchStatement\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"VariableDeclaration\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Statement\":\n case \"Declaration\":\n case \"BlockStatement\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTerminatorless(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isCompletionStatement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isConditional(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ConditionalExpression\":\n case \"IfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isLoop(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"WhileStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isWhile(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"WhileStatement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExpressionWrapper(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExpressionStatement\":\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFor(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isForXStatement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunction(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunctionParent(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isPureish(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"ArrowFunctionExpression\":\n case \"BigIntLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"VariableDeclaration\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Declaration\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFunctionParameter(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isPatternLike(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isLVal(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSEntityName(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"ThisExpression\":\n case \"TSQualifiedName\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isLiteral(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"TemplateLiteral\":\n case \"BigIntLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isUserWhitespacable(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isMethod(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isObjectMember(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isProperty(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectProperty\":\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isUnaryLike(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isPattern(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Pattern\") break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isClass(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isImportOrExportDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isExportDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isModuleSpecifier(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExportSpecifier\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isPrivate(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFlow(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ClassImplements\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"DeclaredPredicate\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"FunctionTypeParam\":\n case \"GenericTypeAnnotation\":\n case \"InferredPredicate\":\n case \"InterfaceExtends\":\n case \"InterfaceDeclaration\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"BigIntLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n case \"OpaqueType\":\n case \"QualifiedTypeIdentifier\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"TypeAlias\":\n case \"TypeAnnotation\":\n case \"TypeCastExpression\":\n case \"TypeParameter\":\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n case \"UnionTypeAnnotation\":\n case \"Variance\":\n case \"VoidTypeAnnotation\":\n case \"EnumDeclaration\":\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFlowType(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"GenericTypeAnnotation\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"BigIntLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFlowBaseAnnotation(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFlowDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isFlowPredicate(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DeclaredPredicate\":\n case \"InferredPredicate\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumBody(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isEnumMember(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isJSX(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXEmptyExpression\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXIdentifier\":\n case \"JSXMemberExpression\":\n case \"JSXNamespacedName\":\n case \"JSXOpeningElement\":\n case \"JSXSpreadAttribute\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isMiscellaneous(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Placeholder\":\n case \"V8IntrinsicIdentifier\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isAccessor(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTypeScript(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSParameterProperty\":\n case \"TSDeclareFunction\":\n case \"TSDeclareMethod\":\n case \"TSQualifiedName\":\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSNamedTupleMember\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSClassImplements\":\n case \"TSInterfaceHeritage\":\n case \"TSInterfaceDeclaration\":\n case \"TSInterfaceBody\":\n case \"TSTypeAliasDeclaration\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSEnumBody\":\n case \"TSEnumDeclaration\":\n case \"TSEnumMember\":\n case \"TSModuleDeclaration\":\n case \"TSModuleBlock\":\n case \"TSImportType\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExternalModuleReference\":\n case \"TSNonNullExpression\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n case \"TSTypeAnnotation\":\n case \"TSTypeParameterInstantiation\":\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameter\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSTypeElement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSType(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSClassImplements\":\n case \"TSInterfaceHeritage\":\n case \"TSImportType\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isTSBaseType(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n break;\n default:\n return false;\n }\n return opts == null || shallowEqual(node, opts);\n}\nfunction isNumberLiteral(node, opts) {\n deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n if (!node) return false;\n if (node.type !== \"NumberLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isRegexLiteral(node, opts) {\n deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n if (!node) return false;\n if (node.type !== \"RegexLiteral\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isRestProperty(node, opts) {\n deprecationWarning(\"isRestProperty\", \"isRestElement\");\n if (!node) return false;\n if (node.type !== \"RestProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isSpreadProperty(node, opts) {\n deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n if (!node) return false;\n if (node.type !== \"SpreadProperty\") return false;\n return opts == null || shallowEqual(node, opts);\n}\nfunction isModuleDeclaration(node, opts) {\n deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n return isImportOrExportDeclaration(node, opts);\n}\n\nfunction isMemberExpressionLike(node) {\n return isMemberExpression(node) || isMetaProperty(node);\n}\nfunction matchesPattern(member, match, allowPartial) {\n if (!isMemberExpressionLike(member)) return false;\n const parts = Array.isArray(match) ? match : match.split(\".\");\n const nodes = [];\n let node;\n for (node = member; isMemberExpressionLike(node); node = node.object ?? node.meta) {\n nodes.push(node.property);\n }\n nodes.push(node);\n if (nodes.length < parts.length) return false;\n if (!allowPartial && nodes.length > parts.length) return false;\n for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n const node = nodes[j];\n let value;\n if (isIdentifier(node)) {\n value = node.name;\n } else if (isStringLiteral(node)) {\n value = node.value;\n } else if (isThisExpression(node)) {\n value = \"this\";\n } else if (isSuper(node)) {\n value = \"super\";\n } else if (isPrivateName(node)) {\n value = \"#\" + node.id.name;\n } else {\n return false;\n }\n if (parts[i] !== value) return false;\n }\n return true;\n}\n\nfunction buildMatchMemberExpression(match, allowPartial) {\n const parts = match.split(\".\");\n return member => matchesPattern(member, parts, allowPartial);\n}\n\nconst isReactComponent = buildMatchMemberExpression(\"React.Component\");\n\nfunction isCompatTag(tagName) {\n return !!tagName && /^[a-z]/.test(tagName);\n}\n\nfunction isType(nodeType, targetType) {\n if (nodeType === targetType) return true;\n if (nodeType == null) return false;\n if (ALIAS_KEYS[targetType]) return false;\n const aliases = FLIPPED_ALIAS_KEYS[targetType];\n if (aliases?.includes(nodeType)) return true;\n return false;\n}\n\nfunction isPlaceholderType(placeholderType, targetType) {\n if (placeholderType === targetType) return true;\n const aliases = PLACEHOLDERS_ALIAS[placeholderType];\n if (aliases?.includes(targetType)) return true;\n return false;\n}\n\nfunction is(type, node, opts) {\n if (!node) return false;\n const matches = isType(node.type, type);\n if (!matches) {\n if (!opts && node.type === \"Placeholder\" && type in FLIPPED_ALIAS_KEYS) {\n return isPlaceholderType(node.expectedNode, type);\n }\n return false;\n }\n if (opts === undefined) {\n return true;\n } else {\n return shallowEqual(node, opts);\n }\n}\n\nfunction isValidIdentifier(name, reserved = true) {\n if (typeof name !== \"string\") return false;\n if (reserved) {\n if (isKeyword(name) || isStrictReservedWord(name, true)) {\n return false;\n }\n }\n return isIdentifierName(name);\n}\n\nconst STATEMENT_OR_BLOCK_KEYS = [\"consequent\", \"body\", \"alternate\"];\nconst FLATTENABLE_KEYS = [\"body\", \"expressions\"];\nconst FOR_INIT_KEYS = [\"left\", \"init\"];\nconst COMMENT_KEYS = [\"leadingComments\", \"trailingComments\", \"innerComments\"];\nconst LOGICAL_OPERATORS = [\"||\", \"&&\", \"??\"];\nconst UPDATE_OPERATORS = [\"++\", \"--\"];\nconst BOOLEAN_NUMBER_BINARY_OPERATORS = [\">\", \"<\", \">=\", \"<=\"];\nconst EQUALITY_BINARY_OPERATORS = [\"==\", \"===\", \"!=\", \"!==\"];\nconst COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, \"in\", \"instanceof\"];\nconst BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];\nconst NUMBER_BINARY_OPERATORS = [\"-\", \"/\", \"%\", \"*\", \"**\", \"&\", \"|\", \">>\", \">>>\", \"<<\", \"^\"];\nconst BINARY_OPERATORS = [\"+\", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, \"|>\"];\nconst ASSIGNMENT_OPERATORS = [\"=\", \"+=\", ...NUMBER_BINARY_OPERATORS.map(op => op + \"=\"), ...LOGICAL_OPERATORS.map(op => op + \"=\")];\nconst BOOLEAN_UNARY_OPERATORS = [\"delete\", \"!\"];\nconst NUMBER_UNARY_OPERATORS = [\"+\", \"-\", \"~\"];\nconst STRING_UNARY_OPERATORS = [\"typeof\"];\nconst UNARY_OPERATORS = [\"void\", \"throw\", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];\nconst INHERIT_KEYS = {\n optional: [\"typeAnnotation\", \"typeParameters\", \"returnType\"],\n force: [\"start\", \"loc\", \"end\"]\n};\n\nconst VISITOR_KEYS = {};\nconst ALIAS_KEYS = {};\nconst FLIPPED_ALIAS_KEYS = {};\nconst NODE_FIELDS$1 = {};\nconst BUILDER_KEYS = {};\nconst DEPRECATED_KEYS = {};\nconst NODE_PARENT_VALIDATIONS = {};\nconst NODE_UNION_SHAPES__PRIVATE = {};\nfunction getType(val) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\nfunction combine(fn, ...validators) {\n return Object.assign(fn, ...validators);\n}\nfunction validate$2(validate) {\n return {\n validate\n };\n}\nfunction validateType(...typeNames) {\n return validate$2(assertNodeType(...typeNames));\n}\nfunction validateOptional(validate) {\n return {\n validate,\n optional: true\n };\n}\nfunction validateDefault(validate, defaultValue) {\n return {\n validate,\n default: defaultValue,\n optional: false\n };\n}\nfunction validateOptionalType(...typeNames) {\n return {\n validate: assertNodeType(...typeNames),\n optional: true\n };\n}\nfunction arrayOf(elementType) {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\nfunction arrayOfType(...typeNames) {\n return arrayOf(assertNodeType(...typeNames));\n}\nfunction validateArrayOfType(...typeNames) {\n return validate$2(arrayOfType(...typeNames));\n}\nfunction assertEach(callback) {\n const childValidator = validateChild;\n function validator(node, key, val) {\n if (!Array.isArray(val)) return;\n let i = 0;\n const subKey = {\n toString() {\n return `${key}[${i}]`;\n }\n };\n for (; i < val.length; i++) {\n const v = val[i];\n callback(node, subKey, v);\n childValidator(node, subKey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\nfunction assertOneOf(...values) {\n function validate(node, key, val) {\n if (!values.includes(val)) {\n throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`);\n }\n }\n validate.oneOf = values;\n return validate;\n}\nconst allExpandedTypes = [];\nfunction assertNodeType(...types) {\n const expandedTypes = new Set();\n allExpandedTypes.push({\n types,\n set: expandedTypes\n });\n function validate(node, key, val) {\n const valType = val?.type;\n if (valType != null) {\n if (expandedTypes.has(valType)) {\n validateChild(node, key, val);\n return;\n }\n if (valType === \"Placeholder\") {\n for (const type of types) {\n if (is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n }\n }\n throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(valType)}`);\n }\n validate.oneOfNodeTypes = types;\n return validate;\n}\nfunction assertNodeOrValueType(...types) {\n function validate(node, key, val) {\n const primitiveType = getType(val);\n for (const type of types) {\n if (primitiveType === type || is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val?.type)}`);\n }\n validate.oneOfNodeOrValueTypes = types;\n return validate;\n}\nfunction assertValueType(type) {\n function validate(node, key, val) {\n if (getType(val) === type) {\n return;\n }\n throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);\n }\n validate.type = type;\n return validate;\n}\nfunction assertShape(shape) {\n const keys = Object.keys(shape);\n function validate(node, key, val) {\n const errors = [];\n for (const property of keys) {\n try {\n validateField(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\\n${errors.join(\"\\n\")}`);\n }\n }\n validate.shapeOf = shape;\n return validate;\n}\nfunction assertOptionalChainStart() {\n function validate(node) {\n let current = node;\n while (node) {\n const {\n type\n } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n break;\n }\n throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`);\n }\n return validate;\n}\nfunction chain(...fns) {\n function validate(...args) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n if (fns.length >= 2 && \"type\" in fns[0] && fns[0].type === \"array\" && !(\"each\" in fns[1])) {\n throw new Error(`An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`);\n }\n return validate;\n}\nconst validTypeOpts = new Set([\"aliases\", \"builder\", \"deprecatedAlias\", \"fields\", \"inherits\", \"visitor\", \"validate\", \"unionShape\"]);\nconst validFieldKeys = new Set([\"default\", \"optional\", \"deprecated\", \"validate\"]);\nconst store = {};\nfunction defineAliasedType(...aliases) {\n return (type, opts = {}) => {\n let defined = opts.aliases;\n if (!defined) {\n if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n defined ??= [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n defineType$5(type, opts);\n };\n}\nfunction defineType$5(type, opts = {}) {\n const inherits = opts.inherits && store[opts.inherits] || {};\n const visitor = opts.visitor || inherits.visitor || [];\n const aliases = opts.aliases || inherits.aliases || [];\n const builder = opts.builder || inherits.builder || opts.visitor || [];\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\") {\n throw new Error(\"field defaults can only be primitives or empty arrays currently\");\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n deprecated: field.deprecated,\n validate: field.validate\n };\n }\n }\n }\n for (const k of Object.keys(opts)) {\n if (!validTypeOpts.has(k)) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type;\n }\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n if (field.default === null) {\n field.optional ??= true;\n }\n if (field.default === undefined) {\n field.default = null;\n field.optional ??= false;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n for (const k of Object.keys(field)) {\n if (!validFieldKeys.has(k)) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS$1[type] = opts.fields = fields;\n ALIAS_KEYS[type] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type);\n });\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n if (opts.unionShape) {\n NODE_UNION_SHAPES__PRIVATE[type] = opts.unionShape;\n }\n store[type] = opts;\n}\n\nconst utils = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n ALIAS_KEYS,\n BUILDER_KEYS,\n DEPRECATED_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS: NODE_FIELDS$1,\n NODE_PARENT_VALIDATIONS,\n NODE_UNION_SHAPES__PRIVATE,\n VISITOR_KEYS,\n allExpandedTypes,\n arrayOf,\n arrayOfType,\n assertEach,\n assertNodeOrValueType,\n assertNodeType,\n assertOneOf,\n assertOptionalChainStart,\n assertShape,\n assertValueType,\n chain,\n combine,\n default: defineType$5,\n defineAliasedType,\n validate: validate$2,\n validateArrayOfType,\n validateDefault,\n validateOptional,\n validateOptionalType,\n validateType\n}, Symbol.toStringTag, { value: 'Module' });\n\nconst classMethodOrPropertyUnionShapeCommon = (allowPrivateName = false) => ({\n unionShape: {\n discriminator: \"computed\",\n shapes: [{\n name: \"computed\",\n value: [true],\n properties: {\n key: {\n validate: assertNodeType(\"Expression\")\n }\n }\n }, {\n name: \"nonComputed\",\n value: [false],\n properties: {\n key: {\n validate: allowPrivateName ? assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"PrivateName\") : assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\")\n }\n }\n }]\n }\n});\nconst memberExpressionUnionShapeCommon = {\n unionShape: {\n discriminator: \"computed\",\n shapes: [{\n name: \"computed\",\n value: [true],\n properties: {\n property: {\n validate: assertNodeType(\"Expression\")\n }\n }\n }, {\n name: \"nonComputed\",\n value: [false],\n properties: {\n property: {\n validate: assertNodeType(\"Identifier\", \"PrivateName\")\n }\n }\n }]\n }\n};\nconst defineType$4 = defineAliasedType(\"Standardized\");\ndefineType$4(\"ArrayExpression\", {\n fields: {\n elements: {\n validate: arrayOf(assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\")),\n default: undefined\n }\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"]\n});\ndefineType$4(\"AssignmentExpression\", {\n fields: {\n operator: {\n validate: combine(function () {\n const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n const pattern = assertOneOf(\"=\");\n return function (node, key, val) {\n const validator = is(\"Pattern\", node.left) ? pattern : identifier;\n validator(node, key, val);\n };\n }(), {\n oneOf: ASSIGNMENT_OPERATORS\n })\n },\n left: {\n validate: assertNodeType(\"Identifier\", \"MemberExpression\", \"OptionalMemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n },\n right: {\n validate: assertNodeType(\"Expression\")\n }\n },\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Expression\"]\n});\ndefineType$4(\"BinaryExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n fields: {\n operator: {\n validate: assertOneOf(...BINARY_OPERATORS)\n },\n left: {\n validate: function () {\n const expression = assertNodeType(\"Expression\");\n const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n const validator = combine(function (node, key, val) {\n const validator = node.operator === \"in\" ? inOp : expression;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"PrivateName\"]\n });\n return validator;\n }()\n },\n right: {\n validate: assertNodeType(\"Expression\")\n }\n },\n unionShape: {\n discriminator: \"operator\",\n shapes: [{\n name: \"in\",\n value: [\"in\"],\n properties: {\n left: {\n validate: assertNodeType(\"Expression\", \"PrivateName\")\n }\n }\n }, {\n name: \"notIn\",\n value: BINARY_OPERATORS.filter(op => op !== \"in\"),\n properties: {\n left: {\n validate: assertNodeType(\"Expression\")\n }\n }\n }]\n },\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"]\n});\ndefineType$4(\"InterpreterDirective\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\")\n }\n }\n});\ndefineType$4(\"Directive\", {\n visitor: [\"value\"],\n fields: {\n value: {\n validate: assertNodeType(\"DirectiveLiteral\")\n }\n }\n});\ndefineType$4(\"DirectiveLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\")\n }\n }\n});\ndefineType$4(\"BlockStatement\", {\n builder: [\"body\", \"directives\"],\n visitor: [\"directives\", \"body\"],\n fields: {\n directives: {\n validate: arrayOfType(\"Directive\"),\n default: []\n },\n body: validateArrayOfType(\"Statement\")\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"]\n});\ndefineType$4(\"BreakStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true\n }\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"]\n});\ndefineType$4(\"CallExpression\", {\n visitor: [\"callee\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\", \"Super\", \"Import\", \"V8IntrinsicIdentifier\")\n },\n arguments: validateArrayOfType(\"Expression\", \"SpreadElement\", \"ArgumentPlaceholder\"),\n typeArguments: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n }\n }\n});\ndefineType$4(\"CatchClause\", {\n visitor: [\"param\", \"body\"],\n fields: {\n param: {\n validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n optional: true\n },\n body: {\n validate: assertNodeType(\"BlockStatement\")\n }\n },\n aliases: [\"Scopable\", \"BlockParent\"]\n});\ndefineType$4(\"ConditionalExpression\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\")\n },\n consequent: {\n validate: assertNodeType(\"Expression\")\n },\n alternate: {\n validate: assertNodeType(\"Expression\")\n }\n },\n aliases: [\"Expression\", \"Conditional\"]\n});\ndefineType$4(\"ContinueStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true\n }\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"]\n});\ndefineType$4(\"DebuggerStatement\", {\n aliases: [\"Statement\"]\n});\ndefineType$4(\"DoWhileStatement\", {\n builder: [\"test\", \"body\"],\n visitor: [\"body\", \"test\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\")\n },\n body: {\n validate: assertNodeType(\"Statement\")\n }\n },\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"]\n});\ndefineType$4(\"EmptyStatement\", {\n aliases: [\"Statement\"]\n});\ndefineType$4(\"ExpressionStatement\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\")\n }\n },\n aliases: [\"Statement\", \"ExpressionWrapper\"]\n});\ndefineType$4(\"File\", {\n builder: [\"program\", \"comments\", \"tokens\"],\n visitor: [\"program\"],\n fields: {\n program: {\n validate: assertNodeType(\"Program\")\n },\n comments: {\n validate: assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n optional: true\n },\n tokens: {\n validate: assertEach(Object.assign(() => {}, {\n type: \"any\"\n })),\n optional: true\n }\n }\n});\ndefineType$4(\"ForInStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\", \"ForXStatement\"],\n fields: {\n left: {\n validate: assertNodeType(\"VariableDeclaration\", \"Identifier\", \"MemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n },\n right: {\n validate: assertNodeType(\"Expression\")\n },\n body: {\n validate: assertNodeType(\"Statement\")\n }\n }\n});\ndefineType$4(\"ForStatement\", {\n visitor: [\"init\", \"test\", \"update\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n fields: {\n init: {\n validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n optional: true\n },\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n },\n update: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n },\n body: {\n validate: assertNodeType(\"Statement\")\n }\n }\n});\nconst functionCommon = () => ({\n params: validateArrayOfType(\"FunctionParameter\"),\n generator: {\n default: false\n },\n async: {\n default: false\n }\n});\nconst functionTypeAnnotationCommon = () => ({\n returnType: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n optional: true\n },\n typeParameters: {\n validate: assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\"),\n optional: true\n }\n});\nconst functionDeclarationCommon = () => ({\n ...functionCommon(),\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true\n }\n});\ndefineType$4(\"FunctionDeclaration\", {\n builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n fields: {\n ...functionDeclarationCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\")\n },\n predicate: {\n validate: assertNodeType(\"FlowPredicate\"),\n optional: true\n }\n },\n aliases: [\"Scopable\", \"Function\", \"BlockParent\", \"FunctionParent\", \"Statement\", \"Pureish\", \"Declaration\"],\n validate: function () {\n const identifier = assertNodeType(\"Identifier\");\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n }()\n});\ndefineType$4(\"FunctionExpression\", {\n inherits: \"FunctionDeclaration\",\n aliases: [\"Scopable\", \"Function\", \"BlockParent\", \"FunctionParent\", \"Expression\", \"Pureish\"],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true\n },\n body: {\n validate: assertNodeType(\"BlockStatement\")\n },\n predicate: {\n validate: assertNodeType(\"FlowPredicate\"),\n optional: true\n }\n }\n});\nconst patternLikeCommon = () => ({\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n optional: true\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n }\n});\ndefineType$4(\"Identifier\", {\n builder: [\"name\"],\n visitor: [\"typeAnnotation\", \"decorators\"],\n aliases: [\"Expression\", \"FunctionParameter\", \"PatternLike\", \"LVal\", \"TSEntityName\"],\n fields: {\n ...patternLikeCommon(),\n name: {\n validate: chain(assertValueType(\"string\"), combine(function (node, key, val) {\n if (!isValidIdentifier(val, false)) {\n throw new TypeError(`\"${val}\" is not a valid identifier name`);\n }\n }, {\n type: \"string\"\n }))\n }\n },\n validate: function (parent, key, node) {\n const match = /\\.(\\w+)$/.exec(key.toString());\n if (!match) return;\n const [, parentKey] = match;\n const nonComp = {\n computed: false\n };\n if (parentKey === \"property\") {\n if (is(\"MemberExpression\", parent, nonComp)) return;\n if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n } else if (parentKey === \"key\") {\n if (is(\"Property\", parent, nonComp)) return;\n if (is(\"Method\", parent, nonComp)) return;\n } else if (parentKey === \"exported\") {\n if (is(\"ExportSpecifier\", parent)) return;\n } else if (parentKey === \"imported\") {\n if (is(\"ImportSpecifier\", parent, {\n imported: node\n })) return;\n } else if (parentKey === \"meta\") {\n if (is(\"MetaProperty\", parent, {\n meta: node\n })) return;\n }\n if ((isKeyword(node.name) || isReservedWord(node.name, false)) && node.name !== \"this\") {\n throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n }\n }\n});\ndefineType$4(\"IfStatement\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n aliases: [\"Statement\", \"Conditional\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\")\n },\n consequent: {\n validate: assertNodeType(\"Statement\")\n },\n alternate: {\n optional: true,\n validate: assertNodeType(\"Statement\")\n }\n }\n});\ndefineType$4(\"LabeledStatement\", {\n visitor: [\"label\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\")\n },\n body: {\n validate: assertNodeType(\"Statement\")\n }\n }\n});\ndefineType$4(\"StringLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType$4(\"NumericLiteral\", {\n builder: [\"value\"],\n deprecatedAlias: \"NumberLiteral\",\n fields: {\n value: {\n validate: chain(assertValueType(\"number\"), combine(function (node, key, val) {\n if (1 / val < 0 || !Number.isFinite(val)) {\n const error = new Error(\"NumericLiterals must be non-negative finite numbers. \" + `You can use t.valueToNode(${val}) instead.`);\n if (!new Error().stack.includes(\"regenerator\")) {\n throw error;\n }\n }\n }, {\n type: \"number\"\n }))\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType$4(\"NullLiteral\", {\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType$4(\"BooleanLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"boolean\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType$4(\"RegExpLiteral\", {\n builder: [\"pattern\", \"flags\"],\n deprecatedAlias: \"RegexLiteral\",\n aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n fields: {\n pattern: {\n validate: assertValueType(\"string\")\n },\n flags: {\n validate: chain(assertValueType(\"string\"), combine(function (node, key, val) {\n const invalid = /[^dgimsuvy]/.exec(val);\n if (invalid) {\n throw new TypeError(`\"${invalid[0]}\" is not a valid RegExp flag`);\n }\n }, {\n type: \"string\"\n })),\n default: \"\"\n }\n }\n});\ndefineType$4(\"LogicalExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n fields: {\n operator: {\n validate: assertOneOf(...LOGICAL_OPERATORS)\n },\n left: {\n validate: assertNodeType(\"Expression\")\n },\n right: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"MemberExpression\", {\n builder: [\"object\", \"property\", \"computed\"],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n ...memberExpressionUnionShapeCommon,\n fields: {\n object: {\n validate: assertNodeType(\"Expression\", \"Super\")\n },\n property: {\n validate: function () {\n const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n const validator = combine(function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"Identifier\", \"PrivateName\"]\n });\n return validator;\n }()\n },\n computed: {\n default: false\n }\n }\n});\ndefineType$4(\"NewExpression\", {\n inherits: \"CallExpression\",\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\")\n },\n arguments: validateArrayOfType(\"Expression\", \"SpreadElement\", \"ArgumentPlaceholder\"),\n typeArguments: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n }\n }\n});\ndefineType$4(\"Program\", {\n visitor: [\"directives\", \"body\"],\n builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n fields: {\n sourceType: {\n validate: assertOneOf(\"script\", \"module\"),\n default: \"script\"\n },\n interpreter: {\n validate: assertNodeType(\"InterpreterDirective\"),\n default: null,\n optional: true\n },\n directives: {\n validate: arrayOfType(\"Directive\"),\n default: []\n },\n body: validateArrayOfType(\"Statement\")\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\"]\n});\ndefineType$4(\"ObjectExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: validateArrayOfType(\"ObjectMethod\", \"ObjectProperty\", \"SpreadElement\")\n }\n});\ndefineType$4(\"ObjectMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\", \"body\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\")\n },\n computed: {\n default: false\n },\n key: {\n validate: function () {\n const normal = assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\");\n const computed = assertNodeType(\"Expression\");\n const validator = combine(function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\"]\n });\n return validator;\n }()\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n },\n body: {\n validate: assertNodeType(\"BlockStatement\")\n }\n },\n aliases: [\"UserWhitespacable\", \"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\", \"ObjectMember\"]\n});\ndefineType$4(\"ObjectProperty\", {\n builder: [\"key\", \"value\", \"computed\", \"shorthand\"],\n ...classMethodOrPropertyUnionShapeCommon(true),\n fields: {\n computed: {\n default: false\n },\n key: {\n validate: function () {\n const normal = assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n const validator = combine(function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"PrivateName\"]\n });\n return validator;\n }()\n },\n value: {\n validate: assertNodeType(\"Expression\", \"PatternLike\")\n },\n shorthand: {\n validate: chain(assertValueType(\"boolean\"), combine(function (node, key, shorthand) {\n if (!shorthand) return;\n if (node.computed) {\n throw new TypeError(\"Property shorthand of ObjectProperty cannot be true if computed is true\");\n }\n if (!is(\"Identifier\", node.key)) {\n throw new TypeError(\"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\");\n }\n }, {\n type: \"boolean\"\n })),\n default: false\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n }\n },\n visitor: [\"decorators\", \"key\", \"value\"],\n aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n validate: function () {\n const pattern = assertNodeType(\"Identifier\", \"Pattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSNonNullExpression\", \"TSTypeAssertion\");\n const expression = assertNodeType(\"Expression\");\n return function (parent, key, node) {\n const validator = is(\"ObjectPattern\", parent) ? pattern : expression;\n validator(node, \"value\", node.value);\n };\n }()\n});\ndefineType$4(\"RestElement\", {\n visitor: [\"argument\", \"typeAnnotation\"],\n builder: [\"argument\"],\n aliases: [\"FunctionParameter\", \"PatternLike\"],\n deprecatedAlias: \"RestProperty\",\n fields: {\n ...patternLikeCommon(),\n argument: {\n validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"MemberExpression\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n }\n },\n validate: function (parent, key) {\n const match = /(\\w+)\\[(\\d+)\\]/.exec(key.toString());\n if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n const [, listKey, index] = match;\n if (parent[listKey].length > +index + 1) {\n throw new TypeError(`RestElement must be last element of ${listKey}`);\n }\n }\n});\ndefineType$4(\"ReturnStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n }\n }\n});\ndefineType$4(\"SequenceExpression\", {\n visitor: [\"expressions\"],\n fields: {\n expressions: validateArrayOfType(\"Expression\")\n },\n aliases: [\"Expression\"]\n});\ndefineType$4(\"ParenthesizedExpression\", {\n visitor: [\"expression\"],\n aliases: [\"Expression\", \"ExpressionWrapper\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"SwitchCase\", {\n visitor: [\"test\", \"consequent\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n },\n consequent: validateArrayOfType(\"Statement\")\n }\n});\ndefineType$4(\"SwitchStatement\", {\n visitor: [\"discriminant\", \"cases\"],\n aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n fields: {\n discriminant: {\n validate: assertNodeType(\"Expression\")\n },\n cases: validateArrayOfType(\"SwitchCase\")\n }\n});\ndefineType$4(\"ThisExpression\", {\n aliases: [\"Expression\", \"TSEntityName\"]\n});\ndefineType$4(\"ThrowStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"TryStatement\", {\n visitor: [\"block\", \"handler\", \"finalizer\"],\n aliases: [\"Statement\"],\n fields: {\n block: {\n validate: chain(assertNodeType(\"BlockStatement\"), combine(function (node) {\n if (!node.handler && !node.finalizer) {\n throw new TypeError(\"TryStatement expects either a handler or finalizer, or both\");\n }\n }, {\n oneOfNodeTypes: [\"BlockStatement\"]\n }))\n },\n handler: {\n optional: true,\n validate: assertNodeType(\"CatchClause\")\n },\n finalizer: {\n optional: true,\n validate: assertNodeType(\"BlockStatement\")\n }\n }\n});\ndefineType$4(\"UnaryExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: true\n },\n argument: {\n validate: assertNodeType(\"Expression\")\n },\n operator: {\n validate: assertOneOf(...UNARY_OPERATORS)\n }\n },\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\", \"Expression\"]\n});\ndefineType$4(\"UpdateExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: false\n },\n argument: {\n validate: assertNodeType(\"Identifier\", \"MemberExpression\")\n },\n operator: {\n validate: assertOneOf(...UPDATE_OPERATORS)\n }\n },\n visitor: [\"argument\"],\n aliases: [\"Expression\"]\n});\ndefineType$4(\"VariableDeclaration\", {\n builder: [\"kind\", \"declarations\"],\n visitor: [\"declarations\"],\n aliases: [\"Statement\", \"Declaration\"],\n fields: {\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n kind: {\n validate: assertOneOf(\"var\", \"let\", \"const\", \"using\", \"await using\")\n },\n declarations: validateArrayOfType(\"VariableDeclarator\")\n },\n validate: (() => {\n const withoutInit = assertNodeType(\"Identifier\", \"Placeholder\");\n const constOrLetOrVar = assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"Placeholder\");\n const usingOrAwaitUsing = assertNodeType(\"Identifier\", \"VoidPattern\", \"Placeholder\");\n return function (parent, key, node) {\n const {\n kind,\n declarations\n } = node;\n const parentIsForX = is(\"ForXStatement\", parent, {\n left: node\n });\n if (parentIsForX) {\n if (declarations.length !== 1) {\n throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`);\n }\n }\n for (const decl of declarations) {\n if (kind === \"const\" || kind === \"let\" || kind === \"var\") {\n if (!parentIsForX && !decl.init) {\n withoutInit(decl, \"id\", decl.id);\n } else {\n constOrLetOrVar(decl, \"id\", decl.id);\n }\n } else {\n usingOrAwaitUsing(decl, \"id\", decl.id);\n }\n }\n };\n })()\n});\ndefineType$4(\"VariableDeclarator\", {\n visitor: [\"id\", \"init\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"VoidPattern\")\n },\n definite: {\n optional: true,\n validate: assertValueType(\"boolean\")\n },\n init: {\n optional: true,\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"WhileStatement\", {\n visitor: [\"test\", \"body\"],\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\")\n },\n body: {\n validate: assertNodeType(\"Statement\")\n }\n }\n});\ndefineType$4(\"WithStatement\", {\n visitor: [\"object\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\")\n },\n body: {\n validate: assertNodeType(\"Statement\")\n }\n }\n});\ndefineType$4(\"AssignmentPattern\", {\n visitor: [\"left\", \"right\", \"decorators\"],\n builder: [\"left\", \"right\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\"],\n fields: {\n ...patternLikeCommon(),\n left: {\n validate: assertNodeType(\"Identifier\", \"ObjectPattern\", \"ArrayPattern\", \"MemberExpression\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n },\n right: {\n validate: assertNodeType(\"Expression\")\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ArrayPattern\", {\n visitor: [\"elements\", \"typeAnnotation\"],\n builder: [\"elements\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n elements: {\n validate: chain(assertValueType(\"array\"), assertEach(assertNodeOrValueType(\"null\", \"PatternLike\")))\n }\n }\n});\ndefineType$4(\"ArrowFunctionExpression\", {\n builder: [\"params\", \"body\", \"async\"],\n visitor: [\"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n aliases: [\"Scopable\", \"Function\", \"BlockParent\", \"FunctionParent\", \"Expression\", \"Pureish\"],\n fields: {\n ...functionCommon(),\n generator: {\n default: null,\n optional: true,\n validate: combine((node, key, val) => {\n if (val) {\n throw new TypeError(\"ArrowFunctionExpression cannot be a generator\");\n }\n }, {\n type: \"boolean\"\n })\n },\n ...functionTypeAnnotationCommon(),\n expression: {\n optional: true,\n validate: assertValueType(\"boolean\")\n },\n body: {\n validate: assertNodeType(\"BlockStatement\", \"Expression\")\n },\n predicate: {\n validate: assertNodeType(\"FlowPredicate\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ClassBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"ClassMethod\", \"ClassPrivateMethod\", \"ClassProperty\", \"ClassPrivateProperty\", \"ClassAccessorProperty\", \"TSDeclareMethod\", \"TSIndexSignature\", \"StaticBlock\")\n }\n});\ndefineType$4(\"ClassExpression\", {\n builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n visitor: [\"decorators\", \"id\", \"typeParameters\", \"superClass\", \"superTypeArguments\", \"mixins\", \"implements\", \"body\"],\n aliases: [\"Scopable\", \"Class\", \"Expression\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true\n },\n typeParameters: {\n validate: assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\"),\n optional: true\n },\n body: {\n validate: assertNodeType(\"ClassBody\")\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\")\n },\n [\"superTypeArguments\"]: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n },\n implements: {\n validate: arrayOfType(\"TSClassImplements\", \"ClassImplements\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ClassDeclaration\", {\n inherits: \"ClassExpression\",\n aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true\n },\n typeParameters: {\n validate: assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\"),\n optional: true\n },\n body: {\n validate: assertNodeType(\"ClassBody\")\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\")\n },\n [\"superTypeArguments\"]: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n },\n implements: {\n validate: arrayOfType(\"TSClassImplements\", \"ClassImplements\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n abstract: {\n validate: assertValueType(\"boolean\"),\n optional: true\n }\n },\n validate: function () {\n const identifier = assertNodeType(\"Identifier\");\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n }()\n});\nconst importAttributes = {\n attributes: {\n optional: true,\n validate: arrayOfType(\"ImportAttribute\")\n }\n};\ndefineType$4(\"ExportAllDeclaration\", {\n visitor: [\"source\", \"attributes\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\", \"ExportDeclaration\"],\n fields: {\n source: {\n validate: assertNodeType(\"StringLiteral\")\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n ...importAttributes\n }\n});\ndefineType$4(\"ExportDefaultDeclaration\", {\n visitor: [\"declaration\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\", \"ExportDeclaration\"],\n fields: {\n declaration: validateType(\"FunctionDeclaration\", \"ClassDeclaration\", \"Expression\", \"TSDeclareFunction\", \"TSInterfaceDeclaration\", \"EnumDeclaration\"),\n exportKind: validateOptional(assertOneOf(\"value\"))\n }\n});\ndefineType$4(\"ExportNamedDeclaration\", {\n builder: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\", \"ExportDeclaration\"],\n fields: {\n declaration: {\n optional: true,\n validate: chain(assertNodeType(\"Declaration\"), combine(function (node, key, val) {\n if (val && node.specifiers.length) {\n throw new TypeError(\"Only declaration or specifiers is allowed on ExportNamedDeclaration\");\n }\n if (val && node.source) {\n throw new TypeError(\"Cannot export a declaration from a source\");\n }\n }, {\n oneOfNodeTypes: [\"VariableDeclaration\", \"FunctionDeclaration\", \"ClassDeclaration\", \"TSDeclareFunction\", \"TSEnumDeclaration\", \"TSImportEqualsDeclaration\", \"TSInterfaceDeclaration\", \"TSModuleDeclaration\", \"TSTypeAliasDeclaration\", \"EnumDeclaration\", \"InterfaceDeclaration\", \"OpaqueType\", \"TypeAlias\"]\n }))\n },\n ...importAttributes,\n specifiers: {\n default: [],\n validate: arrayOf(function () {\n const sourced = assertNodeType(\"ExportSpecifier\", \"ExportDefaultSpecifier\", \"ExportNamespaceSpecifier\");\n const sourceless = assertNodeType(\"ExportSpecifier\");\n return combine(function (node, key, val) {\n const validator = node.source ? sourced : sourceless;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"ExportSpecifier\", \"ExportDefaultSpecifier\", \"ExportNamespaceSpecifier\"]\n });\n }())\n },\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n optional: true\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\"))\n }\n});\ndefineType$4(\"ExportSpecifier\", {\n visitor: [\"local\", \"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\")\n },\n exported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\")\n },\n exportKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ForOfStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n builder: [\"left\", \"right\", \"body\", \"await\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\", \"ForXStatement\"],\n fields: {\n left: {\n validate: function () {\n const declaration = assertNodeType(\"VariableDeclaration\");\n const lval = assertNodeType(\"Identifier\", \"MemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\");\n return combine(function (node, key, val) {\n if (is(\"VariableDeclaration\", val)) {\n declaration(node, key, val);\n } else {\n lval(node, key, val);\n }\n }, {\n oneOfNodeTypes: [\"VariableDeclaration\", \"Identifier\", \"MemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\"]\n });\n }()\n },\n right: {\n validate: assertNodeType(\"Expression\")\n },\n body: {\n validate: assertNodeType(\"Statement\")\n },\n await: {\n default: false\n }\n }\n});\ndefineType$4(\"ImportDeclaration\", {\n builder: [\"specifiers\", \"source\", \"attributes\"],\n visitor: [\"specifiers\", \"source\", \"attributes\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n fields: {\n ...importAttributes,\n module: {\n optional: true,\n validate: assertValueType(\"boolean\")\n },\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\")\n },\n specifiers: validateArrayOfType(\"ImportSpecifier\", \"ImportDefaultSpecifier\", \"ImportNamespaceSpecifier\"),\n source: {\n validate: assertNodeType(\"StringLiteral\")\n },\n importKind: {\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ImportDefaultSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\")\n }\n }\n});\ndefineType$4(\"ImportNamespaceSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\")\n }\n }\n});\ndefineType$4(\"ImportSpecifier\", {\n visitor: [\"imported\", \"local\"],\n builder: [\"local\", \"imported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\")\n },\n imported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\")\n },\n importKind: {\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true\n }\n }\n});\ndefineType$4(\"MetaProperty\", {\n visitor: [\"meta\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n meta: {\n validate: chain(assertNodeType(\"Identifier\"), combine(function (node, key, val) {\n let property;\n switch (val.name) {\n case \"function\":\n property = \"sent\";\n break;\n case \"new\":\n property = \"target\";\n break;\n case \"import\":\n property = \"meta\";\n break;\n }\n if (!is(\"Identifier\", node.property, {\n name: property\n })) {\n throw new TypeError(\"Unrecognised MetaProperty\");\n }\n }, {\n oneOfNodeTypes: [\"Identifier\"]\n }))\n },\n property: {\n validate: assertNodeType(\"Identifier\")\n }\n }\n});\nconst classMethodOrPropertyCommon = () => ({\n abstract: {\n validate: assertValueType(\"boolean\"),\n default: false,\n optional: true\n },\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true\n },\n static: {\n default: false\n },\n override: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n default: false\n },\n computed: {\n default: false\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n key: {\n validate: chain(function () {\n const normal = assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\");\n const computed = assertNodeType(\"Expression\");\n return function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n }(), assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"Expression\"))\n }\n});\nconst classMethodOrDeclareMethodCommon = (allowDecorators = true) => ({\n ...functionCommon(),\n ...classMethodOrPropertyCommon(),\n params: validateArrayOfType(\"FunctionParameter\", \"TSParameterProperty\"),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n default: \"method\"\n },\n access: {\n validate: chain(assertValueType(\"string\"), assertOneOf(\"public\", \"private\", \"protected\")),\n optional: true\n },\n ...(allowDecorators ? {\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n }\n } : {})\n});\ndefineType$4(\"ClassMethod\", {\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"static\", \"generator\", \"async\"],\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\", \"body\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\")\n }\n }\n});\ndefineType$4(\"ObjectPattern\", {\n visitor: [\"decorators\", \"properties\", \"typeAnnotation\"],\n builder: [\"properties\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n properties: validateArrayOfType(\"RestElement\", \"ObjectProperty\")\n }\n});\ndefineType$4(\"SpreadElement\", {\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\"],\n deprecatedAlias: \"SpreadProperty\",\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"Super\");\ndefineType$4(\"TaggedTemplateExpression\", {\n visitor: [\"tag\", \"typeArguments\", \"quasi\"],\n builder: [\"tag\", \"quasi\"],\n aliases: [\"Expression\"],\n fields: {\n tag: {\n validate: assertNodeType(\"Expression\")\n },\n quasi: {\n validate: assertNodeType(\"TemplateLiteral\")\n },\n [\"typeArguments\"]: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n }\n }\n});\ndefineType$4(\"TemplateElement\", {\n builder: [\"value\", \"tail\"],\n fields: {\n value: {\n validate: chain(assertShape({\n raw: {\n validate: assertValueType(\"string\")\n },\n cooked: {\n validate: assertValueType(\"string\"),\n optional: true\n }\n }), function templateElementCookedValidator(node) {\n const raw = node.value.raw;\n let unterminatedCalled = false;\n const error = () => {\n throw new Error(\"Internal @babel/types error.\");\n };\n const {\n str,\n firstInvalidLoc\n } = readStringContents(\"template\", raw, 0, 0, 0, {\n unterminated() {\n unterminatedCalled = true;\n },\n strictNumericEscape: error,\n invalidEscapeSequence: error,\n numericSeparatorInEscapeSequence: error,\n unexpectedNumericSeparator: error,\n invalidDigit: error,\n invalidCodePoint: error\n });\n if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n node.value.cooked = firstInvalidLoc ? null : str;\n })\n },\n tail: {\n default: false\n }\n }\n});\ndefineType$4(\"TemplateLiteral\", {\n visitor: [\"quasis\", \"expressions\"],\n aliases: [\"Expression\", \"Literal\"],\n fields: {\n quasis: validateArrayOfType(\"TemplateElement\"),\n expressions: {\n validate: chain(assertValueType(\"array\"), assertEach(assertNodeType(\"Expression\", \"TSType\")), function (node, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);\n }\n })\n }\n }\n});\ndefineType$4(\"YieldExpression\", {\n builder: [\"argument\", \"delegate\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n delegate: {\n validate: chain(assertValueType(\"boolean\"), combine(function (node, key, val) {\n if (val && !node.argument) {\n throw new TypeError(\"Property delegate of YieldExpression cannot be true if there is no argument\");\n }\n }, {\n type: \"boolean\"\n })),\n default: false\n },\n argument: {\n optional: true,\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"AwaitExpression\", {\n builder: [\"argument\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$4(\"ImportExpression\", {\n visitor: [\"source\", \"options\"],\n aliases: [\"Expression\"],\n fields: {\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\")\n },\n source: {\n validate: assertNodeType(\"Expression\")\n },\n options: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n }\n }\n});\ndefineType$4(\"Import\");\ndefineType$4(\"BigIntLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"bigint\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType$4(\"ExportNamespaceSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\")\n }\n }\n});\ndefineType$4(\"OptionalMemberExpression\", {\n builder: [\"object\", \"property\", \"computed\", \"optional\"],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\"],\n ...memberExpressionUnionShapeCommon,\n fields: {\n object: {\n validate: assertNodeType(\"Expression\")\n },\n property: {\n validate: function () {\n const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n return combine(function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"PrivateName\"]\n });\n }()\n },\n computed: {\n default: false\n },\n optional: {\n validate: chain(assertValueType(\"boolean\"), assertOptionalChainStart())\n }\n }\n});\ndefineType$4(\"OptionalCallExpression\", {\n visitor: [\"callee\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\", \"optional\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\")\n },\n arguments: validateArrayOfType(\"Expression\", \"SpreadElement\", \"ArgumentPlaceholder\"),\n optional: {\n validate: chain(assertValueType(\"boolean\"), assertOptionalChainStart())\n },\n typeArguments: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ClassProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"typeAnnotation\", \"decorators\", \"computed\", \"static\"],\n aliases: [\"Property\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrPropertyCommon(),\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ClassPrivateProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"decorators\", \"static\"],\n aliases: [\"Property\", \"Private\"],\n fields: {\n key: {\n validate: assertNodeType(\"PrivateName\")\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n },\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n },\n static: {\n validate: assertValueType(\"boolean\"),\n default: false\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true\n }\n }\n});\ndefineType$4(\"ClassPrivateMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\", \"body\"],\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\", \"Private\"],\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\"),\n default: \"method\"\n },\n key: {\n validate: assertNodeType(\"PrivateName\")\n },\n body: {\n validate: assertNodeType(\"BlockStatement\")\n }\n }\n});\ndefineType$4(\"PrivateName\", {\n visitor: [\"id\"],\n aliases: [\"Private\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\")\n }\n }\n});\ndefineType$4(\"StaticBlock\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\")\n },\n aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"]\n});\ndefineType$4(\"ImportAttribute\", {\n visitor: [\"key\", \"value\"],\n fields: {\n key: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\")\n },\n value: {\n validate: assertNodeType(\"StringLiteral\")\n }\n }\n});\n\nconst defineType$3 = defineAliasedType(\"Flow\");\nconst defineInterfaceishType = name => {\n const isDeclareClass = name === \"DeclareClass\";\n defineType$3(name, {\n builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", ...(isDeclareClass ? [\"mixins\", \"implements\"] : []), \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n ...(isDeclareClass ? {\n mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n implements: validateOptional(arrayOfType(\"ClassImplements\"))\n } : {}),\n body: validateType(\"ObjectTypeAnnotation\")\n }\n });\n};\ndefineType$3(\"AnyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"ArrayTypeAnnotation\", {\n visitor: [\"elementType\"],\n aliases: [\"FlowType\"],\n fields: {\n elementType: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"BooleanTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"BooleanLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate$2(assertValueType(\"boolean\"))\n }\n});\ndefineType$3(\"NullLiteralTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"ClassImplements\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\")\n }\n});\ndefineInterfaceishType(\"DeclareClass\");\ndefineType$3(\"DeclareFunction\", {\n builder: [\"id\"],\n visitor: [\"id\", \"predicate\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n predicate: validateOptionalType(\"FlowPredicate\")\n }\n});\ndefineInterfaceishType(\"DeclareInterface\");\ndefineType$3(\"DeclareModule\", {\n builder: [\"id\", \"body\", \"kind\"],\n visitor: [\"id\", \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\", \"StringLiteral\"),\n body: validateType(\"BlockStatement\"),\n kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\"))\n }\n});\ndefineType$3(\"DeclareModuleExports\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n typeAnnotation: validateType(\"TypeAnnotation\")\n }\n});\ndefineType$3(\"DeclareTypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"DeclareOpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateOptionalType(\"FlowType\")\n }\n});\ndefineType$3(\"DeclareVariable\", {\n visitor: [\"id\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\")\n }\n});\ndefineType$3(\"DeclareExportDeclaration\", {\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n declaration: validateOptionalType(\"Flow\"),\n specifiers: validateOptional(arrayOfType(\"ExportSpecifier\", \"ExportNamespaceSpecifier\")),\n source: validateOptionalType(\"StringLiteral\"),\n default: validateOptional(assertValueType(\"boolean\")),\n ...importAttributes\n }\n});\ndefineType$3(\"DeclareExportAllDeclaration\", {\n visitor: [\"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n source: validateType(\"StringLiteral\"),\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n ...importAttributes\n }\n});\ndefineType$3(\"DeclaredPredicate\", {\n visitor: [\"value\"],\n aliases: [\"FlowPredicate\"],\n fields: {\n value: validateType(\"Expression\")\n }\n});\ndefineType$3(\"ExistsTypeAnnotation\", {\n aliases: [\"FlowType\"]\n});\ndefineType$3(\"FunctionTypeAnnotation\", {\n builder: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n visitor: [\"typeParameters\", \"this\", \"params\", \"rest\", \"returnType\"],\n aliases: [\"FlowType\"],\n fields: {\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n params: validateArrayOfType(\"FunctionTypeParam\"),\n rest: validateOptionalType(\"FunctionTypeParam\"),\n this: validateOptionalType(\"FunctionTypeParam\"),\n returnType: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"FunctionTypeParam\", {\n visitor: [\"name\", \"typeAnnotation\"],\n fields: {\n name: validateOptionalType(\"Identifier\"),\n typeAnnotation: validateType(\"FlowType\"),\n optional: validateOptional(assertValueType(\"boolean\"))\n }\n});\ndefineType$3(\"GenericTypeAnnotation\", {\n visitor: [\"id\", \"typeParameters\"],\n aliases: [\"FlowType\"],\n fields: {\n id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\")\n }\n});\ndefineType$3(\"InferredPredicate\", {\n aliases: [\"FlowPredicate\"]\n});\ndefineType$3(\"InterfaceExtends\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\")\n }\n});\ndefineInterfaceishType(\"InterfaceDeclaration\");\ndefineType$3(\"InterfaceTypeAnnotation\", {\n visitor: [\"extends\", \"body\"],\n aliases: [\"FlowType\"],\n fields: {\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n body: validateType(\"ObjectTypeAnnotation\")\n }\n});\ndefineType$3(\"IntersectionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate$2(arrayOfType(\"FlowType\"))\n }\n});\ndefineType$3(\"MixedTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"EmptyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"NullableTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowType\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"NumberLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate$2(assertValueType(\"number\"))\n }\n});\ndefineType$3(\"BigIntLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate$2(assertValueType(\"bigint\"))\n }\n});\ndefineType$3(\"NumberTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"ObjectTypeAnnotation\", {\n visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n aliases: [\"FlowType\"],\n builder: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\", \"exact\"],\n fields: {\n properties: validate$2(arrayOfType(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\")),\n indexers: {\n validate: arrayOfType(\"ObjectTypeIndexer\"),\n optional: false,\n default: []\n },\n callProperties: {\n validate: arrayOfType(\"ObjectTypeCallProperty\"),\n optional: false,\n default: []\n },\n internalSlots: {\n validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n optional: false,\n default: []\n },\n exact: {\n validate: assertValueType(\"boolean\"),\n default: false\n },\n inexact: validateOptional(assertValueType(\"boolean\"))\n }\n});\ndefineType$3(\"ObjectTypeInternalSlot\", {\n visitor: [\"id\", \"value\"],\n builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateType(\"Identifier\"),\n value: validateType(\"FlowType\"),\n optional: validate$2(assertValueType(\"boolean\")),\n static: validate$2(assertValueType(\"boolean\")),\n method: validate$2(assertValueType(\"boolean\"))\n }\n});\ndefineType$3(\"ObjectTypeCallProperty\", {\n visitor: [\"value\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n value: validateType(\"FlowType\"),\n static: validateDefault(assertValueType(\"boolean\"), false)\n }\n});\ndefineType$3(\"ObjectTypeIndexer\", {\n visitor: [\"variance\", \"id\", \"key\", \"value\"],\n builder: [\"id\", \"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateOptionalType(\"Identifier\"),\n key: validateType(\"FlowType\"),\n value: validateType(\"FlowType\"),\n static: validateDefault(assertValueType(\"boolean\"), false),\n variance: validateOptionalType(\"Variance\")\n }\n});\ndefineType$3(\"ObjectTypeProperty\", {\n visitor: [\"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n key: validateType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\"),\n value: validateType(\"FlowType\"),\n kind: {\n validate: assertOneOf(\"init\", \"get\", \"set\"),\n default: \"init\",\n optional: false\n },\n static: validateDefault(assertValueType(\"boolean\"), false),\n proto: validateDefault(assertValueType(\"boolean\"), false),\n optional: validateDefault(assertValueType(\"boolean\"), false),\n variance: validateOptionalType(\"Variance\"),\n method: validateDefault(assertValueType(\"boolean\"), false)\n }\n});\ndefineType$3(\"ObjectTypeSpreadProperty\", {\n visitor: [\"argument\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n argument: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"OpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"QualifiedTypeIdentifier\", {\n visitor: [\"qualification\", \"id\"],\n builder: [\"id\", \"qualification\"],\n fields: {\n id: validateType(\"Identifier\"),\n qualification: validateType(\"Identifier\", \"QualifiedTypeIdentifier\")\n }\n});\ndefineType$3(\"StringLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate$2(assertValueType(\"string\"))\n }\n});\ndefineType$3(\"StringTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"SymbolTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"ThisTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"TupleTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate$2(arrayOfType(\"FlowType\"))\n }\n});\ndefineType$3(\"TypeofTypeAnnotation\", {\n visitor: [\"argument\"],\n aliases: [\"FlowType\"],\n fields: {\n argument: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"TypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"TypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"TypeCastExpression\", {\n visitor: [\"expression\", \"typeAnnotation\"],\n aliases: [\"ExpressionWrapper\", \"Expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TypeAnnotation\")\n }\n});\ndefineType$3(\"TypeParameter\", {\n builder: [\"name\", \"bound\", \"default\", \"variance\"],\n visitor: [\"bound\", \"default\", \"variance\"],\n fields: {\n name: validate$2(assertValueType(\"string\")),\n bound: validateOptionalType(\"TypeAnnotation\"),\n default: validateOptionalType(\"FlowType\"),\n variance: validateOptionalType(\"Variance\")\n }\n});\ndefineType$3(\"TypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validate$2(arrayOfType(\"TypeParameter\"))\n }\n});\ndefineType$3(\"TypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validate$2(arrayOfType(\"FlowType\"))\n }\n});\ndefineType$3(\"UnionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate$2(arrayOfType(\"FlowType\"))\n }\n});\ndefineType$3(\"Variance\", {\n builder: [\"kind\"],\n fields: {\n kind: validate$2(assertOneOf(\"minus\", \"plus\"))\n }\n});\ndefineType$3(\"VoidTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType$3(\"EnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n id: validateType(\"Identifier\"),\n body: validateType(\"EnumBooleanBody\", \"EnumNumberBody\", \"EnumStringBody\", \"EnumSymbolBody\")\n }\n});\nconst enumBodyBase = {\n explicitType: validateDefault(assertValueType(\"boolean\"), false),\n hasUnknownMembers: validateDefault(assertValueType(\"boolean\"), false)\n};\ndefineType$3(\"EnumBooleanBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n ...enumBodyBase,\n members: validateArrayOfType(\"EnumBooleanMember\")\n }\n});\ndefineType$3(\"EnumNumberBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n ...enumBodyBase,\n members: validateArrayOfType(\"EnumNumberMember\")\n }\n});\ndefineType$3(\"EnumStringBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n ...enumBodyBase,\n members: validateArrayOfType(\"EnumStringMember\", \"EnumDefaultedMember\")\n }\n});\ndefineType$3(\"EnumSymbolBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"EnumDefaultedMember\"),\n hasUnknownMembers: validateDefault(assertValueType(\"boolean\"), false)\n }\n});\ndefineType$3(\"EnumBooleanMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"BooleanLiteral\")\n }\n});\ndefineType$3(\"EnumNumberMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"NumericLiteral\")\n }\n});\ndefineType$3(\"EnumStringMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"StringLiteral\")\n }\n});\ndefineType$3(\"EnumDefaultedMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\")\n }\n});\ndefineType$3(\"IndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\")\n }\n});\ndefineType$3(\"OptionalIndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n optional: validateDefault(assertValueType(\"boolean\"), false)\n }\n});\n\nconst defineType$2 = defineAliasedType(\"JSX\");\ndefineType$2(\"JSXAttribute\", {\n visitor: [\"name\", \"value\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\")\n },\n value: {\n optional: true,\n validate: assertNodeType(\"JSXElement\", \"JSXFragment\", \"StringLiteral\", \"JSXExpressionContainer\")\n }\n }\n});\ndefineType$2(\"JSXClosingElement\", {\n visitor: [\"name\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\"JSXIdentifier\", \"JSXMemberExpression\", \"JSXNamespacedName\")\n }\n }\n});\ndefineType$2(\"JSXElement\", {\n builder: [\"openingElement\", \"closingElement\", \"children\"],\n visitor: [\"openingElement\", \"children\", \"closingElement\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingElement: {\n validate: assertNodeType(\"JSXOpeningElement\")\n },\n closingElement: {\n optional: true,\n validate: assertNodeType(\"JSXClosingElement\")\n },\n children: validateArrayOfType(\"JSXText\", \"JSXExpressionContainer\", \"JSXSpreadChild\", \"JSXElement\", \"JSXFragment\")\n }\n});\ndefineType$2(\"JSXEmptyExpression\", {});\ndefineType$2(\"JSXExpressionContainer\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\")\n }\n }\n});\ndefineType$2(\"JSXSpreadChild\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$2(\"JSXIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\")\n }\n }\n});\ndefineType$2(\"JSXMemberExpression\", {\n visitor: [\"object\", \"property\"],\n fields: {\n object: {\n validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\")\n },\n property: {\n validate: assertNodeType(\"JSXIdentifier\")\n }\n }\n});\ndefineType$2(\"JSXNamespacedName\", {\n visitor: [\"namespace\", \"name\"],\n fields: {\n namespace: {\n validate: assertNodeType(\"JSXIdentifier\")\n },\n name: {\n validate: assertNodeType(\"JSXIdentifier\")\n }\n }\n});\ndefineType$2(\"JSXOpeningElement\", {\n builder: [\"name\", \"attributes\", \"selfClosing\"],\n visitor: [\"name\", \"typeArguments\", \"attributes\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\"JSXIdentifier\", \"JSXMemberExpression\", \"JSXNamespacedName\")\n },\n selfClosing: {\n default: false\n },\n attributes: validateArrayOfType(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n typeArguments: {\n validate: assertNodeType(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n }\n }\n});\ndefineType$2(\"JSXSpreadAttribute\", {\n visitor: [\"argument\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$2(\"JSXText\", {\n aliases: [\"Immutable\"],\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\")\n }\n }\n});\ndefineType$2(\"JSXFragment\", {\n builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingFragment: {\n validate: assertNodeType(\"JSXOpeningFragment\")\n },\n closingFragment: {\n validate: assertNodeType(\"JSXClosingFragment\")\n },\n children: validateArrayOfType(\"JSXText\", \"JSXExpressionContainer\", \"JSXSpreadChild\", \"JSXElement\", \"JSXFragment\")\n }\n});\ndefineType$2(\"JSXOpeningFragment\", {\n aliases: [\"Immutable\"]\n});\ndefineType$2(\"JSXClosingFragment\", {\n aliases: [\"Immutable\"]\n});\n\nconst PLACEHOLDERS = [\"Identifier\", \"StringLiteral\", \"Expression\", \"Statement\", \"Declaration\", \"BlockStatement\", \"ClassBody\", \"Pattern\"];\nconst PLACEHOLDERS_ALIAS = {\n Declaration: [\"Statement\"],\n Pattern: [\"PatternLike\", \"LVal\"]\n};\nfor (const type of PLACEHOLDERS) {\n const alias = ALIAS_KEYS[type];\n if (alias?.length) PLACEHOLDERS_ALIAS[type] = alias;\n}\nconst PLACEHOLDERS_FLIPPED_ALIAS = {};\nObject.keys(PLACEHOLDERS_ALIAS).forEach(type => {\n PLACEHOLDERS_ALIAS[type].forEach(alias => {\n if (!Object.hasOwn(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {\n PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];\n }\n PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);\n });\n});\n\nconst defineType$1 = defineAliasedType(\"Miscellaneous\");\ndefineType$1(\"Placeholder\", {\n visitor: [],\n builder: [\"expectedNode\", \"name\"],\n fields: {\n name: {\n validate: assertNodeType(\"Identifier\")\n },\n expectedNode: {\n validate: assertOneOf(...PLACEHOLDERS)\n },\n ...patternLikeCommon()\n }\n});\ndefineType$1(\"V8IntrinsicIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\")\n }\n }\n});\n\ndefineType$5(\"ArgumentPlaceholder\", {});\ndefineType$5(\"BindExpression\", {\n visitor: [\"object\", \"callee\"],\n aliases: [\"Expression\"],\n fields: {\n object: {\n validate: assertNodeOrValueType(\"null\", \"Expression\")\n },\n callee: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$5(\"ClassAccessorProperty\", {\n visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"typeAnnotation\", \"decorators\", \"computed\", \"static\"],\n aliases: [\"Property\", \"Accessor\"],\n ...classMethodOrPropertyUnionShapeCommon(true),\n fields: {\n ...classMethodOrPropertyCommon(),\n key: {\n validate: chain(function () {\n const normal = assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n return function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n }(), assertNodeType(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"Expression\", \"PrivateName\"))\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n typeAnnotation: {\n validate: assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true\n }\n }\n});\ndefineType$5(\"Decorator\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\")\n }\n }\n});\ndefineType$5(\"DoExpression\", {\n visitor: [\"body\"],\n builder: [\"body\", \"async\"],\n aliases: [\"Expression\"],\n fields: {\n body: {\n validate: assertNodeType(\"BlockStatement\")\n },\n async: {\n validate: assertValueType(\"boolean\"),\n default: false\n }\n }\n});\ndefineType$5(\"ExportDefaultSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\")\n }\n }\n});\ndefineType$5(\"ModuleExpression\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: assertNodeType(\"Program\")\n }\n },\n aliases: [\"Expression\"]\n});\ndefineType$5(\"TopicReference\", {\n aliases: [\"Expression\"]\n});\ndefineType$5(\"VoidPattern\", {\n aliases: [\"Pattern\", \"PatternLike\", \"FunctionParameter\"]\n});\n\nconst defineType = defineAliasedType(\"TypeScript\");\nconst bool = assertValueType(\"boolean\");\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: assertNodeType(\"TSTypeAnnotation\"),\n optional: true\n },\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterDeclaration\"),\n optional: true\n }\n});\ndefineType(\"TSParameterProperty\", {\n aliases: [],\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n parameter: {\n validate: assertNodeType(\"Identifier\", \"AssignmentPattern\")\n },\n override: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true\n }\n }\n});\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...functionDeclarationCommon(),\n ...tSFunctionTypeAnnotationCommon()\n }\n});\ndefineType(\"TSDeclareMethod\", {\n visitor: [\"key\", \"typeParameters\", \"params\", \"returnType\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(false),\n ...tSFunctionTypeAnnotationCommon()\n }\n});\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: validateType(\"TSEntityName\"),\n right: validateType(\"Identifier\")\n }\n});\nconst signatureDeclarationCommon = () => ({\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n [\"params\"]: validateArrayOfType(\"ArrayPattern\", \"Identifier\", \"ObjectPattern\", \"RestElement\"),\n [\"returnType\"]: validateOptionalType(\"TSTypeAnnotation\")\n});\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\"typeParameters\", \"params\", \"returnType\"],\n fields: signatureDeclarationCommon()\n};\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\"TSConstructSignatureDeclaration\", callConstructSignatureDeclaration);\nconst namedTypeElementCommon = () => ({\n key: validateType(\"Expression\"),\n computed: {\n default: false\n },\n optional: validateOptional(bool)\n});\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\"],\n fields: {\n ...namedTypeElementCommon(),\n readonly: validateOptional(bool),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n kind: {\n optional: true,\n validate: assertOneOf(\"get\", \"set\")\n }\n }\n});\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...signatureDeclarationCommon(),\n ...namedTypeElementCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n default: \"method\"\n }\n }\n});\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: validateOptional(bool),\n static: validateOptional(bool),\n parameters: validateArrayOfType(\"Identifier\"),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\")\n }\n});\nconst tsKeywordTypes = [\"TSAnyKeyword\", \"TSBooleanKeyword\", \"TSBigIntKeyword\", \"TSIntrinsicKeyword\", \"TSNeverKeyword\", \"TSNullKeyword\", \"TSNumberKeyword\", \"TSObjectKeyword\", \"TSStringKeyword\", \"TSSymbolKeyword\", \"TSUndefinedKeyword\", \"TSUnknownKeyword\", \"TSVoidKeyword\"];\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {}\n });\n}\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {}\n});\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\"typeParameters\", \"params\", \"returnType\"]\n};\ndefineType(\"TSFunctionType\", {\n ...fnOrCtrBase,\n fields: signatureDeclarationCommon()\n});\ndefineType(\"TSConstructorType\", {\n ...fnOrCtrBase,\n fields: {\n ...signatureDeclarationCommon(),\n abstract: validateOptional(bool)\n }\n});\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\"typeName\", \"typeArguments\"],\n fields: {\n typeName: validateType(\"TSEntityName\"),\n [\"typeArguments\"]: validateOptionalType(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: validateType(\"Identifier\", \"TSThisType\"),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n asserts: validateOptional(bool)\n }\n});\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\"exprName\", \"typeArguments\"],\n fields: {\n exprName: validateType(\"TSEntityName\", \"TSImportType\"),\n [\"typeArguments\"]: validateOptionalType(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSTypeElement\")\n }\n});\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: validateType(\"TSType\")\n }\n});\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: validateArrayOfType(\"TSType\", \"TSNamedTupleMember\")\n }\n});\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\")\n }\n});\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\")\n }\n});\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: validateType(\"Identifier\"),\n optional: {\n validate: bool,\n default: false\n },\n elementType: validateType(\"TSType\")\n }\n});\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: validateArrayOfType(\"TSType\")\n }\n};\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: validateType(\"TSType\"),\n extendsType: validateType(\"TSType\"),\n trueType: validateType(\"TSType\"),\n falseType: validateType(\"TSType\")\n }\n});\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: validateType(\"TSTypeParameter\")\n }\n});\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\")\n }\n});\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n builder: [\"typeAnnotation\", \"operator\"],\n fields: {\n operator: {\n validate: assertOneOf(\"keyof\", \"readonly\", \"unique\"),\n default: undefined\n },\n typeAnnotation: validateType(\"TSType\")\n }\n});\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: validateType(\"TSType\"),\n indexType: validateType(\"TSType\")\n }\n});\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"],\n builder: [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"],\n fields: {\n key: validateType(\"Identifier\"),\n constraint: validateType(\"TSType\"),\n readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeAnnotation: validateOptionalType(\"TSType\"),\n nameType: validateOptionalType(\"TSType\")\n }\n});\ndefineType(\"TSTemplateLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"quasis\", \"types\"],\n fields: {\n quasis: validateArrayOfType(\"TemplateElement\"),\n types: {\n validate: chain(assertValueType(\"array\"), assertEach(assertNodeType(\"TSType\")), function (node, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of types.\\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);\n }\n })\n }\n }\n});\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: function () {\n const unaryExpression = assertNodeType(\"NumericLiteral\", \"BigIntLiteral\");\n const unaryOperator = assertOneOf(\"-\");\n const literal = assertNodeType(\"NumericLiteral\", \"StringLiteral\", \"BooleanLiteral\", \"BigIntLiteral\", \"TemplateLiteral\");\n const validator = combine(function validator(parent, key, node) {\n if (is(\"UnaryExpression\", node)) {\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n literal(parent, key, node);\n }\n }, {\n oneOfNodeTypes: [\"NumericLiteral\", \"StringLiteral\", \"BooleanLiteral\", \"BigIntLiteral\", \"TemplateLiteral\", \"UnaryExpression\"]\n });\n return validator;\n }()\n }\n }\n});\ndefineType(\"TSClassImplements\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSInterfaceHeritage\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSInterfaceDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"TSInterfaceHeritage\")),\n body: validateType(\"TSInterfaceBody\")\n }\n});\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"TSTypeElement\")\n }\n});\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n typeAnnotation: validateType(\"TSType\")\n }\n});\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n [\"typeArguments\"]: validateOptionalType(\"TSTypeParameterInstantiation\")\n }\n});\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TSType\")\n }\n};\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n expression: validateType(\"Expression\")\n }\n});\ndefineType(\"TSEnumBody\", {\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSEnumMember\")\n }\n});\ndefineType(\"TSEnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n body: validateType(\"TSEnumBody\")\n }\n});\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: validateType(\"Identifier\", \"StringLiteral\"),\n initializer: validateOptionalType(\"Expression\")\n }\n});\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n kind: {\n validate: assertOneOf(\"global\", \"namespace\", \"module\"),\n default: \"namespace\"\n },\n declare: validateOptional(bool),\n id: {\n validate: chain(assertNodeType(\"TSEntityName\", \"StringLiteral\"), combine(function (node, key, val) {\n if (node.kind === \"namespace\" && is(\"StringLiteral\", val)) {\n throw new TypeError(`TSModuleDeclaration of kind 'namespace' cannot have a StringLiteral id.`);\n }\n }, {\n oneOfNodeTypes: [\"TSEntityName\", \"StringLiteral\"]\n }))\n },\n body: validateType(\"TSModuleBlock\")\n }\n});\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\")\n }\n});\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n builder: [\"source\", \"qualifier\", \"typeArguments\"],\n visitor: [\"source\", \"options\", \"qualifier\", \"typeArguments\"],\n fields: {\n source: validateType(\"StringLiteral\"),\n qualifier: validateOptionalType(\"TSEntityName\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n options: {\n validate: assertNodeType(\"ObjectExpression\"),\n optional: true\n }\n }\n});\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: {\n id: validateType(\"Identifier\"),\n moduleReference: validateType(\"TSEntityName\", \"TSExternalModuleReference\"),\n importKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true\n }\n }\n});\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"StringLiteral\")\n }\n});\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\")\n }\n});\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\")\n }\n});\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\")\n }\n});\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: assertNodeType(\"TSType\")\n }\n }\n});\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validateArrayOfType(\"TSType\")\n }\n});\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validateArrayOfType(\"TSTypeParameter\")\n }\n});\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: [\"name\", \"constraint\", \"default\"],\n fields: {\n name: {\n validate: assertNodeType(\"Identifier\")\n },\n in: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n out: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n const: {\n validate: assertValueType(\"boolean\"),\n optional: true\n },\n constraint: {\n validate: assertNodeType(\"TSType\"),\n optional: true\n },\n default: {\n validate: assertNodeType(\"TSType\"),\n optional: true\n }\n }\n});\n\nconst DEPRECATED_ALIASES = {\n ModuleDeclaration: \"ImportOrExportDeclaration\"\n};\n\nObject.keys(DEPRECATED_ALIASES).forEach(deprecatedAlias => {\n FLIPPED_ALIAS_KEYS[deprecatedAlias] = FLIPPED_ALIAS_KEYS[DEPRECATED_ALIASES[deprecatedAlias]];\n});\nfor (const {\n types,\n set\n} of allExpandedTypes) {\n for (const type of types) {\n const aliases = FLIPPED_ALIAS_KEYS[type];\n if (aliases) {\n aliases.forEach(set.add, set);\n } else {\n set.add(type);\n }\n }\n}\nconst TYPES = [].concat(Object.keys(VISITOR_KEYS), Object.keys(FLIPPED_ALIAS_KEYS), Object.keys(DEPRECATED_KEYS));\n\nfunction validate$1(node, key, val) {\n if (!node) return;\n const fields = NODE_FIELDS$1[node.type];\n if (!fields) return;\n const field = fields[key];\n validateField(node, key, val, field);\n validateChild(node, key, val);\n}\nfunction validateInternal(field, node, key, val, maybeNode) {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n field.validate(node, key, val);\n if (maybeNode) {\n const type = val.type;\n if (type == null) return;\n NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n }\n}\nfunction validateField(node, key, val, field) {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n field.validate(node, key, val);\n}\nfunction validateChild(node, key, val) {\n const type = val?.type;\n if (type == null) return;\n NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n}\n\nconst _validate = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n default: validate$1,\n validateChild,\n validateField,\n validateInternal\n}, Symbol.toStringTag, { value: 'Module' });\n\nconst {\n validateInternal: validate\n} = _validate;\nconst {\n NODE_FIELDS\n} = utils;\nfunction arrayExpression(elements) {\n const node = {\n type: \"ArrayExpression\",\n elements\n };\n const defs = NODE_FIELDS.ArrayExpression;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nfunction assignmentExpression(operator, left, right) {\n const node = {\n type: \"AssignmentExpression\",\n operator,\n left,\n right\n };\n const defs = NODE_FIELDS.AssignmentExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction binaryExpression(operator, left, right) {\n const node = {\n type: \"BinaryExpression\",\n operator,\n left,\n right\n };\n const defs = NODE_FIELDS.BinaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction interpreterDirective(value) {\n const node = {\n type: \"InterpreterDirective\",\n value\n };\n const defs = NODE_FIELDS.InterpreterDirective;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction directive(value) {\n const node = {\n type: \"Directive\",\n value\n };\n const defs = NODE_FIELDS.Directive;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction directiveLiteral(value) {\n const node = {\n type: \"DirectiveLiteral\",\n value\n };\n const defs = NODE_FIELDS.DirectiveLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction blockStatement(body, directives = []) {\n const node = {\n type: \"BlockStatement\",\n body,\n directives\n };\n const defs = NODE_FIELDS.BlockStatement;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n return node;\n}\nfunction breakStatement(label = null) {\n const node = {\n type: \"BreakStatement\",\n label\n };\n const defs = NODE_FIELDS.BreakStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nfunction callExpression(callee, _arguments) {\n const node = {\n type: \"CallExpression\",\n callee,\n arguments: _arguments\n };\n const defs = NODE_FIELDS.CallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nfunction catchClause(param = null, body) {\n const node = {\n type: \"CatchClause\",\n param,\n body\n };\n const defs = NODE_FIELDS.CatchClause;\n validate(defs.param, node, \"param\", param, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction conditionalExpression(test, consequent, alternate) {\n const node = {\n type: \"ConditionalExpression\",\n test,\n consequent,\n alternate\n };\n const defs = NODE_FIELDS.ConditionalExpression;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nfunction continueStatement(label = null) {\n const node = {\n type: \"ContinueStatement\",\n label\n };\n const defs = NODE_FIELDS.ContinueStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nfunction debuggerStatement() {\n return {\n type: \"DebuggerStatement\"\n };\n}\nfunction doWhileStatement(test, body) {\n const node = {\n type: \"DoWhileStatement\",\n test,\n body\n };\n const defs = NODE_FIELDS.DoWhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction emptyStatement() {\n return {\n type: \"EmptyStatement\"\n };\n}\nfunction expressionStatement(expression) {\n const node = {\n type: \"ExpressionStatement\",\n expression\n };\n const defs = NODE_FIELDS.ExpressionStatement;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction file(program, comments = null, tokens = null) {\n const node = {\n type: \"File\",\n program,\n comments,\n tokens\n };\n const defs = NODE_FIELDS.File;\n validate(defs.program, node, \"program\", program, 1);\n validate(defs.comments, node, \"comments\", comments, 1);\n validate(defs.tokens, node, \"tokens\", tokens);\n return node;\n}\nfunction forInStatement(left, right, body) {\n const node = {\n type: \"ForInStatement\",\n left,\n right,\n body\n };\n const defs = NODE_FIELDS.ForInStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction forStatement(init = null, test = null, update = null, body) {\n const node = {\n type: \"ForStatement\",\n init,\n test,\n update,\n body\n };\n const defs = NODE_FIELDS.ForStatement;\n validate(defs.init, node, \"init\", init, 1);\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.update, node, \"update\", update, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction functionDeclaration(id = null, params, body, generator = false, async = false) {\n const node = {\n type: \"FunctionDeclaration\",\n id,\n params,\n body,\n generator,\n async\n };\n const defs = NODE_FIELDS.FunctionDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction functionExpression(id = null, params, body, generator = false, async = false) {\n const node = {\n type: \"FunctionExpression\",\n id,\n params,\n body,\n generator,\n async\n };\n const defs = NODE_FIELDS.FunctionExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction identifier(name) {\n const node = {\n type: \"Identifier\",\n name\n };\n const defs = NODE_FIELDS.Identifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction ifStatement(test, consequent, alternate = null) {\n const node = {\n type: \"IfStatement\",\n test,\n consequent,\n alternate\n };\n const defs = NODE_FIELDS.IfStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nfunction labeledStatement(label, body) {\n const node = {\n type: \"LabeledStatement\",\n label,\n body\n };\n const defs = NODE_FIELDS.LabeledStatement;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction stringLiteral(value) {\n const node = {\n type: \"StringLiteral\",\n value\n };\n const defs = NODE_FIELDS.StringLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction numericLiteral(value) {\n const node = {\n type: \"NumericLiteral\",\n value\n };\n const defs = NODE_FIELDS.NumericLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction nullLiteral() {\n return {\n type: \"NullLiteral\"\n };\n}\nfunction booleanLiteral(value) {\n const node = {\n type: \"BooleanLiteral\",\n value\n };\n const defs = NODE_FIELDS.BooleanLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction regExpLiteral(pattern, flags = \"\") {\n const node = {\n type: \"RegExpLiteral\",\n pattern,\n flags\n };\n const defs = NODE_FIELDS.RegExpLiteral;\n validate(defs.pattern, node, \"pattern\", pattern);\n validate(defs.flags, node, \"flags\", flags);\n return node;\n}\nfunction logicalExpression(operator, left, right) {\n const node = {\n type: \"LogicalExpression\",\n operator,\n left,\n right\n };\n const defs = NODE_FIELDS.LogicalExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction memberExpression(object, property, computed = false) {\n const node = {\n type: \"MemberExpression\",\n object,\n property,\n computed\n };\n const defs = NODE_FIELDS.MemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n return node;\n}\nfunction newExpression(callee, _arguments) {\n const node = {\n type: \"NewExpression\",\n callee,\n arguments: _arguments\n };\n const defs = NODE_FIELDS.NewExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nfunction program(body, directives = [], sourceType = \"script\", interpreter = null) {\n const node = {\n type: \"Program\",\n body,\n directives,\n sourceType,\n interpreter\n };\n const defs = NODE_FIELDS.Program;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n validate(defs.sourceType, node, \"sourceType\", sourceType);\n validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n return node;\n}\nfunction objectExpression(properties) {\n const node = {\n type: \"ObjectExpression\",\n properties\n };\n const defs = NODE_FIELDS.ObjectExpression;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nfunction objectMethod(kind, key, params, body, computed = false, generator = false, async = false) {\n const node = {\n type: \"ObjectMethod\",\n kind,\n key,\n params,\n body,\n computed,\n generator,\n async\n };\n const defs = NODE_FIELDS.ObjectMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction objectProperty(key, value, computed = false, shorthand = false) {\n const node = {\n type: \"ObjectProperty\",\n key,\n value,\n computed,\n shorthand\n };\n const defs = NODE_FIELDS.ObjectProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.shorthand, node, \"shorthand\", shorthand);\n return node;\n}\nfunction restElement(argument) {\n const node = {\n type: \"RestElement\",\n argument\n };\n const defs = NODE_FIELDS.RestElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction returnStatement(argument = null) {\n const node = {\n type: \"ReturnStatement\",\n argument\n };\n const defs = NODE_FIELDS.ReturnStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction sequenceExpression(expressions) {\n const node = {\n type: \"SequenceExpression\",\n expressions\n };\n const defs = NODE_FIELDS.SequenceExpression;\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nfunction parenthesizedExpression(expression) {\n const node = {\n type: \"ParenthesizedExpression\",\n expression\n };\n const defs = NODE_FIELDS.ParenthesizedExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction switchCase(test = null, consequent) {\n const node = {\n type: \"SwitchCase\",\n test,\n consequent\n };\n const defs = NODE_FIELDS.SwitchCase;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n return node;\n}\nfunction switchStatement(discriminant, cases) {\n const node = {\n type: \"SwitchStatement\",\n discriminant,\n cases\n };\n const defs = NODE_FIELDS.SwitchStatement;\n validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n validate(defs.cases, node, \"cases\", cases, 1);\n return node;\n}\nfunction thisExpression() {\n return {\n type: \"ThisExpression\"\n };\n}\nfunction throwStatement(argument) {\n const node = {\n type: \"ThrowStatement\",\n argument\n };\n const defs = NODE_FIELDS.ThrowStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction tryStatement(block, handler = null, finalizer = null) {\n const node = {\n type: \"TryStatement\",\n block,\n handler,\n finalizer\n };\n const defs = NODE_FIELDS.TryStatement;\n validate(defs.block, node, \"block\", block, 1);\n validate(defs.handler, node, \"handler\", handler, 1);\n validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n return node;\n}\nfunction unaryExpression(operator, argument, prefix = true) {\n const node = {\n type: \"UnaryExpression\",\n operator,\n argument,\n prefix\n };\n const defs = NODE_FIELDS.UnaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nfunction updateExpression(operator, argument, prefix = false) {\n const node = {\n type: \"UpdateExpression\",\n operator,\n argument,\n prefix\n };\n const defs = NODE_FIELDS.UpdateExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nfunction variableDeclaration(kind, declarations) {\n const node = {\n type: \"VariableDeclaration\",\n kind,\n declarations\n };\n const defs = NODE_FIELDS.VariableDeclaration;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.declarations, node, \"declarations\", declarations, 1);\n return node;\n}\nfunction variableDeclarator(id, init = null) {\n const node = {\n type: \"VariableDeclarator\",\n id,\n init\n };\n const defs = NODE_FIELDS.VariableDeclarator;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction whileStatement(test, body) {\n const node = {\n type: \"WhileStatement\",\n test,\n body\n };\n const defs = NODE_FIELDS.WhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction withStatement(object, body) {\n const node = {\n type: \"WithStatement\",\n object,\n body\n };\n const defs = NODE_FIELDS.WithStatement;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction assignmentPattern(left, right) {\n const node = {\n type: \"AssignmentPattern\",\n left,\n right\n };\n const defs = NODE_FIELDS.AssignmentPattern;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction arrayPattern(elements) {\n const node = {\n type: \"ArrayPattern\",\n elements\n };\n const defs = NODE_FIELDS.ArrayPattern;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nfunction arrowFunctionExpression(params, body, async = false) {\n const node = {\n type: \"ArrowFunctionExpression\",\n params,\n body,\n async\n };\n const defs = NODE_FIELDS.ArrowFunctionExpression;\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction classBody(body) {\n const node = {\n type: \"ClassBody\",\n body\n };\n const defs = NODE_FIELDS.ClassBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction classExpression(id = null, superClass = null, body, decorators = null) {\n const node = {\n type: \"ClassExpression\",\n id,\n superClass,\n body,\n decorators\n };\n const defs = NODE_FIELDS.ClassExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nfunction classDeclaration(id = null, superClass = null, body, decorators = null) {\n const node = {\n type: \"ClassDeclaration\",\n id,\n superClass,\n body,\n decorators\n };\n const defs = NODE_FIELDS.ClassDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nfunction exportAllDeclaration(source, attributes = null) {\n const node = {\n type: \"ExportAllDeclaration\",\n source,\n attributes\n };\n const defs = NODE_FIELDS.ExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction exportDefaultDeclaration(declaration) {\n const node = {\n type: \"ExportDefaultDeclaration\",\n declaration\n };\n const defs = NODE_FIELDS.ExportDefaultDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n return node;\n}\nfunction exportNamedDeclaration(declaration = null, specifiers = [], source = null, attributes = null) {\n const node = {\n type: \"ExportNamedDeclaration\",\n declaration,\n specifiers,\n source,\n attributes\n };\n const defs = NODE_FIELDS.ExportNamedDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction exportSpecifier(local, exported) {\n const node = {\n type: \"ExportSpecifier\",\n local,\n exported\n };\n const defs = NODE_FIELDS.ExportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nfunction forOfStatement(left, right, body, _await = false) {\n const node = {\n type: \"ForOfStatement\",\n left,\n right,\n body,\n await: _await\n };\n const defs = NODE_FIELDS.ForOfStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.await, node, \"await\", _await);\n return node;\n}\nfunction importDeclaration(specifiers, source, attributes = null) {\n const node = {\n type: \"ImportDeclaration\",\n specifiers,\n source,\n attributes\n };\n const defs = NODE_FIELDS.ImportDeclaration;\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction importDefaultSpecifier(local) {\n const node = {\n type: \"ImportDefaultSpecifier\",\n local\n };\n const defs = NODE_FIELDS.ImportDefaultSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nfunction importNamespaceSpecifier(local) {\n const node = {\n type: \"ImportNamespaceSpecifier\",\n local\n };\n const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nfunction importSpecifier(local, imported) {\n const node = {\n type: \"ImportSpecifier\",\n local,\n imported\n };\n const defs = NODE_FIELDS.ImportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.imported, node, \"imported\", imported, 1);\n return node;\n}\nfunction metaProperty(meta, property) {\n const node = {\n type: \"MetaProperty\",\n meta,\n property\n };\n const defs = NODE_FIELDS.MetaProperty;\n validate(defs.meta, node, \"meta\", meta, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nfunction classMethod(kind = \"method\", key, params, body, computed = false, _static = false, generator = false, async = false) {\n const node = {\n type: \"ClassMethod\",\n kind,\n key,\n params,\n body,\n computed,\n static: _static,\n generator,\n async\n };\n const defs = NODE_FIELDS.ClassMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction objectPattern(properties) {\n const node = {\n type: \"ObjectPattern\",\n properties\n };\n const defs = NODE_FIELDS.ObjectPattern;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nfunction spreadElement(argument) {\n const node = {\n type: \"SpreadElement\",\n argument\n };\n const defs = NODE_FIELDS.SpreadElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction _super() {\n return {\n type: \"Super\"\n };\n}\nfunction taggedTemplateExpression(tag, quasi) {\n const node = {\n type: \"TaggedTemplateExpression\",\n tag,\n quasi\n };\n const defs = NODE_FIELDS.TaggedTemplateExpression;\n validate(defs.tag, node, \"tag\", tag, 1);\n validate(defs.quasi, node, \"quasi\", quasi, 1);\n return node;\n}\nfunction templateElement(value, tail = false) {\n const node = {\n type: \"TemplateElement\",\n value,\n tail\n };\n const defs = NODE_FIELDS.TemplateElement;\n validate(defs.value, node, \"value\", value);\n validate(defs.tail, node, \"tail\", tail);\n return node;\n}\nfunction templateLiteral(quasis, expressions) {\n const node = {\n type: \"TemplateLiteral\",\n quasis,\n expressions\n };\n const defs = NODE_FIELDS.TemplateLiteral;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nfunction yieldExpression(argument = null, delegate = false) {\n const node = {\n type: \"YieldExpression\",\n argument,\n delegate\n };\n const defs = NODE_FIELDS.YieldExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.delegate, node, \"delegate\", delegate);\n return node;\n}\nfunction awaitExpression(argument) {\n const node = {\n type: \"AwaitExpression\",\n argument\n };\n const defs = NODE_FIELDS.AwaitExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction importExpression(source, options = null) {\n const node = {\n type: \"ImportExpression\",\n source,\n options\n };\n const defs = NODE_FIELDS.ImportExpression;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.options, node, \"options\", options, 1);\n return node;\n}\nfunction _import() {\n return {\n type: \"Import\"\n };\n}\nfunction bigIntLiteral(value) {\n const node = {\n type: \"BigIntLiteral\",\n value\n };\n const defs = NODE_FIELDS.BigIntLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction exportNamespaceSpecifier(exported) {\n const node = {\n type: \"ExportNamespaceSpecifier\",\n exported\n };\n const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nfunction optionalMemberExpression(object, property, computed = false, optional) {\n const node = {\n type: \"OptionalMemberExpression\",\n object,\n property,\n computed,\n optional\n };\n const defs = NODE_FIELDS.OptionalMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction optionalCallExpression(callee, _arguments, optional) {\n const node = {\n type: \"OptionalCallExpression\",\n callee,\n arguments: _arguments,\n optional\n };\n const defs = NODE_FIELDS.OptionalCallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction classProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {\n const node = {\n type: \"ClassProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static\n };\n const defs = NODE_FIELDS.ClassProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction classPrivateProperty(key, value = null, decorators = null, _static = false) {\n const node = {\n type: \"ClassPrivateProperty\",\n key,\n value,\n decorators,\n static: _static\n };\n const defs = NODE_FIELDS.ClassPrivateProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction classPrivateMethod(kind = \"method\", key, params, body, _static = false) {\n const node = {\n type: \"ClassPrivateMethod\",\n kind,\n key,\n params,\n body,\n static: _static,\n async: false,\n computed: false,\n generator: false\n };\n const defs = NODE_FIELDS.ClassPrivateMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction privateName(id) {\n const node = {\n type: \"PrivateName\",\n id\n };\n const defs = NODE_FIELDS.PrivateName;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction staticBlock(body) {\n const node = {\n type: \"StaticBlock\",\n body\n };\n const defs = NODE_FIELDS.StaticBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction importAttribute(key, value) {\n const node = {\n type: \"ImportAttribute\",\n key,\n value\n };\n const defs = NODE_FIELDS.ImportAttribute;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction anyTypeAnnotation() {\n return {\n type: \"AnyTypeAnnotation\"\n };\n}\nfunction arrayTypeAnnotation(elementType) {\n const node = {\n type: \"ArrayTypeAnnotation\",\n elementType\n };\n const defs = NODE_FIELDS.ArrayTypeAnnotation;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nfunction booleanTypeAnnotation() {\n return {\n type: \"BooleanTypeAnnotation\"\n };\n}\nfunction booleanLiteralTypeAnnotation(value) {\n const node = {\n type: \"BooleanLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction nullLiteralTypeAnnotation() {\n return {\n type: \"NullLiteralTypeAnnotation\"\n };\n}\nfunction classImplements(id, typeParameters = null) {\n const node = {\n type: \"ClassImplements\",\n id,\n typeParameters\n };\n const defs = NODE_FIELDS.ClassImplements;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction declareClass(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"DeclareClass\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.DeclareClass;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction declareFunction(id) {\n const node = {\n type: \"DeclareFunction\",\n id\n };\n const defs = NODE_FIELDS.DeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction declareInterface(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"DeclareInterface\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.DeclareInterface;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction declareModule(id, body, kind = null) {\n const node = {\n type: \"DeclareModule\",\n id,\n body,\n kind\n };\n const defs = NODE_FIELDS.DeclareModule;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nfunction declareModuleExports(typeAnnotation) {\n const node = {\n type: \"DeclareModuleExports\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.DeclareModuleExports;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction declareTypeAlias(id, typeParameters = null, right) {\n const node = {\n type: \"DeclareTypeAlias\",\n id,\n typeParameters,\n right\n };\n const defs = NODE_FIELDS.DeclareTypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction declareOpaqueType(id, typeParameters = null, supertype = null) {\n const node = {\n type: \"DeclareOpaqueType\",\n id,\n typeParameters,\n supertype\n };\n const defs = NODE_FIELDS.DeclareOpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n return node;\n}\nfunction declareVariable(id) {\n const node = {\n type: \"DeclareVariable\",\n id\n };\n const defs = NODE_FIELDS.DeclareVariable;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction declareExportDeclaration(declaration = null, specifiers = null, source = null, attributes = null) {\n const node = {\n type: \"DeclareExportDeclaration\",\n declaration,\n specifiers,\n source,\n attributes\n };\n const defs = NODE_FIELDS.DeclareExportDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction declareExportAllDeclaration(source, attributes = null) {\n const node = {\n type: \"DeclareExportAllDeclaration\",\n source,\n attributes\n };\n const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction declaredPredicate(value) {\n const node = {\n type: \"DeclaredPredicate\",\n value\n };\n const defs = NODE_FIELDS.DeclaredPredicate;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction existsTypeAnnotation() {\n return {\n type: \"ExistsTypeAnnotation\"\n };\n}\nfunction functionTypeAnnotation(typeParameters = null, params, rest = null, returnType) {\n const node = {\n type: \"FunctionTypeAnnotation\",\n typeParameters,\n params,\n rest,\n returnType\n };\n const defs = NODE_FIELDS.FunctionTypeAnnotation;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.rest, node, \"rest\", rest, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction functionTypeParam(name = null, typeAnnotation) {\n const node = {\n type: \"FunctionTypeParam\",\n name,\n typeAnnotation\n };\n const defs = NODE_FIELDS.FunctionTypeParam;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction genericTypeAnnotation(id, typeParameters = null) {\n const node = {\n type: \"GenericTypeAnnotation\",\n id,\n typeParameters\n };\n const defs = NODE_FIELDS.GenericTypeAnnotation;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction inferredPredicate() {\n return {\n type: \"InferredPredicate\"\n };\n}\nfunction interfaceExtends(id, typeParameters = null) {\n const node = {\n type: \"InterfaceExtends\",\n id,\n typeParameters\n };\n const defs = NODE_FIELDS.InterfaceExtends;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction interfaceDeclaration(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"InterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.InterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction interfaceTypeAnnotation(_extends = null, body) {\n const node = {\n type: \"InterfaceTypeAnnotation\",\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction intersectionTypeAnnotation(types) {\n const node = {\n type: \"IntersectionTypeAnnotation\",\n types\n };\n const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction mixedTypeAnnotation() {\n return {\n type: \"MixedTypeAnnotation\"\n };\n}\nfunction emptyTypeAnnotation() {\n return {\n type: \"EmptyTypeAnnotation\"\n };\n}\nfunction nullableTypeAnnotation(typeAnnotation) {\n const node = {\n type: \"NullableTypeAnnotation\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.NullableTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction numberLiteralTypeAnnotation(value) {\n const node = {\n type: \"NumberLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction bigIntLiteralTypeAnnotation(value) {\n const node = {\n type: \"BigIntLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.BigIntLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction numberTypeAnnotation() {\n return {\n type: \"NumberTypeAnnotation\"\n };\n}\nfunction objectTypeAnnotation(properties, indexers = [], callProperties = [], internalSlots = [], exact = false) {\n const node = {\n type: \"ObjectTypeAnnotation\",\n properties,\n indexers,\n callProperties,\n internalSlots,\n exact\n };\n const defs = NODE_FIELDS.ObjectTypeAnnotation;\n validate(defs.properties, node, \"properties\", properties, 1);\n validate(defs.indexers, node, \"indexers\", indexers, 1);\n validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n validate(defs.exact, node, \"exact\", exact);\n return node;\n}\nfunction objectTypeInternalSlot(id, value, optional, _static, method) {\n const node = {\n type: \"ObjectTypeInternalSlot\",\n id,\n value,\n optional,\n static: _static,\n method\n };\n const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.optional, node, \"optional\", optional);\n validate(defs.static, node, \"static\", _static);\n validate(defs.method, node, \"method\", method);\n return node;\n}\nfunction objectTypeCallProperty(value) {\n const node = {\n type: \"ObjectTypeCallProperty\",\n value,\n static: false\n };\n const defs = NODE_FIELDS.ObjectTypeCallProperty;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction objectTypeIndexer(id = null, key, value, variance = null) {\n const node = {\n type: \"ObjectTypeIndexer\",\n id,\n key,\n value,\n variance,\n static: false\n };\n const defs = NODE_FIELDS.ObjectTypeIndexer;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nfunction objectTypeProperty(key, value, variance = null) {\n const node = {\n type: \"ObjectTypeProperty\",\n key,\n value,\n variance,\n kind: \"init\",\n method: false,\n optional: false,\n proto: false,\n static: false\n };\n const defs = NODE_FIELDS.ObjectTypeProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nfunction objectTypeSpreadProperty(argument) {\n const node = {\n type: \"ObjectTypeSpreadProperty\",\n argument\n };\n const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction opaqueType(id, typeParameters = null, supertype = null, impltype) {\n const node = {\n type: \"OpaqueType\",\n id,\n typeParameters,\n supertype,\n impltype\n };\n const defs = NODE_FIELDS.OpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n validate(defs.impltype, node, \"impltype\", impltype, 1);\n return node;\n}\nfunction qualifiedTypeIdentifier(id, qualification) {\n const node = {\n type: \"QualifiedTypeIdentifier\",\n id,\n qualification\n };\n const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.qualification, node, \"qualification\", qualification, 1);\n return node;\n}\nfunction stringLiteralTypeAnnotation(value) {\n const node = {\n type: \"StringLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction stringTypeAnnotation() {\n return {\n type: \"StringTypeAnnotation\"\n };\n}\nfunction symbolTypeAnnotation() {\n return {\n type: \"SymbolTypeAnnotation\"\n };\n}\nfunction thisTypeAnnotation() {\n return {\n type: \"ThisTypeAnnotation\"\n };\n}\nfunction tupleTypeAnnotation(types) {\n const node = {\n type: \"TupleTypeAnnotation\",\n types\n };\n const defs = NODE_FIELDS.TupleTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction typeofTypeAnnotation(argument) {\n const node = {\n type: \"TypeofTypeAnnotation\",\n argument\n };\n const defs = NODE_FIELDS.TypeofTypeAnnotation;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction typeAlias(id, typeParameters = null, right) {\n const node = {\n type: \"TypeAlias\",\n id,\n typeParameters,\n right\n };\n const defs = NODE_FIELDS.TypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction typeAnnotation(typeAnnotation) {\n const node = {\n type: \"TypeAnnotation\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction typeCastExpression(expression, typeAnnotation) {\n const node = {\n type: \"TypeCastExpression\",\n expression,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TypeCastExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction typeParameter(name, bound = null, _default = null, variance = null) {\n const node = {\n type: \"TypeParameter\",\n name,\n bound,\n default: _default,\n variance\n };\n const defs = NODE_FIELDS.TypeParameter;\n validate(defs.name, node, \"name\", name);\n validate(defs.bound, node, \"bound\", bound, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nfunction typeParameterDeclaration(params) {\n const node = {\n type: \"TypeParameterDeclaration\",\n params\n };\n const defs = NODE_FIELDS.TypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction typeParameterInstantiation(params) {\n const node = {\n type: \"TypeParameterInstantiation\",\n params\n };\n const defs = NODE_FIELDS.TypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction unionTypeAnnotation(types) {\n const node = {\n type: \"UnionTypeAnnotation\",\n types\n };\n const defs = NODE_FIELDS.UnionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction variance(kind) {\n const node = {\n type: \"Variance\",\n kind\n };\n const defs = NODE_FIELDS.Variance;\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nfunction voidTypeAnnotation() {\n return {\n type: \"VoidTypeAnnotation\"\n };\n}\nfunction enumDeclaration(id, body) {\n const node = {\n type: \"EnumDeclaration\",\n id,\n body\n };\n const defs = NODE_FIELDS.EnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction enumBooleanBody(members) {\n const node = {\n type: \"EnumBooleanBody\",\n members,\n explicitType: false,\n hasUnknownMembers: false\n };\n const defs = NODE_FIELDS.EnumBooleanBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumNumberBody(members) {\n const node = {\n type: \"EnumNumberBody\",\n members,\n explicitType: false,\n hasUnknownMembers: false\n };\n const defs = NODE_FIELDS.EnumNumberBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumStringBody(members) {\n const node = {\n type: \"EnumStringBody\",\n members,\n explicitType: false,\n hasUnknownMembers: false\n };\n const defs = NODE_FIELDS.EnumStringBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumSymbolBody(members) {\n const node = {\n type: \"EnumSymbolBody\",\n members,\n hasUnknownMembers: false\n };\n const defs = NODE_FIELDS.EnumSymbolBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumBooleanMember(id, init) {\n const node = {\n type: \"EnumBooleanMember\",\n id,\n init\n };\n const defs = NODE_FIELDS.EnumBooleanMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction enumNumberMember(id, init) {\n const node = {\n type: \"EnumNumberMember\",\n id,\n init\n };\n const defs = NODE_FIELDS.EnumNumberMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction enumStringMember(id, init) {\n const node = {\n type: \"EnumStringMember\",\n id,\n init\n };\n const defs = NODE_FIELDS.EnumStringMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction enumDefaultedMember(id) {\n const node = {\n type: \"EnumDefaultedMember\",\n id\n };\n const defs = NODE_FIELDS.EnumDefaultedMember;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction indexedAccessType(objectType, indexType) {\n const node = {\n type: \"IndexedAccessType\",\n objectType,\n indexType\n };\n const defs = NODE_FIELDS.IndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nfunction optionalIndexedAccessType(objectType, indexType) {\n const node = {\n type: \"OptionalIndexedAccessType\",\n objectType,\n indexType,\n optional: false\n };\n const defs = NODE_FIELDS.OptionalIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nfunction jsxAttribute(name, value = null) {\n const node = {\n type: \"JSXAttribute\",\n name,\n value\n };\n const defs = NODE_FIELDS.JSXAttribute;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction jsxClosingElement(name) {\n const node = {\n type: \"JSXClosingElement\",\n name\n };\n const defs = NODE_FIELDS.JSXClosingElement;\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction jsxElement(openingElement, closingElement = null, children) {\n const node = {\n type: \"JSXElement\",\n openingElement,\n closingElement,\n children\n };\n const defs = NODE_FIELDS.JSXElement;\n validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n validate(defs.children, node, \"children\", children, 1);\n return node;\n}\nfunction jsxEmptyExpression() {\n return {\n type: \"JSXEmptyExpression\"\n };\n}\nfunction jsxExpressionContainer(expression) {\n const node = {\n type: \"JSXExpressionContainer\",\n expression\n };\n const defs = NODE_FIELDS.JSXExpressionContainer;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction jsxSpreadChild(expression) {\n const node = {\n type: \"JSXSpreadChild\",\n expression\n };\n const defs = NODE_FIELDS.JSXSpreadChild;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction jsxIdentifier(name) {\n const node = {\n type: \"JSXIdentifier\",\n name\n };\n const defs = NODE_FIELDS.JSXIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction jsxMemberExpression(object, property) {\n const node = {\n type: \"JSXMemberExpression\",\n object,\n property\n };\n const defs = NODE_FIELDS.JSXMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nfunction jsxNamespacedName(namespace, name) {\n const node = {\n type: \"JSXNamespacedName\",\n namespace,\n name\n };\n const defs = NODE_FIELDS.JSXNamespacedName;\n validate(defs.namespace, node, \"namespace\", namespace, 1);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction jsxOpeningElement(name, attributes, selfClosing = false) {\n const node = {\n type: \"JSXOpeningElement\",\n name,\n attributes,\n selfClosing\n };\n const defs = NODE_FIELDS.JSXOpeningElement;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n return node;\n}\nfunction jsxSpreadAttribute(argument) {\n const node = {\n type: \"JSXSpreadAttribute\",\n argument\n };\n const defs = NODE_FIELDS.JSXSpreadAttribute;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction jsxText(value) {\n const node = {\n type: \"JSXText\",\n value\n };\n const defs = NODE_FIELDS.JSXText;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction jsxFragment(openingFragment, closingFragment, children) {\n const node = {\n type: \"JSXFragment\",\n openingFragment,\n closingFragment,\n children\n };\n const defs = NODE_FIELDS.JSXFragment;\n validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n validate(defs.children, node, \"children\", children, 1);\n return node;\n}\nfunction jsxOpeningFragment() {\n return {\n type: \"JSXOpeningFragment\"\n };\n}\nfunction jsxClosingFragment() {\n return {\n type: \"JSXClosingFragment\"\n };\n}\nfunction placeholder(expectedNode, name) {\n const node = {\n type: \"Placeholder\",\n expectedNode,\n name\n };\n const defs = NODE_FIELDS.Placeholder;\n validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction v8IntrinsicIdentifier(name) {\n const node = {\n type: \"V8IntrinsicIdentifier\",\n name\n };\n const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction argumentPlaceholder() {\n return {\n type: \"ArgumentPlaceholder\"\n };\n}\nfunction bindExpression(object, callee) {\n const node = {\n type: \"BindExpression\",\n object,\n callee\n };\n const defs = NODE_FIELDS.BindExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.callee, node, \"callee\", callee, 1);\n return node;\n}\nfunction classAccessorProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {\n const node = {\n type: \"ClassAccessorProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static\n };\n const defs = NODE_FIELDS.ClassAccessorProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction decorator(expression) {\n const node = {\n type: \"Decorator\",\n expression\n };\n const defs = NODE_FIELDS.Decorator;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction doExpression(body, async = false) {\n const node = {\n type: \"DoExpression\",\n body,\n async\n };\n const defs = NODE_FIELDS.DoExpression;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction exportDefaultSpecifier(exported) {\n const node = {\n type: \"ExportDefaultSpecifier\",\n exported\n };\n const defs = NODE_FIELDS.ExportDefaultSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nfunction moduleExpression(body) {\n const node = {\n type: \"ModuleExpression\",\n body\n };\n const defs = NODE_FIELDS.ModuleExpression;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction topicReference() {\n return {\n type: \"TopicReference\"\n };\n}\nfunction voidPattern() {\n return {\n type: \"VoidPattern\"\n };\n}\nfunction tsParameterProperty(parameter) {\n const node = {\n type: \"TSParameterProperty\",\n parameter\n };\n const defs = NODE_FIELDS.TSParameterProperty;\n validate(defs.parameter, node, \"parameter\", parameter, 1);\n return node;\n}\nfunction tsDeclareFunction(id = null, typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSDeclareFunction\",\n id,\n typeParameters,\n params,\n returnType,\n async: false,\n generator: false\n };\n const defs = NODE_FIELDS.TSDeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsDeclareMethod(key, typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSDeclareMethod\",\n key,\n typeParameters,\n params,\n returnType,\n async: false,\n computed: false,\n generator: false,\n kind: \"method\",\n static: false\n };\n const defs = NODE_FIELDS.TSDeclareMethod;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsQualifiedName(left, right) {\n const node = {\n type: \"TSQualifiedName\",\n left,\n right\n };\n const defs = NODE_FIELDS.TSQualifiedName;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction tsCallSignatureDeclaration(typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSCallSignatureDeclaration\",\n typeParameters,\n params,\n returnType\n };\n const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsConstructSignatureDeclaration(typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSConstructSignatureDeclaration\",\n typeParameters,\n params,\n returnType\n };\n const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsPropertySignature(key, typeAnnotation = null) {\n const node = {\n type: \"TSPropertySignature\",\n key,\n typeAnnotation,\n computed: false\n };\n const defs = NODE_FIELDS.TSPropertySignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsMethodSignature(key, typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSMethodSignature\",\n key,\n typeParameters,\n params,\n returnType,\n computed: false,\n kind: \"method\"\n };\n const defs = NODE_FIELDS.TSMethodSignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsIndexSignature(parameters, typeAnnotation = null) {\n const node = {\n type: \"TSIndexSignature\",\n parameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSIndexSignature;\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsAnyKeyword() {\n return {\n type: \"TSAnyKeyword\"\n };\n}\nfunction tsBooleanKeyword() {\n return {\n type: \"TSBooleanKeyword\"\n };\n}\nfunction tsBigIntKeyword() {\n return {\n type: \"TSBigIntKeyword\"\n };\n}\nfunction tsIntrinsicKeyword() {\n return {\n type: \"TSIntrinsicKeyword\"\n };\n}\nfunction tsNeverKeyword() {\n return {\n type: \"TSNeverKeyword\"\n };\n}\nfunction tsNullKeyword() {\n return {\n type: \"TSNullKeyword\"\n };\n}\nfunction tsNumberKeyword() {\n return {\n type: \"TSNumberKeyword\"\n };\n}\nfunction tsObjectKeyword() {\n return {\n type: \"TSObjectKeyword\"\n };\n}\nfunction tsStringKeyword() {\n return {\n type: \"TSStringKeyword\"\n };\n}\nfunction tsSymbolKeyword() {\n return {\n type: \"TSSymbolKeyword\"\n };\n}\nfunction tsUndefinedKeyword() {\n return {\n type: \"TSUndefinedKeyword\"\n };\n}\nfunction tsUnknownKeyword() {\n return {\n type: \"TSUnknownKeyword\"\n };\n}\nfunction tsVoidKeyword() {\n return {\n type: \"TSVoidKeyword\"\n };\n}\nfunction tsThisType() {\n return {\n type: \"TSThisType\"\n };\n}\nfunction tsFunctionType(typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSFunctionType\",\n typeParameters,\n params,\n returnType\n };\n const defs = NODE_FIELDS.TSFunctionType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsConstructorType(typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSConstructorType\",\n typeParameters,\n params,\n returnType\n };\n const defs = NODE_FIELDS.TSConstructorType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsTypeReference(typeName, typeArguments = null) {\n const node = {\n type: \"TSTypeReference\",\n typeName,\n typeArguments\n };\n const defs = NODE_FIELDS.TSTypeReference;\n validate(defs.typeName, node, \"typeName\", typeName, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nfunction tsTypePredicate(parameterName, typeAnnotation = null, asserts = null) {\n const node = {\n type: \"TSTypePredicate\",\n parameterName,\n typeAnnotation,\n asserts\n };\n const defs = NODE_FIELDS.TSTypePredicate;\n validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.asserts, node, \"asserts\", asserts);\n return node;\n}\nfunction tsTypeQuery(exprName, typeArguments = null) {\n const node = {\n type: \"TSTypeQuery\",\n exprName,\n typeArguments\n };\n const defs = NODE_FIELDS.TSTypeQuery;\n validate(defs.exprName, node, \"exprName\", exprName, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nfunction tsTypeLiteral(members) {\n const node = {\n type: \"TSTypeLiteral\",\n members\n };\n const defs = NODE_FIELDS.TSTypeLiteral;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction tsArrayType(elementType) {\n const node = {\n type: \"TSArrayType\",\n elementType\n };\n const defs = NODE_FIELDS.TSArrayType;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nfunction tsTupleType(elementTypes) {\n const node = {\n type: \"TSTupleType\",\n elementTypes\n };\n const defs = NODE_FIELDS.TSTupleType;\n validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n return node;\n}\nfunction tsOptionalType(typeAnnotation) {\n const node = {\n type: \"TSOptionalType\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSOptionalType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsRestType(typeAnnotation) {\n const node = {\n type: \"TSRestType\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSRestType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsNamedTupleMember(label, elementType, optional = false) {\n const node = {\n type: \"TSNamedTupleMember\",\n label,\n elementType,\n optional\n };\n const defs = NODE_FIELDS.TSNamedTupleMember;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction tsUnionType(types) {\n const node = {\n type: \"TSUnionType\",\n types\n };\n const defs = NODE_FIELDS.TSUnionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction tsIntersectionType(types) {\n const node = {\n type: \"TSIntersectionType\",\n types\n };\n const defs = NODE_FIELDS.TSIntersectionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction tsConditionalType(checkType, extendsType, trueType, falseType) {\n const node = {\n type: \"TSConditionalType\",\n checkType,\n extendsType,\n trueType,\n falseType\n };\n const defs = NODE_FIELDS.TSConditionalType;\n validate(defs.checkType, node, \"checkType\", checkType, 1);\n validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n validate(defs.trueType, node, \"trueType\", trueType, 1);\n validate(defs.falseType, node, \"falseType\", falseType, 1);\n return node;\n}\nfunction tsInferType(typeParameter) {\n const node = {\n type: \"TSInferType\",\n typeParameter\n };\n const defs = NODE_FIELDS.TSInferType;\n validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n return node;\n}\nfunction tsParenthesizedType(typeAnnotation) {\n const node = {\n type: \"TSParenthesizedType\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSParenthesizedType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeOperator(typeAnnotation, operator) {\n const node = {\n type: \"TSTypeOperator\",\n typeAnnotation,\n operator\n };\n const defs = NODE_FIELDS.TSTypeOperator;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.operator, node, \"operator\", operator);\n return node;\n}\nfunction tsIndexedAccessType(objectType, indexType) {\n const node = {\n type: \"TSIndexedAccessType\",\n objectType,\n indexType\n };\n const defs = NODE_FIELDS.TSIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nfunction tsMappedType(key, constraint, nameType = null, typeAnnotation = null) {\n const node = {\n type: \"TSMappedType\",\n key,\n constraint,\n nameType,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSMappedType;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.constraint, node, \"constraint\", constraint, 1);\n validate(defs.nameType, node, \"nameType\", nameType, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTemplateLiteralType(quasis, types) {\n const node = {\n type: \"TSTemplateLiteralType\",\n quasis,\n types\n };\n const defs = NODE_FIELDS.TSTemplateLiteralType;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction tsLiteralType(literal) {\n const node = {\n type: \"TSLiteralType\",\n literal\n };\n const defs = NODE_FIELDS.TSLiteralType;\n validate(defs.literal, node, \"literal\", literal, 1);\n return node;\n}\nfunction tsClassImplements(expression, typeArguments = null) {\n const node = {\n type: \"TSClassImplements\",\n expression,\n typeArguments\n };\n const defs = NODE_FIELDS.TSClassImplements;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nfunction tsInterfaceHeritage(expression, typeArguments = null) {\n const node = {\n type: \"TSInterfaceHeritage\",\n expression,\n typeArguments\n };\n const defs = NODE_FIELDS.TSInterfaceHeritage;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nfunction tsInterfaceDeclaration(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"TSInterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.TSInterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsInterfaceBody(body) {\n const node = {\n type: \"TSInterfaceBody\",\n body\n };\n const defs = NODE_FIELDS.TSInterfaceBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsTypeAliasDeclaration(id, typeParameters = null, typeAnnotation) {\n const node = {\n type: \"TSTypeAliasDeclaration\",\n id,\n typeParameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsInstantiationExpression(expression, typeArguments = null) {\n const node = {\n type: \"TSInstantiationExpression\",\n expression,\n typeArguments\n };\n const defs = NODE_FIELDS.TSInstantiationExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nfunction tsAsExpression(expression, typeAnnotation) {\n const node = {\n type: \"TSAsExpression\",\n expression,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSAsExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsSatisfiesExpression(expression, typeAnnotation) {\n const node = {\n type: \"TSSatisfiesExpression\",\n expression,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSSatisfiesExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeAssertion(typeAnnotation, expression) {\n const node = {\n type: \"TSTypeAssertion\",\n typeAnnotation,\n expression\n };\n const defs = NODE_FIELDS.TSTypeAssertion;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsEnumBody(members) {\n const node = {\n type: \"TSEnumBody\",\n members\n };\n const defs = NODE_FIELDS.TSEnumBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction tsEnumDeclaration(id, body) {\n const node = {\n type: \"TSEnumDeclaration\",\n id,\n body\n };\n const defs = NODE_FIELDS.TSEnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsEnumMember(id, initializer = null) {\n const node = {\n type: \"TSEnumMember\",\n id,\n initializer\n };\n const defs = NODE_FIELDS.TSEnumMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.initializer, node, \"initializer\", initializer, 1);\n return node;\n}\nfunction tsModuleDeclaration(id, body) {\n const node = {\n type: \"TSModuleDeclaration\",\n id,\n body,\n kind: \"namespace\"\n };\n const defs = NODE_FIELDS.TSModuleDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsModuleBlock(body) {\n const node = {\n type: \"TSModuleBlock\",\n body\n };\n const defs = NODE_FIELDS.TSModuleBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsImportType(source, qualifier = null, typeArguments = null) {\n const node = {\n type: \"TSImportType\",\n source,\n qualifier,\n typeArguments\n };\n const defs = NODE_FIELDS.TSImportType;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n validate(defs.typeArguments, node, \"typeArguments\", typeArguments, 1);\n return node;\n}\nfunction tsImportEqualsDeclaration(id, moduleReference) {\n const node = {\n type: \"TSImportEqualsDeclaration\",\n id,\n moduleReference\n };\n const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n return node;\n}\nfunction tsExternalModuleReference(expression) {\n const node = {\n type: \"TSExternalModuleReference\",\n expression\n };\n const defs = NODE_FIELDS.TSExternalModuleReference;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsNonNullExpression(expression) {\n const node = {\n type: \"TSNonNullExpression\",\n expression\n };\n const defs = NODE_FIELDS.TSNonNullExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsExportAssignment(expression) {\n const node = {\n type: \"TSExportAssignment\",\n expression\n };\n const defs = NODE_FIELDS.TSExportAssignment;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsNamespaceExportDeclaration(id) {\n const node = {\n type: \"TSNamespaceExportDeclaration\",\n id\n };\n const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction tsTypeAnnotation(typeAnnotation) {\n const node = {\n type: \"TSTypeAnnotation\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeParameterInstantiation(params) {\n const node = {\n type: \"TSTypeParameterInstantiation\",\n params\n };\n const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction tsTypeParameterDeclaration(params) {\n const node = {\n type: \"TSTypeParameterDeclaration\",\n params\n };\n const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction tsTypeParameter(constraint = null, _default = null, name) {\n const node = {\n type: \"TSTypeParameter\",\n constraint,\n default: _default,\n name\n };\n const defs = NODE_FIELDS.TSTypeParameter;\n validate(defs.constraint, node, \"constraint\", constraint, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction NumberLiteral(value) {\n deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n return numericLiteral(value);\n}\nfunction RegexLiteral(pattern, flags = \"\") {\n deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n return regExpLiteral(pattern, flags);\n}\nfunction RestProperty(argument) {\n deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n return restElement(argument);\n}\nfunction SpreadProperty(argument) {\n deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n return spreadElement(argument);\n}\n\nconst b = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n anyTypeAnnotation,\n argumentPlaceholder,\n arrayExpression,\n arrayPattern,\n arrayTypeAnnotation,\n arrowFunctionExpression,\n assignmentExpression,\n assignmentPattern,\n awaitExpression,\n bigIntLiteral,\n bigIntLiteralTypeAnnotation,\n binaryExpression,\n bindExpression,\n blockStatement,\n booleanLiteral,\n booleanLiteralTypeAnnotation,\n booleanTypeAnnotation,\n breakStatement,\n callExpression,\n catchClause,\n classAccessorProperty,\n classBody,\n classDeclaration,\n classExpression,\n classImplements,\n classMethod,\n classPrivateMethod,\n classPrivateProperty,\n classProperty,\n conditionalExpression,\n continueStatement,\n debuggerStatement,\n declareClass,\n declareExportAllDeclaration,\n declareExportDeclaration,\n declareFunction,\n declareInterface,\n declareModule,\n declareModuleExports,\n declareOpaqueType,\n declareTypeAlias,\n declareVariable,\n declaredPredicate,\n decorator,\n directive,\n directiveLiteral,\n doExpression,\n doWhileStatement,\n emptyStatement,\n emptyTypeAnnotation,\n enumBooleanBody,\n enumBooleanMember,\n enumDeclaration,\n enumDefaultedMember,\n enumNumberBody,\n enumNumberMember,\n enumStringBody,\n enumStringMember,\n enumSymbolBody,\n existsTypeAnnotation,\n exportAllDeclaration,\n exportDefaultDeclaration,\n exportDefaultSpecifier,\n exportNamedDeclaration,\n exportNamespaceSpecifier,\n exportSpecifier,\n expressionStatement,\n file,\n forInStatement,\n forOfStatement,\n forStatement,\n functionDeclaration,\n functionExpression,\n functionTypeAnnotation,\n functionTypeParam,\n genericTypeAnnotation,\n identifier,\n ifStatement,\n import: _import,\n importAttribute,\n importDeclaration,\n importDefaultSpecifier,\n importExpression,\n importNamespaceSpecifier,\n importSpecifier,\n indexedAccessType,\n inferredPredicate,\n interfaceDeclaration,\n interfaceExtends,\n interfaceTypeAnnotation,\n interpreterDirective,\n intersectionTypeAnnotation,\n jsxAttribute,\n jsxClosingElement,\n jsxClosingFragment,\n jsxElement,\n jsxEmptyExpression,\n jsxExpressionContainer,\n jsxFragment,\n jsxIdentifier,\n jsxMemberExpression,\n jsxNamespacedName,\n jsxOpeningElement,\n jsxOpeningFragment,\n jsxSpreadAttribute,\n jsxSpreadChild,\n jsxText,\n labeledStatement,\n logicalExpression,\n memberExpression,\n metaProperty,\n mixedTypeAnnotation,\n moduleExpression,\n newExpression,\n nullLiteral,\n nullLiteralTypeAnnotation,\n nullableTypeAnnotation,\n numberLiteral: NumberLiteral,\n numberLiteralTypeAnnotation,\n numberTypeAnnotation,\n numericLiteral,\n objectExpression,\n objectMethod,\n objectPattern,\n objectProperty,\n objectTypeAnnotation,\n objectTypeCallProperty,\n objectTypeIndexer,\n objectTypeInternalSlot,\n objectTypeProperty,\n objectTypeSpreadProperty,\n opaqueType,\n optionalCallExpression,\n optionalIndexedAccessType,\n optionalMemberExpression,\n parenthesizedExpression,\n placeholder,\n privateName,\n program,\n qualifiedTypeIdentifier,\n regExpLiteral,\n regexLiteral: RegexLiteral,\n restElement,\n restProperty: RestProperty,\n returnStatement,\n sequenceExpression,\n spreadElement,\n spreadProperty: SpreadProperty,\n staticBlock,\n stringLiteral,\n stringLiteralTypeAnnotation,\n stringTypeAnnotation,\n super: _super,\n switchCase,\n switchStatement,\n symbolTypeAnnotation,\n taggedTemplateExpression,\n templateElement,\n templateLiteral,\n thisExpression,\n thisTypeAnnotation,\n throwStatement,\n topicReference,\n tryStatement,\n tsAnyKeyword,\n tsArrayType,\n tsAsExpression,\n tsBigIntKeyword,\n tsBooleanKeyword,\n tsCallSignatureDeclaration,\n tsClassImplements,\n tsConditionalType,\n tsConstructSignatureDeclaration,\n tsConstructorType,\n tsDeclareFunction,\n tsDeclareMethod,\n tsEnumBody,\n tsEnumDeclaration,\n tsEnumMember,\n tsExportAssignment,\n tsExternalModuleReference,\n tsFunctionType,\n tsImportEqualsDeclaration,\n tsImportType,\n tsIndexSignature,\n tsIndexedAccessType,\n tsInferType,\n tsInstantiationExpression,\n tsInterfaceBody,\n tsInterfaceDeclaration,\n tsInterfaceHeritage,\n tsIntersectionType,\n tsIntrinsicKeyword,\n tsLiteralType,\n tsMappedType,\n tsMethodSignature,\n tsModuleBlock,\n tsModuleDeclaration,\n tsNamedTupleMember,\n tsNamespaceExportDeclaration,\n tsNeverKeyword,\n tsNonNullExpression,\n tsNullKeyword,\n tsNumberKeyword,\n tsObjectKeyword,\n tsOptionalType,\n tsParameterProperty,\n tsParenthesizedType,\n tsPropertySignature,\n tsQualifiedName,\n tsRestType,\n tsSatisfiesExpression,\n tsStringKeyword,\n tsSymbolKeyword,\n tsTemplateLiteralType,\n tsThisType,\n tsTupleType,\n tsTypeAliasDeclaration,\n tsTypeAnnotation,\n tsTypeAssertion,\n tsTypeLiteral,\n tsTypeOperator,\n tsTypeParameter,\n tsTypeParameterDeclaration,\n tsTypeParameterInstantiation,\n tsTypePredicate,\n tsTypeQuery,\n tsTypeReference,\n tsUndefinedKeyword,\n tsUnionType,\n tsUnknownKeyword,\n tsVoidKeyword,\n tupleTypeAnnotation,\n typeAlias,\n typeAnnotation,\n typeCastExpression,\n typeParameter,\n typeParameterDeclaration,\n typeParameterInstantiation,\n typeofTypeAnnotation,\n unaryExpression,\n unionTypeAnnotation,\n updateExpression,\n v8IntrinsicIdentifier,\n variableDeclaration,\n variableDeclarator,\n variance,\n voidPattern,\n voidTypeAnnotation,\n whileStatement,\n withStatement,\n yieldExpression\n}, Symbol.toStringTag, { value: 'Module' });\n\nfunction alias(lowercase) {\n return function () {\n deprecationWarning(lowercase.replace(/^(?:ts|jsx|[a-z])/, x => x.toUpperCase()), lowercase, \"Usage of builders starting with an uppercase letter such as \", \"uppercase builders\");\n return b[lowercase](...arguments);\n };\n}\nconst ArrayExpression = alias(\"arrayExpression\"),\n AssignmentExpression = alias(\"assignmentExpression\"),\n BinaryExpression = alias(\"binaryExpression\"),\n InterpreterDirective = alias(\"interpreterDirective\"),\n Directive = alias(\"directive\"),\n DirectiveLiteral = alias(\"directiveLiteral\"),\n BlockStatement = alias(\"blockStatement\"),\n BreakStatement = alias(\"breakStatement\"),\n CallExpression = alias(\"callExpression\"),\n CatchClause = alias(\"catchClause\"),\n ConditionalExpression = alias(\"conditionalExpression\"),\n ContinueStatement = alias(\"continueStatement\"),\n DebuggerStatement = alias(\"debuggerStatement\"),\n DoWhileStatement = alias(\"doWhileStatement\"),\n EmptyStatement = alias(\"emptyStatement\"),\n ExpressionStatement = alias(\"expressionStatement\"),\n File = alias(\"file\"),\n ForInStatement = alias(\"forInStatement\"),\n ForStatement = alias(\"forStatement\"),\n FunctionDeclaration = alias(\"functionDeclaration\"),\n FunctionExpression = alias(\"functionExpression\"),\n Identifier = alias(\"identifier\"),\n IfStatement = alias(\"ifStatement\"),\n LabeledStatement = alias(\"labeledStatement\"),\n StringLiteral = alias(\"stringLiteral\"),\n NumericLiteral = alias(\"numericLiteral\"),\n NullLiteral = alias(\"nullLiteral\"),\n BooleanLiteral = alias(\"booleanLiteral\"),\n RegExpLiteral = alias(\"regExpLiteral\"),\n LogicalExpression = alias(\"logicalExpression\"),\n MemberExpression = alias(\"memberExpression\"),\n NewExpression = alias(\"newExpression\"),\n Program = alias(\"program\"),\n ObjectExpression = alias(\"objectExpression\"),\n ObjectMethod = alias(\"objectMethod\"),\n ObjectProperty = alias(\"objectProperty\"),\n RestElement = alias(\"restElement\"),\n ReturnStatement = alias(\"returnStatement\"),\n SequenceExpression = alias(\"sequenceExpression\"),\n ParenthesizedExpression = alias(\"parenthesizedExpression\"),\n SwitchCase = alias(\"switchCase\"),\n SwitchStatement = alias(\"switchStatement\"),\n ThisExpression = alias(\"thisExpression\"),\n ThrowStatement = alias(\"throwStatement\"),\n TryStatement = alias(\"tryStatement\"),\n UnaryExpression = alias(\"unaryExpression\"),\n UpdateExpression = alias(\"updateExpression\"),\n VariableDeclaration = alias(\"variableDeclaration\"),\n VariableDeclarator = alias(\"variableDeclarator\"),\n WhileStatement = alias(\"whileStatement\"),\n WithStatement = alias(\"withStatement\"),\n AssignmentPattern = alias(\"assignmentPattern\"),\n ArrayPattern = alias(\"arrayPattern\"),\n ArrowFunctionExpression = alias(\"arrowFunctionExpression\"),\n ClassBody = alias(\"classBody\"),\n ClassExpression = alias(\"classExpression\"),\n ClassDeclaration = alias(\"classDeclaration\"),\n ExportAllDeclaration = alias(\"exportAllDeclaration\"),\n ExportDefaultDeclaration = alias(\"exportDefaultDeclaration\"),\n ExportNamedDeclaration = alias(\"exportNamedDeclaration\"),\n ExportSpecifier = alias(\"exportSpecifier\"),\n ForOfStatement = alias(\"forOfStatement\"),\n ImportDeclaration = alias(\"importDeclaration\"),\n ImportDefaultSpecifier = alias(\"importDefaultSpecifier\"),\n ImportNamespaceSpecifier = alias(\"importNamespaceSpecifier\"),\n ImportSpecifier = alias(\"importSpecifier\"),\n MetaProperty = alias(\"metaProperty\"),\n ClassMethod = alias(\"classMethod\"),\n ObjectPattern = alias(\"objectPattern\"),\n SpreadElement = alias(\"spreadElement\"),\n Super = alias(\"super\"),\n TaggedTemplateExpression = alias(\"taggedTemplateExpression\"),\n TemplateElement = alias(\"templateElement\"),\n TemplateLiteral = alias(\"templateLiteral\"),\n YieldExpression = alias(\"yieldExpression\"),\n AwaitExpression = alias(\"awaitExpression\"),\n ImportExpression = alias(\"importExpression\"),\n Import = alias(\"import\"),\n BigIntLiteral = alias(\"bigIntLiteral\"),\n ExportNamespaceSpecifier = alias(\"exportNamespaceSpecifier\"),\n OptionalMemberExpression = alias(\"optionalMemberExpression\"),\n OptionalCallExpression = alias(\"optionalCallExpression\"),\n ClassProperty = alias(\"classProperty\"),\n ClassPrivateProperty = alias(\"classPrivateProperty\"),\n ClassPrivateMethod = alias(\"classPrivateMethod\"),\n PrivateName = alias(\"privateName\"),\n StaticBlock = alias(\"staticBlock\"),\n ImportAttribute = alias(\"importAttribute\"),\n AnyTypeAnnotation = alias(\"anyTypeAnnotation\"),\n ArrayTypeAnnotation = alias(\"arrayTypeAnnotation\"),\n BooleanTypeAnnotation = alias(\"booleanTypeAnnotation\"),\n BooleanLiteralTypeAnnotation = alias(\"booleanLiteralTypeAnnotation\"),\n NullLiteralTypeAnnotation = alias(\"nullLiteralTypeAnnotation\"),\n ClassImplements = alias(\"classImplements\"),\n DeclareClass = alias(\"declareClass\"),\n DeclareFunction = alias(\"declareFunction\"),\n DeclareInterface = alias(\"declareInterface\"),\n DeclareModule = alias(\"declareModule\"),\n DeclareModuleExports = alias(\"declareModuleExports\"),\n DeclareTypeAlias = alias(\"declareTypeAlias\"),\n DeclareOpaqueType = alias(\"declareOpaqueType\"),\n DeclareVariable = alias(\"declareVariable\"),\n DeclareExportDeclaration = alias(\"declareExportDeclaration\"),\n DeclareExportAllDeclaration = alias(\"declareExportAllDeclaration\"),\n DeclaredPredicate = alias(\"declaredPredicate\"),\n ExistsTypeAnnotation = alias(\"existsTypeAnnotation\"),\n FunctionTypeAnnotation = alias(\"functionTypeAnnotation\"),\n FunctionTypeParam = alias(\"functionTypeParam\"),\n GenericTypeAnnotation = alias(\"genericTypeAnnotation\"),\n InferredPredicate = alias(\"inferredPredicate\"),\n InterfaceExtends = alias(\"interfaceExtends\"),\n InterfaceDeclaration = alias(\"interfaceDeclaration\"),\n InterfaceTypeAnnotation = alias(\"interfaceTypeAnnotation\"),\n IntersectionTypeAnnotation = alias(\"intersectionTypeAnnotation\"),\n MixedTypeAnnotation = alias(\"mixedTypeAnnotation\"),\n EmptyTypeAnnotation = alias(\"emptyTypeAnnotation\"),\n NullableTypeAnnotation = alias(\"nullableTypeAnnotation\"),\n NumberLiteralTypeAnnotation = alias(\"numberLiteralTypeAnnotation\"),\n BigIntLiteralTypeAnnotation = alias(\"bigIntLiteralTypeAnnotation\"),\n NumberTypeAnnotation = alias(\"numberTypeAnnotation\"),\n ObjectTypeAnnotation = alias(\"objectTypeAnnotation\"),\n ObjectTypeInternalSlot = alias(\"objectTypeInternalSlot\"),\n ObjectTypeCallProperty = alias(\"objectTypeCallProperty\"),\n ObjectTypeIndexer = alias(\"objectTypeIndexer\"),\n ObjectTypeProperty = alias(\"objectTypeProperty\"),\n ObjectTypeSpreadProperty = alias(\"objectTypeSpreadProperty\"),\n OpaqueType = alias(\"opaqueType\"),\n QualifiedTypeIdentifier = alias(\"qualifiedTypeIdentifier\"),\n StringLiteralTypeAnnotation = alias(\"stringLiteralTypeAnnotation\"),\n StringTypeAnnotation = alias(\"stringTypeAnnotation\"),\n SymbolTypeAnnotation = alias(\"symbolTypeAnnotation\"),\n ThisTypeAnnotation = alias(\"thisTypeAnnotation\"),\n TupleTypeAnnotation = alias(\"tupleTypeAnnotation\"),\n TypeofTypeAnnotation = alias(\"typeofTypeAnnotation\"),\n TypeAlias = alias(\"typeAlias\"),\n TypeAnnotation = alias(\"typeAnnotation\"),\n TypeCastExpression = alias(\"typeCastExpression\"),\n TypeParameter = alias(\"typeParameter\"),\n TypeParameterDeclaration = alias(\"typeParameterDeclaration\"),\n TypeParameterInstantiation = alias(\"typeParameterInstantiation\"),\n UnionTypeAnnotation = alias(\"unionTypeAnnotation\"),\n Variance = alias(\"variance\"),\n VoidTypeAnnotation = alias(\"voidTypeAnnotation\"),\n EnumDeclaration = alias(\"enumDeclaration\"),\n EnumBooleanBody = alias(\"enumBooleanBody\"),\n EnumNumberBody = alias(\"enumNumberBody\"),\n EnumStringBody = alias(\"enumStringBody\"),\n EnumSymbolBody = alias(\"enumSymbolBody\"),\n EnumBooleanMember = alias(\"enumBooleanMember\"),\n EnumNumberMember = alias(\"enumNumberMember\"),\n EnumStringMember = alias(\"enumStringMember\"),\n EnumDefaultedMember = alias(\"enumDefaultedMember\"),\n IndexedAccessType = alias(\"indexedAccessType\"),\n OptionalIndexedAccessType = alias(\"optionalIndexedAccessType\"),\n JSXAttribute = alias(\"jsxAttribute\"),\n JSXClosingElement = alias(\"jsxClosingElement\"),\n JSXElement = alias(\"jsxElement\"),\n JSXEmptyExpression = alias(\"jsxEmptyExpression\"),\n JSXExpressionContainer = alias(\"jsxExpressionContainer\"),\n JSXSpreadChild = alias(\"jsxSpreadChild\"),\n JSXIdentifier = alias(\"jsxIdentifier\"),\n JSXMemberExpression = alias(\"jsxMemberExpression\"),\n JSXNamespacedName = alias(\"jsxNamespacedName\"),\n JSXOpeningElement = alias(\"jsxOpeningElement\"),\n JSXSpreadAttribute = alias(\"jsxSpreadAttribute\"),\n JSXText = alias(\"jsxText\"),\n JSXFragment = alias(\"jsxFragment\"),\n JSXOpeningFragment = alias(\"jsxOpeningFragment\"),\n JSXClosingFragment = alias(\"jsxClosingFragment\"),\n Placeholder = alias(\"placeholder\"),\n V8IntrinsicIdentifier = alias(\"v8IntrinsicIdentifier\"),\n ArgumentPlaceholder = alias(\"argumentPlaceholder\"),\n BindExpression = alias(\"bindExpression\"),\n ClassAccessorProperty = alias(\"classAccessorProperty\"),\n Decorator = alias(\"decorator\"),\n DoExpression = alias(\"doExpression\"),\n ExportDefaultSpecifier = alias(\"exportDefaultSpecifier\"),\n ModuleExpression = alias(\"moduleExpression\"),\n TopicReference = alias(\"topicReference\"),\n VoidPattern = alias(\"voidPattern\"),\n TSParameterProperty = alias(\"tsParameterProperty\"),\n TSDeclareFunction = alias(\"tsDeclareFunction\"),\n TSDeclareMethod = alias(\"tsDeclareMethod\"),\n TSQualifiedName = alias(\"tsQualifiedName\"),\n TSCallSignatureDeclaration = alias(\"tsCallSignatureDeclaration\"),\n TSConstructSignatureDeclaration = alias(\"tsConstructSignatureDeclaration\"),\n TSPropertySignature = alias(\"tsPropertySignature\"),\n TSMethodSignature = alias(\"tsMethodSignature\"),\n TSIndexSignature = alias(\"tsIndexSignature\"),\n TSAnyKeyword = alias(\"tsAnyKeyword\"),\n TSBooleanKeyword = alias(\"tsBooleanKeyword\"),\n TSBigIntKeyword = alias(\"tsBigIntKeyword\"),\n TSIntrinsicKeyword = alias(\"tsIntrinsicKeyword\"),\n TSNeverKeyword = alias(\"tsNeverKeyword\"),\n TSNullKeyword = alias(\"tsNullKeyword\"),\n TSNumberKeyword = alias(\"tsNumberKeyword\"),\n TSObjectKeyword = alias(\"tsObjectKeyword\"),\n TSStringKeyword = alias(\"tsStringKeyword\"),\n TSSymbolKeyword = alias(\"tsSymbolKeyword\"),\n TSUndefinedKeyword = alias(\"tsUndefinedKeyword\"),\n TSUnknownKeyword = alias(\"tsUnknownKeyword\"),\n TSVoidKeyword = alias(\"tsVoidKeyword\"),\n TSThisType = alias(\"tsThisType\"),\n TSFunctionType = alias(\"tsFunctionType\"),\n TSConstructorType = alias(\"tsConstructorType\"),\n TSTypeReference = alias(\"tsTypeReference\"),\n TSTypePredicate = alias(\"tsTypePredicate\"),\n TSTypeQuery = alias(\"tsTypeQuery\"),\n TSTypeLiteral = alias(\"tsTypeLiteral\"),\n TSArrayType = alias(\"tsArrayType\"),\n TSTupleType = alias(\"tsTupleType\"),\n TSOptionalType = alias(\"tsOptionalType\"),\n TSRestType = alias(\"tsRestType\"),\n TSNamedTupleMember = alias(\"tsNamedTupleMember\"),\n TSUnionType = alias(\"tsUnionType\"),\n TSIntersectionType = alias(\"tsIntersectionType\"),\n TSConditionalType = alias(\"tsConditionalType\"),\n TSInferType = alias(\"tsInferType\"),\n TSParenthesizedType = alias(\"tsParenthesizedType\"),\n TSTypeOperator = alias(\"tsTypeOperator\"),\n TSIndexedAccessType = alias(\"tsIndexedAccessType\"),\n TSMappedType = alias(\"tsMappedType\"),\n TSTemplateLiteralType = alias(\"tsTemplateLiteralType\"),\n TSLiteralType = alias(\"tsLiteralType\"),\n TSClassImplements = alias(\"tsClassImplements\"),\n TSInterfaceHeritage = alias(\"tsInterfaceHeritage\"),\n TSInterfaceDeclaration = alias(\"tsInterfaceDeclaration\"),\n TSInterfaceBody = alias(\"tsInterfaceBody\"),\n TSTypeAliasDeclaration = alias(\"tsTypeAliasDeclaration\"),\n TSInstantiationExpression = alias(\"tsInstantiationExpression\"),\n TSAsExpression = alias(\"tsAsExpression\"),\n TSSatisfiesExpression = alias(\"tsSatisfiesExpression\"),\n TSTypeAssertion = alias(\"tsTypeAssertion\"),\n TSEnumBody = alias(\"tsEnumBody\"),\n TSEnumDeclaration = alias(\"tsEnumDeclaration\"),\n TSEnumMember = alias(\"tsEnumMember\"),\n TSModuleDeclaration = alias(\"tsModuleDeclaration\"),\n TSModuleBlock = alias(\"tsModuleBlock\"),\n TSImportType = alias(\"tsImportType\"),\n TSImportEqualsDeclaration = alias(\"tsImportEqualsDeclaration\"),\n TSExternalModuleReference = alias(\"tsExternalModuleReference\"),\n TSNonNullExpression = alias(\"tsNonNullExpression\"),\n TSExportAssignment = alias(\"tsExportAssignment\"),\n TSNamespaceExportDeclaration = alias(\"tsNamespaceExportDeclaration\"),\n TSTypeAnnotation = alias(\"tsTypeAnnotation\"),\n TSTypeParameterInstantiation = alias(\"tsTypeParameterInstantiation\"),\n TSTypeParameterDeclaration = alias(\"tsTypeParameterDeclaration\"),\n TSTypeParameter = alias(\"tsTypeParameter\");\n\nfunction cleanJSXElementLiteralChild(child, args) {\n const lines = child.value.split(/\\r\\n|\\n|\\r/);\n let lastNonEmptyLine = 0;\n for (let i = 0; i < lines.length; i++) {\n if (/[^ \\t]/.exec(lines[i])) {\n lastNonEmptyLine = i;\n }\n }\n let str = \"\";\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const isFirstLine = i === 0;\n const isLastLine = i === lines.length - 1;\n const isLastNonEmptyLine = i === lastNonEmptyLine;\n let trimmedLine = line.replace(/\\t/g, \" \");\n if (!isFirstLine) {\n trimmedLine = trimmedLine.replace(/^ +/, \"\");\n }\n if (!isLastLine) {\n trimmedLine = trimmedLine.replace(/ +$/, \"\");\n }\n if (trimmedLine) {\n if (!isLastNonEmptyLine) {\n trimmedLine += \" \";\n }\n str += trimmedLine;\n }\n }\n if (str) args.push(inherits(stringLiteral(str), child));\n}\n\nfunction buildChildren(node) {\n const elements = [];\n for (let i = 0; i < node.children.length; i++) {\n let child = node.children[i];\n if (isJSXText(child)) {\n cleanJSXElementLiteralChild(child, elements);\n continue;\n }\n if (isJSXExpressionContainer(child)) child = child.expression;\n if (isJSXEmptyExpression(child)) continue;\n elements.push(child);\n }\n return elements;\n}\n\nfunction isNode(node) {\n return !!(node && VISITOR_KEYS[node.type]);\n}\n\nfunction assertNode(node) {\n if (!isNode(node)) {\n const type = node?.type ?? JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n\nfunction assert(type, node, opts) {\n if (!is(type, node, opts)) {\n throw new Error(`Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` + `but instead got \"${node.type}\".`);\n }\n}\nfunction assertArrayExpression(node, opts) {\n assert(\"ArrayExpression\", node, opts);\n}\nfunction assertAssignmentExpression(node, opts) {\n assert(\"AssignmentExpression\", node, opts);\n}\nfunction assertBinaryExpression(node, opts) {\n assert(\"BinaryExpression\", node, opts);\n}\nfunction assertInterpreterDirective(node, opts) {\n assert(\"InterpreterDirective\", node, opts);\n}\nfunction assertDirective(node, opts) {\n assert(\"Directive\", node, opts);\n}\nfunction assertDirectiveLiteral(node, opts) {\n assert(\"DirectiveLiteral\", node, opts);\n}\nfunction assertBlockStatement(node, opts) {\n assert(\"BlockStatement\", node, opts);\n}\nfunction assertBreakStatement(node, opts) {\n assert(\"BreakStatement\", node, opts);\n}\nfunction assertCallExpression(node, opts) {\n assert(\"CallExpression\", node, opts);\n}\nfunction assertCatchClause(node, opts) {\n assert(\"CatchClause\", node, opts);\n}\nfunction assertConditionalExpression(node, opts) {\n assert(\"ConditionalExpression\", node, opts);\n}\nfunction assertContinueStatement(node, opts) {\n assert(\"ContinueStatement\", node, opts);\n}\nfunction assertDebuggerStatement(node, opts) {\n assert(\"DebuggerStatement\", node, opts);\n}\nfunction assertDoWhileStatement(node, opts) {\n assert(\"DoWhileStatement\", node, opts);\n}\nfunction assertEmptyStatement(node, opts) {\n assert(\"EmptyStatement\", node, opts);\n}\nfunction assertExpressionStatement(node, opts) {\n assert(\"ExpressionStatement\", node, opts);\n}\nfunction assertFile(node, opts) {\n assert(\"File\", node, opts);\n}\nfunction assertForInStatement(node, opts) {\n assert(\"ForInStatement\", node, opts);\n}\nfunction assertForStatement(node, opts) {\n assert(\"ForStatement\", node, opts);\n}\nfunction assertFunctionDeclaration(node, opts) {\n assert(\"FunctionDeclaration\", node, opts);\n}\nfunction assertFunctionExpression(node, opts) {\n assert(\"FunctionExpression\", node, opts);\n}\nfunction assertIdentifier(node, opts) {\n assert(\"Identifier\", node, opts);\n}\nfunction assertIfStatement(node, opts) {\n assert(\"IfStatement\", node, opts);\n}\nfunction assertLabeledStatement(node, opts) {\n assert(\"LabeledStatement\", node, opts);\n}\nfunction assertStringLiteral(node, opts) {\n assert(\"StringLiteral\", node, opts);\n}\nfunction assertNumericLiteral(node, opts) {\n assert(\"NumericLiteral\", node, opts);\n}\nfunction assertNullLiteral(node, opts) {\n assert(\"NullLiteral\", node, opts);\n}\nfunction assertBooleanLiteral(node, opts) {\n assert(\"BooleanLiteral\", node, opts);\n}\nfunction assertRegExpLiteral(node, opts) {\n assert(\"RegExpLiteral\", node, opts);\n}\nfunction assertLogicalExpression(node, opts) {\n assert(\"LogicalExpression\", node, opts);\n}\nfunction assertMemberExpression(node, opts) {\n assert(\"MemberExpression\", node, opts);\n}\nfunction assertNewExpression(node, opts) {\n assert(\"NewExpression\", node, opts);\n}\nfunction assertProgram(node, opts) {\n assert(\"Program\", node, opts);\n}\nfunction assertObjectExpression(node, opts) {\n assert(\"ObjectExpression\", node, opts);\n}\nfunction assertObjectMethod(node, opts) {\n assert(\"ObjectMethod\", node, opts);\n}\nfunction assertObjectProperty(node, opts) {\n assert(\"ObjectProperty\", node, opts);\n}\nfunction assertRestElement(node, opts) {\n assert(\"RestElement\", node, opts);\n}\nfunction assertReturnStatement(node, opts) {\n assert(\"ReturnStatement\", node, opts);\n}\nfunction assertSequenceExpression(node, opts) {\n assert(\"SequenceExpression\", node, opts);\n}\nfunction assertParenthesizedExpression(node, opts) {\n assert(\"ParenthesizedExpression\", node, opts);\n}\nfunction assertSwitchCase(node, opts) {\n assert(\"SwitchCase\", node, opts);\n}\nfunction assertSwitchStatement(node, opts) {\n assert(\"SwitchStatement\", node, opts);\n}\nfunction assertThisExpression(node, opts) {\n assert(\"ThisExpression\", node, opts);\n}\nfunction assertThrowStatement(node, opts) {\n assert(\"ThrowStatement\", node, opts);\n}\nfunction assertTryStatement(node, opts) {\n assert(\"TryStatement\", node, opts);\n}\nfunction assertUnaryExpression(node, opts) {\n assert(\"UnaryExpression\", node, opts);\n}\nfunction assertUpdateExpression(node, opts) {\n assert(\"UpdateExpression\", node, opts);\n}\nfunction assertVariableDeclaration(node, opts) {\n assert(\"VariableDeclaration\", node, opts);\n}\nfunction assertVariableDeclarator(node, opts) {\n assert(\"VariableDeclarator\", node, opts);\n}\nfunction assertWhileStatement(node, opts) {\n assert(\"WhileStatement\", node, opts);\n}\nfunction assertWithStatement(node, opts) {\n assert(\"WithStatement\", node, opts);\n}\nfunction assertAssignmentPattern(node, opts) {\n assert(\"AssignmentPattern\", node, opts);\n}\nfunction assertArrayPattern(node, opts) {\n assert(\"ArrayPattern\", node, opts);\n}\nfunction assertArrowFunctionExpression(node, opts) {\n assert(\"ArrowFunctionExpression\", node, opts);\n}\nfunction assertClassBody(node, opts) {\n assert(\"ClassBody\", node, opts);\n}\nfunction assertClassExpression(node, opts) {\n assert(\"ClassExpression\", node, opts);\n}\nfunction assertClassDeclaration(node, opts) {\n assert(\"ClassDeclaration\", node, opts);\n}\nfunction assertExportAllDeclaration(node, opts) {\n assert(\"ExportAllDeclaration\", node, opts);\n}\nfunction assertExportDefaultDeclaration(node, opts) {\n assert(\"ExportDefaultDeclaration\", node, opts);\n}\nfunction assertExportNamedDeclaration(node, opts) {\n assert(\"ExportNamedDeclaration\", node, opts);\n}\nfunction assertExportSpecifier(node, opts) {\n assert(\"ExportSpecifier\", node, opts);\n}\nfunction assertForOfStatement(node, opts) {\n assert(\"ForOfStatement\", node, opts);\n}\nfunction assertImportDeclaration(node, opts) {\n assert(\"ImportDeclaration\", node, opts);\n}\nfunction assertImportDefaultSpecifier(node, opts) {\n assert(\"ImportDefaultSpecifier\", node, opts);\n}\nfunction assertImportNamespaceSpecifier(node, opts) {\n assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nfunction assertImportSpecifier(node, opts) {\n assert(\"ImportSpecifier\", node, opts);\n}\nfunction assertMetaProperty(node, opts) {\n assert(\"MetaProperty\", node, opts);\n}\nfunction assertClassMethod(node, opts) {\n assert(\"ClassMethod\", node, opts);\n}\nfunction assertObjectPattern(node, opts) {\n assert(\"ObjectPattern\", node, opts);\n}\nfunction assertSpreadElement(node, opts) {\n assert(\"SpreadElement\", node, opts);\n}\nfunction assertSuper(node, opts) {\n assert(\"Super\", node, opts);\n}\nfunction assertTaggedTemplateExpression(node, opts) {\n assert(\"TaggedTemplateExpression\", node, opts);\n}\nfunction assertTemplateElement(node, opts) {\n assert(\"TemplateElement\", node, opts);\n}\nfunction assertTemplateLiteral(node, opts) {\n assert(\"TemplateLiteral\", node, opts);\n}\nfunction assertYieldExpression(node, opts) {\n assert(\"YieldExpression\", node, opts);\n}\nfunction assertAwaitExpression(node, opts) {\n assert(\"AwaitExpression\", node, opts);\n}\nfunction assertImportExpression(node, opts) {\n assert(\"ImportExpression\", node, opts);\n}\nfunction assertImport(node, opts) {\n assert(\"Import\", node, opts);\n}\nfunction assertBigIntLiteral(node, opts) {\n assert(\"BigIntLiteral\", node, opts);\n}\nfunction assertExportNamespaceSpecifier(node, opts) {\n assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nfunction assertOptionalMemberExpression(node, opts) {\n assert(\"OptionalMemberExpression\", node, opts);\n}\nfunction assertOptionalCallExpression(node, opts) {\n assert(\"OptionalCallExpression\", node, opts);\n}\nfunction assertClassProperty(node, opts) {\n assert(\"ClassProperty\", node, opts);\n}\nfunction assertClassPrivateProperty(node, opts) {\n assert(\"ClassPrivateProperty\", node, opts);\n}\nfunction assertClassPrivateMethod(node, opts) {\n assert(\"ClassPrivateMethod\", node, opts);\n}\nfunction assertPrivateName(node, opts) {\n assert(\"PrivateName\", node, opts);\n}\nfunction assertStaticBlock(node, opts) {\n assert(\"StaticBlock\", node, opts);\n}\nfunction assertImportAttribute(node, opts) {\n assert(\"ImportAttribute\", node, opts);\n}\nfunction assertAnyTypeAnnotation(node, opts) {\n assert(\"AnyTypeAnnotation\", node, opts);\n}\nfunction assertArrayTypeAnnotation(node, opts) {\n assert(\"ArrayTypeAnnotation\", node, opts);\n}\nfunction assertBooleanTypeAnnotation(node, opts) {\n assert(\"BooleanTypeAnnotation\", node, opts);\n}\nfunction assertBooleanLiteralTypeAnnotation(node, opts) {\n assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nfunction assertNullLiteralTypeAnnotation(node, opts) {\n assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nfunction assertClassImplements(node, opts) {\n assert(\"ClassImplements\", node, opts);\n}\nfunction assertDeclareClass(node, opts) {\n assert(\"DeclareClass\", node, opts);\n}\nfunction assertDeclareFunction(node, opts) {\n assert(\"DeclareFunction\", node, opts);\n}\nfunction assertDeclareInterface(node, opts) {\n assert(\"DeclareInterface\", node, opts);\n}\nfunction assertDeclareModule(node, opts) {\n assert(\"DeclareModule\", node, opts);\n}\nfunction assertDeclareModuleExports(node, opts) {\n assert(\"DeclareModuleExports\", node, opts);\n}\nfunction assertDeclareTypeAlias(node, opts) {\n assert(\"DeclareTypeAlias\", node, opts);\n}\nfunction assertDeclareOpaqueType(node, opts) {\n assert(\"DeclareOpaqueType\", node, opts);\n}\nfunction assertDeclareVariable(node, opts) {\n assert(\"DeclareVariable\", node, opts);\n}\nfunction assertDeclareExportDeclaration(node, opts) {\n assert(\"DeclareExportDeclaration\", node, opts);\n}\nfunction assertDeclareExportAllDeclaration(node, opts) {\n assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nfunction assertDeclaredPredicate(node, opts) {\n assert(\"DeclaredPredicate\", node, opts);\n}\nfunction assertExistsTypeAnnotation(node, opts) {\n assert(\"ExistsTypeAnnotation\", node, opts);\n}\nfunction assertFunctionTypeAnnotation(node, opts) {\n assert(\"FunctionTypeAnnotation\", node, opts);\n}\nfunction assertFunctionTypeParam(node, opts) {\n assert(\"FunctionTypeParam\", node, opts);\n}\nfunction assertGenericTypeAnnotation(node, opts) {\n assert(\"GenericTypeAnnotation\", node, opts);\n}\nfunction assertInferredPredicate(node, opts) {\n assert(\"InferredPredicate\", node, opts);\n}\nfunction assertInterfaceExtends(node, opts) {\n assert(\"InterfaceExtends\", node, opts);\n}\nfunction assertInterfaceDeclaration(node, opts) {\n assert(\"InterfaceDeclaration\", node, opts);\n}\nfunction assertInterfaceTypeAnnotation(node, opts) {\n assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nfunction assertIntersectionTypeAnnotation(node, opts) {\n assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nfunction assertMixedTypeAnnotation(node, opts) {\n assert(\"MixedTypeAnnotation\", node, opts);\n}\nfunction assertEmptyTypeAnnotation(node, opts) {\n assert(\"EmptyTypeAnnotation\", node, opts);\n}\nfunction assertNullableTypeAnnotation(node, opts) {\n assert(\"NullableTypeAnnotation\", node, opts);\n}\nfunction assertNumberLiteralTypeAnnotation(node, opts) {\n assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nfunction assertBigIntLiteralTypeAnnotation(node, opts) {\n assert(\"BigIntLiteralTypeAnnotation\", node, opts);\n}\nfunction assertNumberTypeAnnotation(node, opts) {\n assert(\"NumberTypeAnnotation\", node, opts);\n}\nfunction assertObjectTypeAnnotation(node, opts) {\n assert(\"ObjectTypeAnnotation\", node, opts);\n}\nfunction assertObjectTypeInternalSlot(node, opts) {\n assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nfunction assertObjectTypeCallProperty(node, opts) {\n assert(\"ObjectTypeCallProperty\", node, opts);\n}\nfunction assertObjectTypeIndexer(node, opts) {\n assert(\"ObjectTypeIndexer\", node, opts);\n}\nfunction assertObjectTypeProperty(node, opts) {\n assert(\"ObjectTypeProperty\", node, opts);\n}\nfunction assertObjectTypeSpreadProperty(node, opts) {\n assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nfunction assertOpaqueType(node, opts) {\n assert(\"OpaqueType\", node, opts);\n}\nfunction assertQualifiedTypeIdentifier(node, opts) {\n assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nfunction assertStringLiteralTypeAnnotation(node, opts) {\n assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nfunction assertStringTypeAnnotation(node, opts) {\n assert(\"StringTypeAnnotation\", node, opts);\n}\nfunction assertSymbolTypeAnnotation(node, opts) {\n assert(\"SymbolTypeAnnotation\", node, opts);\n}\nfunction assertThisTypeAnnotation(node, opts) {\n assert(\"ThisTypeAnnotation\", node, opts);\n}\nfunction assertTupleTypeAnnotation(node, opts) {\n assert(\"TupleTypeAnnotation\", node, opts);\n}\nfunction assertTypeofTypeAnnotation(node, opts) {\n assert(\"TypeofTypeAnnotation\", node, opts);\n}\nfunction assertTypeAlias(node, opts) {\n assert(\"TypeAlias\", node, opts);\n}\nfunction assertTypeAnnotation(node, opts) {\n assert(\"TypeAnnotation\", node, opts);\n}\nfunction assertTypeCastExpression(node, opts) {\n assert(\"TypeCastExpression\", node, opts);\n}\nfunction assertTypeParameter(node, opts) {\n assert(\"TypeParameter\", node, opts);\n}\nfunction assertTypeParameterDeclaration(node, opts) {\n assert(\"TypeParameterDeclaration\", node, opts);\n}\nfunction assertTypeParameterInstantiation(node, opts) {\n assert(\"TypeParameterInstantiation\", node, opts);\n}\nfunction assertUnionTypeAnnotation(node, opts) {\n assert(\"UnionTypeAnnotation\", node, opts);\n}\nfunction assertVariance(node, opts) {\n assert(\"Variance\", node, opts);\n}\nfunction assertVoidTypeAnnotation(node, opts) {\n assert(\"VoidTypeAnnotation\", node, opts);\n}\nfunction assertEnumDeclaration(node, opts) {\n assert(\"EnumDeclaration\", node, opts);\n}\nfunction assertEnumBooleanBody(node, opts) {\n assert(\"EnumBooleanBody\", node, opts);\n}\nfunction assertEnumNumberBody(node, opts) {\n assert(\"EnumNumberBody\", node, opts);\n}\nfunction assertEnumStringBody(node, opts) {\n assert(\"EnumStringBody\", node, opts);\n}\nfunction assertEnumSymbolBody(node, opts) {\n assert(\"EnumSymbolBody\", node, opts);\n}\nfunction assertEnumBooleanMember(node, opts) {\n assert(\"EnumBooleanMember\", node, opts);\n}\nfunction assertEnumNumberMember(node, opts) {\n assert(\"EnumNumberMember\", node, opts);\n}\nfunction assertEnumStringMember(node, opts) {\n assert(\"EnumStringMember\", node, opts);\n}\nfunction assertEnumDefaultedMember(node, opts) {\n assert(\"EnumDefaultedMember\", node, opts);\n}\nfunction assertIndexedAccessType(node, opts) {\n assert(\"IndexedAccessType\", node, opts);\n}\nfunction assertOptionalIndexedAccessType(node, opts) {\n assert(\"OptionalIndexedAccessType\", node, opts);\n}\nfunction assertJSXAttribute(node, opts) {\n assert(\"JSXAttribute\", node, opts);\n}\nfunction assertJSXClosingElement(node, opts) {\n assert(\"JSXClosingElement\", node, opts);\n}\nfunction assertJSXElement(node, opts) {\n assert(\"JSXElement\", node, opts);\n}\nfunction assertJSXEmptyExpression(node, opts) {\n assert(\"JSXEmptyExpression\", node, opts);\n}\nfunction assertJSXExpressionContainer(node, opts) {\n assert(\"JSXExpressionContainer\", node, opts);\n}\nfunction assertJSXSpreadChild(node, opts) {\n assert(\"JSXSpreadChild\", node, opts);\n}\nfunction assertJSXIdentifier(node, opts) {\n assert(\"JSXIdentifier\", node, opts);\n}\nfunction assertJSXMemberExpression(node, opts) {\n assert(\"JSXMemberExpression\", node, opts);\n}\nfunction assertJSXNamespacedName(node, opts) {\n assert(\"JSXNamespacedName\", node, opts);\n}\nfunction assertJSXOpeningElement(node, opts) {\n assert(\"JSXOpeningElement\", node, opts);\n}\nfunction assertJSXSpreadAttribute(node, opts) {\n assert(\"JSXSpreadAttribute\", node, opts);\n}\nfunction assertJSXText(node, opts) {\n assert(\"JSXText\", node, opts);\n}\nfunction assertJSXFragment(node, opts) {\n assert(\"JSXFragment\", node, opts);\n}\nfunction assertJSXOpeningFragment(node, opts) {\n assert(\"JSXOpeningFragment\", node, opts);\n}\nfunction assertJSXClosingFragment(node, opts) {\n assert(\"JSXClosingFragment\", node, opts);\n}\nfunction assertPlaceholder(node, opts) {\n assert(\"Placeholder\", node, opts);\n}\nfunction assertV8IntrinsicIdentifier(node, opts) {\n assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nfunction assertArgumentPlaceholder(node, opts) {\n assert(\"ArgumentPlaceholder\", node, opts);\n}\nfunction assertBindExpression(node, opts) {\n assert(\"BindExpression\", node, opts);\n}\nfunction assertClassAccessorProperty(node, opts) {\n assert(\"ClassAccessorProperty\", node, opts);\n}\nfunction assertDecorator(node, opts) {\n assert(\"Decorator\", node, opts);\n}\nfunction assertDoExpression(node, opts) {\n assert(\"DoExpression\", node, opts);\n}\nfunction assertExportDefaultSpecifier(node, opts) {\n assert(\"ExportDefaultSpecifier\", node, opts);\n}\nfunction assertModuleExpression(node, opts) {\n assert(\"ModuleExpression\", node, opts);\n}\nfunction assertTopicReference(node, opts) {\n assert(\"TopicReference\", node, opts);\n}\nfunction assertVoidPattern(node, opts) {\n assert(\"VoidPattern\", node, opts);\n}\nfunction assertTSParameterProperty(node, opts) {\n assert(\"TSParameterProperty\", node, opts);\n}\nfunction assertTSDeclareFunction(node, opts) {\n assert(\"TSDeclareFunction\", node, opts);\n}\nfunction assertTSDeclareMethod(node, opts) {\n assert(\"TSDeclareMethod\", node, opts);\n}\nfunction assertTSQualifiedName(node, opts) {\n assert(\"TSQualifiedName\", node, opts);\n}\nfunction assertTSCallSignatureDeclaration(node, opts) {\n assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nfunction assertTSConstructSignatureDeclaration(node, opts) {\n assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nfunction assertTSPropertySignature(node, opts) {\n assert(\"TSPropertySignature\", node, opts);\n}\nfunction assertTSMethodSignature(node, opts) {\n assert(\"TSMethodSignature\", node, opts);\n}\nfunction assertTSIndexSignature(node, opts) {\n assert(\"TSIndexSignature\", node, opts);\n}\nfunction assertTSAnyKeyword(node, opts) {\n assert(\"TSAnyKeyword\", node, opts);\n}\nfunction assertTSBooleanKeyword(node, opts) {\n assert(\"TSBooleanKeyword\", node, opts);\n}\nfunction assertTSBigIntKeyword(node, opts) {\n assert(\"TSBigIntKeyword\", node, opts);\n}\nfunction assertTSIntrinsicKeyword(node, opts) {\n assert(\"TSIntrinsicKeyword\", node, opts);\n}\nfunction assertTSNeverKeyword(node, opts) {\n assert(\"TSNeverKeyword\", node, opts);\n}\nfunction assertTSNullKeyword(node, opts) {\n assert(\"TSNullKeyword\", node, opts);\n}\nfunction assertTSNumberKeyword(node, opts) {\n assert(\"TSNumberKeyword\", node, opts);\n}\nfunction assertTSObjectKeyword(node, opts) {\n assert(\"TSObjectKeyword\", node, opts);\n}\nfunction assertTSStringKeyword(node, opts) {\n assert(\"TSStringKeyword\", node, opts);\n}\nfunction assertTSSymbolKeyword(node, opts) {\n assert(\"TSSymbolKeyword\", node, opts);\n}\nfunction assertTSUndefinedKeyword(node, opts) {\n assert(\"TSUndefinedKeyword\", node, opts);\n}\nfunction assertTSUnknownKeyword(node, opts) {\n assert(\"TSUnknownKeyword\", node, opts);\n}\nfunction assertTSVoidKeyword(node, opts) {\n assert(\"TSVoidKeyword\", node, opts);\n}\nfunction assertTSThisType(node, opts) {\n assert(\"TSThisType\", node, opts);\n}\nfunction assertTSFunctionType(node, opts) {\n assert(\"TSFunctionType\", node, opts);\n}\nfunction assertTSConstructorType(node, opts) {\n assert(\"TSConstructorType\", node, opts);\n}\nfunction assertTSTypeReference(node, opts) {\n assert(\"TSTypeReference\", node, opts);\n}\nfunction assertTSTypePredicate(node, opts) {\n assert(\"TSTypePredicate\", node, opts);\n}\nfunction assertTSTypeQuery(node, opts) {\n assert(\"TSTypeQuery\", node, opts);\n}\nfunction assertTSTypeLiteral(node, opts) {\n assert(\"TSTypeLiteral\", node, opts);\n}\nfunction assertTSArrayType(node, opts) {\n assert(\"TSArrayType\", node, opts);\n}\nfunction assertTSTupleType(node, opts) {\n assert(\"TSTupleType\", node, opts);\n}\nfunction assertTSOptionalType(node, opts) {\n assert(\"TSOptionalType\", node, opts);\n}\nfunction assertTSRestType(node, opts) {\n assert(\"TSRestType\", node, opts);\n}\nfunction assertTSNamedTupleMember(node, opts) {\n assert(\"TSNamedTupleMember\", node, opts);\n}\nfunction assertTSUnionType(node, opts) {\n assert(\"TSUnionType\", node, opts);\n}\nfunction assertTSIntersectionType(node, opts) {\n assert(\"TSIntersectionType\", node, opts);\n}\nfunction assertTSConditionalType(node, opts) {\n assert(\"TSConditionalType\", node, opts);\n}\nfunction assertTSInferType(node, opts) {\n assert(\"TSInferType\", node, opts);\n}\nfunction assertTSParenthesizedType(node, opts) {\n assert(\"TSParenthesizedType\", node, opts);\n}\nfunction assertTSTypeOperator(node, opts) {\n assert(\"TSTypeOperator\", node, opts);\n}\nfunction assertTSIndexedAccessType(node, opts) {\n assert(\"TSIndexedAccessType\", node, opts);\n}\nfunction assertTSMappedType(node, opts) {\n assert(\"TSMappedType\", node, opts);\n}\nfunction assertTSTemplateLiteralType(node, opts) {\n assert(\"TSTemplateLiteralType\", node, opts);\n}\nfunction assertTSLiteralType(node, opts) {\n assert(\"TSLiteralType\", node, opts);\n}\nfunction assertTSClassImplements(node, opts) {\n assert(\"TSClassImplements\", node, opts);\n}\nfunction assertTSInterfaceHeritage(node, opts) {\n assert(\"TSInterfaceHeritage\", node, opts);\n}\nfunction assertTSInterfaceDeclaration(node, opts) {\n assert(\"TSInterfaceDeclaration\", node, opts);\n}\nfunction assertTSInterfaceBody(node, opts) {\n assert(\"TSInterfaceBody\", node, opts);\n}\nfunction assertTSTypeAliasDeclaration(node, opts) {\n assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nfunction assertTSInstantiationExpression(node, opts) {\n assert(\"TSInstantiationExpression\", node, opts);\n}\nfunction assertTSAsExpression(node, opts) {\n assert(\"TSAsExpression\", node, opts);\n}\nfunction assertTSSatisfiesExpression(node, opts) {\n assert(\"TSSatisfiesExpression\", node, opts);\n}\nfunction assertTSTypeAssertion(node, opts) {\n assert(\"TSTypeAssertion\", node, opts);\n}\nfunction assertTSEnumBody(node, opts) {\n assert(\"TSEnumBody\", node, opts);\n}\nfunction assertTSEnumDeclaration(node, opts) {\n assert(\"TSEnumDeclaration\", node, opts);\n}\nfunction assertTSEnumMember(node, opts) {\n assert(\"TSEnumMember\", node, opts);\n}\nfunction assertTSModuleDeclaration(node, opts) {\n assert(\"TSModuleDeclaration\", node, opts);\n}\nfunction assertTSModuleBlock(node, opts) {\n assert(\"TSModuleBlock\", node, opts);\n}\nfunction assertTSImportType(node, opts) {\n assert(\"TSImportType\", node, opts);\n}\nfunction assertTSImportEqualsDeclaration(node, opts) {\n assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nfunction assertTSExternalModuleReference(node, opts) {\n assert(\"TSExternalModuleReference\", node, opts);\n}\nfunction assertTSNonNullExpression(node, opts) {\n assert(\"TSNonNullExpression\", node, opts);\n}\nfunction assertTSExportAssignment(node, opts) {\n assert(\"TSExportAssignment\", node, opts);\n}\nfunction assertTSNamespaceExportDeclaration(node, opts) {\n assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nfunction assertTSTypeAnnotation(node, opts) {\n assert(\"TSTypeAnnotation\", node, opts);\n}\nfunction assertTSTypeParameterInstantiation(node, opts) {\n assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nfunction assertTSTypeParameterDeclaration(node, opts) {\n assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nfunction assertTSTypeParameter(node, opts) {\n assert(\"TSTypeParameter\", node, opts);\n}\nfunction assertStandardized(node, opts) {\n assert(\"Standardized\", node, opts);\n}\nfunction assertExpression(node, opts) {\n assert(\"Expression\", node, opts);\n}\nfunction assertBinary(node, opts) {\n assert(\"Binary\", node, opts);\n}\nfunction assertScopable(node, opts) {\n assert(\"Scopable\", node, opts);\n}\nfunction assertBlockParent(node, opts) {\n assert(\"BlockParent\", node, opts);\n}\nfunction assertBlock(node, opts) {\n assert(\"Block\", node, opts);\n}\nfunction assertStatement(node, opts) {\n assert(\"Statement\", node, opts);\n}\nfunction assertTerminatorless(node, opts) {\n assert(\"Terminatorless\", node, opts);\n}\nfunction assertCompletionStatement(node, opts) {\n assert(\"CompletionStatement\", node, opts);\n}\nfunction assertConditional(node, opts) {\n assert(\"Conditional\", node, opts);\n}\nfunction assertLoop(node, opts) {\n assert(\"Loop\", node, opts);\n}\nfunction assertWhile(node, opts) {\n assert(\"While\", node, opts);\n}\nfunction assertExpressionWrapper(node, opts) {\n assert(\"ExpressionWrapper\", node, opts);\n}\nfunction assertFor(node, opts) {\n assert(\"For\", node, opts);\n}\nfunction assertForXStatement(node, opts) {\n assert(\"ForXStatement\", node, opts);\n}\nfunction assertFunction(node, opts) {\n assert(\"Function\", node, opts);\n}\nfunction assertFunctionParent(node, opts) {\n assert(\"FunctionParent\", node, opts);\n}\nfunction assertPureish(node, opts) {\n assert(\"Pureish\", node, opts);\n}\nfunction assertDeclaration(node, opts) {\n assert(\"Declaration\", node, opts);\n}\nfunction assertFunctionParameter(node, opts) {\n assert(\"FunctionParameter\", node, opts);\n}\nfunction assertPatternLike(node, opts) {\n assert(\"PatternLike\", node, opts);\n}\nfunction assertLVal(node, opts) {\n assert(\"LVal\", node, opts);\n}\nfunction assertTSEntityName(node, opts) {\n assert(\"TSEntityName\", node, opts);\n}\nfunction assertLiteral(node, opts) {\n assert(\"Literal\", node, opts);\n}\nfunction assertImmutable(node, opts) {\n assert(\"Immutable\", node, opts);\n}\nfunction assertUserWhitespacable(node, opts) {\n assert(\"UserWhitespacable\", node, opts);\n}\nfunction assertMethod(node, opts) {\n assert(\"Method\", node, opts);\n}\nfunction assertObjectMember(node, opts) {\n assert(\"ObjectMember\", node, opts);\n}\nfunction assertProperty(node, opts) {\n assert(\"Property\", node, opts);\n}\nfunction assertUnaryLike(node, opts) {\n assert(\"UnaryLike\", node, opts);\n}\nfunction assertPattern(node, opts) {\n assert(\"Pattern\", node, opts);\n}\nfunction assertClass(node, opts) {\n assert(\"Class\", node, opts);\n}\nfunction assertImportOrExportDeclaration(node, opts) {\n assert(\"ImportOrExportDeclaration\", node, opts);\n}\nfunction assertExportDeclaration(node, opts) {\n assert(\"ExportDeclaration\", node, opts);\n}\nfunction assertModuleSpecifier(node, opts) {\n assert(\"ModuleSpecifier\", node, opts);\n}\nfunction assertPrivate(node, opts) {\n assert(\"Private\", node, opts);\n}\nfunction assertFlow(node, opts) {\n assert(\"Flow\", node, opts);\n}\nfunction assertFlowType(node, opts) {\n assert(\"FlowType\", node, opts);\n}\nfunction assertFlowBaseAnnotation(node, opts) {\n assert(\"FlowBaseAnnotation\", node, opts);\n}\nfunction assertFlowDeclaration(node, opts) {\n assert(\"FlowDeclaration\", node, opts);\n}\nfunction assertFlowPredicate(node, opts) {\n assert(\"FlowPredicate\", node, opts);\n}\nfunction assertEnumBody(node, opts) {\n assert(\"EnumBody\", node, opts);\n}\nfunction assertEnumMember(node, opts) {\n assert(\"EnumMember\", node, opts);\n}\nfunction assertJSX(node, opts) {\n assert(\"JSX\", node, opts);\n}\nfunction assertMiscellaneous(node, opts) {\n assert(\"Miscellaneous\", node, opts);\n}\nfunction assertAccessor(node, opts) {\n assert(\"Accessor\", node, opts);\n}\nfunction assertTypeScript(node, opts) {\n assert(\"TypeScript\", node, opts);\n}\nfunction assertTSTypeElement(node, opts) {\n assert(\"TSTypeElement\", node, opts);\n}\nfunction assertTSType(node, opts) {\n assert(\"TSType\", node, opts);\n}\nfunction assertTSBaseType(node, opts) {\n assert(\"TSBaseType\", node, opts);\n}\nfunction assertNumberLiteral(node, opts) {\n deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n assert(\"NumberLiteral\", node, opts);\n}\nfunction assertRegexLiteral(node, opts) {\n deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n assert(\"RegexLiteral\", node, opts);\n}\nfunction assertRestProperty(node, opts) {\n deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n assert(\"RestProperty\", node, opts);\n}\nfunction assertSpreadProperty(node, opts) {\n deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n assert(\"SpreadProperty\", node, opts);\n}\nfunction assertModuleDeclaration(node, opts) {\n deprecationWarning(\"assertModuleDeclaration\", \"assertImportOrExportDeclaration\");\n assert(\"ModuleDeclaration\", node, opts);\n}\n\nfunction createTypeAnnotationBasedOnTypeof(type) {\n switch (type) {\n case \"string\":\n return stringTypeAnnotation();\n case \"number\":\n return numberTypeAnnotation();\n case \"undefined\":\n return voidTypeAnnotation();\n case \"boolean\":\n return booleanTypeAnnotation();\n case \"function\":\n return genericTypeAnnotation(identifier(\"Function\"));\n case \"object\":\n return genericTypeAnnotation(identifier(\"Object\"));\n case \"symbol\":\n return genericTypeAnnotation(identifier(\"Symbol\"));\n case \"bigint\":\n return anyTypeAnnotation();\n }\n throw new Error(\"Invalid typeof value: \" + type);\n}\n\nfunction getQualifiedName$1(node) {\n return isIdentifier(node) ? node.name : `${node.id.name}.${getQualifiedName$1(node.qualification)}`;\n}\nfunction removeTypeDuplicates$1(nodesIn) {\n const nodes = Array.from(nodesIn);\n const generics = new Map();\n const bases = new Map();\n const typeGroups = new Set();\n const types = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n if (types.includes(node)) {\n continue;\n }\n if (isAnyTypeAnnotation(node)) {\n return [node];\n }\n if (isFlowBaseAnnotation(node)) {\n bases.set(node.type, node);\n continue;\n }\n if (isUnionTypeAnnotation(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n if (isGenericTypeAnnotation(node)) {\n const name = getQualifiedName$1(node.id);\n if (generics.has(name)) {\n const existingTypeParameters = generics.get(name).typeParameters;\n if (existingTypeParameters) {\n if (node.typeParameters) {\n existingTypeParameters.params.push(...node.typeParameters.params);\n existingTypeParameters.params = removeTypeDuplicates$1(existingTypeParameters.params);\n }\n }\n } else {\n generics.set(name, node);\n }\n continue;\n }\n types.push(node);\n }\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n return types;\n}\n\nfunction createFlowUnionType(types) {\n const flattened = removeTypeDuplicates$1(types);\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return unionTypeAnnotation(flattened);\n }\n}\n\nfunction getQualifiedName(node) {\n return isIdentifier(node) ? node.name : isThisExpression(node) ? \"this\" : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\nfunction removeTypeDuplicates(nodesIn) {\n const nodes = Array.from(nodesIn);\n const generics = new Map();\n const bases = new Map();\n const typeGroups = new Set();\n const types = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n if (types.includes(node)) {\n continue;\n }\n if (isTSAnyKeyword(node)) {\n return [node];\n }\n if (isTSBaseType(node)) {\n bases.set(node.type, node);\n continue;\n }\n if (isTSUnionType(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n const typeArgumentsKey = \"typeArguments\";\n if (isTSTypeReference(node) && node[typeArgumentsKey]) {\n const typeArguments = node[typeArgumentsKey];\n const name = getQualifiedName(node.typeName);\n if (generics.has(name)) {\n const existingTypeArguments = generics.get(name)[typeArgumentsKey];\n if (existingTypeArguments) {\n existingTypeArguments.params.push(...typeArguments.params);\n existingTypeArguments.params = removeTypeDuplicates(existingTypeArguments.params);\n }\n } else {\n generics.set(name, node);\n }\n continue;\n }\n types.push(node);\n }\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n return types;\n}\n\nfunction createTSUnionType(typeAnnotations) {\n const types = typeAnnotations.map(type => {\n return isTSTypeAnnotation(type) ? type.typeAnnotation : type;\n });\n const flattened = removeTypeDuplicates(types);\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return tsUnionType(flattened);\n }\n}\n\nfunction buildUndefinedNode() {\n return unaryExpression(\"void\", numericLiteral(0), true);\n}\n\nconst {\n hasOwn\n} = Object;\nfunction cloneIfNode(obj, deep, withoutLoc, commentsCache) {\n if (obj && typeof obj.type === \"string\") {\n return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);\n }\n return obj;\n}\nfunction cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {\n if (Array.isArray(obj)) {\n return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));\n }\n return cloneIfNode(obj, deep, withoutLoc, commentsCache);\n}\nfunction cloneNode(node, deep = true, withoutLoc = false) {\n if (!node) return node;\n return cloneNodeInternal(node, deep, withoutLoc, new Map());\n}\nfunction cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) {\n if (!node) return node;\n const {\n type\n } = node;\n const newNode = {\n type: node.type\n };\n if (isIdentifier(node)) {\n newNode.name = node.name;\n if (hasOwn(node, \"optional\") && typeof node.optional === \"boolean\") {\n newNode.optional = node.optional;\n }\n if (hasOwn(node, \"typeAnnotation\")) {\n newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;\n }\n if (hasOwn(node, \"decorators\")) {\n newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators;\n }\n } else if (!hasOwn(NODE_FIELDS$1, type)) {\n throw new Error(`Unknown node type: \"${type}\"`);\n } else {\n for (const field of Object.keys(NODE_FIELDS$1[type])) {\n if (hasOwn(node, field)) {\n if (deep) {\n newNode[field] = isFile(node) && field === \"comments\" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);\n } else {\n newNode[field] = node[field];\n }\n }\n }\n }\n if (hasOwn(node, \"loc\")) {\n if (withoutLoc) {\n newNode.loc = null;\n } else {\n newNode.loc = node.loc;\n }\n }\n if (hasOwn(node, \"leadingComments\")) {\n newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);\n }\n if (hasOwn(node, \"innerComments\")) {\n newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);\n }\n if (hasOwn(node, \"trailingComments\")) {\n newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);\n }\n if (hasOwn(node, \"extra\")) {\n newNode.extra = {\n ...node.extra\n };\n }\n return newNode;\n}\nfunction maybeCloneComments(comments, deep, withoutLoc, commentsCache) {\n if (!comments || !deep) {\n return comments;\n }\n return comments.map(comment => {\n const cache = commentsCache.get(comment);\n if (cache) return cache;\n const {\n type,\n value,\n loc\n } = comment;\n const ret = {\n type,\n value,\n loc\n };\n if (withoutLoc) {\n ret.loc = undefined;\n }\n commentsCache.set(comment, ret);\n return ret;\n });\n}\n\nfunction clone(node) {\n return cloneNode(node, false);\n}\n\nfunction cloneDeep(node) {\n return cloneNode(node);\n}\n\nfunction cloneDeepWithoutLoc(node) {\n return cloneNode(node, true, true);\n}\n\nfunction cloneWithoutLoc(node) {\n return cloneNode(node, false, true);\n}\n\nfunction addComments(node, type, comments) {\n if (!comments || !node) return node;\n const key = `${type}Comments`;\n if (node[key]) {\n if (type === \"leading\") {\n node[key] = comments.concat(node[key]);\n } else {\n node[key].push(...comments);\n }\n } else {\n node[key] = comments;\n }\n return node;\n}\n\nfunction addComment(node, type, content, line) {\n return addComments(node, type, [{\n type: line ? \"CommentLine\" : \"CommentBlock\",\n value: content\n }]);\n}\n\nfunction inherit(key, child, parent) {\n if (child && parent) {\n const parentVal = parent[key];\n if (!parentVal) return;\n const childVal = child[key];\n child[key] = Array.from(childVal ? new Set([...childVal, ...parentVal].filter(Boolean)) : parentVal);\n }\n}\n\nfunction inheritInnerComments(child, parent) {\n inherit(\"innerComments\", child, parent);\n}\n\nfunction inheritLeadingComments(child, parent) {\n inherit(\"leadingComments\", child, parent);\n}\n\nfunction inheritTrailingComments(child, parent) {\n inherit(\"trailingComments\", child, parent);\n}\n\nfunction inheritsComments(child, parent) {\n inheritTrailingComments(child, parent);\n inheritLeadingComments(child, parent);\n inheritInnerComments(child, parent);\n return child;\n}\n\nfunction removeComments(node) {\n COMMENT_KEYS.forEach(key => {\n node[key] = null;\n });\n return node;\n}\n\nconst STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS[\"Standardized\"];\nconst EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS[\"Expression\"];\nconst BINARY_TYPES = FLIPPED_ALIAS_KEYS[\"Binary\"];\nconst SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Scopable\"];\nconst BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"BlockParent\"];\nconst BLOCK_TYPES = FLIPPED_ALIAS_KEYS[\"Block\"];\nconst STATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"Statement\"];\nconst TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS[\"Terminatorless\"];\nconst COMPLETIONSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"CompletionStatement\"];\nconst CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS[\"Conditional\"];\nconst LOOP_TYPES = FLIPPED_ALIAS_KEYS[\"Loop\"];\nconst WHILE_TYPES = FLIPPED_ALIAS_KEYS[\"While\"];\nconst EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS[\"ExpressionWrapper\"];\nconst FOR_TYPES = FLIPPED_ALIAS_KEYS[\"For\"];\nconst FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"ForXStatement\"];\nconst FUNCTION_TYPES = FLIPPED_ALIAS_KEYS[\"Function\"];\nconst FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParent\"];\nconst PUREISH_TYPES = FLIPPED_ALIAS_KEYS[\"Pureish\"];\nconst DECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"Declaration\"];\nconst FUNCTIONPARAMETER_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParameter\"];\nconst PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"PatternLike\"];\nconst LVAL_TYPES = FLIPPED_ALIAS_KEYS[\"LVal\"];\nconst TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS[\"TSEntityName\"];\nconst LITERAL_TYPES = FLIPPED_ALIAS_KEYS[\"Literal\"];\nconst IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Immutable\"];\nconst USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS[\"UserWhitespacable\"];\nconst METHOD_TYPES = FLIPPED_ALIAS_KEYS[\"Method\"];\nconst OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"ObjectMember\"];\nconst PROPERTY_TYPES = FLIPPED_ALIAS_KEYS[\"Property\"];\nconst UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"UnaryLike\"];\nconst PATTERN_TYPES = FLIPPED_ALIAS_KEYS[\"Pattern\"];\nconst CLASS_TYPES = FLIPPED_ALIAS_KEYS[\"Class\"];\nconst IMPORTOREXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"ImportOrExportDeclaration\"];\nconst EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"ExportDeclaration\"];\nconst MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS[\"ModuleSpecifier\"];\nconst PRIVATE_TYPES = FLIPPED_ALIAS_KEYS[\"Private\"];\nconst FLOW_TYPES = FLIPPED_ALIAS_KEYS[\"Flow\"];\nconst FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowType\"];\nconst FLOWBASEANNOTATION_TYPES = FLIPPED_ALIAS_KEYS[\"FlowBaseAnnotation\"];\nconst FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"FlowDeclaration\"];\nconst FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowPredicate\"];\nconst ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS[\"EnumBody\"];\nconst ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"EnumMember\"];\nconst JSX_TYPES = FLIPPED_ALIAS_KEYS[\"JSX\"];\nconst MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS[\"Miscellaneous\"];\nconst ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS[\"Accessor\"];\nconst TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS[\"TypeScript\"];\nconst TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"TSTypeElement\"];\nconst TSTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSType\"];\nconst TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\nconst MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n\nfunction toBlock(node, parent) {\n if (isBlockStatement(node)) {\n return node;\n }\n let blockNodes;\n if (isEmptyStatement(node)) {\n blockNodes = [];\n } else {\n if (!isStatement(node)) {\n if (isFunction(parent)) {\n node = returnStatement(node);\n } else {\n node = expressionStatement(node);\n }\n }\n blockNodes = [node];\n }\n return blockStatement(blockNodes);\n}\n\nfunction ensureBlock(node, key = \"body\") {\n const result = toBlock(node[key], node);\n node[key] = result;\n return result;\n}\n\nfunction toIdentifier(input) {\n input = input + \"\";\n let name = \"\";\n for (const c of input) {\n name += isIdentifierChar(c.codePointAt(0)) ? c : \"-\";\n }\n name = name.replace(/^[-0-9]+/, \"\");\n name = name.replace(/[-\\s]+(.)?/g, function (match, c) {\n return c ? c.toUpperCase() : \"\";\n });\n if (!isValidIdentifier(name)) {\n name = `_${name}`;\n }\n return name || \"_\";\n}\n\nfunction toBindingIdentifierName(name) {\n name = toIdentifier(name);\n if (name === \"eval\" || name === \"arguments\") name = \"_\" + name;\n return name;\n}\n\nfunction toComputedKey(node, key = node.key || node.property) {\n if (!node.computed && isIdentifier(key)) key = stringLiteral(key.name);\n return key;\n}\n\nfunction toExpression(node) {\n if (isExpressionStatement(node)) {\n node = node.expression;\n }\n if (isExpression(node)) {\n return node;\n }\n if (isClass(node)) {\n node.type = \"ClassExpression\";\n node.abstract = false;\n } else if (isFunction(node)) {\n node.type = \"FunctionExpression\";\n }\n if (!isExpression(node)) {\n throw new Error(`cannot turn ${node.type} to an expression`);\n }\n return node;\n}\n\nconst _skip = Symbol();\nconst _stop = Symbol();\nfunction traverseFast(node, enter, opts) {\n if (!node) return false;\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return false;\n opts = opts || {};\n const ret = enter(node, opts);\n if (ret !== undefined) {\n switch (ret) {\n case _skip:\n return false;\n case _stop:\n return true;\n }\n }\n for (const key of keys) {\n const subNode = node[key];\n if (!subNode) continue;\n if (Array.isArray(subNode)) {\n for (const node of subNode) {\n if (traverseFast(node, enter, opts)) return true;\n }\n } else {\n if (traverseFast(subNode, enter, opts)) return true;\n }\n }\n return false;\n}\ntraverseFast.skip = _skip;\ntraverseFast.stop = _stop;\n\nconst CLEAR_KEYS = [\"tokens\", \"start\", \"end\", \"loc\", \"raw\", \"rawValue\"];\nconst CLEAR_KEYS_PLUS_COMMENTS = [...COMMENT_KEYS, \"comments\", ...CLEAR_KEYS];\nfunction removeProperties(node, opts = {}) {\n const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;\n for (const key of map) {\n if (node[key] != null) node[key] = undefined;\n }\n for (const key of Object.keys(node)) {\n if (key.startsWith(\"_\") && node[key] != null) node[key] = undefined;\n }\n const symbols = Object.getOwnPropertySymbols(node);\n for (const sym of symbols) {\n node[sym] = null;\n }\n}\n\nfunction removePropertiesDeep(tree, opts) {\n traverseFast(tree, removeProperties, opts);\n return tree;\n}\n\nfunction toKeyAlias(node, key = node.key) {\n let alias;\n if (node.kind === \"method\") {\n return toKeyAlias.increment() + \"\";\n } else if (isIdentifier(key)) {\n alias = key.name;\n } else if (isStringLiteral(key)) {\n alias = JSON.stringify(key.value);\n } else {\n alias = JSON.stringify(removePropertiesDeep(cloneNode(key)));\n }\n if (node.computed) {\n alias = `[${alias}]`;\n }\n if (node.static) {\n alias = `static:${alias}`;\n }\n return alias;\n}\ntoKeyAlias.uid = 0;\ntoKeyAlias.increment = function () {\n if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {\n return toKeyAlias.uid = 0;\n } else {\n return toKeyAlias.uid++;\n }\n};\n\nfunction toStatement(node, ignore) {\n if (isStatement(node)) {\n return node;\n }\n let mustHaveId = false;\n let newType;\n if (isClass(node)) {\n mustHaveId = true;\n newType = \"ClassDeclaration\";\n } else if (isFunction(node)) {\n mustHaveId = true;\n newType = \"FunctionDeclaration\";\n } else if (isAssignmentExpression(node)) {\n return expressionStatement(node);\n }\n if (mustHaveId && !node.id) {\n newType = false;\n }\n if (!newType) {\n if (ignore) {\n return false;\n } else {\n throw new Error(`cannot turn ${node.type} to a statement`);\n }\n }\n node.type = newType;\n return node;\n}\n\nconst objectToString = Function.call.bind(Object.prototype.toString);\nfunction isRegExp(value) {\n return objectToString(value) === \"[object RegExp]\";\n}\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null || Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || Object.getPrototypeOf(proto) === null;\n}\nfunction valueToNode(value) {\n if (value === undefined) {\n return identifier(\"undefined\");\n }\n if (value === true || value === false) {\n return booleanLiteral(value);\n }\n if (value === null) {\n return nullLiteral();\n }\n if (typeof value === \"string\") {\n return stringLiteral(value);\n }\n if (typeof value === \"number\") {\n let result;\n if (Number.isFinite(value)) {\n result = numericLiteral(Math.abs(value));\n } else {\n let numerator;\n if (Number.isNaN(value)) {\n numerator = numericLiteral(0);\n } else {\n numerator = numericLiteral(1);\n }\n result = binaryExpression(\"/\", numerator, numericLiteral(0));\n }\n if (value < 0 || Object.is(value, -0)) {\n result = unaryExpression(\"-\", result);\n }\n return result;\n }\n if (typeof value === \"bigint\") {\n if (value < 0) {\n return unaryExpression(\"-\", bigIntLiteral(-value));\n } else {\n return bigIntLiteral(value);\n }\n }\n if (isRegExp(value)) {\n const pattern = value.source;\n const flags = /\\/([a-z]*)$/.exec(value.toString())[1];\n return regExpLiteral(pattern, flags);\n }\n if (Array.isArray(value)) {\n return arrayExpression(value.map(valueToNode));\n }\n if (isPlainObject(value)) {\n const props = [];\n for (const key of Object.keys(value)) {\n let nodeKey,\n computed = false;\n if (isValidIdentifier(key)) {\n if (key === \"__proto__\") {\n computed = true;\n nodeKey = stringLiteral(key);\n } else {\n nodeKey = identifier(key);\n }\n } else {\n nodeKey = stringLiteral(key);\n }\n props.push(objectProperty(nodeKey, valueToNode(value[key]), computed));\n }\n return objectExpression(props);\n }\n throw new Error(\"don't know how to turn this value into a node\");\n}\n\nfunction appendToMemberExpression(member, append, computed = false) {\n member.object = memberExpression(member.object, member.property, member.computed);\n member.property = append;\n member.computed = !!computed;\n return member;\n}\n\nfunction inherits(child, parent) {\n if (!child || !parent) return child;\n for (const key of INHERIT_KEYS.optional) {\n if (child[key] == null) {\n child[key] = parent[key];\n }\n }\n for (const key of Object.keys(parent)) {\n if (key.startsWith(\"_\") && key !== \"__clone\") {\n child[key] = parent[key];\n }\n }\n for (const key of INHERIT_KEYS.force) {\n child[key] = parent[key];\n }\n inheritsComments(child, parent);\n return child;\n}\n\nfunction prependToMemberExpression(member, prepend) {\n if (isSuper(member.object)) {\n throw new Error(\"Cannot prepend node to super property access (`super.foo`).\");\n }\n member.object = memberExpression(prepend, member.object);\n return member;\n}\n\nfunction getAssignmentIdentifiers(node) {\n const search = [].concat(node);\n const ids = Object.create(null);\n while (search.length) {\n const id = search.pop();\n if (!id) continue;\n switch (id.type) {\n case \"ArrayPattern\":\n search.push(...id.elements);\n break;\n case \"AssignmentExpression\":\n case \"AssignmentPattern\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n search.push(id.left);\n break;\n case \"ObjectPattern\":\n search.push(...id.properties);\n break;\n case \"ObjectProperty\":\n search.push(id.value);\n break;\n case \"RestElement\":\n case \"UpdateExpression\":\n search.push(id.argument);\n break;\n case \"UnaryExpression\":\n if (id.operator === \"delete\") {\n search.push(id.argument);\n }\n break;\n case \"Identifier\":\n ids[id.name] = id;\n break;\n }\n }\n return ids;\n}\n\nfunction getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) {\n const search = [].concat(node);\n const ids = Object.create(null);\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n if (newBindingsOnly && (isAssignmentExpression(id) || isUnaryExpression(id) || isUpdateExpression(id))) {\n continue;\n }\n if (isIdentifier(id)) {\n if (duplicates) {\n const _ids = ids[id.name] = ids[id.name] || [];\n _ids.push(id);\n } else {\n ids[id.name] = id;\n }\n continue;\n }\n if (isExportDeclaration(id) && !isExportAllDeclaration(id)) {\n if (isDeclaration(id.declaration)) {\n search.push(id.declaration);\n }\n continue;\n }\n if (outerOnly) {\n if (isFunctionDeclaration(id)) {\n search.push(id.id);\n continue;\n }\n if (isFunctionExpression(id) || isClassExpression(id)) {\n continue;\n }\n }\n const keys = getBindingIdentifiers.keys[id.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const nodes = id[key];\n if (nodes) {\n if (Array.isArray(nodes)) {\n search.push(...nodes);\n } else {\n search.push(nodes);\n }\n }\n }\n }\n }\n return ids;\n}\nconst keys = {\n DeclareClass: [\"id\"],\n DeclareFunction: [\"id\"],\n DeclareModule: [\"id\"],\n DeclareVariable: [\"id\"],\n DeclareInterface: [\"id\"],\n DeclareTypeAlias: [\"id\"],\n DeclareOpaqueType: [\"id\"],\n InterfaceDeclaration: [\"id\"],\n TypeAlias: [\"id\"],\n OpaqueType: [\"id\"],\n CatchClause: [\"param\"],\n LabeledStatement: [\"label\"],\n UnaryExpression: [\"argument\"],\n AssignmentExpression: [\"left\"],\n ImportSpecifier: [\"local\"],\n ImportNamespaceSpecifier: [\"local\"],\n ImportDefaultSpecifier: [\"local\"],\n ImportDeclaration: [\"specifiers\"],\n TSImportEqualsDeclaration: [\"id\"],\n ExportSpecifier: [\"exported\"],\n ExportNamespaceSpecifier: [\"exported\"],\n ExportDefaultSpecifier: [\"exported\"],\n FunctionDeclaration: [\"id\", \"params\"],\n FunctionExpression: [\"id\", \"params\"],\n ArrowFunctionExpression: [\"params\"],\n ObjectMethod: [\"params\"],\n ClassMethod: [\"params\"],\n ClassPrivateMethod: [\"params\"],\n ForInStatement: [\"left\"],\n ForOfStatement: [\"left\"],\n ClassDeclaration: [\"id\"],\n ClassExpression: [\"id\"],\n RestElement: [\"argument\"],\n UpdateExpression: [\"argument\"],\n ObjectProperty: [\"value\"],\n AssignmentPattern: [\"left\"],\n ArrayPattern: [\"elements\"],\n ObjectPattern: [\"properties\"],\n VariableDeclaration: [\"declarations\"],\n VariableDeclarator: [\"id\"]\n};\ngetBindingIdentifiers.keys = keys;\n\nfunction getOuterBindingIdentifiers(node, duplicates) {\n return getBindingIdentifiers(node, duplicates, true);\n}\n\nfunction getNameFromLiteralId(id) {\n if (isNullLiteral(id)) {\n return \"null\";\n }\n if (isRegExpLiteral(id)) {\n return `/${id.pattern}/${id.flags}`;\n }\n if (isTemplateLiteral(id)) {\n return id.quasis.map(quasi => quasi.value.raw).join(\"\");\n }\n if (id.value !== undefined) {\n return String(id.value);\n }\n return null;\n}\nfunction getObjectMemberKey(node) {\n if (!node.computed || isLiteral(node.key)) {\n return node.key;\n }\n return null;\n}\nfunction getFunctionName(node, parent) {\n if (\"id\" in node && node.id) {\n return {\n name: node.id.name,\n originalNode: node.id\n };\n }\n let prefix = \"\";\n let id;\n if (isObjectProperty(parent, {\n value: node\n })) {\n id = getObjectMemberKey(parent);\n } else if (isObjectMethod(node) || isClassMethod(node)) {\n id = getObjectMemberKey(node);\n if (node.kind === \"get\") prefix = \"get \";else if (node.kind === \"set\") prefix = \"set \";\n } else if (isVariableDeclarator(parent) && parent.init === node) {\n id = parent.id;\n } else if (isAssignmentExpression(parent, {\n operator: \"=\",\n right: node\n })) {\n id = parent.left;\n }\n if (!id) return null;\n const name = isLiteral(id) ? getNameFromLiteralId(id) : isIdentifier(id) ? id.name : isPrivateName(id) ? id.id.name : null;\n if (name == null) return null;\n return {\n name: prefix + name,\n originalNode: id\n };\n}\n\nfunction traverse(node, handlers, state) {\n if (typeof handlers === \"function\") {\n handlers = {\n enter: handlers\n };\n }\n const {\n enter,\n exit\n } = handlers;\n traverseSimpleImpl(node, enter, exit, state, []);\n}\nfunction traverseSimpleImpl(node, enter, exit, state, ancestors) {\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return;\n if (enter) enter(node, ancestors, state);\n for (const key of keys) {\n const subNode = node[key];\n if (Array.isArray(subNode)) {\n for (let i = 0; i < subNode.length; i++) {\n const child = subNode[i];\n if (!child) continue;\n ancestors.push({\n node,\n key,\n index: i\n });\n traverseSimpleImpl(child, enter, exit, state, ancestors);\n ancestors.pop();\n }\n } else if (subNode) {\n ancestors.push({\n node,\n key\n });\n traverseSimpleImpl(subNode, enter, exit, state, ancestors);\n ancestors.pop();\n }\n }\n if (exit) exit(node, ancestors, state);\n}\n\nfunction isBinding(node, parent, grandparent) {\n if (grandparent && node.type === \"Identifier\" && parent.type === \"ObjectProperty\" && grandparent.type === \"ObjectExpression\") {\n return false;\n }\n const keys = getBindingIdentifiers.keys[parent.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val = parent[key];\n if (Array.isArray(val)) {\n if (val.includes(node)) return true;\n } else {\n if (val === node) return true;\n }\n }\n }\n return false;\n}\n\nfunction isLet(node) {\n return isVariableDeclaration(node) && node.kind !== \"var\";\n}\n\nfunction isBlockScoped(node) {\n return isFunctionDeclaration(node) || isClassDeclaration(node) || isLet(node);\n}\n\nfunction isImmutable(node) {\n if (isType(node.type, \"Immutable\")) return true;\n if (isIdentifier(node)) {\n if (node.name === \"undefined\") {\n return true;\n } else {\n return false;\n }\n }\n return false;\n}\n\nfunction isNodesEquivalent(a, b) {\n if (typeof a !== \"object\" || typeof b !== \"object\" || a == null || b == null) {\n return a === b;\n }\n if (a.type !== b.type) {\n return false;\n }\n const fields = Object.keys(NODE_FIELDS$1[a.type] || a.type);\n const visitorKeys = VISITOR_KEYS[a.type];\n for (const field of fields) {\n const val_a = a[field];\n const val_b = b[field];\n if (typeof val_a !== typeof val_b) {\n return false;\n }\n if (val_a == null && val_b == null) {\n continue;\n } else if (val_a == null || val_b == null) {\n return false;\n }\n if (Array.isArray(val_a)) {\n if (!Array.isArray(val_b)) {\n return false;\n }\n if (val_a.length !== val_b.length) {\n return false;\n }\n for (let i = 0; i < val_a.length; i++) {\n if (!isNodesEquivalent(val_a[i], val_b[i])) {\n return false;\n }\n }\n continue;\n }\n if (typeof val_a === \"object\" && !visitorKeys?.includes(field)) {\n for (const key of Object.keys(val_a)) {\n if (val_a[key] !== val_b[key]) {\n return false;\n }\n }\n continue;\n }\n if (!isNodesEquivalent(val_a, val_b)) {\n return false;\n }\n }\n return true;\n}\n\nfunction isReferenced(node, parent, grandparent) {\n switch (parent.type) {\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n if (parent.property === node) {\n return !!parent.computed;\n }\n return parent.object === node;\n case \"JSXMemberExpression\":\n return parent.object === node;\n case \"VariableDeclarator\":\n return parent.init === node;\n case \"ArrowFunctionExpression\":\n return parent.body === node;\n case \"PrivateName\":\n return false;\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"ObjectMethod\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return false;\n case \"ObjectProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return grandparent?.type !== \"ObjectPattern\";\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n case \"ClassPrivateProperty\":\n return parent.key !== node;\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n return parent.superClass === node;\n case \"AssignmentExpression\":\n return parent.right === node;\n case \"AssignmentPattern\":\n return parent.right === node;\n case \"LabeledStatement\":\n return false;\n case \"CatchClause\":\n return false;\n case \"RestElement\":\n return false;\n case \"BreakStatement\":\n case \"ContinueStatement\":\n return false;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n return false;\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n return false;\n case \"ExportSpecifier\":\n if (grandparent?.source) {\n return false;\n }\n return parent.local === node;\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n return false;\n case \"ImportAttribute\":\n return false;\n case \"JSXAttribute\":\n return false;\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n return false;\n case \"MetaProperty\":\n return false;\n case \"ObjectTypeProperty\":\n return parent.key !== node;\n case \"TSEnumMember\":\n return parent.id !== node;\n case \"TSPropertySignature\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n }\n return true;\n}\n\nfunction isScope(node, parent) {\n if (isBlockStatement(node) && (isFunction(parent) || isCatchClause(parent))) {\n return false;\n }\n if (isPattern(node) && (isFunction(parent) || isCatchClause(parent))) {\n return true;\n }\n return isScopable(node);\n}\n\nfunction isSpecifierDefault(specifier) {\n return isImportDefaultSpecifier(specifier) || isIdentifier(specifier.imported || specifier.exported, {\n name: \"default\"\n });\n}\n\nconst RESERVED_WORDS_ES3_ONLY = new Set([\"abstract\", \"boolean\", \"byte\", \"char\", \"double\", \"enum\", \"final\", \"float\", \"goto\", \"implements\", \"int\", \"interface\", \"long\", \"native\", \"package\", \"private\", \"protected\", \"public\", \"short\", \"static\", \"synchronized\", \"throws\", \"transient\", \"volatile\"]);\nfunction isValidES3Identifier(name) {\n return isValidIdentifier(name) && !RESERVED_WORDS_ES3_ONLY.has(name);\n}\n\nfunction isVar(node) {\n return isVariableDeclaration(node) && node.kind === \"var\";\n}\n\nconst react = {\n isReactComponent,\n isCompatTag,\n buildChildren\n};\n\nexport { ACCESSOR_TYPES, ALIAS_KEYS, ASSIGNMENT_OPERATORS, AnyTypeAnnotation, ArgumentPlaceholder, ArrayExpression, ArrayPattern, ArrayTypeAnnotation, ArrowFunctionExpression, AssignmentExpression, AssignmentPattern, AwaitExpression, BINARY_OPERATORS, BINARY_TYPES, BLOCKPARENT_TYPES, BLOCK_TYPES, BOOLEAN_BINARY_OPERATORS, BOOLEAN_NUMBER_BINARY_OPERATORS, BOOLEAN_UNARY_OPERATORS, BUILDER_KEYS, BigIntLiteral, BigIntLiteralTypeAnnotation, BinaryExpression, BindExpression, BlockStatement, BooleanLiteral, BooleanLiteralTypeAnnotation, BooleanTypeAnnotation, BreakStatement, CLASS_TYPES, COMMENT_KEYS, COMPARISON_BINARY_OPERATORS, COMPLETIONSTATEMENT_TYPES, CONDITIONAL_TYPES, CallExpression, CatchClause, ClassAccessorProperty, ClassBody, ClassDeclaration, ClassExpression, ClassImplements, ClassMethod, ClassPrivateMethod, ClassPrivateProperty, ClassProperty, ConditionalExpression, ContinueStatement, DECLARATION_TYPES, DEPRECATED_ALIASES, DEPRECATED_KEYS, DebuggerStatement, DeclareClass, DeclareExportAllDeclaration, DeclareExportDeclaration, DeclareFunction, DeclareInterface, DeclareModule, DeclareModuleExports, DeclareOpaqueType, DeclareTypeAlias, DeclareVariable, DeclaredPredicate, Decorator, Directive, DirectiveLiteral, DoExpression, DoWhileStatement, ENUMBODY_TYPES, ENUMMEMBER_TYPES, EQUALITY_BINARY_OPERATORS, EXPORTDECLARATION_TYPES, EXPRESSIONWRAPPER_TYPES, EXPRESSION_TYPES, EmptyStatement, EmptyTypeAnnotation, EnumBooleanBody, EnumBooleanMember, EnumDeclaration, EnumDefaultedMember, EnumNumberBody, EnumNumberMember, EnumStringBody, EnumStringMember, EnumSymbolBody, ExistsTypeAnnotation, ExportAllDeclaration, ExportDefaultDeclaration, ExportDefaultSpecifier, ExportNamedDeclaration, ExportNamespaceSpecifier, ExportSpecifier, ExpressionStatement, FLATTENABLE_KEYS, FLIPPED_ALIAS_KEYS, FLOWBASEANNOTATION_TYPES, FLOWDECLARATION_TYPES, FLOWPREDICATE_TYPES, FLOWTYPE_TYPES, FLOW_TYPES, FORXSTATEMENT_TYPES, FOR_INIT_KEYS, FOR_TYPES, FUNCTIONPARAMETER_TYPES, FUNCTIONPARENT_TYPES, FUNCTION_TYPES, File, ForInStatement, ForOfStatement, ForStatement, FunctionDeclaration, FunctionExpression, FunctionTypeAnnotation, FunctionTypeParam, GenericTypeAnnotation, IMMUTABLE_TYPES, IMPORTOREXPORTDECLARATION_TYPES, INHERIT_KEYS, Identifier, IfStatement, Import, ImportAttribute, ImportDeclaration, ImportDefaultSpecifier, ImportExpression, ImportNamespaceSpecifier, ImportSpecifier, IndexedAccessType, InferredPredicate, InterfaceDeclaration, InterfaceExtends, InterfaceTypeAnnotation, InterpreterDirective, IntersectionTypeAnnotation, JSXAttribute, JSXClosingElement, JSXClosingFragment, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXFragment, JSXIdentifier, JSXMemberExpression, JSXNamespacedName, JSXOpeningElement, JSXOpeningFragment, JSXSpreadAttribute, JSXSpreadChild, JSXText, JSX_TYPES, LITERAL_TYPES, LOGICAL_OPERATORS, LOOP_TYPES, LVAL_TYPES, LabeledStatement, LogicalExpression, METHOD_TYPES, MISCELLANEOUS_TYPES, MODULEDECLARATION_TYPES, MODULESPECIFIER_TYPES, MemberExpression, MetaProperty, MixedTypeAnnotation, ModuleExpression, NODE_FIELDS$1 as NODE_FIELDS, NODE_PARENT_VALIDATIONS, NODE_UNION_SHAPES__PRIVATE, NUMBER_BINARY_OPERATORS, NUMBER_UNARY_OPERATORS, NewExpression, NullLiteral, NullLiteralTypeAnnotation, NullableTypeAnnotation, NumberLiteralTypeAnnotation, NumberTypeAnnotation, NumericLiteral, OBJECTMEMBER_TYPES, ObjectExpression, ObjectMethod, ObjectPattern, ObjectProperty, ObjectTypeAnnotation, ObjectTypeCallProperty, ObjectTypeIndexer, ObjectTypeInternalSlot, ObjectTypeProperty, ObjectTypeSpreadProperty, OpaqueType, OptionalCallExpression, OptionalIndexedAccessType, OptionalMemberExpression, PATTERNLIKE_TYPES, PATTERN_TYPES, PLACEHOLDERS, PLACEHOLDERS_ALIAS, PLACEHOLDERS_FLIPPED_ALIAS, PRIVATE_TYPES, PROPERTY_TYPES, PUREISH_TYPES, ParenthesizedExpression, Placeholder, PrivateName, Program, QualifiedTypeIdentifier, RegExpLiteral, RestElement, ReturnStatement, SCOPABLE_TYPES, STANDARDIZED_TYPES, STATEMENT_OR_BLOCK_KEYS, STATEMENT_TYPES, STRING_UNARY_OPERATORS, SequenceExpression, SpreadElement, StaticBlock, StringLiteral, StringLiteralTypeAnnotation, StringTypeAnnotation, Super, SwitchCase, SwitchStatement, SymbolTypeAnnotation, TERMINATORLESS_TYPES, TSAnyKeyword, TSArrayType, TSAsExpression, TSBASETYPE_TYPES, TSBigIntKeyword, TSBooleanKeyword, TSCallSignatureDeclaration, TSClassImplements, TSConditionalType, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSDeclareMethod, TSENTITYNAME_TYPES, TSEnumBody, TSEnumDeclaration, TSEnumMember, TSExportAssignment, TSExternalModuleReference, TSFunctionType, TSImportEqualsDeclaration, TSImportType, TSIndexSignature, TSIndexedAccessType, TSInferType, TSInstantiationExpression, TSInterfaceBody, TSInterfaceDeclaration, TSInterfaceHeritage, TSIntersectionType, TSIntrinsicKeyword, TSLiteralType, TSMappedType, TSMethodSignature, TSModuleBlock, TSModuleDeclaration, TSNamedTupleMember, TSNamespaceExportDeclaration, TSNeverKeyword, TSNonNullExpression, TSNullKeyword, TSNumberKeyword, TSObjectKeyword, TSOptionalType, TSParameterProperty, TSParenthesizedType, TSPropertySignature, TSQualifiedName, TSRestType, TSSatisfiesExpression, TSStringKeyword, TSSymbolKeyword, TSTYPEELEMENT_TYPES, TSTYPE_TYPES, TSTemplateLiteralType, TSThisType, TSTupleType, TSTypeAliasDeclaration, TSTypeAnnotation, TSTypeAssertion, TSTypeLiteral, TSTypeOperator, TSTypeParameter, TSTypeParameterDeclaration, TSTypeParameterInstantiation, TSTypePredicate, TSTypeQuery, TSTypeReference, TSUndefinedKeyword, TSUnionType, TSUnknownKeyword, TSVoidKeyword, TYPES, TYPESCRIPT_TYPES, TaggedTemplateExpression, TemplateElement, TemplateLiteral, ThisExpression, ThisTypeAnnotation, ThrowStatement, TopicReference, TryStatement, TupleTypeAnnotation, TypeAlias, TypeAnnotation, TypeCastExpression, TypeParameter, TypeParameterDeclaration, TypeParameterInstantiation, TypeofTypeAnnotation, UNARYLIKE_TYPES, UNARY_OPERATORS, UPDATE_OPERATORS, USERWHITESPACABLE_TYPES, UnaryExpression, UnionTypeAnnotation, UpdateExpression, V8IntrinsicIdentifier, VISITOR_KEYS, VariableDeclaration, VariableDeclarator, Variance, VoidPattern, VoidTypeAnnotation, WHILE_TYPES, WhileStatement, WithStatement, YieldExpression, deprecationWarning as __internal__deprecationWarning, addComment, addComments, anyTypeAnnotation, appendToMemberExpression, argumentPlaceholder, arrayExpression, arrayPattern, arrayTypeAnnotation, arrowFunctionExpression, assertAccessor, assertAnyTypeAnnotation, assertArgumentPlaceholder, assertArrayExpression, assertArrayPattern, assertArrayTypeAnnotation, assertArrowFunctionExpression, assertAssignmentExpression, assertAssignmentPattern, assertAwaitExpression, assertBigIntLiteral, assertBigIntLiteralTypeAnnotation, assertBinary, assertBinaryExpression, assertBindExpression, assertBlock, assertBlockParent, assertBlockStatement, assertBooleanLiteral, assertBooleanLiteralTypeAnnotation, assertBooleanTypeAnnotation, assertBreakStatement, assertCallExpression, assertCatchClause, assertClass, assertClassAccessorProperty, assertClassBody, assertClassDeclaration, assertClassExpression, assertClassImplements, assertClassMethod, assertClassPrivateMethod, assertClassPrivateProperty, assertClassProperty, assertCompletionStatement, assertConditional, assertConditionalExpression, assertContinueStatement, assertDebuggerStatement, assertDeclaration, assertDeclareClass, assertDeclareExportAllDeclaration, assertDeclareExportDeclaration, assertDeclareFunction, assertDeclareInterface, assertDeclareModule, assertDeclareModuleExports, assertDeclareOpaqueType, assertDeclareTypeAlias, assertDeclareVariable, assertDeclaredPredicate, assertDecorator, assertDirective, assertDirectiveLiteral, assertDoExpression, assertDoWhileStatement, assertEmptyStatement, assertEmptyTypeAnnotation, assertEnumBody, assertEnumBooleanBody, assertEnumBooleanMember, assertEnumDeclaration, assertEnumDefaultedMember, assertEnumMember, assertEnumNumberBody, assertEnumNumberMember, assertEnumStringBody, assertEnumStringMember, assertEnumSymbolBody, assertExistsTypeAnnotation, assertExportAllDeclaration, assertExportDeclaration, assertExportDefaultDeclaration, assertExportDefaultSpecifier, assertExportNamedDeclaration, assertExportNamespaceSpecifier, assertExportSpecifier, assertExpression, assertExpressionStatement, assertExpressionWrapper, assertFile, assertFlow, assertFlowBaseAnnotation, assertFlowDeclaration, assertFlowPredicate, assertFlowType, assertFor, assertForInStatement, assertForOfStatement, assertForStatement, assertForXStatement, assertFunction, assertFunctionDeclaration, assertFunctionExpression, assertFunctionParameter, assertFunctionParent, assertFunctionTypeAnnotation, assertFunctionTypeParam, assertGenericTypeAnnotation, assertIdentifier, assertIfStatement, assertImmutable, assertImport, assertImportAttribute, assertImportDeclaration, assertImportDefaultSpecifier, assertImportExpression, assertImportNamespaceSpecifier, assertImportOrExportDeclaration, assertImportSpecifier, assertIndexedAccessType, assertInferredPredicate, assertInterfaceDeclaration, assertInterfaceExtends, assertInterfaceTypeAnnotation, assertInterpreterDirective, assertIntersectionTypeAnnotation, assertJSX, assertJSXAttribute, assertJSXClosingElement, assertJSXClosingFragment, assertJSXElement, assertJSXEmptyExpression, assertJSXExpressionContainer, assertJSXFragment, assertJSXIdentifier, assertJSXMemberExpression, assertJSXNamespacedName, assertJSXOpeningElement, assertJSXOpeningFragment, assertJSXSpreadAttribute, assertJSXSpreadChild, assertJSXText, assertLVal, assertLabeledStatement, assertLiteral, assertLogicalExpression, assertLoop, assertMemberExpression, assertMetaProperty, assertMethod, assertMiscellaneous, assertMixedTypeAnnotation, assertModuleDeclaration, assertModuleExpression, assertModuleSpecifier, assertNewExpression, assertNode, assertNullLiteral, assertNullLiteralTypeAnnotation, assertNullableTypeAnnotation, assertNumberLiteral, assertNumberLiteralTypeAnnotation, assertNumberTypeAnnotation, assertNumericLiteral, assertObjectExpression, assertObjectMember, assertObjectMethod, assertObjectPattern, assertObjectProperty, assertObjectTypeAnnotation, assertObjectTypeCallProperty, assertObjectTypeIndexer, assertObjectTypeInternalSlot, assertObjectTypeProperty, assertObjectTypeSpreadProperty, assertOpaqueType, assertOptionalCallExpression, assertOptionalIndexedAccessType, assertOptionalMemberExpression, assertParenthesizedExpression, assertPattern, assertPatternLike, assertPlaceholder, assertPrivate, assertPrivateName, assertProgram, assertProperty, assertPureish, assertQualifiedTypeIdentifier, assertRegExpLiteral, assertRegexLiteral, assertRestElement, assertRestProperty, assertReturnStatement, assertScopable, assertSequenceExpression, assertSpreadElement, assertSpreadProperty, assertStandardized, assertStatement, assertStaticBlock, assertStringLiteral, assertStringLiteralTypeAnnotation, assertStringTypeAnnotation, assertSuper, assertSwitchCase, assertSwitchStatement, assertSymbolTypeAnnotation, assertTSAnyKeyword, assertTSArrayType, assertTSAsExpression, assertTSBaseType, assertTSBigIntKeyword, assertTSBooleanKeyword, assertTSCallSignatureDeclaration, assertTSClassImplements, assertTSConditionalType, assertTSConstructSignatureDeclaration, assertTSConstructorType, assertTSDeclareFunction, assertTSDeclareMethod, assertTSEntityName, assertTSEnumBody, assertTSEnumDeclaration, assertTSEnumMember, assertTSExportAssignment, assertTSExternalModuleReference, assertTSFunctionType, assertTSImportEqualsDeclaration, assertTSImportType, assertTSIndexSignature, assertTSIndexedAccessType, assertTSInferType, assertTSInstantiationExpression, assertTSInterfaceBody, assertTSInterfaceDeclaration, assertTSInterfaceHeritage, assertTSIntersectionType, assertTSIntrinsicKeyword, assertTSLiteralType, assertTSMappedType, assertTSMethodSignature, assertTSModuleBlock, assertTSModuleDeclaration, assertTSNamedTupleMember, assertTSNamespaceExportDeclaration, assertTSNeverKeyword, assertTSNonNullExpression, assertTSNullKeyword, assertTSNumberKeyword, assertTSObjectKeyword, assertTSOptionalType, assertTSParameterProperty, assertTSParenthesizedType, assertTSPropertySignature, assertTSQualifiedName, assertTSRestType, assertTSSatisfiesExpression, assertTSStringKeyword, assertTSSymbolKeyword, assertTSTemplateLiteralType, assertTSThisType, assertTSTupleType, assertTSType, assertTSTypeAliasDeclaration, assertTSTypeAnnotation, assertTSTypeAssertion, assertTSTypeElement, assertTSTypeLiteral, assertTSTypeOperator, assertTSTypeParameter, assertTSTypeParameterDeclaration, assertTSTypeParameterInstantiation, assertTSTypePredicate, assertTSTypeQuery, assertTSTypeReference, assertTSUndefinedKeyword, assertTSUnionType, assertTSUnknownKeyword, assertTSVoidKeyword, assertTaggedTemplateExpression, assertTemplateElement, assertTemplateLiteral, assertTerminatorless, assertThisExpression, assertThisTypeAnnotation, assertThrowStatement, assertTopicReference, assertTryStatement, assertTupleTypeAnnotation, assertTypeAlias, assertTypeAnnotation, assertTypeCastExpression, assertTypeParameter, assertTypeParameterDeclaration, assertTypeParameterInstantiation, assertTypeScript, assertTypeofTypeAnnotation, assertUnaryExpression, assertUnaryLike, assertUnionTypeAnnotation, assertUpdateExpression, assertUserWhitespacable, assertV8IntrinsicIdentifier, assertVariableDeclaration, assertVariableDeclarator, assertVariance, assertVoidPattern, assertVoidTypeAnnotation, assertWhile, assertWhileStatement, assertWithStatement, assertYieldExpression, assignmentExpression, assignmentPattern, awaitExpression, bigIntLiteral, bigIntLiteralTypeAnnotation, binaryExpression, bindExpression, blockStatement, booleanLiteral, booleanLiteralTypeAnnotation, booleanTypeAnnotation, breakStatement, buildMatchMemberExpression, buildUndefinedNode, callExpression, catchClause, classAccessorProperty, classBody, classDeclaration, classExpression, classImplements, classMethod, classPrivateMethod, classPrivateProperty, classProperty, clone, cloneDeep, cloneDeepWithoutLoc, cloneNode, cloneWithoutLoc, conditionalExpression, continueStatement, createFlowUnionType, createTSUnionType, createTypeAnnotationBasedOnTypeof, createFlowUnionType as createUnionTypeAnnotation, debuggerStatement, declareClass, declareExportAllDeclaration, declareExportDeclaration, declareFunction, declareInterface, declareModule, declareModuleExports, declareOpaqueType, declareTypeAlias, declareVariable, declaredPredicate, decorator, directive, directiveLiteral, doExpression, doWhileStatement, emptyStatement, emptyTypeAnnotation, ensureBlock, enumBooleanBody, enumBooleanMember, enumDeclaration, enumDefaultedMember, enumNumberBody, enumNumberMember, enumStringBody, enumStringMember, enumSymbolBody, existsTypeAnnotation, exportAllDeclaration, exportDefaultDeclaration, exportDefaultSpecifier, exportNamedDeclaration, exportNamespaceSpecifier, exportSpecifier, expressionStatement, file, forInStatement, forOfStatement, forStatement, functionDeclaration, functionExpression, functionTypeAnnotation, functionTypeParam, genericTypeAnnotation, getAssignmentIdentifiers, getBindingIdentifiers, getFunctionName, getOuterBindingIdentifiers, identifier, ifStatement, _import as import, importAttribute, importDeclaration, importDefaultSpecifier, importExpression, importNamespaceSpecifier, importSpecifier, indexedAccessType, inferredPredicate, inheritInnerComments, inheritLeadingComments, inheritTrailingComments, inherits, inheritsComments, interfaceDeclaration, interfaceExtends, interfaceTypeAnnotation, interpreterDirective, intersectionTypeAnnotation, is, isAccessor, isAnyTypeAnnotation, isArgumentPlaceholder, isArrayExpression, isArrayPattern, isArrayTypeAnnotation, isArrowFunctionExpression, isAssignmentExpression, isAssignmentPattern, isAwaitExpression, isBigIntLiteral, isBigIntLiteralTypeAnnotation, isBinary, isBinaryExpression, isBindExpression, isBinding, isBlock, isBlockParent, isBlockScoped, isBlockStatement, isBooleanLiteral, isBooleanLiteralTypeAnnotation, isBooleanTypeAnnotation, isBreakStatement, isCallExpression, isCatchClause, isClass, isClassAccessorProperty, isClassBody, isClassDeclaration, isClassExpression, isClassImplements, isClassMethod, isClassPrivateMethod, isClassPrivateProperty, isClassProperty, isCompletionStatement, isConditional, isConditionalExpression, isContinueStatement, isDebuggerStatement, isDeclaration, isDeclareClass, isDeclareExportAllDeclaration, isDeclareExportDeclaration, isDeclareFunction, isDeclareInterface, isDeclareModule, isDeclareModuleExports, isDeclareOpaqueType, isDeclareTypeAlias, isDeclareVariable, isDeclaredPredicate, isDecorator, isDirective, isDirectiveLiteral, isDoExpression, isDoWhileStatement, isEmptyStatement, isEmptyTypeAnnotation, isEnumBody, isEnumBooleanBody, isEnumBooleanMember, isEnumDeclaration, isEnumDefaultedMember, isEnumMember, isEnumNumberBody, isEnumNumberMember, isEnumStringBody, isEnumStringMember, isEnumSymbolBody, isExistsTypeAnnotation, isExportAllDeclaration, isExportDeclaration, isExportDefaultDeclaration, isExportDefaultSpecifier, isExportNamedDeclaration, isExportNamespaceSpecifier, isExportSpecifier, isExpression, isExpressionStatement, isExpressionWrapper, isFile, isFlow, isFlowBaseAnnotation, isFlowDeclaration, isFlowPredicate, isFlowType, isFor, isForInStatement, isForOfStatement, isForStatement, isForXStatement, isFunction, isFunctionDeclaration, isFunctionExpression, isFunctionParameter, isFunctionParent, isFunctionTypeAnnotation, isFunctionTypeParam, isGenericTypeAnnotation, isIdentifier, isIfStatement, isImmutable, isImport, isImportAttribute, isImportDeclaration, isImportDefaultSpecifier, isImportExpression, isImportNamespaceSpecifier, isImportOrExportDeclaration, isImportSpecifier, isIndexedAccessType, isInferredPredicate, isInterfaceDeclaration, isInterfaceExtends, isInterfaceTypeAnnotation, isInterpreterDirective, isIntersectionTypeAnnotation, isJSX, isJSXAttribute, isJSXClosingElement, isJSXClosingFragment, isJSXElement, isJSXEmptyExpression, isJSXExpressionContainer, isJSXFragment, isJSXIdentifier, isJSXMemberExpression, isJSXNamespacedName, isJSXOpeningElement, isJSXOpeningFragment, isJSXSpreadAttribute, isJSXSpreadChild, isJSXText, isLVal, isLabeledStatement, isLet, isLiteral, isLogicalExpression, isLoop, isMemberExpression, isMetaProperty, isMethod, isMiscellaneous, isMixedTypeAnnotation, isModuleDeclaration, isModuleExpression, isModuleSpecifier, isNewExpression, isNode, isNodesEquivalent, isNullLiteral, isNullLiteralTypeAnnotation, isNullableTypeAnnotation, isNumberLiteral, isNumberLiteralTypeAnnotation, isNumberTypeAnnotation, isNumericLiteral, isObjectExpression, isObjectMember, isObjectMethod, isObjectPattern, isObjectProperty, isObjectTypeAnnotation, isObjectTypeCallProperty, isObjectTypeIndexer, isObjectTypeInternalSlot, isObjectTypeProperty, isObjectTypeSpreadProperty, isOpaqueType, isOptionalCallExpression, isOptionalIndexedAccessType, isOptionalMemberExpression, isParenthesizedExpression, isPattern, isPatternLike, isPlaceholder, isPlaceholderType, isPrivate, isPrivateName, isProgram, isProperty, isPureish, isQualifiedTypeIdentifier, isReferenced, isRegExpLiteral, isRegexLiteral, isRestElement, isRestProperty, isReturnStatement, isScopable, isScope, isSequenceExpression, isSpecifierDefault, isSpreadElement, isSpreadProperty, isStandardized, isStatement, isStaticBlock, isStringLiteral, isStringLiteralTypeAnnotation, isStringTypeAnnotation, isSuper, isSwitchCase, isSwitchStatement, isSymbolTypeAnnotation, isTSAnyKeyword, isTSArrayType, isTSAsExpression, isTSBaseType, isTSBigIntKeyword, isTSBooleanKeyword, isTSCallSignatureDeclaration, isTSClassImplements, isTSConditionalType, isTSConstructSignatureDeclaration, isTSConstructorType, isTSDeclareFunction, isTSDeclareMethod, isTSEntityName, isTSEnumBody, isTSEnumDeclaration, isTSEnumMember, isTSExportAssignment, isTSExternalModuleReference, isTSFunctionType, isTSImportEqualsDeclaration, isTSImportType, isTSIndexSignature, isTSIndexedAccessType, isTSInferType, isTSInstantiationExpression, isTSInterfaceBody, isTSInterfaceDeclaration, isTSInterfaceHeritage, isTSIntersectionType, isTSIntrinsicKeyword, isTSLiteralType, isTSMappedType, isTSMethodSignature, isTSModuleBlock, isTSModuleDeclaration, isTSNamedTupleMember, isTSNamespaceExportDeclaration, isTSNeverKeyword, isTSNonNullExpression, isTSNullKeyword, isTSNumberKeyword, isTSObjectKeyword, isTSOptionalType, isTSParameterProperty, isTSParenthesizedType, isTSPropertySignature, isTSQualifiedName, isTSRestType, isTSSatisfiesExpression, isTSStringKeyword, isTSSymbolKeyword, isTSTemplateLiteralType, isTSThisType, isTSTupleType, isTSType, isTSTypeAliasDeclaration, isTSTypeAnnotation, isTSTypeAssertion, isTSTypeElement, isTSTypeLiteral, isTSTypeOperator, isTSTypeParameter, isTSTypeParameterDeclaration, isTSTypeParameterInstantiation, isTSTypePredicate, isTSTypeQuery, isTSTypeReference, isTSUndefinedKeyword, isTSUnionType, isTSUnknownKeyword, isTSVoidKeyword, isTaggedTemplateExpression, isTemplateElement, isTemplateLiteral, isTerminatorless, isThisExpression, isThisTypeAnnotation, isThrowStatement, isTopicReference, isTryStatement, isTupleTypeAnnotation, isType, isTypeAlias, isTypeAnnotation, isTypeCastExpression, isTypeParameter, isTypeParameterDeclaration, isTypeParameterInstantiation, isTypeScript, isTypeofTypeAnnotation, isUnaryExpression, isUnaryLike, isUnionTypeAnnotation, isUpdateExpression, isUserWhitespacable, isV8IntrinsicIdentifier, isValidES3Identifier, isValidIdentifier, isVar, isVariableDeclaration, isVariableDeclarator, isVariance, isVoidPattern, isVoidTypeAnnotation, isWhile, isWhileStatement, isWithStatement, isYieldExpression, jsxAttribute, jsxClosingElement, jsxClosingFragment, jsxElement, jsxEmptyExpression, jsxExpressionContainer, jsxFragment, jsxIdentifier, jsxMemberExpression, jsxNamespacedName, jsxOpeningElement, jsxOpeningFragment, jsxSpreadAttribute, jsxSpreadChild, jsxText, labeledStatement, logicalExpression, matchesPattern, memberExpression, metaProperty, mixedTypeAnnotation, moduleExpression, newExpression, nullLiteral, nullLiteralTypeAnnotation, nullableTypeAnnotation, NumberLiteral as numberLiteral, numberLiteralTypeAnnotation, numberTypeAnnotation, numericLiteral, objectExpression, objectMethod, objectPattern, objectProperty, objectTypeAnnotation, objectTypeCallProperty, objectTypeIndexer, objectTypeInternalSlot, objectTypeProperty, objectTypeSpreadProperty, opaqueType, optionalCallExpression, optionalIndexedAccessType, optionalMemberExpression, parenthesizedExpression, placeholder, prependToMemberExpression, privateName, program, qualifiedTypeIdentifier, react, regExpLiteral, RegexLiteral as regexLiteral, removeComments, removeProperties, removePropertiesDeep, removeTypeDuplicates$1 as removeTypeDuplicates, restElement, RestProperty as restProperty, returnStatement, sequenceExpression, shallowEqual, spreadElement, SpreadProperty as spreadProperty, staticBlock, stringLiteral, stringLiteralTypeAnnotation, stringTypeAnnotation, _super as super, switchCase, switchStatement, symbolTypeAnnotation, taggedTemplateExpression, templateElement, templateLiteral, thisExpression, thisTypeAnnotation, throwStatement, toBindingIdentifierName, toBlock, toComputedKey, toExpression, toIdentifier, toKeyAlias, toStatement, topicReference, traverse, traverseFast, tryStatement, tsAnyKeyword, tsArrayType, tsAsExpression, tsBigIntKeyword, tsBooleanKeyword, tsCallSignatureDeclaration, tsClassImplements, tsConditionalType, tsConstructSignatureDeclaration, tsConstructorType, tsDeclareFunction, tsDeclareMethod, tsEnumBody, tsEnumDeclaration, tsEnumMember, tsExportAssignment, tsExternalModuleReference, tsFunctionType, tsImportEqualsDeclaration, tsImportType, tsIndexSignature, tsIndexedAccessType, tsInferType, tsInstantiationExpression, tsInterfaceBody, tsInterfaceDeclaration, tsInterfaceHeritage, tsIntersectionType, tsIntrinsicKeyword, tsLiteralType, tsMappedType, tsMethodSignature, tsModuleBlock, tsModuleDeclaration, tsNamedTupleMember, tsNamespaceExportDeclaration, tsNeverKeyword, tsNonNullExpression, tsNullKeyword, tsNumberKeyword, tsObjectKeyword, tsOptionalType, tsParameterProperty, tsParenthesizedType, tsPropertySignature, tsQualifiedName, tsRestType, tsSatisfiesExpression, tsStringKeyword, tsSymbolKeyword, tsTemplateLiteralType, tsThisType, tsTupleType, tsTypeAliasDeclaration, tsTypeAnnotation, tsTypeAssertion, tsTypeLiteral, tsTypeOperator, tsTypeParameter, tsTypeParameterDeclaration, tsTypeParameterInstantiation, tsTypePredicate, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, tsUnknownKeyword, tsVoidKeyword, tupleTypeAnnotation, typeAlias, typeAnnotation, typeCastExpression, typeParameter, typeParameterDeclaration, typeParameterInstantiation, typeofTypeAnnotation, unaryExpression, unionTypeAnnotation, updateExpression, v8IntrinsicIdentifier, validate$1 as validate, valueToNode, variableDeclaration, variableDeclarator, variance, voidPattern, voidTypeAnnotation, whileStatement, withStatement, yieldExpression };\n//# sourceMappingURL=index.js.map\n","[\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"eval\",\n \"globalThis\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"undefined\",\n \"unescape\"\n]\n","[\n \"AggregateError\",\n \"Array\",\n \"ArrayBuffer\",\n \"Atomics\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"Error\",\n \"EvalError\",\n \"FinalizationRegistry\",\n \"Float16Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Intl\",\n \"Iterator\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"Promise\",\n \"Proxy\",\n \"RangeError\",\n \"ReferenceError\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"SharedArrayBuffer\",\n \"String\",\n \"Symbol\",\n \"SyntaxError\",\n \"TypeError\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"URIError\",\n \"WeakMap\",\n \"WeakRef\",\n \"WeakSet\"\n]\n","// src/vlq.ts\nvar comma = \",\".charCodeAt(0);\nvar semicolon = \";\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = new Uint8Array(64);\nvar charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n return value;\n}\nfunction decodeSign(num) {\n return num & 1 ? -2147483648 | -(num >>> 1) : num >>> 1;\n}\nfunction encodeInteger(builder, num) {\n do {\n let clamped = num & 31;\n num >>>= 5;\n if (num > 0) clamped |= 32;\n builder.write(intToChar[clamped]);\n } while (num > 0);\n}\nfunction encodeSign(num) {\n return num < 0 ? -num << 1 | 1 : num << 1;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n\n// src/strings.ts\nvar bufLength = 1024 * 16;\nvar td = typeof TextDecoder !== \"undefined\" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== \"undefined\" ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n }\n} : {\n decode(buf) {\n let out = \"\";\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n }\n};\nvar StringWriter = class {\n constructor() {\n this.pos = 0;\n this.out = \"\";\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n};\nvar StringReader = class {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n};\n\n// src/scopes.ts\nvar EMPTY = [];\nfunction decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line += decodeSign(decodeInteger(reader));\n const column = decodeSign(decodeInteger(reader));\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeSign(decodeInteger(reader));\n const fields = decodeSign(decodeInteger(reader));\n const hasName = fields & 1;\n const scope = hasName ? [line, column, 0, 0, kind, decodeSign(decodeInteger(reader))] : [line, column, 0, 0, kind];\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeSign(decodeInteger(reader));\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n}\nfunction encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n}\nfunction _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0) writer.write(comma);\n encodeInteger(writer, encodeSign(startLine - state[0]));\n state[0] = startLine;\n encodeInteger(writer, encodeSign(startColumn));\n encodeInteger(writer, encodeSign(kind));\n const fields = scope.length === 6 ? 1 : 0;\n encodeInteger(writer, encodeSign(fields));\n if (scope.length === 6) encodeInteger(writer, encodeSign(scope[5]));\n for (const v of vars) {\n encodeInteger(writer, encodeSign(v));\n }\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n encodeInteger(writer, encodeSign(endLine - state[0]));\n state[0] = endLine;\n encodeInteger(writer, encodeSign(endColumn));\n return index;\n}\nfunction decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(\";\");\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn += decodeSign(decodeInteger(reader));\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeSign(decodeInteger(reader));\n const hasDefinition = fields & 1;\n const hasCallsite = fields & 2;\n const hasScope = fields & 4;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = definitionSourcesIndex + decodeSign(decodeInteger(reader));\n definitionScopeIndex = decodeSign(decodeInteger(reader)) + (definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0);\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n } else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex += decodeSign(decodeInteger(reader));\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = (sameSource ? callsiteLine : 0) + decodeSign(decodeInteger(reader));\n callsiteColumn = (sameSource && prevLine === callsiteLine ? callsiteColumn : 0) + decodeSign(decodeInteger(reader));\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeSign(decodeInteger(reader));\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeSign(decodeInteger(reader))]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine += decodeSign(decodeInteger(reader));\n bindingColumn = (bindingLine === prevBl ? bindingColumn : 0) + decodeSign(decodeInteger(reader));\n const expression = decodeSign(decodeInteger(reader));\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n}\nfunction encodeGeneratedRanges(ranges) {\n if (ranges.length === 0) return \"\";\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n}\nfunction _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings\n } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n encodeInteger(writer, encodeSign(range[1] - state[1]));\n state[1] = range[1];\n const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);\n encodeInteger(writer, encodeSign(fields));\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n encodeInteger(writer, encodeSign(sourcesIndex - state[2]));\n state[2] = sourcesIndex;\n encodeInteger(writer, encodeSign(scopesIndex - state[3]));\n state[3] = scopesIndex;\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n encodeInteger(writer, encodeSign(sourcesIndex - state[4]));\n state[4] = sourcesIndex;\n encodeInteger(writer, encodeSign(callLine - state[5]));\n state[5] = callLine;\n encodeInteger(writer, encodeSign(callColumn - state[6]));\n state[6] = callColumn;\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, encodeSign(-binding.length));\n const expression = binding[0][0];\n encodeInteger(writer, encodeSign(expression));\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n encodeInteger(writer, encodeSign(expRange[1] - bindingStartLine));\n bindingStartLine = expRange[1];\n encodeInteger(writer, encodeSign(expRange[2] - bindingStartColumn));\n bindingStartColumn = expRange[2];\n encodeInteger(writer, encodeSign(expRange[0]));\n }\n }\n }\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n encodeInteger(writer, encodeSign(endColumn - state[1]));\n state[1] = endColumn;\n return index;\n}\nfunction catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n\n// src/range-mappings.ts\nfunction decodeRangeMappings(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const rangeMappings = [];\n do {\n const semi = reader.indexOf(\";\");\n const indices = [];\n let index = 0;\n while (reader.pos < semi) {\n index += decodeInteger(reader);\n indices.push(index);\n }\n rangeMappings.push(indices);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return rangeMappings;\n}\nfunction encodeRangeMappings(decoded) {\n if (decoded.length === 0) return \"\";\n const writer = new StringWriter();\n for (let i = 0; i < decoded.length; i++) {\n const indices = decoded[i];\n if (i > 0) writer.write(semicolon);\n let index = 0;\n for (let j = 0; j < indices.length; j++) {\n const offset = indices[j];\n encodeInteger(writer, offset - index);\n index = offset;\n }\n }\n return writer.flush();\n}\n\n// src/sourcemap-codec.ts\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(\";\");\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn += decodeSign(decodeInteger(reader));\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex += decodeSign(decodeInteger(reader));\n sourceLine += decodeSign(decodeInteger(reader));\n sourceColumn += decodeSign(decodeInteger(reader));\n if (hasMoreVlq(reader, semi)) {\n namesIndex += decodeSign(decodeInteger(reader));\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n encodeInteger(writer, encodeSign(segment[0] - genColumn));\n genColumn = segment[0];\n if (segment.length === 1) continue;\n encodeInteger(writer, encodeSign(segment[1] - sourcesIndex));\n encodeInteger(writer, encodeSign(segment[2] - sourceLine));\n encodeInteger(writer, encodeSign(segment[3] - sourceColumn));\n sourcesIndex = segment[1];\n sourceLine = segment[2];\n sourceColumn = segment[3];\n if (segment.length === 4) continue;\n encodeInteger(writer, encodeSign(segment[4] - namesIndex));\n namesIndex = segment[4];\n }\n }\n return writer.flush();\n}\nexport {\n decode,\n decodeGeneratedRanges,\n decodeOriginalScopes,\n decodeRangeMappings,\n encode,\n encodeGeneratedRanges,\n encodeOriginalScopes,\n encodeRangeMappings\n};\n//# sourceMappingURL=sourcemap-codec.mjs.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.resolveURI = factory());\n})(this, (function () { 'use strict';\n\n // Matches the scheme of a URL, eg \"http://\"\n const schemeRegex = /^[\\w+.-]+:\\/\\//;\n /**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\n const urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n /**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\n const fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n function isAbsoluteUrl(input) {\n return schemeRegex.test(input);\n }\n function isSchemeRelativeUrl(input) {\n return input.startsWith('//');\n }\n function isAbsolutePath(input) {\n return input.startsWith('/');\n }\n function isFileUrl(input) {\n return input.startsWith('file:');\n }\n function isRelative(input) {\n return /^[.?#]/.test(input);\n }\n function parseAbsoluteUrl(input) {\n const match = urlRegex.exec(input);\n return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');\n }\n function parseFileUrl(input) {\n const match = fileRegex.exec(input);\n const path = match[2];\n return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');\n }\n function makeUrl(scheme, user, host, port, path, query, hash) {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: 7 /* Absolute */,\n };\n }\n function parseUrl(input) {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = 6 /* SchemeRelative */;\n return url;\n }\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = 5 /* AbsolutePath */;\n return url;\n }\n if (isFileUrl(input))\n return parseFileUrl(input);\n if (isAbsoluteUrl(input))\n return parseAbsoluteUrl(input);\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? 3 /* Query */\n : input.startsWith('#')\n ? 2 /* Hash */\n : 4 /* RelativePath */\n : 1 /* Empty */;\n return url;\n }\n function stripPathFilename(path) {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..'))\n return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n }\n function mergePaths(url, base) {\n normalizePath(base, base.type);\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n }\n else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n }\n /**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\n function normalizePath(url, type) {\n const rel = type <= 4 /* RelativePath */;\n const pieces = url.path.split('/');\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n // A current directory, which we can always drop.\n if (piece === '.')\n continue;\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n }\n else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n }\n /**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\n function resolve(input, base) {\n if (!input && !base)\n return '';\n const url = parseUrl(input);\n let inputType = url.type;\n if (base && inputType !== 7 /* Absolute */) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n switch (inputType) {\n case 1 /* Empty */:\n url.hash = baseUrl.hash;\n // fall through\n case 2 /* Hash */:\n url.query = baseUrl.query;\n // fall through\n case 3 /* Query */:\n case 4 /* RelativePath */:\n mergePaths(url, baseUrl);\n // fall through\n case 5 /* AbsolutePath */:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n case 6 /* SchemeRelative */:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType)\n inputType = baseType;\n }\n normalizePath(url, inputType);\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n case 2 /* Hash */:\n case 3 /* Query */:\n return queryHash;\n case 4 /* RelativePath */: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n if (!path)\n return queryHash || '.';\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n return path + queryHash;\n }\n case 5 /* AbsolutePath */:\n return url.path + queryHash;\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n }\n\n return resolve;\n\n}));\n//# sourceMappingURL=resolve-uri.umd.js.map\n","// src/trace-mapping.ts\nimport { encode, decode } from \"@jridgewell/sourcemap-codec\";\n\n// src/resolve.ts\nimport resolveUri from \"@jridgewell/resolve-uri\";\n\n// src/strip-filename.ts\nfunction stripFilename(path) {\n if (!path) return \"\";\n const index = path.lastIndexOf(\"/\");\n return path.slice(0, index + 1);\n}\n\n// src/resolve.ts\nfunction resolver(mapUrl, sourceRoot) {\n const from = stripFilename(mapUrl);\n const prefix = sourceRoot ? sourceRoot + \"/\" : \"\";\n return (source) => resolveUri(prefix + (source || \"\"), from);\n}\n\n// src/sourcemap-segment.ts\nvar COLUMN = 0;\nvar SOURCES_INDEX = 1;\nvar SOURCE_LINE = 2;\nvar SOURCE_COLUMN = 3;\nvar NAMES_INDEX = 4;\nvar REV_GENERATED_LINE = 1;\nvar REV_GENERATED_COLUMN = 2;\n\n// src/sort.ts\nfunction maybeSort(mappings, owned) {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length) return mappings;\n if (!owned) mappings = mappings.slice();\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\nfunction nextUnsortedSegmentLine(mappings, start) {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i])) return i;\n }\n return mappings.length;\n}\nfunction isSorted(line) {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\nfunction sortSegments(line, owned) {\n if (!owned) line = line.slice();\n return line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[COLUMN] - b[COLUMN];\n}\n\n// src/by-source.ts\nfunction buildBySources(decoded, memos) {\n const sources = memos.map(() => []);\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1) continue;\n const sourceIndex2 = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n const source = sources[sourceIndex2];\n const segs = source[sourceLine] || (source[sourceLine] = []);\n segs.push([sourceColumn, i, seg[COLUMN]]);\n }\n }\n for (let i = 0; i < sources.length; i++) {\n const source = sources[i];\n for (let j = 0; j < source.length; j++) {\n const line = source[j];\n if (line) line.sort(sortComparator);\n }\n }\n return sources;\n}\n\n// src/binary-search.ts\nvar found = false;\nfunction binarySearch(haystack, needle, low, high) {\n while (low <= high) {\n const mid = low + (high - low >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n if (cmp === 0) {\n found = true;\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n found = false;\n return low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\nfunction lowerBound(haystack, needle, index) {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\nfunction memoizedState() {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1\n };\n}\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n const { lastKey, lastNeedle, lastIndex } = state;\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n if (needle >= lastNeedle) {\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n return state.lastIndex = binarySearch(haystack, needle, low, high);\n}\n\n// src/types.ts\nfunction parse(map) {\n return typeof map === \"string\" ? JSON.parse(map) : map;\n}\n\n// src/flatten-map.ts\nvar FlattenMap = function(map, mapUrl) {\n const parsed = parse(map);\n if (!(\"sections\" in parsed)) {\n return new TraceMap(parsed, mapUrl);\n }\n const mappings = [];\n const sources = [];\n const sourcesContent = [];\n const names = [];\n const ignoreList = [];\n recurse(\n parsed,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n ignoreList,\n 0,\n 0,\n Infinity,\n Infinity\n );\n const joined = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n ignoreList\n };\n return presortedDecodedMap(joined);\n};\nfunction recurse(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) {\n const { sections } = input;\n for (let i = 0; i < sections.length; i++) {\n const { map, offset } = sections[i];\n let sl = stopLine;\n let sc = stopColumn;\n if (i + 1 < sections.length) {\n const nextOffset = sections[i + 1].offset;\n sl = Math.min(stopLine, lineOffset + nextOffset.line);\n if (sl === stopLine) {\n sc = Math.min(stopColumn, columnOffset + nextOffset.column);\n } else if (sl < stopLine) {\n sc = columnOffset + nextOffset.column;\n }\n }\n addSection(\n map,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n ignoreList,\n lineOffset + offset.line,\n columnOffset + offset.column,\n sl,\n sc\n );\n }\n}\nfunction addSection(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) {\n const parsed = parse(input);\n if (\"sections\" in parsed) return recurse(...arguments);\n const map = new TraceMap(parsed, mapUrl);\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map;\n append(sources, resolvedSources);\n append(names, map.names);\n if (contents) append(sourcesContent, contents);\n else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);\n if (ignores) for (let i = 0; i < ignores.length; i++) ignoreList.push(ignores[i] + sourcesOffset);\n for (let i = 0; i < decoded.length; i++) {\n const lineI = lineOffset + i;\n if (lineI > stopLine) return;\n const out = getLine(mappings, lineI);\n const cOffset = i === 0 ? columnOffset : 0;\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n if (lineI === stopLine && column >= stopColumn) return;\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n out.push(\n seg.length === 4 ? [column, sourcesIndex, sourceLine, sourceColumn] : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]\n );\n }\n }\n}\nfunction append(arr, other) {\n for (let i = 0; i < other.length; i++) arr.push(other[i]);\n}\nfunction getLine(arr, index) {\n for (let i = arr.length; i <= index; i++) arr[i] = [];\n return arr[index];\n}\n\n// src/trace-mapping.ts\nvar LINE_GTR_ZERO = \"`line` must be greater than 0 (lines start at line 1)\";\nvar COL_GTR_EQ_ZERO = \"`column` must be greater than or equal to 0 (columns start at column 0)\";\nvar LEAST_UPPER_BOUND = -1;\nvar GREATEST_LOWER_BOUND = 1;\nvar TraceMap = class {\n constructor(map, mapUrl) {\n const isString = typeof map === \"string\";\n if (!isString && map._decodedMemo) return map;\n const parsed = parse(map);\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names || [];\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || void 0;\n const resolve = resolver(mapUrl, sourceRoot);\n this.resolvedSources = sources.map(resolve);\n const { mappings } = parsed;\n if (typeof mappings === \"string\") {\n this._encoded = mappings;\n this._decoded = void 0;\n } else if (Array.isArray(mappings)) {\n this._encoded = void 0;\n this._decoded = maybeSort(mappings, isString);\n } else if (parsed.sections) {\n throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);\n } else {\n throw new Error(`invalid source map: ${JSON.stringify(parsed)}`);\n }\n this._decodedMemo = memoizedState();\n this._bySources = void 0;\n this._bySourceMemos = void 0;\n }\n};\nfunction cast(map) {\n return map;\n}\nfunction encodedMappings(map) {\n var _a, _b;\n return (_b = (_a = cast(map))._encoded) != null ? _b : _a._encoded = encode(cast(map)._decoded);\n}\nfunction decodedMappings(map) {\n var _a;\n return (_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded));\n}\nfunction traceSegment(map, line, column) {\n const decoded = decodedMappings(map);\n if (line >= decoded.length) return null;\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n GREATEST_LOWER_BOUND\n );\n return index === -1 ? null : segments[index];\n}\nfunction originalPositionFor(map, needle) {\n let { line, column, bias } = needle;\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n const decoded = decodedMappings(map);\n if (line >= decoded.length) return OMapping(null, null, null, null);\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND\n );\n if (index === -1) return OMapping(null, null, null, null);\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null\n );\n}\nfunction generatedPositionFor(map, needle) {\n const { source, line, column, bias } = needle;\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n}\nfunction allGeneratedPositionsFor(map, needle) {\n const { source, line, column, bias } = needle;\n return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n}\nfunction eachMapping(map, cb) {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5) name = names[seg[4]];\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name\n });\n }\n }\n}\nfunction sourceIndex(map, source) {\n const { sources, resolvedSources } = map;\n let index = sources.indexOf(source);\n if (index === -1) index = resolvedSources.indexOf(source);\n return index;\n}\nfunction sourceContentFor(map, source) {\n const { sourcesContent } = map;\n if (sourcesContent == null) return null;\n const index = sourceIndex(map, source);\n return index === -1 ? null : sourcesContent[index];\n}\nfunction isIgnored(map, source) {\n const { ignoreList } = map;\n if (ignoreList == null) return false;\n const index = sourceIndex(map, source);\n return index === -1 ? false : ignoreList.includes(index);\n}\nfunction presortedDecodedMap(map, mapUrl) {\n const tracer = new TraceMap(clone(map, []), mapUrl);\n cast(tracer)._decoded = map.mappings;\n return tracer;\n}\nfunction decodedMap(map) {\n return clone(map, decodedMappings(map));\n}\nfunction encodedMap(map) {\n return clone(map, encodedMappings(map));\n}\nfunction clone(map, mappings) {\n return {\n version: map.version,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings,\n ignoreList: map.ignoreList || map.x_google_ignoreList\n };\n}\nfunction OMapping(source, line, column, name) {\n return { source, line, column, name };\n}\nfunction GMapping(line, column) {\n return { line, column };\n}\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (found) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\nfunction sliceGeneratedPositions(segments, memo, line, column, bias) {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n if (!found && bias === LEAST_UPPER_BOUND) min++;\n if (min === -1 || min === segments.length) return [];\n const matchedColumn = found ? column : segments[min][COLUMN];\n if (!found) min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\nfunction generatedPosition(map, source, line, column, bias, all) {\n var _a, _b;\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n const { sources, resolvedSources } = map;\n let sourceIndex2 = sources.indexOf(source);\n if (sourceIndex2 === -1) sourceIndex2 = resolvedSources.indexOf(source);\n if (sourceIndex2 === -1) return all ? [] : GMapping(null, null);\n const bySourceMemos = (_a = cast(map))._bySourceMemos || (_a._bySourceMemos = sources.map(memoizedState));\n const generated = (_b = cast(map))._bySources || (_b._bySources = buildBySources(decodedMappings(map), bySourceMemos));\n const segments = generated[sourceIndex2][line];\n if (segments == null) return all ? [] : GMapping(null, null);\n const memo = bySourceMemos[sourceIndex2];\n if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1) return GMapping(null, null);\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n}\nexport {\n FlattenMap as AnyMap,\n FlattenMap,\n GREATEST_LOWER_BOUND,\n LEAST_UPPER_BOUND,\n TraceMap,\n allGeneratedPositionsFor,\n decodedMap,\n decodedMappings,\n eachMapping,\n encodedMap,\n encodedMappings,\n generatedPositionFor,\n isIgnored,\n originalPositionFor,\n presortedDecodedMap,\n sourceContentFor,\n traceSegment\n};\n//# sourceMappingURL=trace-mapping.mjs.map\n","// src/set-array.ts\nvar SetArray = class {\n constructor() {\n this._indexes = { __proto__: null };\n this.array = [];\n }\n};\nfunction cast(set) {\n return set;\n}\nfunction get(setarr, key) {\n return cast(setarr)._indexes[key];\n}\nfunction put(setarr, key) {\n const index = get(setarr, key);\n if (index !== void 0) return index;\n const { array, _indexes: indexes } = cast(setarr);\n const length = array.push(key);\n return indexes[key] = length - 1;\n}\nfunction remove(setarr, key) {\n const index = get(setarr, key);\n if (index === void 0) return;\n const { array, _indexes: indexes } = cast(setarr);\n for (let i = index + 1; i < array.length; i++) {\n const k = array[i];\n array[i - 1] = k;\n indexes[k]--;\n }\n indexes[key] = void 0;\n array.pop();\n}\n\n// src/gen-mapping.ts\nimport {\n encode\n} from \"@jridgewell/sourcemap-codec\";\nimport { TraceMap, decodedMappings } from \"@jridgewell/trace-mapping\";\n\n// src/sourcemap-segment.ts\nvar COLUMN = 0;\nvar SOURCES_INDEX = 1;\nvar SOURCE_LINE = 2;\nvar SOURCE_COLUMN = 3;\nvar NAMES_INDEX = 4;\n\n// src/gen-mapping.ts\nvar NO_NAME = -1;\nvar GenMapping = class {\n constructor({ file, sourceRoot } = {}) {\n this._names = new SetArray();\n this._sources = new SetArray();\n this._sourcesContent = [];\n this._mappings = [];\n this.file = file;\n this.sourceRoot = sourceRoot;\n this._ignoreList = new SetArray();\n }\n};\nfunction cast2(map) {\n return map;\n}\nfunction addSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {\n return addSegmentInternal(\n false,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content\n );\n}\nfunction addMapping(map, mapping) {\n return addMappingInternal(false, map, mapping);\n}\nvar maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {\n return addSegmentInternal(\n true,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content\n );\n};\nvar maybeAddMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping);\n};\nfunction setSourceContent(map, source, content) {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent\n // _originalScopes: originalScopes,\n } = cast2(map);\n const index = put(sources, source);\n sourcesContent[index] = content;\n}\nfunction setIgnore(map, source, ignore = true) {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _ignoreList: ignoreList\n // _originalScopes: originalScopes,\n } = cast2(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (ignore) put(ignoreList, index);\n else remove(ignoreList, index);\n}\nfunction toDecodedMap(map) {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n _ignoreList: ignoreList\n // _originalScopes: originalScopes,\n // _generatedRanges: generatedRanges,\n } = cast2(map);\n removeEmptyFinalLines(mappings);\n return {\n version: 3,\n file: map.file || void 0,\n names: names.array,\n sourceRoot: map.sourceRoot || void 0,\n sources: sources.array,\n sourcesContent,\n mappings,\n // originalScopes,\n // generatedRanges,\n ignoreList: ignoreList.array\n };\n}\nfunction toEncodedMap(map) {\n const decoded = toDecodedMap(map);\n return Object.assign({}, decoded, {\n // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)),\n // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]),\n mappings: encode(decoded.mappings)\n });\n}\nfunction fromMap(input) {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n putAll(cast2(gen)._names, map.names);\n putAll(cast2(gen)._sources, map.sources);\n cast2(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n cast2(gen)._mappings = decodedMappings(map);\n if (map.ignoreList) putAll(cast2(gen)._ignoreList, map.ignoreList);\n return gen;\n}\nfunction allMappings(map) {\n const out = [];\n const { _mappings: mappings, _sources: sources, _names: names } = cast2(map);\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source = void 0;\n let original = void 0;\n let name = void 0;\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n }\n out.push({ generated, source, original, name });\n }\n }\n return out;\n}\nfunction addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names\n // _originalScopes: originalScopes,\n } = cast2(map);\n const line = getIndex(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n if (!source) {\n if (skipable && skipSourceless(line, index)) return;\n return insert(line, index, [genColumn]);\n }\n assert(sourceLine);\n assert(sourceColumn);\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content != null ? content : null;\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n return insert(\n line,\n index,\n name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] : [genColumn, sourcesIndex, sourceLine, sourceColumn]\n );\n}\nfunction assert(_val) {\n}\nfunction getIndex(arr, index) {\n for (let i = arr.length; i <= index; i++) {\n arr[i] = [];\n }\n return arr[index];\n}\nfunction getColumnIndex(line, genColumn) {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN]) break;\n }\n return index;\n}\nfunction insert(array, index, value) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\nfunction removeEmptyFinalLines(mappings) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0) break;\n }\n if (len < length) mappings.length = len;\n}\nfunction putAll(setarr, array) {\n for (let i = 0; i < array.length; i++) put(setarr, array[i]);\n}\nfunction skipSourceless(line, index) {\n if (index === 0) return true;\n const prev = line[index - 1];\n return prev.length === 1;\n}\nfunction skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {\n if (index === 0) return false;\n const prev = line[index - 1];\n if (prev.length === 1) return false;\n return sourcesIndex === prev[SOURCES_INDEX] && sourceLine === prev[SOURCE_LINE] && sourceColumn === prev[SOURCE_COLUMN] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME);\n}\nfunction addMappingInternal(skipable, map, mapping) {\n const { generated, source, original, name, content } = mapping;\n if (!source) {\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n null,\n null,\n null,\n null,\n null\n );\n }\n assert(original);\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n source,\n original.line - 1,\n original.column,\n name,\n content\n );\n}\nexport {\n GenMapping,\n addMapping,\n addSegment,\n allMappings,\n fromMap,\n maybeAddMapping,\n maybeAddSegment,\n setIgnore,\n setSourceContent,\n toDecodedMap,\n toEncodedMap\n};\n//# sourceMappingURL=gen-mapping.mjs.map\n","'use strict';\n\nconst object = {};\nconst hasOwnProperty = object.hasOwnProperty;\nconst forOwn = (object, callback) => {\n\tfor (const key in object) {\n\t\tif (hasOwnProperty.call(object, key)) {\n\t\t\tcallback(key, object[key]);\n\t\t}\n\t}\n};\n\nconst extend = (destination, source) => {\n\tif (!source) {\n\t\treturn destination;\n\t}\n\tforOwn(source, (key, value) => {\n\t\tdestination[key] = value;\n\t});\n\treturn destination;\n};\n\nconst forEach = (array, callback) => {\n\tconst length = array.length;\n\tlet index = -1;\n\twhile (++index < length) {\n\t\tcallback(array[index]);\n\t}\n};\n\nconst fourHexEscape = (hex) => {\n\treturn '\\\\u' + ('0000' + hex).slice(-4);\n}\n\nconst hexadecimal = (code, lowercase) => {\n\tlet hexadecimal = code.toString(16);\n\tif (lowercase) return hexadecimal;\n\treturn hexadecimal.toUpperCase();\n};\n\nconst toString = object.toString;\nconst isArray = Array.isArray;\nconst isBuffer = (value) => {\n\treturn typeof Buffer === 'function' && Buffer.isBuffer(value);\n};\nconst isObject = (value) => {\n\t// This is a very simple check, but it’s good enough for what we need.\n\treturn toString.call(value) == '[object Object]';\n};\nconst isString = (value) => {\n\treturn typeof value == 'string' ||\n\t\ttoString.call(value) == '[object String]';\n};\nconst isNumber = (value) => {\n\treturn typeof value == 'number' ||\n\t\ttoString.call(value) == '[object Number]';\n};\nconst isBigInt = (value) => {\n return typeof value == 'bigint';\n};\nconst isFunction = (value) => {\n\treturn typeof value == 'function';\n};\nconst isMap = (value) => {\n\treturn toString.call(value) == '[object Map]';\n};\nconst isSet = (value) => {\n\treturn toString.call(value) == '[object Set]';\n};\n\n/*--------------------------------------------------------------------------*/\n\n// https://mathiasbynens.be/notes/javascript-escapes#single\nconst singleEscapes = {\n\t'\\\\': '\\\\\\\\',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t'\n\t// `\\v` is omitted intentionally, because in IE < 9, '\\v' == 'v'.\n\t// '\\v': '\\\\x0B'\n};\nconst regexSingleEscape = /[\\\\\\b\\f\\n\\r\\t]/;\n\nconst regexDigit = /[0-9]/;\nconst regexWhitespace = /[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nconst escapeEverythingRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^]/g;\nconst escapeNonAsciiRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^ !#-&\\(-\\[\\]-_a-~]/g;\n\nconst jsesc = (argument, options) => {\n\tconst increaseIndentation = () => {\n\t\toldIndent = indent;\n\t\t++options.indentLevel;\n\t\tindent = options.indent.repeat(options.indentLevel)\n\t};\n\t// Handle options\n\tconst defaults = {\n\t\t'escapeEverything': false,\n\t\t'minimal': false,\n\t\t'isScriptContext': false,\n\t\t'quotes': 'single',\n\t\t'wrap': false,\n\t\t'es6': false,\n\t\t'json': false,\n\t\t'compact': true,\n\t\t'lowercaseHex': false,\n\t\t'numbers': 'decimal',\n\t\t'indent': '\\t',\n\t\t'indentLevel': 0,\n\t\t'__inline1__': false,\n\t\t'__inline2__': false\n\t};\n\tconst json = options && options.json;\n\tif (json) {\n\t\tdefaults.quotes = 'double';\n\t\tdefaults.wrap = true;\n\t}\n\toptions = extend(defaults, options);\n\tif (\n\t\toptions.quotes != 'single' &&\n\t\toptions.quotes != 'double' &&\n\t\toptions.quotes != 'backtick'\n\t) {\n\t\toptions.quotes = 'single';\n\t}\n\tconst quote = options.quotes == 'double' ?\n\t\t'\"' :\n\t\t(options.quotes == 'backtick' ?\n\t\t\t'`' :\n\t\t\t'\\''\n\t\t);\n\tconst compact = options.compact;\n\tconst lowercaseHex = options.lowercaseHex;\n\tlet indent = options.indent.repeat(options.indentLevel);\n\tlet oldIndent = '';\n\tconst inline1 = options.__inline1__;\n\tconst inline2 = options.__inline2__;\n\tconst newLine = compact ? '' : '\\n';\n\tlet result;\n\tlet isEmpty = true;\n\tconst useBinNumbers = options.numbers == 'binary';\n\tconst useOctNumbers = options.numbers == 'octal';\n\tconst useDecNumbers = options.numbers == 'decimal';\n\tconst useHexNumbers = options.numbers == 'hexadecimal';\n\n\tif (json && argument && isFunction(argument.toJSON)) {\n\t\targument = argument.toJSON();\n\t}\n\n\tif (!isString(argument)) {\n\t\tif (isMap(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Map()';\n\t\t\t}\n\t\t\tif (!compact) {\n\t\t\t\toptions.__inline1__ = true;\n\t\t\t\toptions.__inline2__ = false;\n\t\t\t}\n\t\t\treturn 'new Map(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isSet(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Set()';\n\t\t\t}\n\t\t\treturn 'new Set(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isBuffer(argument)) {\n\t\t\tif (argument.length == 0) {\n\t\t\t\treturn 'Buffer.from([])';\n\t\t\t}\n\t\t\treturn 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isArray(argument)) {\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tif (inline1) {\n\t\t\t\toptions.__inline1__ = false;\n\t\t\t\toptions.__inline2__ = true;\n\t\t\t}\n\t\t\tif (!inline2) {\n\t\t\t\tincreaseIndentation();\n\t\t\t}\n\t\t\tforEach(argument, (value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tif (inline2) {\n\t\t\t\t\toptions.__inline2__ = false;\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact || inline2 ? '' : indent) +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\tif (inline2) {\n\t\t\t\treturn '[' + result.join(', ') + ']';\n\t\t\t}\n\t\t\treturn '[' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + ']';\n\t\t} else if (isNumber(argument) || isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// Some number values (e.g. `Infinity`) cannot be represented in JSON.\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n // `Number.MAX_VALUE` cannot be represented in JSON so they will become\n // `-Infinity` or `Infinity`, respectively, and then become `null` when\n // stringified.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n\n let result;\n\t\t\tif (useDecNumbers) {\n\t\t\t\tresult = String(argument);\n\t\t\t} else if (useHexNumbers) {\n\t\t\t\tlet hexadecimal = argument.toString(16);\n\t\t\t\tif (!lowercaseHex) {\n\t\t\t\t\thexadecimal = hexadecimal.toUpperCase();\n\t\t\t\t}\n\t\t\t\tresult = '0x' + hexadecimal;\n\t\t\t} else if (useBinNumbers) {\n\t\t\t\tresult = '0b' + argument.toString(2);\n\t\t\t} else if (useOctNumbers) {\n\t\t\t\tresult = '0o' + argument.toString(8);\n\t\t\t}\n\n if (isBigInt(argument)) {\n return result + 'n';\n }\n return result;\n\t\t} else if (isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n // `Number.MAX_VALUE` will become `-Infinity` or `Infinity`,\n // respectively, and cannot be represented in JSON.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n return argument + 'n';\n } else if (!isObject(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// For some values (e.g. `undefined`, `function` objects),\n\t\t\t\t// `JSON.stringify(value)` returns `undefined` (which isn’t valid\n\t\t\t\t// JSON) instead of `'null'`.\n\t\t\t\treturn JSON.stringify(argument) || 'null';\n\t\t\t}\n\t\t\treturn String(argument);\n\t\t} else { // it’s an object\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tincreaseIndentation();\n\t\t\tforOwn(argument, (key, value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact ? '' : indent) +\n\t\t\t\t\tjsesc(key, options) + ':' +\n\t\t\t\t\t(compact ? '' : ' ') +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '{}';\n\t\t\t}\n\t\t\treturn '{' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + '}';\n\t\t}\n\t}\n\n\tconst regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex;\n\tresult = argument.replace(regex, (char, pair, lone, quoteChar, index, string) => {\n\t\tif (pair) {\n\t\t\tif (options.minimal) return pair;\n\t\t\tconst first = pair.charCodeAt(0);\n\t\t\tconst second = pair.charCodeAt(1);\n\t\t\tif (options.es6) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tconst codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\tconst hex = hexadecimal(codePoint, lowercaseHex);\n\t\t\t\treturn '\\\\u{' + hex + '}';\n\t\t\t}\n\t\t\treturn fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex));\n\t\t}\n\n\t\tif (lone) {\n\t\t\treturn fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex));\n\t\t}\n\n\t\tif (\n\t\t\tchar == '\\0' &&\n\t\t\t!json &&\n\t\t\t!regexDigit.test(string.charAt(index + 1))\n\t\t) {\n\t\t\treturn '\\\\0';\n\t\t}\n\n\t\tif (quoteChar) {\n\t\t\tif (quoteChar == quote || options.escapeEverything) {\n\t\t\t\treturn '\\\\' + quoteChar;\n\t\t\t}\n\t\t\treturn quoteChar;\n\t\t}\n\n\t\tif (regexSingleEscape.test(char)) {\n\t\t\t// no need for a `hasOwnProperty` check here\n\t\t\treturn singleEscapes[char];\n\t\t}\n\n\t\tif (options.minimal && !regexWhitespace.test(char)) {\n\t\t\treturn char;\n\t\t}\n\n\t\tconst hex = hexadecimal(char.charCodeAt(0), lowercaseHex);\n\t\tif (json || hex.length > 2) {\n\t\t\treturn fourHexEscape(hex);\n\t\t}\n\n\t\treturn '\\\\x' + ('00' + hex).slice(-2);\n\t});\n\n\tif (quote == '`') {\n\t\tresult = result.replace(/\\$\\{/g, '\\\\${');\n\t}\n\tif (options.isScriptContext) {\n\t\t// https://mathiasbynens.be/notes/etago\n\t\tresult = result\n\t\t\t.replace(/<\\/(script|style)/gi, '<\\\\/$1')\n\t\t\t.replace(/<!--/g, json ? '\\\\u003C!--' : '\\\\x3C!--');\n\t}\n\tif (options.wrap) {\n\t\tresult = quote + result + quote;\n\t}\n\treturn result;\n};\n\njsesc.version = '3.0.2';\n\nmodule.exports = jsesc;\n","import { GenMapping, setSourceContent, toEncodedMap, toDecodedMap, allMappings, maybeAddMapping } from '@jridgewell/gen-mapping';\nimport { TraceMap, originalPositionFor } from '@jridgewell/trace-mapping';\nimport * as _t from '@babel/types';\nimport jsesc from 'jsesc';\nclass SourceMap {\n _map;\n _rawMappings;\n _sourceFileName;\n _lastGenLine = 0;\n _lastSourceLine = 0;\n _lastSourceColumn = 0;\n _inputMap = null;\n constructor(opts, code) {\n const map = this._map = new GenMapping({\n sourceRoot: opts.sourceRoot\n });\n this._sourceFileName = opts.sourceFileName?.replace(/\\\\/g, \"/\");\n this._rawMappings = undefined;\n if (opts.inputSourceMap) {\n this._inputMap = new TraceMap(opts.inputSourceMap);\n const resolvedSources = this._inputMap.resolvedSources;\n if (resolvedSources.length) {\n for (let i = 0; i < resolvedSources.length; i++) {\n setSourceContent(map, resolvedSources[i], this._inputMap.sourcesContent?.[i]);\n }\n }\n }\n if (typeof code === \"string\" && !opts.inputSourceMap) {\n setSourceContent(map, this._sourceFileName, code);\n } else if (typeof code === \"object\") {\n for (const sourceFileName of Object.keys(code)) {\n setSourceContent(map, sourceFileName.replace(/\\\\/g, \"/\"), code[sourceFileName]);\n }\n }\n }\n get() {\n return toEncodedMap(this._map);\n }\n getDecoded() {\n return toDecodedMap(this._map);\n }\n getRawMappings() {\n return this._rawMappings ||= allMappings(this._map);\n }\n mark(generated, generatedIdentifierName, line, column, identifierName, identifierNamePos, filename) {\n this._rawMappings = undefined;\n let originalMapping;\n if (line != null) {\n if (this._inputMap) {\n originalMapping = originalPositionFor(this._inputMap, {\n line,\n column: column\n });\n if (originalMapping.name && (identifierNamePos || identifierName != null && originalMapping.column === column)) {\n identifierName = originalMapping.name;\n } else if (identifierNamePos) {\n const originalIdentifierMapping = originalPositionFor(this._inputMap, identifierNamePos);\n if (originalIdentifierMapping.name) {\n identifierName = originalIdentifierMapping.name;\n }\n }\n } else {\n originalMapping = {\n name: null,\n source: filename?.replace(/\\\\/g, \"/\") || this._sourceFileName,\n line: line,\n column: column\n };\n }\n }\n if (identifierName != null && identifierName === generatedIdentifierName) {\n identifierName = null;\n }\n maybeAddMapping(this._map, {\n name: identifierName,\n generated,\n source: originalMapping?.source,\n original: originalMapping\n });\n }\n}\nconst spaceIndents = [];\nfor (let i = 0; i < 32; i++) {\n spaceIndents.push(\" \".repeat(i * 2));\n}\nclass Buffer {\n constructor(map, indentChar) {\n this._map = map;\n this._indentChar = indentChar;\n }\n _map = null;\n _buf = \"\";\n _str = \"\";\n _appendCount = 0;\n _last = 0;\n _canMarkIdName = true;\n _indentChar = \"\";\n _queuedChar = 0;\n _position = {\n line: 1,\n column: 0\n };\n _sourcePosition = {\n identifierName: undefined,\n identifierNamePos: undefined,\n line: undefined,\n column: undefined,\n filename: undefined\n };\n get() {\n const {\n _map,\n _last\n } = this;\n if (this._queuedChar !== 32) {\n this._flush();\n }\n const code = _last === 10 ? (this._buf + this._str).trimRight() : this._buf + this._str;\n if (_map === null) {\n return {\n code: code,\n decodedMap: undefined,\n map: null,\n rawMappings: undefined\n };\n }\n const result = {\n code: code,\n decodedMap: _map.getDecoded(),\n get map() {\n const resultMap = _map.get();\n result.map = resultMap;\n return resultMap;\n },\n set map(value) {\n Object.defineProperty(result, \"map\", {\n value,\n writable: true\n });\n },\n get rawMappings() {\n const mappings = _map.getRawMappings();\n result.rawMappings = mappings;\n return mappings;\n },\n set rawMappings(value) {\n Object.defineProperty(result, \"rawMappings\", {\n value,\n writable: true\n });\n }\n };\n return result;\n }\n append(str, maybeNewline, ignoreMapping = false) {\n this._flush();\n this._append(str, maybeNewline, ignoreMapping);\n }\n appendChar(char) {\n this._flush();\n this._appendChar(char, 1, true);\n }\n queue(char) {\n this._flush();\n this._queuedChar = char;\n }\n _flush() {\n const queuedChar = this._queuedChar;\n if (queuedChar !== 0) {\n this._appendChar(queuedChar, 1, true);\n this._queuedChar = 0;\n }\n }\n _appendChar(char, repeat, useSourcePos) {\n this._last = char;\n if (char === -1) {\n const indent = repeat >= 64 ? this._indentChar.repeat(repeat) : spaceIndents[repeat / 2];\n this._str += indent;\n } else {\n this._str += repeat > 1 ? String.fromCharCode(char).repeat(repeat) : String.fromCharCode(char);\n }\n const isSpace = char === 32;\n const position = this._position;\n if (char !== 10) {\n if (this._map) {\n const sourcePos = this._sourcePosition;\n if (useSourcePos && sourcePos) {\n this._map.mark(position, null, sourcePos.line, sourcePos.column, isSpace ? undefined : sourcePos.identifierName, isSpace ? undefined : sourcePos.identifierNamePos, sourcePos.filename);\n if (!isSpace && this._canMarkIdName) {\n sourcePos.identifierName = undefined;\n sourcePos.identifierNamePos = undefined;\n }\n } else {\n this._map.mark(position, null);\n }\n }\n position.column += repeat;\n } else {\n position.line++;\n position.column = 0;\n }\n }\n _append(str, maybeNewline, ignoreMapping) {\n const len = str.length;\n const position = this._position;\n const sourcePos = this._sourcePosition;\n this._last = -1;\n if (++this._appendCount > 4096) {\n +this._str;\n this._buf += this._str;\n this._str = str;\n this._appendCount = 0;\n } else {\n this._str += str;\n }\n const hasMap = !ignoreMapping && this._map !== null;\n if (!maybeNewline && !hasMap) {\n position.column += len;\n return;\n }\n const {\n column,\n identifierName,\n identifierNamePos,\n filename\n } = sourcePos;\n let line = sourcePos.line;\n if ((identifierName != null || identifierNamePos != null) && this._canMarkIdName) {\n sourcePos.identifierName = undefined;\n sourcePos.identifierNamePos = undefined;\n }\n let i = str.indexOf(\"\\n\");\n let last = 0;\n if (hasMap && i !== 0) {\n this._map.mark(position, str, line, column, identifierName, identifierNamePos, filename);\n }\n while (i !== -1) {\n position.line++;\n position.column = 0;\n last = i + 1;\n if (last < len && line !== undefined) {\n line++;\n if (hasMap) {\n this._map.mark(position, str, line, 0, undefined, undefined, filename);\n }\n }\n i = str.indexOf(\"\\n\", last);\n }\n position.column += len - last;\n }\n removeLastSemicolon() {\n if (this._queuedChar === 59) {\n this._queuedChar = 0;\n }\n }\n getLastChar(checkQueue) {\n if (!checkQueue) {\n return this._last;\n }\n const queuedChar = this._queuedChar;\n return queuedChar !== 0 ? queuedChar : this._last;\n }\n getNewlineCount() {\n return this._queuedChar === 0 && this._last === 10 ? 1 : 0;\n }\n hasContent() {\n return this._last !== 0;\n }\n exactSource(loc, cb) {\n if (!this._map) {\n cb();\n return;\n }\n this.source(\"start\", loc);\n const identifierName = loc.identifierName;\n const sourcePos = this._sourcePosition;\n if (identifierName != null) {\n this._canMarkIdName = false;\n sourcePos.identifierName = identifierName;\n }\n cb();\n if (identifierName != null) {\n this._canMarkIdName = true;\n sourcePos.identifierName = undefined;\n sourcePos.identifierNamePos = undefined;\n }\n this.source(\"end\", loc);\n }\n source(prop, loc) {\n if (!this._map) return;\n this._normalizePosition(prop, loc, 0);\n }\n sourceWithOffset(prop, loc, columnOffset) {\n if (!this._map) return;\n this._normalizePosition(prop, loc, columnOffset);\n }\n _normalizePosition(prop, loc, columnOffset) {\n this._flush();\n const pos = loc[prop];\n if (pos) {\n this.setSourcePosition(pos.line, Math.max(pos.column + columnOffset, 0));\n this._sourcePosition.filename = loc.filename;\n }\n }\n setSourcePosition(line, column) {\n const target = this._sourcePosition;\n target.line = line;\n target.column = column;\n }\n getCurrentColumn() {\n return this._position.column + (this._queuedChar ? 1 : 0);\n }\n getCurrentLine() {\n return this._position.line;\n }\n}\nconst {\n isMemberExpression: isMemberExpression$1,\n isOptionalMemberExpression,\n isYieldExpression,\n isStatement: isStatement$4\n} = _t;\nconst PRECEDENCE = new Map([[\"||\", 0], [\"??\", 1], [\"&&\", 2], [\"|\", 3], [\"^\", 4], [\"&\", 5], [\"==\", 6], [\"===\", 6], [\"!=\", 6], [\"!==\", 6], [\"<\", 7], [\">\", 7], [\"<=\", 7], [\">=\", 7], [\"in\", 7], [\"instanceof\", 7], [\">>\", 8], [\"<<\", 8], [\">>>\", 8], [\"+\", 9], [\"-\", 9], [\"*\", 10], [\"/\", 10], [\"%\", 10], [\"**\", 11]]);\nfunction isTSTypeExpression(nodeId) {\n return nodeId === 154 || nodeId === 199 || nodeId === 207;\n}\nconst isClassExtendsClause = (node, parent, parentId) => {\n return (parentId === 22 || parentId === 23) && parent.superClass === node;\n};\nconst hasPostfixPart = (node, parent, parentId) => {\n switch (parentId) {\n case 109:\n case 133:\n return parent.object === node;\n case 18:\n case 131:\n case 113:\n return parent.callee === node;\n case 220:\n return parent.tag === node;\n case 189:\n return true;\n }\n return false;\n};\nfunction NullableTypeAnnotation$1(node, parent, parentId) {\n return parentId === 4;\n}\nfunction FunctionTypeAnnotation$1(node, parent, parentId, tokenContext) {\n return parentId === 237 || parentId === 91 || parentId === 4 || (tokenContext & 8) > 0;\n}\nfunction UpdateExpression$1(node, parent, parentId) {\n return hasPostfixPart(node, parent, parentId) || isClassExtendsClause(node, parent, parentId);\n}\nfunction needsParenBeforeExpressionBrace(tokenContext) {\n return (tokenContext & (1 | 2)) > 0;\n}\nfunction ObjectExpression$1(node, parent, parentId, tokenContext) {\n return needsParenBeforeExpressionBrace(tokenContext);\n}\nfunction DoExpression$1(node, parent, parentId, tokenContext) {\n return (tokenContext & 1) > 0 && !node.async;\n}\nfunction BinaryLike(node, parent, parentId, nodeType) {\n if (isClassExtendsClause(node, parent, parentId)) {\n return true;\n }\n if (hasPostfixPart(node, parent, parentId) || parentId === 236 || parentId === 143 || parentId === 8) {\n return true;\n }\n let parentPos;\n switch (parentId) {\n case 11:\n case 108:\n parentPos = PRECEDENCE.get(parent.operator);\n break;\n case 154:\n case 199:\n parentPos = 7;\n }\n if (parentPos !== undefined) {\n const nodePos = nodeType === 2 ? 7 : PRECEDENCE.get(node.operator);\n if (parentPos > nodePos) return true;\n if (parentPos === nodePos && parentId === 11 && (nodePos === 11 ? parent.left === node : parent.right === node)) {\n return true;\n }\n if (nodeType === 1 && parentId === 108 && (nodePos === 1 && parentPos !== 1 || parentPos === 1 && nodePos !== 1)) {\n return true;\n }\n }\n return false;\n}\nfunction UnionTypeAnnotation$1(node, parent, parentId) {\n switch (parentId) {\n case 4:\n case 116:\n case 91:\n case 237:\n return true;\n }\n return false;\n}\nfunction OptionalIndexedAccessType$1(node, parent, parentId) {\n return parentId === 85 && parent.objectType === node;\n}\nfunction TSAsExpression$1(node, parent, parentId) {\n if ((parentId === 6 || parentId === 7) && parent.left === node) {\n return true;\n }\n if (parentId === 11 && (parent.operator === \"|\" || parent.operator === \"&\") && node === parent.left) {\n return true;\n }\n return BinaryLike(node, parent, parentId, 2);\n}\nfunction TSConditionalType$1(node, parent, parentId) {\n switch (parentId) {\n case 153:\n case 193:\n case 209:\n case 210:\n case 179:\n case 217:\n return true;\n case 173:\n return parent.objectType === node;\n case 159:\n return parent.checkType === node || parent.extendsType === node;\n }\n return false;\n}\nfunction TSUnionType$1(node, parent, parentId) {\n switch (parentId) {\n case 179:\n case 209:\n case 153:\n case 193:\n return true;\n case 173:\n return parent.objectType === node;\n }\n return false;\n}\nfunction TSIntersectionType$1(node, parent, parentId) {\n return parentId === 209 || TSTypeOperator$1(node, parent, parentId);\n}\nfunction TSInferType$1(node, parent, parentId) {\n if (TSTypeOperator$1(node, parent, parentId)) {\n return true;\n }\n if ((parentId === 179 || parentId === 217) && node.typeParameter.constraint != null) {\n return true;\n }\n return false;\n}\nfunction TSTypeOperator$1(node, parent, parentId) {\n switch (parentId) {\n case 153:\n case 193:\n return true;\n case 173:\n if (parent.objectType === node) {\n return true;\n }\n }\n return false;\n}\nfunction TSInstantiationExpression$1(node, parent, parentId) {\n switch (parentId) {\n case 18:\n case 131:\n case 113:\n case 175:\n return parent.typeArguments != null;\n }\n return false;\n}\nfunction TSFunctionType$1(node, parent, parentId) {\n if (TSUnionType$1(node, parent, parentId)) return true;\n return parentId === 217 || parentId === 159 && (parent.checkType === node || parent.extendsType === node);\n}\nfunction BinaryExpression$1(node, parent, parentId, tokenContext) {\n if (BinaryLike(node, parent, parentId, 0)) return true;\n return (tokenContext & 128) > 0 && node.operator === \"in\";\n}\nfunction LogicalExpression(node, parent, parentId) {\n return BinaryLike(node, parent, parentId, 1);\n}\nfunction SequenceExpression$1(node, parent, parentId) {\n if (parentId === 142 || parentId === 134 || parentId === 109 && parent.property === node || parentId === 133 && parent.property === node || parentId === 222) {\n return false;\n }\n if (parentId === 22) {\n return true;\n }\n if (parentId === 69) {\n return parent.right === node;\n }\n if (parentId === 61) {\n return true;\n }\n return !isStatement$4(parent);\n}\nfunction YieldExpression$1(node, parent, parentId) {\n return parentId === 11 || parentId === 108 || parentId === 236 || parentId === 143 || hasPostfixPart(node, parent, parentId) || parentId === 8 && isYieldExpression(node) || parentId === 29 && node === parent.test || isClassExtendsClause(node, parent, parentId) || isTSTypeExpression(parentId);\n}\nfunction ClassExpression(node, parent, parentId, tokenContext) {\n return (tokenContext & (1 | 4)) > 0;\n}\nfunction UnaryLike(node, parent, parentId) {\n return hasPostfixPart(node, parent, parentId) || parentId === 11 && parent.operator === \"**\" && parent.left === node || isClassExtendsClause(node, parent, parentId);\n}\nfunction FunctionExpression$1(node, parent, parentId, tokenContext) {\n return (tokenContext & (1 | 4)) > 0;\n}\nfunction ConditionalExpression$1(node, parent, parentId) {\n switch (parentId) {\n case 236:\n case 143:\n case 11:\n case 108:\n case 8:\n return true;\n case 29:\n if (parent.test === node) {\n return true;\n }\n }\n if (isTSTypeExpression(parentId)) {\n return true;\n }\n return UnaryLike(node, parent, parentId);\n}\nfunction OptionalMemberExpression$1(node, parent, parentId) {\n switch (parentId) {\n case 18:\n return parent.callee === node;\n case 109:\n return parent.object === node;\n }\n return false;\n}\nfunction AssignmentExpression$1(node, parent, parentId, tokenContext) {\n if (needsParenBeforeExpressionBrace(tokenContext) && node.left.type === \"ObjectPattern\") {\n return true;\n }\n return ConditionalExpression$1(node, parent, parentId);\n}\nfunction Identifier$1(node, parent, parentId, tokenContext, getRawIdentifier) {\n if (getRawIdentifier && getRawIdentifier(node) !== node.name) {\n return false;\n }\n if (parentId === 6 && node.extra?.parenthesized && parent.left === node) {\n const rightType = parent.right.type;\n if ((rightType === \"FunctionExpression\" || rightType === \"ClassExpression\") && parent.right.id == null) {\n return true;\n }\n }\n if (tokenContext & 64 || (parentId === 109 || parentId === 133) && tokenContext & (1 | 16 | 32)) {\n if (node.name === \"let\") {\n const isFollowedByBracket = isMemberExpression$1(parent, {\n object: node,\n computed: true\n }) || isOptionalMemberExpression(parent, {\n object: node,\n computed: true,\n optional: false\n });\n if (isFollowedByBracket && tokenContext & (1 | 16 | 32)) {\n return true;\n }\n return (tokenContext & 64) > 0;\n }\n }\n return parentId === 69 && parent.left === node && node.name === \"async\" && !parent.await;\n}\nconst parens = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n ArrowFunctionExpression: ConditionalExpression$1,\n AssignmentExpression: AssignmentExpression$1,\n AwaitExpression: YieldExpression$1,\n BinaryExpression: BinaryExpression$1,\n ClassExpression,\n ConditionalExpression: ConditionalExpression$1,\n DoExpression: DoExpression$1,\n FunctionExpression: FunctionExpression$1,\n FunctionTypeAnnotation: FunctionTypeAnnotation$1,\n Identifier: Identifier$1,\n IntersectionTypeAnnotation: UnionTypeAnnotation$1,\n LogicalExpression,\n NullableTypeAnnotation: NullableTypeAnnotation$1,\n ObjectExpression: ObjectExpression$1,\n OptionalCallExpression: OptionalMemberExpression$1,\n OptionalIndexedAccessType: OptionalIndexedAccessType$1,\n OptionalMemberExpression: OptionalMemberExpression$1,\n SequenceExpression: SequenceExpression$1,\n SpreadElement: UnaryLike,\n TSAsExpression: TSAsExpression$1,\n TSConditionalType: TSConditionalType$1,\n TSConstructorType: TSFunctionType$1,\n TSFunctionType: TSFunctionType$1,\n TSInferType: TSInferType$1,\n TSInstantiationExpression: TSInstantiationExpression$1,\n TSIntersectionType: TSIntersectionType$1,\n TSSatisfiesExpression: TSAsExpression$1,\n TSTypeAssertion: UnaryLike,\n TSTypeOperator: TSTypeOperator$1,\n TSUnionType: TSUnionType$1,\n UnaryExpression: UnaryLike,\n UnionTypeAnnotation: UnionTypeAnnotation$1,\n UpdateExpression: UpdateExpression$1,\n YieldExpression: YieldExpression$1\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nfunction TaggedTemplateExpression(node) {\n this.print(node.tag);\n this.print(node.typeArguments);\n this.print(node.quasi);\n}\nfunction TemplateElement() {\n throw new Error(\"TemplateElement printing is handled in TemplateLiteral\");\n}\nfunction _printTemplate(node, substitutions) {\n const quasis = node.quasis;\n let partRaw = \"`\";\n for (let i = 0; i < quasis.length - 1; i++) {\n partRaw += quasis[i].value.raw;\n this.token(partRaw + \"${\", true);\n this.print(substitutions[i]);\n partRaw = \"}\";\n }\n partRaw += quasis[quasis.length - 1].value.raw;\n this.token(partRaw + \"`\", true);\n}\nfunction TemplateLiteral(node) {\n _printTemplate.call(this, node, node.expressions);\n}\nconst {\n isCallExpression,\n isLiteral,\n isMemberExpression,\n isNewExpression,\n isPattern\n} = _t;\nfunction UnaryExpression(node) {\n const {\n operator\n } = node;\n const firstChar = operator.charCodeAt(0);\n if (firstChar >= 97 && firstChar <= 122) {\n this.word(operator);\n this.space();\n } else {\n this.tokenChar(firstChar);\n }\n this.print(node.argument);\n}\nfunction DoExpression(node) {\n if (node.async) {\n this.word(\"async\", true);\n this.space();\n }\n this.word(\"do\");\n this.space();\n this.print(node.body);\n}\nfunction ParenthesizedExpression(node) {\n this.tokenChar(40);\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.print(node.expression, undefined, true);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.rightParens(node);\n}\nfunction UpdateExpression(node) {\n if (node.prefix) {\n this.token(node.operator, false, 0, true);\n this.print(node.argument);\n } else {\n this.print(node.argument, true);\n this.token(node.operator, false, 0, true);\n }\n}\nfunction ConditionalExpression(node) {\n this.print(node.test);\n this.space();\n this.tokenChar(63);\n this.space();\n this.print(node.consequent);\n this.space();\n this.tokenChar(58);\n this.space();\n this.print(node.alternate);\n}\nfunction _printExpressionArguments(node) {\n this.tokenChar(40);\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.printList(node.arguments, this.shouldPrintTrailingComma(\")\"), undefined, undefined, undefined, true);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.rightParens(node);\n}\nfunction NewExpression(node, parent) {\n this.word(\"new\");\n this.space();\n this.print(node.callee);\n if (this.format.minified && node.arguments.length === 0 && !isCallExpression(parent, {\n callee: node\n }) && !isMemberExpression(parent) && !isNewExpression(parent)) {\n return;\n }\n this.print(node.typeArguments);\n if (node.arguments.length === 0 && this.tokenMap && !this.tokenMap.endMatches(node, \")\")) {\n return;\n }\n _printExpressionArguments.call(this, node);\n}\nfunction SequenceExpression(node) {\n this.printList(node.expressions);\n}\nfunction ThisExpression() {\n this.word(\"this\");\n}\nfunction Super() {\n this.word(\"super\");\n}\nfunction _shouldPrintDecoratorsBeforeExport(node) {\n return typeof node.start === \"number\" && node.start === node.declaration.start;\n}\nfunction Decorator(node) {\n this.tokenChar(64);\n const {\n expression\n } = node;\n this.print(expression);\n this.newline();\n}\nfunction OptionalMemberExpression(node) {\n let {\n computed\n } = node;\n const {\n optional,\n property\n } = node;\n this.print(node.object);\n if (!computed && isMemberExpression(property)) {\n throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n }\n if (isLiteral(property) && typeof property.value === \"number\") {\n computed = true;\n }\n if (optional) {\n this.token(\"?.\");\n }\n if (computed) {\n this.tokenChar(91);\n this.print(property);\n this.tokenChar(93);\n } else {\n if (!optional) {\n this.tokenChar(46);\n }\n this.print(property);\n }\n}\nfunction OptionalCallExpression(node) {\n this.print(node.callee);\n if (node.optional) {\n this.token(\"?.\");\n }\n this.print(node.typeArguments);\n _printExpressionArguments.call(this, node);\n}\nfunction CallExpression(node) {\n this.print(node.callee);\n this.print(node.typeArguments);\n _printExpressionArguments.call(this, node);\n}\nfunction Import() {\n this.word(\"import\");\n}\nfunction AwaitExpression(node) {\n this.word(\"await\");\n this.space();\n this.print(node.argument);\n}\nfunction YieldExpression(node) {\n if (node.delegate) {\n this.word(\"yield\", true);\n this.tokenChar(42);\n if (node.argument) {\n this.space();\n this.print(node.argument);\n }\n } else if (node.argument) {\n this.word(\"yield\", true);\n this.space();\n this.print(node.argument);\n } else {\n this.word(\"yield\");\n }\n}\nfunction EmptyStatement() {\n this.semicolon(true);\n}\nfunction ExpressionStatement(node) {\n this.tokenContext |= 1;\n this.print(node.expression);\n this.semicolon();\n}\nfunction AssignmentPattern(node) {\n this.print(node.left);\n if (node.left.type === \"Identifier\" || isPattern(node.left)) {\n if (node.left.optional) this.tokenChar(63);\n this.print(node.left.typeAnnotation);\n }\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.right);\n}\nfunction AssignmentExpression(node) {\n this.print(node.left);\n this.space();\n this.token(node.operator, false, 0, true);\n this.space();\n this.print(node.right);\n}\nfunction BinaryExpression(node) {\n this.print(node.left);\n this.space();\n const {\n operator\n } = node;\n if (operator.charCodeAt(0) === 105) {\n this.word(operator);\n } else {\n this.token(operator, false, 0, true);\n this.setLastChar(operator.charCodeAt(operator.length - 1));\n }\n this.space();\n this.print(node.right);\n}\nfunction BindExpression(node) {\n this.print(node.object);\n this.token(\"::\");\n this.print(node.callee);\n}\nfunction MemberExpression(node) {\n this.print(node.object);\n if (!node.computed && isMemberExpression(node.property)) {\n throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n }\n let computed = node.computed;\n if (isLiteral(node.property) && typeof node.property.value === \"number\") {\n computed = true;\n }\n if (computed) {\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.tokenChar(91);\n this.print(node.property, undefined, true);\n this.tokenChar(93);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n } else {\n this.tokenChar(46);\n this.print(node.property);\n }\n}\nfunction MetaProperty(node) {\n this.print(node.meta);\n this.tokenChar(46);\n this.print(node.property);\n}\nfunction PrivateName(node) {\n this.tokenChar(35);\n this.print(node.id);\n}\nfunction V8IntrinsicIdentifier(node) {\n this.tokenChar(37);\n this.word(node.name);\n}\nfunction ModuleExpression(node) {\n this.word(\"module\", true);\n this.space();\n this.tokenChar(123);\n this.indent();\n const {\n body\n } = node;\n if (body.body.length || body.directives.length) {\n this.newline();\n }\n this.print(body);\n this.dedent();\n this.rightBrace(node);\n}\nconst {\n isFor,\n isIfStatement,\n isStatement: isStatement$3,\n isVoidPattern\n} = _t;\nfunction WithStatement(node) {\n this.word(\"with\");\n this.space();\n this.tokenChar(40);\n this.print(node.object);\n this.tokenChar(41);\n this.printBlock(node.body);\n}\nfunction IfStatement(node) {\n this.word(\"if\");\n this.space();\n this.tokenChar(40);\n this.print(node.test);\n this.tokenChar(41);\n this.space();\n const needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent));\n if (needsBlock) {\n this.tokenChar(123);\n this.newline();\n this.indent();\n }\n this.printAndIndentOnComments(node.consequent);\n if (needsBlock) {\n this.dedent();\n this.newline();\n this.tokenChar(125);\n }\n if (node.alternate) {\n if (this.endsWith(125)) this.space();\n this.word(\"else\");\n this.space();\n this.printAndIndentOnComments(node.alternate);\n }\n}\nfunction getLastStatement(statement) {\n const {\n body\n } = statement;\n if (isStatement$3(body) === false) {\n return statement;\n }\n return getLastStatement(body);\n}\nfunction ForStatement(node) {\n this.word(\"for\");\n this.space();\n this.tokenChar(40);\n this.tokenContext |= 16 | 128;\n this.print(node.init);\n this.tokenContext = 0;\n this.tokenChar(59);\n if (node.test) {\n this.space();\n this.print(node.test);\n }\n this.tokenChar(59, 1);\n if (node.update) {\n this.space();\n this.print(node.update);\n }\n this.tokenChar(41);\n this.printBlock(node.body);\n}\nfunction WhileStatement(node) {\n this.word(\"while\");\n this.space();\n this.tokenChar(40);\n this.print(node.test);\n this.tokenChar(41);\n this.printBlock(node.body);\n}\nfunction ForInStatement(node) {\n this.word(\"for\");\n this.space();\n this.noIndentInnerCommentsHere();\n this.tokenChar(40);\n this.tokenContext |= 32 | 128;\n this.print(node.left);\n this.tokenContext = 0;\n this.space();\n this.word(\"in\");\n this.space();\n this.print(node.right);\n this.tokenChar(41);\n this.printBlock(node.body);\n}\nfunction ForOfStatement(node) {\n this.word(\"for\");\n this.space();\n if (node.await) {\n this.word(\"await\");\n this.space();\n }\n this.noIndentInnerCommentsHere();\n this.tokenChar(40);\n this.tokenContext |= 64;\n this.print(node.left);\n this.space();\n this.word(\"of\");\n this.space();\n this.print(node.right);\n this.tokenChar(41);\n this.printBlock(node.body);\n}\nfunction DoWhileStatement(node) {\n this.word(\"do\");\n this.space();\n this.print(node.body);\n this.space();\n this.word(\"while\");\n this.space();\n this.tokenChar(40);\n this.print(node.test);\n this.tokenChar(41);\n this.semicolon();\n}\nfunction printStatementAfterKeyword(printer, node) {\n if (node) {\n printer.space();\n printer.printTerminatorless(node);\n }\n printer.semicolon();\n}\nfunction BreakStatement(node) {\n this.word(\"break\");\n printStatementAfterKeyword(this, node.label);\n}\nfunction ContinueStatement(node) {\n this.word(\"continue\");\n printStatementAfterKeyword(this, node.label);\n}\nfunction ReturnStatement(node) {\n this.word(\"return\");\n printStatementAfterKeyword(this, node.argument);\n}\nfunction ThrowStatement(node) {\n this.word(\"throw\");\n printStatementAfterKeyword(this, node.argument);\n}\nfunction LabeledStatement(node) {\n this.print(node.label);\n this.tokenChar(58);\n this.space();\n this.print(node.body);\n}\nfunction TryStatement(node) {\n this.word(\"try\");\n this.space();\n this.print(node.block);\n this.space();\n if (node.handlers) {\n this.print(node.handlers[0]);\n } else {\n this.print(node.handler);\n }\n if (node.finalizer) {\n this.space();\n this.word(\"finally\");\n this.space();\n this.print(node.finalizer);\n }\n}\nfunction CatchClause(node) {\n this.word(\"catch\");\n this.space();\n if (node.param) {\n this.tokenChar(40);\n this.print(node.param);\n this.print(node.param.typeAnnotation);\n this.tokenChar(41);\n this.space();\n }\n this.print(node.body);\n}\nfunction SwitchStatement(node) {\n this.word(\"switch\");\n this.space();\n this.tokenChar(40);\n this.print(node.discriminant);\n this.tokenChar(41);\n this.space();\n this.tokenChar(123);\n this.printSequence(node.cases, true);\n this.rightBrace(node);\n}\nfunction SwitchCase(node) {\n if (node.test) {\n this.word(\"case\");\n this.space();\n this.print(node.test);\n this.tokenChar(58);\n } else {\n this.word(\"default\");\n this.tokenChar(58);\n }\n if (node.consequent.length) {\n this.newline();\n this.printSequence(node.consequent, true);\n }\n}\nfunction DebuggerStatement() {\n this.word(\"debugger\");\n this.semicolon();\n}\nfunction commaSeparatorWithNewline(occurrenceCount) {\n this.tokenChar(44, occurrenceCount);\n this.newline();\n}\nfunction VariableDeclaration(node, parent) {\n if (node.declare) {\n this.word(\"declare\");\n this.space();\n }\n const {\n kind\n } = node;\n switch (kind) {\n case \"await using\":\n this.word(\"await\");\n this.space();\n case \"using\":\n this.word(\"using\", true);\n break;\n default:\n this.word(kind);\n }\n this.space();\n let hasInits = false;\n if (!isFor(parent)) {\n for (const declar of node.declarations) {\n if (declar.init) {\n hasInits = true;\n break;\n }\n }\n }\n this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? commaSeparatorWithNewline : undefined);\n if (parent != null) {\n switch (parent.type) {\n case \"ForStatement\":\n if (parent.init === node) {\n return;\n }\n break;\n case \"ForInStatement\":\n case \"ForOfStatement\":\n if (parent.left === node) {\n return;\n }\n }\n }\n this.semicolon();\n}\nfunction VariableDeclarator(node) {\n this.print(node.id);\n if (node.definite) this.tokenChar(33);\n if (!isVoidPattern(node.id)) {\n this.print(node.id.typeAnnotation);\n }\n if (node.init) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.init);\n }\n}\nconst {\n isIdentifier: isIdentifier$1\n} = _t;\nfunction _params(node, noLineTerminator, idNode, parentNode) {\n this.print(node.typeParameters);\n if (idNode !== undefined || parentNode !== undefined) {\n const nameInfo = _getFuncIdName.call(this, idNode, parentNode);\n if (nameInfo) {\n this.sourceIdentifierName(nameInfo.name, nameInfo.pos);\n }\n }\n this.tokenChar(40);\n _parameters.call(this, node.params, 41);\n this.print(node.returnType, noLineTerminator);\n this._noLineTerminator = noLineTerminator;\n}\nfunction _parameters(parameters, endToken) {\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n const trailingComma = this.shouldPrintTrailingComma(endToken);\n const paramLength = parameters.length;\n for (let i = 0; i < paramLength; i++) {\n _param.call(this, parameters[i]);\n if (trailingComma || i < paramLength - 1) {\n this.tokenChar(44, i);\n this.space();\n }\n }\n this.tokenChar(endToken);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n}\nfunction _param(parameter) {\n this.printJoin(parameter.decorators, undefined, undefined, undefined, undefined, true);\n this.print(parameter, undefined, true);\n if (parameter.optional) {\n this.tokenChar(63);\n }\n this.print(parameter.typeAnnotation, undefined, true);\n}\nfunction _methodHead(node) {\n const kind = node.kind;\n const key = node.key;\n if (kind === \"get\" || kind === \"set\") {\n this.word(kind);\n this.space();\n }\n if (node.async) {\n this.word(\"async\", true);\n this.space();\n }\n if (kind === \"method\" || kind === \"init\") {\n if (node.generator) {\n this.tokenChar(42);\n }\n }\n if (node.computed) {\n this.tokenChar(91);\n this.print(key);\n this.tokenChar(93);\n } else {\n this.print(key);\n }\n if (node.optional) {\n this.tokenChar(63);\n }\n if (this._buf._map) {\n _params.call(this, node, false, node.computed && node.key.type !== \"StringLiteral\" ? undefined : node.key);\n } else {\n _params.call(this, node, false);\n }\n}\nfunction _predicate(node, noLineTerminatorAfter) {\n if (node.predicate) {\n if (!node.returnType) {\n this.tokenChar(58);\n }\n this.space();\n this.print(node.predicate, noLineTerminatorAfter);\n }\n}\nfunction _functionHead(node, parent, hasPredicate) {\n if (node.async) {\n this.word(\"async\");\n if (!this.format.preserveFormat) {\n this._innerCommentsState = 0;\n }\n this.space();\n }\n this.word(\"function\");\n if (node.generator) {\n if (!this.format.preserveFormat) {\n this._innerCommentsState = 0;\n }\n this.tokenChar(42);\n }\n this.space();\n if (node.id) {\n this.print(node.id);\n }\n if (this._buf._map) {\n _params.call(this, node, false, node.id, parent);\n } else {\n _params.call(this, node, false);\n }\n if (hasPredicate) {\n _predicate.call(this, node);\n }\n}\nfunction FunctionExpression(node, parent) {\n _functionHead.call(this, node, parent, true);\n this.space();\n this.print(node.body);\n}\nfunction ArrowFunctionExpression(node, parent) {\n if (node.async) {\n this.word(\"async\", true);\n this.space();\n }\n if (_shouldPrintArrowParamsParens.call(this, node)) {\n _params.call(this, node, true, undefined, this._buf._map ? parent : undefined);\n } else {\n this.print(node.params[0], true);\n }\n _predicate.call(this, node, true);\n this.space();\n this.printInnerComments();\n this.token(\"=>\");\n this.space();\n this.tokenContext |= 2;\n this.print(node.body);\n}\nfunction _shouldPrintArrowParamsParens(node) {\n if (node.params.length !== 1) return true;\n if (node.typeParameters || node.returnType || node.predicate) {\n return true;\n }\n const firstParam = node.params[0];\n if (!isIdentifier$1(firstParam) || firstParam.typeAnnotation || firstParam.optional || firstParam.leadingComments?.length || firstParam.trailingComments?.length) {\n return true;\n }\n if (this.tokenMap) {\n if (node.loc == null) return true;\n if (this.tokenMap.findMatching(node, \"(\") !== null) return true;\n const arrowToken = this.tokenMap.findMatching(node, \"=>\");\n if (arrowToken?.loc == null) return true;\n return arrowToken.loc.start.line !== node.loc.start.line;\n }\n if (this.format.retainLines) return true;\n return false;\n}\nfunction isRenamedIdentifier(id) {\n return !!id.loc?.identifierName && id.loc.identifierName !== id.name;\n}\nfunction _getFuncIdName(idNode, parent) {\n let id = idNode;\n if (!id && parent) {\n const parentType = parent.type;\n if (parentType === \"VariableDeclarator\") {\n id = parent.id;\n } else if (parentType === \"AssignmentExpression\" || parentType === \"AssignmentPattern\") {\n id = parent.left;\n } else if (parentType === \"ObjectProperty\" || parentType === \"ClassProperty\") {\n if (!parent.computed || parent.key.type === \"StringLiteral\") {\n id = parent.key;\n }\n } else if (parentType === \"ClassPrivateProperty\" || parentType === \"ClassAccessorProperty\") {\n id = parent.key;\n }\n }\n if (!id?.loc) return;\n let nameInfo;\n if (id.type === \"Identifier\") {\n if (!isRenamedIdentifier(id)) return;\n nameInfo = {\n pos: id.loc.start,\n name: id.loc.identifierName\n };\n } else if (id.type === \"PrivateName\") {\n if (!isRenamedIdentifier(id.id)) return;\n nameInfo = {\n pos: id.loc.start,\n name: \"#\" + id.id.loc.identifierName\n };\n } else if (id.type === \"StringLiteral\") {\n nameInfo = {\n pos: id.loc.start,\n name: id.value\n };\n }\n return nameInfo;\n}\nfunction TSTypeAnnotation(node, parent) {\n this.token((parent.type === \"TSFunctionType\" || parent.type === \"TSConstructorType\") && parent.returnType === node ? \"=>\" : \":\");\n this.space();\n if (node.optional) this.tokenChar(63);\n this.print(node.typeAnnotation);\n}\nfunction TSTypeParameterInstantiation(node, parent) {\n this.tokenChar(60);\n let printTrailingSeparator = parent.type === \"ArrowFunctionExpression\" && node.params.length === 1;\n if (this.tokenMap && node.start != null && node.end != null) {\n printTrailingSeparator &&= !!this.tokenMap.find(node, t => this.tokenMap.matchesOriginal(t, \",\"));\n printTrailingSeparator ||= this.shouldPrintTrailingComma(\">\");\n }\n this.printList(node.params, printTrailingSeparator);\n this.tokenChar(62);\n}\nfunction TSTypeParameter(node) {\n if (node.const) {\n this.word(\"const\");\n this.space();\n }\n if (node.in) {\n this.word(\"in\");\n this.space();\n }\n if (node.out) {\n this.word(\"out\");\n this.space();\n }\n this.word(node.name.name);\n if (node.constraint) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.constraint);\n }\n if (node.default) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.default);\n }\n}\nfunction TSParameterProperty(node) {\n if (node.accessibility) {\n this.word(node.accessibility);\n this.space();\n }\n if (node.readonly) {\n this.word(\"readonly\");\n this.space();\n }\n _param.call(this, node.parameter);\n}\nfunction TSDeclareFunction(node, parent) {\n if (node.declare) {\n this.word(\"declare\");\n this.space();\n }\n _functionHead.call(this, node, parent, false);\n this.semicolon();\n}\nfunction TSDeclareMethod(node) {\n _classMethodHead.call(this, node, false);\n this.semicolon();\n}\nfunction TSQualifiedName(node) {\n this.print(node.left);\n this.tokenChar(46);\n this.print(node.right);\n}\nfunction TSCallSignatureDeclaration(node) {\n tsPrintSignatureDeclarationBase.call(this, node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\nfunction maybePrintTrailingCommaOrSemicolon(printer, node) {\n if (!printer.tokenMap || !node.start || !node.end) {\n printer.semicolon();\n return;\n }\n if (printer.tokenMap.endMatches(node, \",\")) {\n printer.token(\",\");\n } else if (printer.tokenMap.endMatches(node, \";\")) {\n printer.semicolon();\n }\n}\nfunction TSConstructSignatureDeclaration(node) {\n this.word(\"new\");\n this.space();\n tsPrintSignatureDeclarationBase.call(this, node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\nfunction TSPropertySignature(node) {\n const {\n readonly\n } = node;\n if (readonly) {\n this.word(\"readonly\");\n this.space();\n }\n tsPrintPropertyOrMethodName.call(this, node);\n this.print(node.typeAnnotation);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\nfunction tsPrintPropertyOrMethodName(node) {\n if (node.computed) {\n this.tokenChar(91);\n }\n this.print(node.key);\n if (node.computed) {\n this.tokenChar(93);\n }\n if (node.optional) {\n this.tokenChar(63);\n }\n}\nfunction TSMethodSignature(node) {\n const {\n kind\n } = node;\n if (kind === \"set\" || kind === \"get\") {\n this.word(kind);\n this.space();\n }\n tsPrintPropertyOrMethodName.call(this, node);\n tsPrintSignatureDeclarationBase.call(this, node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\nfunction TSIndexSignature(node) {\n const {\n readonly,\n static: isStatic\n } = node;\n if (isStatic) {\n this.word(\"static\");\n this.space();\n }\n if (readonly) {\n this.word(\"readonly\");\n this.space();\n }\n this.tokenChar(91);\n _parameters.call(this, node.parameters, 93);\n this.print(node.typeAnnotation);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\nfunction TSAnyKeyword() {\n this.word(\"any\");\n}\nfunction TSBigIntKeyword() {\n this.word(\"bigint\");\n}\nfunction TSUnknownKeyword() {\n this.word(\"unknown\");\n}\nfunction TSNumberKeyword() {\n this.word(\"number\");\n}\nfunction TSObjectKeyword() {\n this.word(\"object\");\n}\nfunction TSBooleanKeyword() {\n this.word(\"boolean\");\n}\nfunction TSStringKeyword() {\n this.word(\"string\");\n}\nfunction TSSymbolKeyword() {\n this.word(\"symbol\");\n}\nfunction TSVoidKeyword() {\n this.word(\"void\");\n}\nfunction TSUndefinedKeyword() {\n this.word(\"undefined\");\n}\nfunction TSNullKeyword() {\n this.word(\"null\");\n}\nfunction TSNeverKeyword() {\n this.word(\"never\");\n}\nfunction TSIntrinsicKeyword() {\n this.word(\"intrinsic\");\n}\nfunction TSThisType() {\n this.word(\"this\");\n}\nfunction TSFunctionType(node) {\n tsPrintFunctionOrConstructorType.call(this, node);\n}\nfunction TSConstructorType(node) {\n if (node.abstract) {\n this.word(\"abstract\");\n this.space();\n }\n this.word(\"new\");\n this.space();\n tsPrintFunctionOrConstructorType.call(this, node);\n}\nfunction tsPrintFunctionOrConstructorType(node) {\n const {\n typeParameters\n } = node;\n const parameters = node.params;\n this.print(typeParameters);\n this.tokenChar(40);\n _parameters.call(this, parameters, 41);\n this.space();\n const returnType = node.returnType;\n this.print(returnType);\n}\nfunction TSTypeReference(node) {\n const typeArguments = node.typeArguments;\n this.print(node.typeName, !!typeArguments);\n this.print(typeArguments);\n}\nfunction TSTypePredicate(node) {\n if (node.asserts) {\n this.word(\"asserts\");\n this.space();\n }\n this.print(node.parameterName);\n if (node.typeAnnotation) {\n this.space();\n this.word(\"is\");\n this.space();\n this.print(node.typeAnnotation.typeAnnotation);\n }\n}\nfunction TSTypeQuery(node) {\n this.word(\"typeof\");\n this.space();\n this.print(node.exprName);\n const typeArguments = node.typeArguments;\n if (typeArguments) {\n this.print(typeArguments);\n }\n}\nfunction TSTypeLiteral(node) {\n printBraced(this, node, () => this.printJoin(node.members, true, true, undefined, undefined, true));\n}\nfunction TSArrayType(node) {\n this.print(node.elementType, true);\n this.tokenChar(91);\n this.tokenChar(93);\n}\nfunction TSTupleType(node) {\n this.tokenChar(91);\n this.printList(node.elementTypes, this.shouldPrintTrailingComma(\"]\"));\n this.tokenChar(93);\n}\nfunction TSOptionalType(node) {\n this.print(node.typeAnnotation);\n this.tokenChar(63);\n}\nfunction TSRestType(node) {\n this.token(\"...\");\n this.print(node.typeAnnotation);\n}\nfunction TSNamedTupleMember(node) {\n this.print(node.label);\n if (node.optional) this.tokenChar(63);\n this.tokenChar(58);\n this.space();\n this.print(node.elementType);\n}\nfunction TSUnionType(node) {\n tsPrintUnionOrIntersectionType(this, node, \"|\");\n}\nfunction TSIntersectionType(node) {\n tsPrintUnionOrIntersectionType(this, node, \"&\");\n}\nfunction tsPrintUnionOrIntersectionType(printer, node, sep) {\n let hasLeadingToken = 0;\n if (printer.tokenMap?.startMatches(node, sep)) {\n hasLeadingToken = 1;\n printer.token(sep);\n }\n printer.printJoin(node.types, undefined, undefined, function (i) {\n this.space();\n this.token(sep, undefined, i + hasLeadingToken);\n this.space();\n });\n}\nfunction TSConditionalType(node) {\n this.print(node.checkType);\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.extendsType);\n this.space();\n this.tokenChar(63);\n this.space();\n this.print(node.trueType);\n this.space();\n this.tokenChar(58);\n this.space();\n this.print(node.falseType);\n}\nfunction TSInferType(node) {\n this.word(\"infer\");\n this.print(node.typeParameter);\n}\nfunction TSParenthesizedType(node) {\n this.tokenChar(40);\n this.print(node.typeAnnotation);\n this.tokenChar(41);\n}\nfunction TSTypeOperator(node) {\n this.word(node.operator);\n this.space();\n this.print(node.typeAnnotation);\n}\nfunction TSIndexedAccessType(node) {\n this.print(node.objectType, true);\n this.tokenChar(91);\n this.print(node.indexType);\n this.tokenChar(93);\n}\nfunction TSMappedType(node) {\n const {\n nameType,\n optional,\n readonly,\n typeAnnotation\n } = node;\n this.tokenChar(123);\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.space();\n if (readonly) {\n tokenIfPlusMinus(this, readonly);\n this.word(\"readonly\");\n this.space();\n }\n this.tokenChar(91);\n this.word(node.key.name);\n this.space();\n this.word(\"in\");\n this.space();\n this.print(node.constraint);\n if (nameType) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(nameType, undefined, true);\n }\n this.tokenChar(93);\n if (optional) {\n tokenIfPlusMinus(this, optional);\n this.tokenChar(63);\n }\n if (typeAnnotation) {\n this.tokenChar(58);\n this.space();\n this.print(typeAnnotation, undefined, true);\n }\n this.space();\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.tokenChar(125);\n}\nfunction tokenIfPlusMinus(self, tok) {\n if (tok !== true) {\n self.token(tok);\n }\n}\nfunction TSTemplateLiteralType(node) {\n _printTemplate.call(this, node, node.types);\n}\nfunction TSLiteralType(node) {\n this.print(node.literal);\n}\nfunction TSClassImplements(node) {\n this.print(node.expression);\n this.print(node.typeArguments);\n}\nfunction TSInterfaceDeclaration(node) {\n const {\n declare,\n id,\n typeParameters,\n extends: extendz,\n body\n } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"interface\");\n this.space();\n this.print(id);\n this.print(typeParameters);\n if (extendz?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(extendz);\n }\n this.space();\n this.print(body);\n}\nfunction TSInterfaceBody(node) {\n printBraced(this, node, () => this.printJoin(node.body, true, true, undefined, undefined, true));\n}\nfunction TSTypeAliasDeclaration(node) {\n const {\n declare,\n id,\n typeParameters,\n typeAnnotation\n } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"type\");\n this.space();\n this.print(id);\n this.print(typeParameters);\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(typeAnnotation);\n this.semicolon();\n}\nfunction TSAsExpression(node) {\n const {\n expression,\n typeAnnotation\n } = node;\n this.print(expression, true);\n this.space();\n this.word(\"as\");\n this.space();\n this.print(typeAnnotation);\n}\nfunction TSSatisfiesExpression(node) {\n const {\n expression,\n typeAnnotation\n } = node;\n this.print(expression, true);\n this.space();\n this.word(\"satisfies\");\n this.space();\n this.print(typeAnnotation);\n}\nfunction TSTypeAssertion(node) {\n const {\n typeAnnotation,\n expression\n } = node;\n this.tokenChar(60);\n this.print(typeAnnotation);\n this.tokenChar(62);\n this.space();\n this.print(expression);\n}\nfunction TSInstantiationExpression(node) {\n this.print(node.expression);\n this.print(node.typeArguments);\n}\nfunction TSEnumDeclaration(node) {\n const {\n declare,\n const: isConst,\n id\n } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n if (isConst) {\n this.word(\"const\");\n this.space();\n }\n this.word(\"enum\");\n this.space();\n this.print(id);\n this.space();\n this.print(node.body);\n}\nfunction TSEnumBody(node) {\n printBraced(this, node, () => this.printList(node.members, this.shouldPrintTrailingComma(\"}\") ?? false, true, true, undefined, true));\n}\nfunction TSEnumMember(node) {\n const {\n id,\n initializer\n } = node;\n this.print(id);\n if (initializer) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(initializer);\n }\n}\nfunction TSModuleDeclaration(node) {\n const {\n declare,\n kind\n } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n if (kind !== \"global\") {\n this.word(kind);\n this.space();\n }\n this.print(node.id);\n if (!node.body) {\n this.semicolon();\n return;\n }\n this.space();\n this.print(node.body);\n}\nfunction TSModuleBlock(node) {\n printBraced(this, node, () => this.printSequence(node.body, true, true));\n}\nfunction TSImportType(node) {\n const {\n qualifier,\n options\n } = node;\n this.word(\"import\");\n this.tokenChar(40);\n this.print(node.source);\n if (options) {\n this.tokenChar(44);\n this.print(options);\n }\n this.tokenChar(41);\n if (qualifier) {\n this.tokenChar(46);\n this.print(qualifier);\n }\n const typeArguments = node.typeArguments;\n if (typeArguments) {\n this.print(typeArguments);\n }\n}\nfunction TSImportEqualsDeclaration(node) {\n const {\n id,\n moduleReference\n } = node;\n this.word(\"import\");\n this.space();\n this.print(id);\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(moduleReference);\n this.semicolon();\n}\nfunction TSExternalModuleReference(node) {\n this.token(\"require(\");\n this.print(node.expression);\n this.tokenChar(41);\n}\nfunction TSNonNullExpression(node) {\n this.print(node.expression);\n this.tokenChar(33);\n this.setLastChar(33);\n}\nfunction TSExportAssignment(node) {\n this.word(\"export\");\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.expression);\n this.semicolon();\n}\nfunction TSNamespaceExportDeclaration(node) {\n this.word(\"export\");\n this.space();\n this.word(\"as\");\n this.space();\n this.word(\"namespace\");\n this.space();\n this.print(node.id);\n this.semicolon();\n}\nfunction tsPrintSignatureDeclarationBase(node) {\n const {\n typeParameters\n } = node;\n const parameters = node.params;\n this.print(typeParameters);\n this.tokenChar(40);\n _parameters.call(this, parameters, 41);\n this.print(node.returnType);\n}\nfunction _tsPrintClassMemberModifiers(node) {\n const isPrivateField = node.type === \"ClassPrivateProperty\";\n const isPublicField = node.type === \"ClassAccessorProperty\" || node.type === \"ClassProperty\";\n printModifiersList(this, node, [isPublicField && node.declare && \"declare\", !isPrivateField && node.accessibility]);\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n printModifiersList(this, node, [!isPrivateField && node.abstract && \"abstract\", !isPrivateField && node.override && \"override\", (isPublicField || isPrivateField) && node.readonly && \"readonly\"]);\n}\nfunction printBraced(printer, node, cb) {\n printer.token(\"{\");\n const oldNoLineTerminatorAfterNode = printer.enterDelimited();\n cb();\n printer._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n printer.rightBrace(node);\n}\nfunction printModifiersList(printer, node, modifiers) {\n const modifiersSet = new Set();\n for (const modifier of modifiers) {\n if (modifier) modifiersSet.add(modifier);\n }\n printer.tokenMap?.find(node, tok => {\n if (modifiersSet.has(tok.value)) {\n printer.token(tok.value);\n printer.space();\n modifiersSet.delete(tok.value);\n return modifiersSet.size === 0;\n }\n return false;\n });\n for (const modifier of modifiersSet) {\n printer.word(modifier);\n printer.space();\n }\n}\nconst {\n isClassDeclaration,\n isExportDefaultSpecifier,\n isExportNamespaceSpecifier,\n isImportDefaultSpecifier,\n isImportNamespaceSpecifier,\n isStatement: isStatement$2\n} = _t;\nfunction ImportSpecifier(node) {\n if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n this.word(node.importKind);\n this.space();\n }\n this.print(node.imported);\n if (node.local && node.local.name !== node.imported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local);\n }\n}\nfunction ImportDefaultSpecifier(node) {\n this.print(node.local);\n}\nfunction ExportDefaultSpecifier(node) {\n this.print(node.exported);\n}\nfunction ExportSpecifier(node) {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n this.print(node.local);\n if (node.exported && node.local.name !== node.exported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported);\n }\n}\nfunction ExportNamespaceSpecifier(node) {\n this.tokenChar(42);\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported);\n}\nfunction _printAttributes(node, hasPreviousBrace) {\n const {\n attributes\n } = node;\n this.word(\"with\");\n this.space();\n const occurrenceCount = hasPreviousBrace ? 1 : 0;\n this.token(\"{\", undefined, occurrenceCount);\n this.space();\n this.printList(attributes, this.shouldPrintTrailingComma(\"}\"));\n this.space();\n this.token(\"}\", undefined, occurrenceCount);\n}\nfunction ExportAllDeclaration(node) {\n this.word(\"export\");\n this.space();\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n this.tokenChar(42);\n this.space();\n this.word(\"from\");\n this.space();\n if (node.attributes?.length) {\n this.print(node.source, true);\n this.space();\n _printAttributes.call(this, node, false);\n } else {\n this.print(node.source);\n }\n this.semicolon();\n}\nfunction maybePrintDecoratorsBeforeExport(printer, node) {\n if (isClassDeclaration(node.declaration) && _shouldPrintDecoratorsBeforeExport.call(printer, node)) {\n printer.printJoin(node.declaration.decorators);\n }\n}\nfunction ExportNamedDeclaration(node) {\n maybePrintDecoratorsBeforeExport(this, node);\n this.word(\"export\");\n this.space();\n if (node.declaration) {\n const declar = node.declaration;\n this.print(declar);\n if (!isStatement$2(declar)) this.semicolon();\n } else {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n const specifiers = node.specifiers.slice(0);\n let hasSpecial = false;\n for (;;) {\n const first = specifiers[0];\n if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) {\n hasSpecial = true;\n this.print(specifiers.shift());\n if (specifiers.length) {\n this.tokenChar(44);\n this.space();\n }\n } else {\n break;\n }\n }\n let hasBrace = false;\n if (specifiers.length || !specifiers.length && !hasSpecial) {\n hasBrace = true;\n this.tokenChar(123);\n if (specifiers.length) {\n this.space();\n this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n this.space();\n }\n this.tokenChar(125);\n }\n if (node.source) {\n this.space();\n this.word(\"from\");\n this.space();\n if (node.attributes?.length) {\n this.print(node.source, true);\n this.space();\n _printAttributes.call(this, node, hasBrace);\n } else {\n this.print(node.source);\n }\n }\n this.semicolon();\n }\n}\nfunction ExportDefaultDeclaration(node) {\n maybePrintDecoratorsBeforeExport(this, node);\n this.word(\"export\");\n this.noIndentInnerCommentsHere();\n this.space();\n this.word(\"default\");\n this.space();\n this.tokenContext |= 4;\n const declar = node.declaration;\n this.print(declar);\n if (!isStatement$2(declar)) this.semicolon();\n}\nfunction ImportDeclaration(node) {\n this.word(\"import\");\n this.space();\n const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n if (isTypeKind) {\n this.noIndentInnerCommentsHere();\n this.word(node.importKind);\n this.space();\n } else if (node.module) {\n this.noIndentInnerCommentsHere();\n this.word(\"module\");\n this.space();\n } else if (node.phase) {\n this.noIndentInnerCommentsHere();\n this.word(node.phase);\n this.space();\n }\n const specifiers = node.specifiers.slice(0);\n const hasSpecifiers = !!specifiers.length;\n while (hasSpecifiers) {\n const first = specifiers[0];\n if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n this.print(specifiers.shift());\n if (specifiers.length) {\n this.tokenChar(44);\n this.space();\n }\n } else {\n break;\n }\n }\n let hasBrace = false;\n if (specifiers.length) {\n hasBrace = true;\n this.tokenChar(123);\n this.space();\n this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n this.space();\n this.tokenChar(125);\n } else if (isTypeKind && !hasSpecifiers) {\n hasBrace = true;\n this.tokenChar(123);\n this.tokenChar(125);\n }\n if (hasSpecifiers || isTypeKind) {\n this.space();\n this.word(\"from\");\n this.space();\n }\n if (node.attributes?.length) {\n this.print(node.source, true);\n this.space();\n _printAttributes.call(this, node, hasBrace);\n } else {\n this.print(node.source);\n }\n this.semicolon();\n}\nfunction ImportAttribute(node) {\n this.print(node.key);\n this.tokenChar(58);\n this.space();\n this.print(node.value);\n}\nfunction ImportNamespaceSpecifier(node) {\n this.tokenChar(42);\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local);\n}\nfunction ImportExpression(node) {\n this.word(\"import\");\n if (node.phase) {\n this.tokenChar(46);\n this.word(node.phase);\n }\n this.tokenChar(40);\n const shouldPrintTrailingComma = this.shouldPrintTrailingComma(\")\");\n this.print(node.source);\n if (node.options != null) {\n this.tokenChar(44);\n this.space();\n this.print(node.options);\n }\n if (shouldPrintTrailingComma) {\n this.tokenChar(44);\n }\n this.rightParens(node);\n}\nconst {\n isAssignmentPattern,\n isIdentifier\n} = _t;\nlet lastRawIdentResult = \"\";\nfunction _getRawIdentifier(node) {\n const {\n name\n } = node;\n const token = this.tokenMap.find(node, tok => tok.value === name);\n if (token) {\n lastRawIdentResult = this._originalCode.slice(token.start, token.end);\n return lastRawIdentResult;\n }\n return lastRawIdentResult = node.name;\n}\nfunction Identifier(node) {\n if (this._buf._map && node.loc?.identifierName && node.loc.identifierName !== node.name) {\n this.sourceIdentifierName(node.loc.identifierName);\n }\n this.word(this.tokenMap ? lastRawIdentResult : node.name);\n}\nfunction ArgumentPlaceholder() {\n this.tokenChar(63);\n}\nfunction RestElement(node) {\n this.token(\"...\");\n this.print(node.argument);\n}\nfunction ObjectExpression(node) {\n const props = node.properties;\n this.tokenChar(123);\n if (props.length) {\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.space();\n this.printList(props, this.shouldPrintTrailingComma(\"}\"), true, true, undefined, true);\n this.space();\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n }\n this.rightBrace(node);\n}\nfunction ObjectMethod(node) {\n this.printJoin(node.decorators);\n _methodHead.call(this, node);\n this.space();\n this.print(node.body);\n}\nfunction ObjectProperty(node) {\n this.printJoin(node.decorators);\n if (node.computed) {\n this.tokenChar(91);\n this.print(node.key);\n this.tokenChar(93);\n } else {\n if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) {\n this.print(node.value);\n return;\n }\n this.print(node.key);\n if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) {\n return;\n }\n }\n this.tokenChar(58);\n this.space();\n this.print(node.value);\n}\nfunction ArrayExpression(node) {\n const elems = node.elements;\n const len = elems.length;\n this.tokenChar(91);\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n for (let i = 0; i < elems.length; i++) {\n const elem = elems[i];\n if (elem) {\n if (i > 0) this.space();\n this.print(elem, undefined, true);\n if (i < len - 1 || this.shouldPrintTrailingComma(\"]\")) {\n this.tokenChar(44, i);\n }\n } else {\n this.tokenChar(44, i);\n }\n }\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.tokenChar(93);\n}\nfunction RegExpLiteral(node) {\n this.word(`/${node.pattern}/${node.flags}`, false);\n}\nfunction BooleanLiteral(node) {\n this.word(node.value ? \"true\" : \"false\");\n}\nfunction NullLiteral() {\n this.word(\"null\");\n}\nfunction NumericLiteral(node) {\n const raw = this.getPossibleRaw(node);\n const opts = this.format.jsescOption;\n const value = node.value;\n const str = value + \"\";\n if (opts.numbers) {\n this.number(jsesc(value, opts), value);\n } else if (raw == null) {\n this.number(str, value);\n } else if (this.format.minified) {\n this.number(raw.length < str.length ? raw : str, value);\n } else {\n this.number(raw, value);\n }\n}\nfunction StringLiteral(node) {\n const raw = this.getPossibleRaw(node);\n if (!this.format.minified && raw !== undefined) {\n this.token(raw);\n return;\n }\n const val = jsesc(node.value, this.format.jsescOption);\n this.token(val);\n}\nfunction BigIntLiteral(node) {\n const raw = this.getPossibleRaw(node);\n if (!this.format.minified && raw !== undefined) {\n this.word(raw);\n return;\n }\n this.word(node.value + \"n\");\n}\nconst validTopicTokenSet = new Set([\"^^\", \"@@\", \"^\", \"%\", \"#\"]);\nfunction TopicReference() {\n const {\n topicToken\n } = this.format;\n if (validTopicTokenSet.has(topicToken)) {\n this.token(topicToken);\n } else {\n const givenTopicTokenJSON = JSON.stringify(topicToken);\n const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));\n throw new Error(`The \"topicToken\" generator option must be one of ` + `${validTopics.join(\", \")} (${givenTopicTokenJSON} received instead).`);\n }\n}\nfunction VoidPattern() {\n this.word(\"void\");\n}\nconst {\n isDeclareExportDeclaration,\n isStatement: isStatement$1\n} = _t;\nfunction AnyTypeAnnotation() {\n this.word(\"any\");\n}\nfunction ArrayTypeAnnotation(node) {\n this.print(node.elementType, true);\n this.tokenChar(91);\n this.tokenChar(93);\n}\nfunction BooleanTypeAnnotation() {\n this.word(\"boolean\");\n}\nfunction BooleanLiteralTypeAnnotation(node) {\n this.word(node.value ? \"true\" : \"false\");\n}\nfunction NullLiteralTypeAnnotation() {\n this.word(\"null\");\n}\nfunction DeclareClass(node, parent) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"class\");\n this.space();\n _interfaceish.call(this, node);\n}\nfunction DeclareFunction(node, parent) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"function\");\n this.space();\n this.print(node.id);\n this.print(node.id.typeAnnotation?.typeAnnotation);\n if (node.predicate) {\n this.space();\n this.print(node.predicate);\n }\n this.semicolon();\n}\nfunction InferredPredicate() {\n this.tokenChar(37);\n this.word(\"checks\");\n}\nfunction DeclaredPredicate(node) {\n this.tokenChar(37);\n this.word(\"checks\");\n this.tokenChar(40);\n this.print(node.value);\n this.tokenChar(41);\n}\nfunction DeclareInterface(node) {\n this.word(\"declare\");\n this.space();\n InterfaceDeclaration.call(this, node);\n}\nfunction DeclareModule(node) {\n this.word(\"declare\");\n this.space();\n this.word(\"module\");\n this.space();\n this.print(node.id);\n this.space();\n this.print(node.body);\n}\nfunction DeclareModuleExports(node) {\n this.word(\"declare\");\n this.space();\n this.word(\"module\");\n this.tokenChar(46);\n this.word(\"exports\");\n this.print(node.typeAnnotation);\n}\nfunction DeclareTypeAlias(node) {\n this.word(\"declare\");\n this.space();\n TypeAlias.call(this, node);\n}\nfunction DeclareOpaqueType(node, parent) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n OpaqueType.call(this, node);\n}\nfunction DeclareVariable(node, parent) {\n if (!isDeclareExportDeclaration(parent)) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"var\");\n this.space();\n this.print(node.id);\n this.print(node.id.typeAnnotation);\n this.semicolon();\n}\nfunction DeclareExportDeclaration(node) {\n this.word(\"declare\");\n this.space();\n this.word(\"export\");\n this.space();\n if (node.default) {\n this.word(\"default\");\n this.space();\n }\n FlowExportDeclaration.call(this, node);\n}\nfunction DeclareExportAllDeclaration(node) {\n this.word(\"declare\");\n this.space();\n ExportAllDeclaration.call(this, node);\n}\nfunction EnumDeclaration(node) {\n const {\n id,\n body\n } = node;\n this.word(\"enum\");\n this.space();\n this.print(id);\n this.print(body);\n}\nfunction enumExplicitType(context, name, hasExplicitType) {\n if (hasExplicitType) {\n context.space();\n context.word(\"of\");\n context.space();\n context.word(name);\n }\n context.space();\n}\nfunction enumBody(context, node) {\n const {\n members\n } = node;\n context.token(\"{\");\n context.indent();\n context.newline();\n for (const member of members) {\n context.print(member);\n context.newline();\n }\n if (node.hasUnknownMembers) {\n context.token(\"...\");\n context.newline();\n }\n context.dedent();\n context.token(\"}\");\n}\nfunction EnumBooleanBody(node) {\n const {\n explicitType\n } = node;\n enumExplicitType(this, \"boolean\", explicitType);\n enumBody(this, node);\n}\nfunction EnumNumberBody(node) {\n const {\n explicitType\n } = node;\n enumExplicitType(this, \"number\", explicitType);\n enumBody(this, node);\n}\nfunction EnumStringBody(node) {\n const {\n explicitType\n } = node;\n enumExplicitType(this, \"string\", explicitType);\n enumBody(this, node);\n}\nfunction EnumSymbolBody(node) {\n enumExplicitType(this, \"symbol\", true);\n enumBody(this, node);\n}\nfunction EnumDefaultedMember(node) {\n const {\n id\n } = node;\n this.print(id);\n this.tokenChar(44);\n}\nfunction enumInitializedMember(context, node) {\n context.print(node.id);\n context.space();\n context.token(\"=\");\n context.space();\n context.print(node.init);\n context.token(\",\");\n}\nfunction EnumBooleanMember(node) {\n enumInitializedMember(this, node);\n}\nfunction EnumNumberMember(node) {\n enumInitializedMember(this, node);\n}\nfunction EnumStringMember(node) {\n enumInitializedMember(this, node);\n}\nfunction FlowExportDeclaration(node) {\n if (node.declaration) {\n const declar = node.declaration;\n this.print(declar);\n if (!isStatement$1(declar)) this.semicolon();\n } else {\n this.tokenChar(123);\n if (node.specifiers.length) {\n this.space();\n this.printList(node.specifiers);\n this.space();\n }\n this.tokenChar(125);\n if (node.source) {\n this.space();\n this.word(\"from\");\n this.space();\n this.print(node.source);\n }\n this.semicolon();\n }\n}\nfunction ExistsTypeAnnotation() {\n this.tokenChar(42);\n}\nfunction FunctionTypeAnnotation(node, parent) {\n this.print(node.typeParameters);\n this.tokenChar(40);\n if (node.this) {\n this.word(\"this\");\n this.tokenChar(58);\n this.space();\n this.print(node.this.typeAnnotation);\n if (node.params.length || node.rest) {\n this.tokenChar(44);\n this.space();\n }\n }\n this.printList(node.params);\n if (node.rest) {\n if (node.params.length) {\n this.tokenChar(44);\n this.space();\n }\n this.token(\"...\");\n this.print(node.rest);\n }\n this.tokenChar(41);\n const type = parent?.type;\n if (type != null && (type === \"ObjectTypeCallProperty\" || type === \"ObjectTypeInternalSlot\" || type === \"DeclareFunction\" || type === \"ObjectTypeProperty\" && parent.method)) {\n this.tokenChar(58);\n } else {\n this.space();\n this.token(\"=>\");\n }\n this.space();\n this.print(node.returnType);\n}\nfunction FunctionTypeParam(node) {\n this.print(node.name);\n if (node.optional) this.tokenChar(63);\n if (node.name) {\n this.tokenChar(58);\n this.space();\n }\n this.print(node.typeAnnotation);\n}\nfunction InterfaceExtends(node) {\n this.print(node.id);\n this.print(node.typeParameters, true);\n}\nfunction _interfaceish(node) {\n this.print(node.id);\n this.print(node.typeParameters);\n if (node.extends?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(node.extends);\n }\n if (node.type === \"DeclareClass\") {\n if (node.mixins?.length) {\n this.space();\n this.word(\"mixins\");\n this.space();\n this.printList(node.mixins);\n }\n if (node.implements?.length) {\n this.space();\n this.word(\"implements\");\n this.space();\n this.printList(node.implements);\n }\n }\n this.space();\n this.print(node.body);\n}\nfunction _variance(node) {\n const kind = node.variance?.kind;\n if (kind != null) {\n if (kind === \"plus\") {\n this.tokenChar(43);\n } else if (kind === \"minus\") {\n this.tokenChar(45);\n }\n }\n}\nfunction InterfaceDeclaration(node) {\n this.word(\"interface\");\n this.space();\n _interfaceish.call(this, node);\n}\nfunction andSeparator(occurrenceCount) {\n this.space();\n this.token(\"&\", false, occurrenceCount);\n this.space();\n}\nfunction InterfaceTypeAnnotation(node) {\n this.word(\"interface\");\n if (node.extends?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(node.extends);\n }\n this.space();\n this.print(node.body);\n}\nfunction IntersectionTypeAnnotation(node) {\n this.printJoin(node.types, undefined, undefined, andSeparator);\n}\nfunction MixedTypeAnnotation() {\n this.word(\"mixed\");\n}\nfunction EmptyTypeAnnotation() {\n this.word(\"empty\");\n}\nfunction NullableTypeAnnotation(node) {\n this.tokenChar(63);\n this.print(node.typeAnnotation);\n}\nfunction NumberTypeAnnotation() {\n this.word(\"number\");\n}\nfunction StringTypeAnnotation() {\n this.word(\"string\");\n}\nfunction ThisTypeAnnotation() {\n this.word(\"this\");\n}\nfunction TupleTypeAnnotation(node) {\n this.tokenChar(91);\n this.printList(node.types);\n this.tokenChar(93);\n}\nfunction TypeofTypeAnnotation(node) {\n this.word(\"typeof\");\n this.space();\n this.print(node.argument);\n}\nfunction TypeAlias(node) {\n this.word(\"type\");\n this.space();\n this.print(node.id);\n this.print(node.typeParameters);\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.right);\n this.semicolon();\n}\nfunction TypeAnnotation(node, parent) {\n this.tokenChar(58);\n this.space();\n if (parent.type === \"ArrowFunctionExpression\") {\n this.tokenContext |= 8;\n } else if (node.optional) {\n this.tokenChar(63);\n }\n this.print(node.typeAnnotation);\n}\nfunction TypeParameterInstantiation(node) {\n this.tokenChar(60);\n this.printList(node.params);\n this.tokenChar(62);\n}\nfunction TypeParameter(node) {\n _variance.call(this, node);\n this.word(node.name);\n if (node.bound) {\n this.print(node.bound);\n }\n if (node.default) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.default);\n }\n}\nfunction OpaqueType(node) {\n this.word(\"opaque\");\n this.space();\n this.word(\"type\");\n this.space();\n this.print(node.id);\n this.print(node.typeParameters);\n if (node.supertype) {\n this.tokenChar(58);\n this.space();\n this.print(node.supertype);\n }\n if (node.impltype) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.impltype);\n }\n this.semicolon();\n}\nfunction ObjectTypeAnnotation(node) {\n if (node.exact) {\n this.token(\"{|\");\n } else {\n this.tokenChar(123);\n }\n const props = [...node.properties, ...(node.callProperties || []), ...(node.indexers || []), ...(node.internalSlots || [])];\n if (props.length) {\n this.newline();\n this.space();\n this.printJoin(props, true, true, () => {\n if (props.length !== 1 || node.inexact) {\n this.tokenChar(44);\n this.space();\n }\n }, true);\n this.space();\n }\n if (node.inexact) {\n this.indent();\n this.token(\"...\");\n if (props.length) {\n this.newline();\n }\n this.dedent();\n }\n if (node.exact) {\n this.token(\"|}\");\n } else {\n this.tokenChar(125);\n }\n}\nfunction ObjectTypeInternalSlot(node) {\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n this.tokenChar(91);\n this.tokenChar(91);\n this.print(node.id);\n this.tokenChar(93);\n this.tokenChar(93);\n if (node.optional) this.tokenChar(63);\n if (!node.method) {\n this.tokenChar(58);\n this.space();\n }\n this.print(node.value);\n}\nfunction ObjectTypeCallProperty(node) {\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n this.print(node.value);\n}\nfunction ObjectTypeIndexer(node) {\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n _variance.call(this, node);\n this.tokenChar(91);\n if (node.id) {\n this.print(node.id);\n this.tokenChar(58);\n this.space();\n }\n this.print(node.key);\n this.tokenChar(93);\n this.tokenChar(58);\n this.space();\n this.print(node.value);\n}\nfunction ObjectTypeProperty(node) {\n if (node.proto) {\n this.word(\"proto\");\n this.space();\n }\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n if (node.kind === \"get\" || node.kind === \"set\") {\n this.word(node.kind);\n this.space();\n }\n _variance.call(this, node);\n this.print(node.key);\n if (node.optional) this.tokenChar(63);\n if (!node.method) {\n this.tokenChar(58);\n this.space();\n }\n this.print(node.value);\n}\nfunction ObjectTypeSpreadProperty(node) {\n this.token(\"...\");\n this.print(node.argument);\n}\nfunction QualifiedTypeIdentifier(node) {\n this.print(node.qualification);\n this.tokenChar(46);\n this.print(node.id);\n}\nfunction SymbolTypeAnnotation() {\n this.word(\"symbol\");\n}\nfunction orSeparator(occurrenceCount) {\n this.space();\n this.token(\"|\", false, occurrenceCount);\n this.space();\n}\nfunction UnionTypeAnnotation(node) {\n this.printJoin(node.types, undefined, undefined, orSeparator);\n}\nfunction TypeCastExpression(node) {\n this.tokenChar(40);\n this.print(node.expression);\n this.print(node.typeAnnotation);\n this.tokenChar(41);\n}\nfunction Variance(node) {\n if (node.kind === \"plus\") {\n this.tokenChar(43);\n } else {\n this.tokenChar(45);\n }\n}\nfunction VoidTypeAnnotation() {\n this.word(\"void\");\n}\nfunction IndexedAccessType(node) {\n this.print(node.objectType, true);\n this.tokenChar(91);\n this.print(node.indexType);\n this.tokenChar(93);\n}\nfunction OptionalIndexedAccessType(node) {\n this.print(node.objectType);\n if (node.optional) {\n this.token(\"?.\");\n }\n this.tokenChar(91);\n this.print(node.indexType);\n this.tokenChar(93);\n}\nconst {\n isExportDefaultDeclaration,\n isExportNamedDeclaration\n} = _t;\nfunction ClassDeclaration(node, parent) {\n const inExport = isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent);\n if (!inExport || !_shouldPrintDecoratorsBeforeExport.call(this, parent)) {\n this.printJoin(node.decorators);\n }\n if (node.declare) {\n this.word(\"declare\");\n this.space();\n }\n if (node.abstract) {\n this.word(\"abstract\");\n this.space();\n }\n this.word(\"class\");\n if (node.id) {\n this.space();\n this.print(node.id);\n }\n this.print(node.typeParameters);\n if (node.superClass) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.superClass);\n this.print(node.superTypeArguments);\n }\n if (node.implements) {\n this.space();\n this.word(\"implements\");\n this.space();\n this.printList(node.implements);\n }\n this.space();\n this.print(node.body);\n}\nfunction ClassBody(node) {\n this.tokenChar(123);\n if (node.body.length === 0) {\n this.tokenChar(125);\n } else {\n const separator = classBodyEmptySemicolonsPrinter(this, node);\n separator?.(-1);\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n this.printJoin(node.body, true, true, separator, true, true);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n if (!this.endsWith(10)) this.newline();\n this.rightBrace(node);\n }\n}\nfunction classBodyEmptySemicolonsPrinter(printer, node) {\n if (!printer.tokenMap || node.start == null || node.end == null) {\n return null;\n }\n const indexes = printer.tokenMap.getIndexes(node);\n if (!indexes) return null;\n let k = 1;\n let occurrenceCount = 0;\n let nextLocIndex = 0;\n const advanceNextLocIndex = () => {\n while (nextLocIndex < node.body.length && node.body[nextLocIndex].start == null) {\n nextLocIndex++;\n }\n };\n advanceNextLocIndex();\n return i => {\n if (nextLocIndex <= i) {\n nextLocIndex = i + 1;\n advanceNextLocIndex();\n }\n const end = nextLocIndex === node.body.length ? node.end : node.body[nextLocIndex].start;\n let tok;\n while (k < indexes.length && printer.tokenMap.matchesOriginal(tok = printer._tokens[indexes[k]], \";\") && tok.start < end) {\n printer.tokenChar(59, occurrenceCount++);\n k++;\n }\n };\n}\nfunction ClassProperty(node) {\n this.printJoin(node.decorators);\n if (!node.static && !this.format.preserveFormat) {\n const endLine = node.key.loc?.end?.line;\n if (endLine) this.catchUp(endLine);\n }\n _tsPrintClassMemberModifiers.call(this, node);\n if (node.computed) {\n this.tokenChar(91);\n this.print(node.key);\n this.tokenChar(93);\n } else {\n _variance.call(this, node);\n this.print(node.key);\n }\n if (node.optional) {\n this.tokenChar(63);\n }\n if (node.definite) {\n this.tokenChar(33);\n }\n this.print(node.typeAnnotation);\n if (node.value) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.value);\n }\n this.semicolon();\n}\nfunction ClassAccessorProperty(node) {\n this.printJoin(node.decorators);\n const endLine = node.key.loc?.end?.line;\n if (endLine) this.catchUp(endLine);\n _tsPrintClassMemberModifiers.call(this, node);\n this.word(\"accessor\", true);\n this.space();\n if (node.computed) {\n this.tokenChar(91);\n this.print(node.key);\n this.tokenChar(93);\n } else {\n _variance.call(this, node);\n this.print(node.key);\n }\n if (node.optional) {\n this.tokenChar(63);\n }\n if (node.definite) {\n this.tokenChar(33);\n }\n this.print(node.typeAnnotation);\n if (node.value) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.value);\n }\n this.semicolon();\n}\nfunction ClassPrivateProperty(node) {\n this.printJoin(node.decorators);\n _tsPrintClassMemberModifiers.call(this, node);\n this.print(node.key);\n if (node.optional) {\n this.tokenChar(63);\n }\n if (node.definite) {\n this.tokenChar(33);\n }\n this.print(node.typeAnnotation);\n if (node.value) {\n this.space();\n this.tokenChar(61);\n this.space();\n this.print(node.value);\n }\n this.semicolon();\n}\nfunction ClassMethod(node) {\n _classMethodHead.call(this, node);\n this.space();\n this.print(node.body);\n}\nfunction ClassPrivateMethod(node) {\n _classMethodHead.call(this, node);\n this.space();\n this.print(node.body);\n}\nfunction _classMethodHead(node, allowDecorators = true) {\n if (allowDecorators) {\n this.printJoin(node.decorators);\n }\n if (!this.format.preserveFormat) {\n const endLine = node.key.loc?.end?.line;\n if (endLine) this.catchUp(endLine);\n }\n _tsPrintClassMemberModifiers.call(this, node);\n _methodHead.call(this, node);\n}\nfunction StaticBlock(node) {\n this.word(\"static\");\n this.space();\n this.tokenChar(123);\n if (node.body.length === 0) {\n this.tokenChar(125);\n } else {\n this.newline();\n this.printSequence(node.body, true);\n this.rightBrace(node);\n }\n}\nfunction File(node) {\n if (node.program) {\n this.print(node.program.interpreter);\n }\n this.print(node.program);\n}\nfunction Program(node) {\n this.printInnerComments(false);\n const directivesLen = node.directives?.length;\n if (directivesLen) {\n const newline = node.body.length ? 2 : 1;\n this.printSequence(node.directives, undefined, undefined, newline);\n if (!node.directives[directivesLen - 1].trailingComments?.length) {\n this.newline(newline);\n }\n }\n this.printSequence(node.body);\n}\nfunction BlockStatement(node) {\n this.tokenChar(123);\n const oldNoLineTerminatorAfterNode = this.enterDelimited();\n const directivesLen = node.directives?.length;\n if (directivesLen) {\n const newline = node.body.length ? 2 : 1;\n this.printSequence(node.directives, true, true, newline);\n if (!node.directives[directivesLen - 1].trailingComments?.length) {\n this.newline(newline);\n }\n }\n this.printSequence(node.body, true, true);\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n this.rightBrace(node);\n}\nfunction Directive(node) {\n this.print(node.value);\n this.semicolon();\n}\nconst unescapedSingleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*'/;\nconst unescapedDoubleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*\"/;\nfunction DirectiveLiteral(node) {\n const raw = this.getPossibleRaw(node);\n if (!this.format.minified && raw !== undefined) {\n this.token(raw);\n return;\n }\n const {\n value\n } = node;\n if (!unescapedDoubleQuoteRE.test(value)) {\n this.token(`\"${value}\"`);\n } else if (!unescapedSingleQuoteRE.test(value)) {\n this.token(`'${value}'`);\n } else {\n throw new Error(\"Malformed AST: it is not possible to print a directive containing\" + \" both unescaped single and double quotes.\");\n }\n}\nfunction InterpreterDirective(node) {\n this.token(`#!${node.value}`);\n this._newline();\n}\nfunction Placeholder(node) {\n this.token(\"%%\");\n this.print(node.name);\n this.token(\"%%\");\n if (node.expectedNode === \"Statement\") {\n this.semicolon();\n }\n}\nfunction JSXAttribute(node) {\n this.print(node.name);\n if (node.value) {\n this.tokenChar(61);\n this.print(node.value);\n }\n}\nfunction JSXIdentifier(node) {\n this.word(node.name);\n}\nfunction JSXNamespacedName(node) {\n this.print(node.namespace);\n this.tokenChar(58);\n this.print(node.name);\n}\nfunction JSXMemberExpression(node) {\n this.print(node.object);\n this.tokenChar(46);\n this.print(node.property);\n}\nfunction JSXSpreadAttribute(node) {\n this.tokenChar(123);\n this.token(\"...\");\n this.print(node.argument);\n this.rightBrace(node);\n}\nfunction JSXExpressionContainer(node) {\n this.tokenChar(123);\n this.print(node.expression);\n this.rightBrace(node);\n}\nfunction JSXSpreadChild(node) {\n this.tokenChar(123);\n this.token(\"...\");\n this.print(node.expression);\n this.rightBrace(node);\n}\nfunction JSXText(node) {\n const raw = this.getPossibleRaw(node);\n if (raw !== undefined) {\n this.token(raw, true);\n } else {\n this.token(node.value, true);\n }\n}\nfunction JSXElement(node) {\n const open = node.openingElement;\n this.print(open);\n if (open.selfClosing) return;\n this.indent();\n for (const child of node.children) {\n this.print(child);\n }\n this.dedent();\n this.print(node.closingElement);\n}\nfunction spaceSeparator() {\n this.space();\n}\nfunction JSXOpeningElement(node) {\n this.tokenChar(60);\n this.print(node.name);\n this.print(node.typeArguments);\n if (node.attributes.length > 0) {\n this.space();\n this.printJoin(node.attributes, undefined, undefined, spaceSeparator);\n }\n if (node.selfClosing) {\n this.space();\n this.tokenChar(47);\n }\n this.tokenChar(62);\n}\nfunction JSXClosingElement(node) {\n this.tokenChar(60);\n this.tokenChar(47);\n this.print(node.name);\n this.tokenChar(62);\n}\nfunction JSXEmptyExpression() {\n this.printInnerComments();\n}\nfunction JSXFragment(node) {\n this.print(node.openingFragment);\n this.indent();\n for (const child of node.children) {\n this.print(child);\n }\n this.dedent();\n this.print(node.closingFragment);\n}\nfunction JSXOpeningFragment() {\n this.tokenChar(60);\n this.tokenChar(62);\n}\nfunction JSXClosingFragment() {\n this.token(\"</\");\n this.tokenChar(62);\n}\nconst generatorFunctions = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n AnyTypeAnnotation,\n ArgumentPlaceholder,\n ArrayExpression,\n ArrayPattern: ArrayExpression,\n ArrayTypeAnnotation,\n ArrowFunctionExpression,\n AssignmentExpression,\n AssignmentPattern,\n AwaitExpression,\n BigIntLiteral,\n BigIntLiteralTypeAnnotation: BigIntLiteral,\n BinaryExpression,\n BindExpression,\n BlockStatement,\n BooleanLiteral,\n BooleanLiteralTypeAnnotation,\n BooleanTypeAnnotation,\n BreakStatement,\n CallExpression,\n CatchClause,\n ClassAccessorProperty,\n ClassBody,\n ClassDeclaration,\n ClassExpression: ClassDeclaration,\n ClassImplements: InterfaceExtends,\n ClassMethod,\n ClassPrivateMethod,\n ClassPrivateProperty,\n ClassProperty,\n ConditionalExpression,\n ContinueStatement,\n DebuggerStatement,\n DeclareClass,\n DeclareExportAllDeclaration,\n DeclareExportDeclaration,\n DeclareFunction,\n DeclareInterface,\n DeclareModule,\n DeclareModuleExports,\n DeclareOpaqueType,\n DeclareTypeAlias,\n DeclareVariable,\n DeclaredPredicate,\n Decorator,\n Directive,\n DirectiveLiteral,\n DoExpression,\n DoWhileStatement,\n EmptyStatement,\n EmptyTypeAnnotation,\n EnumBooleanBody,\n EnumBooleanMember,\n EnumDeclaration,\n EnumDefaultedMember,\n EnumNumberBody,\n EnumNumberMember,\n EnumStringBody,\n EnumStringMember,\n EnumSymbolBody,\n ExistsTypeAnnotation,\n ExportAllDeclaration,\n ExportDefaultDeclaration,\n ExportDefaultSpecifier,\n ExportNamedDeclaration,\n ExportNamespaceSpecifier,\n ExportSpecifier,\n ExpressionStatement,\n File,\n ForInStatement,\n ForOfStatement,\n ForStatement,\n FunctionDeclaration: FunctionExpression,\n FunctionExpression,\n FunctionTypeAnnotation,\n FunctionTypeParam,\n GenericTypeAnnotation: InterfaceExtends,\n Identifier,\n IfStatement,\n Import,\n ImportAttribute,\n ImportDeclaration,\n ImportDefaultSpecifier,\n ImportExpression,\n ImportNamespaceSpecifier,\n ImportSpecifier,\n IndexedAccessType,\n InferredPredicate,\n InterfaceDeclaration,\n InterfaceExtends,\n InterfaceTypeAnnotation,\n InterpreterDirective,\n IntersectionTypeAnnotation,\n JSXAttribute,\n JSXClosingElement,\n JSXClosingFragment,\n JSXElement,\n JSXEmptyExpression,\n JSXExpressionContainer,\n JSXFragment,\n JSXIdentifier,\n JSXMemberExpression,\n JSXNamespacedName,\n JSXOpeningElement,\n JSXOpeningFragment,\n JSXSpreadAttribute,\n JSXSpreadChild,\n JSXText,\n LabeledStatement,\n LogicalExpression: AssignmentExpression,\n MemberExpression,\n MetaProperty,\n MixedTypeAnnotation,\n ModuleExpression,\n NewExpression,\n NullLiteral,\n NullLiteralTypeAnnotation,\n NullableTypeAnnotation,\n NumberLiteralTypeAnnotation: NumericLiteral,\n NumberTypeAnnotation,\n NumericLiteral,\n ObjectExpression,\n ObjectMethod,\n ObjectPattern: ObjectExpression,\n ObjectProperty,\n ObjectTypeAnnotation,\n ObjectTypeCallProperty,\n ObjectTypeIndexer,\n ObjectTypeInternalSlot,\n ObjectTypeProperty,\n ObjectTypeSpreadProperty,\n OpaqueType,\n OptionalCallExpression,\n OptionalIndexedAccessType,\n OptionalMemberExpression,\n ParenthesizedExpression,\n Placeholder,\n PrivateName,\n Program,\n QualifiedTypeIdentifier,\n RegExpLiteral,\n RestElement,\n ReturnStatement,\n SequenceExpression,\n SpreadElement: RestElement,\n StaticBlock,\n StringLiteral,\n StringLiteralTypeAnnotation: StringLiteral,\n StringTypeAnnotation,\n Super,\n SwitchCase,\n SwitchStatement,\n SymbolTypeAnnotation,\n TSAnyKeyword,\n TSArrayType,\n TSAsExpression,\n TSBigIntKeyword,\n TSBooleanKeyword,\n TSCallSignatureDeclaration,\n TSClassImplements,\n TSConditionalType,\n TSConstructSignatureDeclaration,\n TSConstructorType,\n TSDeclareFunction,\n TSDeclareMethod,\n TSEnumBody,\n TSEnumDeclaration,\n TSEnumMember,\n TSExportAssignment,\n TSExternalModuleReference,\n TSFunctionType,\n TSImportEqualsDeclaration,\n TSImportType,\n TSIndexSignature,\n TSIndexedAccessType,\n TSInferType,\n TSInstantiationExpression,\n TSInterfaceBody,\n TSInterfaceDeclaration,\n TSInterfaceHeritage: TSClassImplements,\n TSIntersectionType,\n TSIntrinsicKeyword,\n TSLiteralType,\n TSMappedType,\n TSMethodSignature,\n TSModuleBlock,\n TSModuleDeclaration,\n TSNamedTupleMember,\n TSNamespaceExportDeclaration,\n TSNeverKeyword,\n TSNonNullExpression,\n TSNullKeyword,\n TSNumberKeyword,\n TSObjectKeyword,\n TSOptionalType,\n TSParameterProperty,\n TSParenthesizedType,\n TSPropertySignature,\n TSQualifiedName,\n TSRestType,\n TSSatisfiesExpression,\n TSStringKeyword,\n TSSymbolKeyword,\n TSTemplateLiteralType,\n TSThisType,\n TSTupleType,\n TSTypeAliasDeclaration,\n TSTypeAnnotation,\n TSTypeAssertion,\n TSTypeLiteral,\n TSTypeOperator,\n TSTypeParameter,\n TSTypeParameterDeclaration: TSTypeParameterInstantiation,\n TSTypeParameterInstantiation,\n TSTypePredicate,\n TSTypeQuery,\n TSTypeReference,\n TSUndefinedKeyword,\n TSUnionType,\n TSUnknownKeyword,\n TSVoidKeyword,\n TaggedTemplateExpression,\n TemplateElement,\n TemplateLiteral,\n ThisExpression,\n ThisTypeAnnotation,\n ThrowStatement,\n TopicReference,\n TryStatement,\n TupleTypeAnnotation,\n TypeAlias,\n TypeAnnotation,\n TypeCastExpression,\n TypeParameter,\n TypeParameterDeclaration: TypeParameterInstantiation,\n TypeParameterInstantiation,\n TypeofTypeAnnotation,\n UnaryExpression,\n UnionTypeAnnotation,\n UpdateExpression,\n V8IntrinsicIdentifier,\n VariableDeclaration,\n VariableDeclarator,\n Variance,\n VoidPattern,\n VoidTypeAnnotation,\n WhileStatement,\n WithStatement,\n YieldExpression,\n _classMethodHead,\n _functionHead,\n _getRawIdentifier,\n _interfaceish,\n _methodHead,\n _param,\n _parameters,\n _params,\n _predicate,\n _printAttributes,\n _printTemplate,\n _shouldPrintArrowParamsParens,\n _shouldPrintDecoratorsBeforeExport,\n _tsPrintClassMemberModifiers,\n _variance\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst generatorInfosMap = new Map();\nlet index = 0;\nfor (const key of Object.keys(generatorFunctions).sort()) {\n if (key.startsWith(\"_\")) continue;\n generatorInfosMap.set(key, [generatorFunctions[key], index++, undefined]);\n}\nconst {\n VISITOR_KEYS: VISITOR_KEYS$1\n} = _t;\nfor (const type of Object.keys(parens)) {\n const func = parens[type];\n if (generatorInfosMap.has(type)) {\n generatorInfosMap.get(type)[2] = func;\n }\n}\nfunction newCalleeNeedsParens(node) {\n let current = node;\n while (true) {\n switch (current.type) {\n case \"CallExpression\":\n case \"ImportExpression\":\n case \"OptionalCallExpression\":\n case \"OptionalMemberExpression\":\n return true;\n case \"MemberExpression\":\n current = current.object;\n break;\n case \"TaggedTemplateExpression\":\n current = current.tag;\n break;\n case \"TSNonNullExpression\":\n current = current.expression;\n break;\n default:\n return false;\n }\n }\n}\nfunction parentNeedsParens(node, parent, parentId) {\n switch (parentId) {\n case 113:\n if (parent.callee === node) {\n return newCalleeNeedsParens(node);\n }\n break;\n case 43:\n return !isDecoratorMemberExpression(node) && !(node.type === \"CallExpression\" && isDecoratorMemberExpression(node.callee)) && node.type !== \"ParenthesizedExpression\";\n }\n return false;\n}\nfunction isDecoratorMemberExpression(node) {\n switch (node.type) {\n case \"Identifier\":\n return true;\n case \"MemberExpression\":\n return !node.computed && node.property.type === \"Identifier\" && isDecoratorMemberExpression(node.object);\n default:\n return false;\n }\n}\nfunction isLastChild(parent, child) {\n const visitorKeys = VISITOR_KEYS$1[parent.type];\n for (let i = visitorKeys.length - 1; i >= 0; i--) {\n const val = parent[visitorKeys[i]];\n if (val === child) {\n return true;\n } else if (Array.isArray(val)) {\n let j = val.length - 1;\n while (j >= 0 && val[j] === null) j--;\n return j >= 0 && val[j] === child;\n } else if (val) {\n return false;\n }\n }\n return false;\n}\nconst {\n traverseFast,\n VISITOR_KEYS\n} = _t;\nclass TokenMap {\n _tokens;\n _source;\n _nodesToTokenIndexes = new Map();\n _nodesOccurrencesCountCache = new Map();\n _tokensCache = new Map();\n constructor(ast, tokens, source) {\n this._tokens = tokens;\n this._source = source;\n traverseFast(ast, node => {\n const indexes = this._getTokensIndexesOfNode(node);\n if (indexes.length > 0) this._nodesToTokenIndexes.set(node, indexes);\n });\n this._tokensCache.clear();\n }\n has(node) {\n return this._nodesToTokenIndexes.has(node);\n }\n getIndexes(node) {\n return this._nodesToTokenIndexes.get(node);\n }\n find(node, condition) {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (indexes) {\n for (let k = 0; k < indexes.length; k++) {\n const index = indexes[k];\n const tok = this._tokens[index];\n if (condition(tok, index)) return tok;\n }\n }\n return null;\n }\n findLastIndex(node, condition) {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (indexes) {\n for (let k = indexes.length - 1; k >= 0; k--) {\n const index = indexes[k];\n const tok = this._tokens[index];\n if (condition(tok, index)) return index;\n }\n }\n return -1;\n }\n findMatching(node, test, occurrenceCount = 0) {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (indexes) {\n if (typeof test === \"number\") {\n test = String.fromCharCode(test);\n }\n let i = 0;\n const count = occurrenceCount;\n if (count > 1) {\n const cache = this._nodesOccurrencesCountCache.get(node);\n if (cache?.test === test && cache.count < count) {\n i = cache.i + 1;\n occurrenceCount -= cache.count + 1;\n }\n }\n for (; i < indexes.length; i++) {\n const tok = this._tokens[indexes[i]];\n if (this.matchesOriginal(tok, test)) {\n if (occurrenceCount === 0) {\n if (count > 0) {\n this._nodesOccurrencesCountCache.set(node, {\n test,\n count,\n i\n });\n }\n return tok;\n }\n occurrenceCount--;\n }\n }\n }\n return null;\n }\n matchesOriginal(token, test) {\n if (token.end - token.start !== test.length) return false;\n if (token.value != null) return token.value === test;\n return this._source.startsWith(test, token.start);\n }\n startMatches(node, test) {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (!indexes) return false;\n const tok = this._tokens[indexes[0]];\n if (tok.start !== node.start) return false;\n return this.matchesOriginal(tok, test);\n }\n endMatches(node, test) {\n const indexes = this._nodesToTokenIndexes.get(node);\n if (!indexes) return false;\n const tok = this._tokens[indexes[indexes.length - 1]];\n if (tok.end !== node.end) return false;\n return this.matchesOriginal(tok, test);\n }\n _getTokensIndexesOfNode(node) {\n if (node.start == null || node.end == null) return [];\n const {\n first,\n last\n } = this._findTokensOfNode(node, 0, this._tokens.length - 1);\n let low = first;\n const children = childrenIterator(node);\n if ((node.type === \"ExportNamedDeclaration\" || node.type === \"ExportDefaultDeclaration\") && node.declaration?.type === \"ClassDeclaration\") {\n children.next();\n }\n const indexes = [];\n for (const child of children) {\n if (child == null) continue;\n if (child.start == null || child.end == null) continue;\n const childTok = this._findTokensOfNode(child, low, last);\n const high = childTok.first;\n for (let k = low; k < high; k++) indexes.push(k);\n low = childTok.last + 1;\n }\n for (let k = low; k <= last; k++) indexes.push(k);\n return indexes;\n }\n _findTokensOfNode(node, low, high) {\n const cached = this._tokensCache.get(node);\n if (cached) return cached;\n const first = this._findFirstTokenOfNode(node.start, low, high);\n const last = this._findLastTokenOfNode(node.end, first, high);\n this._tokensCache.set(node, {\n first,\n last\n });\n return {\n first,\n last\n };\n }\n _findFirstTokenOfNode(start, low, high) {\n while (low <= high) {\n const mid = high + low >> 1;\n if (start < this._tokens[mid].start) {\n high = mid - 1;\n } else if (start > this._tokens[mid].start) {\n low = mid + 1;\n } else {\n return mid;\n }\n }\n return low;\n }\n _findLastTokenOfNode(end, low, high) {\n while (low <= high) {\n const mid = high + low >> 1;\n if (end < this._tokens[mid].end) {\n high = mid - 1;\n } else if (end > this._tokens[mid].end) {\n low = mid + 1;\n } else {\n return mid;\n }\n }\n return high;\n }\n}\nfunction* childrenIterator(node) {\n if (node.type === \"TemplateLiteral\") {\n yield node.quasis[0];\n for (let i = 1; i < node.quasis.length; i++) {\n yield node.expressions[i - 1];\n yield node.quasis[i];\n }\n return;\n }\n const keys = VISITOR_KEYS[node.type];\n for (const key of keys) {\n const child = node[key];\n if (!child) continue;\n if (Array.isArray(child)) {\n yield* child;\n } else {\n yield child;\n }\n }\n}\nconst {\n isExpression,\n isFunction,\n isStatement,\n isClassBody,\n isTSInterfaceBody,\n isTSEnumMember\n} = _t;\nconst SCIENTIFIC_NOTATION = /e/i;\nconst ZERO_DECIMAL_INTEGER = /\\.0+$/;\nconst HAS_NEWLINE = /[\\n\\r\\u2028\\u2029]/;\nconst HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\\n\\r\\u2028\\u2029]|\\*\\//;\nfunction commentIsNewline(c) {\n return c.type === \"CommentLine\" || HAS_NEWLINE.test(c.value);\n}\nclass Printer {\n constructor(format, map, tokens = null, originalCode = null) {\n this.format = format;\n this._tokens = tokens;\n this._originalCode = originalCode;\n this._indentRepeat = format.indent.style.length;\n this._inputMap = map?._inputMap || null;\n this._buf = new Buffer(map, format.indent.style[0]);\n const {\n preserveFormat,\n compact,\n concise,\n retainLines,\n retainFunctionParens\n } = format;\n if (preserveFormat) {\n this._flags |= 1;\n }\n if (compact) {\n this._flags |= 2;\n }\n if (concise) {\n this._flags |= 4;\n }\n if (retainLines) {\n this._flags |= 8;\n }\n if (retainFunctionParens) {\n this._flags |= 16;\n }\n if (format.auxiliaryCommentBefore || format.auxiliaryCommentAfter) {\n this._flags |= 32;\n }\n }\n enterDelimited() {\n const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n if (oldNoLineTerminatorAfterNode !== null) {\n this._noLineTerminatorAfterNode = null;\n }\n return oldNoLineTerminatorAfterNode;\n }\n tokenContext = 0;\n _tokens = null;\n _originalCode = null;\n _currentNode = null;\n _currentTypeId = null;\n _indent = 0;\n _indentRepeat = 0;\n _insideAux = false;\n _noLineTerminator = false;\n _noLineTerminatorAfterNode = null;\n _printAuxAfterOnNextUserNode = false;\n _printedComments = new Set();\n _lastCommentLine = 0;\n _innerCommentsState = 0;\n _flags = 0;\n tokenMap = null;\n _boundGetRawIdentifier = null;\n generate(ast) {\n if (this.format.preserveFormat) {\n this.tokenMap = new TokenMap(ast, this._tokens, this._originalCode);\n this._boundGetRawIdentifier = _getRawIdentifier.bind(this);\n }\n this.print(ast);\n this._maybeAddAuxComment();\n return this._buf.get();\n }\n indent(flags = this._flags) {\n if (flags & (1 | 2 | 4)) {\n return;\n }\n this._indent += this._indentRepeat;\n }\n dedent(flags = this._flags) {\n if (flags & (1 | 2 | 4)) {\n return;\n }\n this._indent -= this._indentRepeat;\n }\n _printSemicolonBeforeNextNode = -1;\n _printSemicolonBeforeNextToken = -1;\n semicolon(force = false) {\n const flags = this._flags;\n if (flags & 32) {\n this._maybeAddAuxComment();\n }\n if (flags & 1) {\n const node = this._currentNode;\n if (node.start != null && node.end != null) {\n if (!this.tokenMap.endMatches(node, \";\")) {\n this._printSemicolonBeforeNextNode = this._buf.getCurrentLine();\n return;\n }\n const indexes = this.tokenMap.getIndexes(this._currentNode);\n this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start);\n }\n }\n if (force) {\n this._appendChar(59);\n } else {\n this._queue(59);\n }\n this._noLineTerminator = false;\n }\n rightBrace(node) {\n if (this.format.minified) {\n this._buf.removeLastSemicolon();\n }\n this.sourceWithOffset(\"end\", node.loc, -1);\n this.tokenChar(125);\n }\n rightParens(node) {\n this.sourceWithOffset(\"end\", node.loc, -1);\n this.tokenChar(41);\n }\n space(force = false) {\n if (this._flags & (1 | 2)) {\n return;\n }\n if (force) {\n this._space();\n } else {\n const lastCp = this.getLastChar(true);\n if (lastCp !== 0 && lastCp !== 32 && lastCp !== 10) {\n this._space();\n }\n }\n }\n word(str, noLineTerminatorAfter = false) {\n this.tokenContext &= 128;\n this._maybePrintInnerComments(str);\n const flags = this._flags;\n if (flags & 32) {\n this._maybeAddAuxComment();\n }\n if (flags & 1) this._catchUpToCurrentToken(str);\n const lastChar = this.getLastChar();\n if (lastChar === -2 || lastChar === -3 || lastChar === 47 && str.charCodeAt(0) === 47) {\n this._space();\n }\n this._append(str, false);\n this.setLastChar(-3);\n this._noLineTerminator = noLineTerminatorAfter;\n }\n number(str, number) {\n function isNonDecimalLiteral(str) {\n if (str.length > 2 && str.charCodeAt(0) === 48) {\n const secondChar = str.charCodeAt(1);\n return secondChar === 98 || secondChar === 111 || secondChar === 120;\n }\n return false;\n }\n this.word(str);\n if (Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46) {\n this.setLastChar(-2);\n }\n }\n token(str, maybeNewline = false, occurrenceCount = 0, mayNeedSpace = false) {\n this.tokenContext &= 128;\n this._maybePrintInnerComments(str, occurrenceCount);\n const flags = this._flags;\n if (flags & 32) {\n this._maybeAddAuxComment();\n }\n if (flags & 1) {\n this._catchUpToCurrentToken(str, occurrenceCount);\n }\n if (mayNeedSpace) {\n const strFirst = str.charCodeAt(0);\n if ((strFirst === 45 && str === \"--\" || strFirst === 61) && this.getLastChar() === 33 || strFirst === 43 && this.getLastChar() === 43 || strFirst === 45 && this.getLastChar() === 45 || strFirst === 46 && this.getLastChar() === -2) {\n this._space();\n }\n }\n this._append(str, maybeNewline);\n this._noLineTerminator = false;\n }\n tokenChar(char, occurrenceCount = 0) {\n this.tokenContext &= 128;\n this._maybePrintInnerComments(char, occurrenceCount);\n const flags = this._flags;\n if (flags & 32) {\n this._maybeAddAuxComment();\n }\n if (flags & 1) {\n this._catchUpToCurrentToken(char, occurrenceCount);\n }\n if (char === 43 && this.getLastChar() === 43 || char === 45 && this.getLastChar() === 45 || char === 46 && this.getLastChar() === -2) {\n this._space();\n }\n this._appendChar(char);\n this._noLineTerminator = false;\n }\n newline(i = 1, flags = this._flags) {\n if (i <= 0) return;\n if (flags & (8 | 2)) {\n return;\n }\n if (flags & 4) {\n this.space();\n return;\n }\n if (i > 2) i = 2;\n i -= this._buf.getNewlineCount();\n for (let j = 0; j < i; j++) {\n this._newline();\n }\n }\n endsWith(char) {\n return this.getLastChar(true) === char;\n }\n getLastChar(checkQueue) {\n return this._buf.getLastChar(checkQueue);\n }\n setLastChar(char) {\n this._buf._last = char;\n }\n exactSource(loc, cb) {\n if (!loc) {\n cb();\n return;\n }\n this._catchUp(\"start\", loc);\n this._buf.exactSource(loc, cb);\n }\n source(prop, loc) {\n if (!loc) return;\n this._catchUp(prop, loc);\n this._buf.source(prop, loc);\n }\n sourceWithOffset(prop, loc, columnOffset) {\n if (!loc || this.format.preserveFormat) return;\n this._catchUp(prop, loc);\n this._buf.sourceWithOffset(prop, loc, columnOffset);\n }\n sourceIdentifierName(identifierName, pos) {\n if (!this._buf._canMarkIdName) return;\n const sourcePosition = this._buf._sourcePosition;\n sourcePosition.identifierNamePos = pos;\n sourcePosition.identifierName = identifierName;\n }\n _space() {\n this._queue(32);\n }\n _newline() {\n if (this._buf._queuedChar === 32) this._buf._queuedChar = 0;\n this._appendChar(10, true);\n }\n _catchUpToCurrentToken(str, occurrenceCount = 0) {\n const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount);\n if (token) this._catchUpTo(token.loc.start);\n if (this._printSemicolonBeforeNextToken !== -1 && this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()) {\n this._appendChar(59, true);\n }\n this._printSemicolonBeforeNextToken = -1;\n this._printSemicolonBeforeNextNode = -1;\n }\n _append(str, maybeNewline) {\n this._maybeIndent();\n this._buf.append(str, maybeNewline);\n }\n _appendChar(char, noIndent) {\n if (!noIndent) {\n this._maybeIndent();\n }\n this._buf.appendChar(char);\n }\n _queue(char) {\n this._buf.queue(char);\n this.setLastChar(-1);\n }\n _maybeIndent() {\n const indent = this._shouldIndent();\n if (indent > 0) {\n this._buf._appendChar(-1, indent, false);\n }\n }\n _shouldIndent() {\n return this.endsWith(10) ? this._indent : 0;\n }\n catchUp(line) {\n if (!this.format.retainLines) return;\n const count = line - this._buf.getCurrentLine();\n for (let i = 0; i < count; i++) {\n this._newline();\n }\n }\n _catchUp(prop, loc) {\n const flags = this._flags;\n if ((flags & 1) === 0) {\n if (flags & 8 && loc?.[prop]) {\n this.catchUp(loc[prop].line);\n }\n return;\n }\n const pos = loc?.[prop];\n if (pos != null) this._catchUpTo(pos);\n }\n _catchUpTo({\n line,\n column,\n index\n }) {\n const count = line - this._buf.getCurrentLine();\n if (count > 0 && this._noLineTerminator) {\n return;\n }\n for (let i = 0; i < count; i++) {\n this._newline();\n }\n const spacesCount = count > 0 ? column : column - this._buf.getCurrentColumn();\n if (spacesCount > 0) {\n const spaces = this._originalCode ? this._originalCode.slice(index - spacesCount, index).replace(/[^\\t\\v\\f\\uFEFF\\p{Space_Separator}]/gu, \" \") : \" \".repeat(spacesCount);\n this._buf.append(spaces, false, true);\n this._buf.setSourcePosition(line, column);\n this.setLastChar(32);\n }\n }\n printTerminatorless(node) {\n this._noLineTerminator = true;\n this.print(node);\n }\n print(node, noLineTerminatorAfter = false, resetTokenContext = false, trailingCommentsLineOffset) {\n if (!node) return;\n this._innerCommentsState = 0;\n const {\n type,\n loc,\n extra\n } = node;\n const flags = this._flags;\n let changedFlags = false;\n if (node._compact) {\n this._flags |= 4;\n changedFlags = true;\n }\n const nodeInfo = generatorInfosMap.get(type);\n if (nodeInfo === undefined) {\n throw new ReferenceError(`unknown node of type ${JSON.stringify(type)} with constructor ${JSON.stringify(node.constructor.name)}`);\n }\n const [printMethod, nodeId, needsParens] = nodeInfo;\n const parent = this._currentNode;\n const parentId = this._currentTypeId;\n this._currentNode = node;\n this._currentTypeId = nodeId;\n if (flags & 1) {\n this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode;\n }\n let oldInAux;\n if (flags & 32) {\n oldInAux = this._insideAux;\n this._insideAux = loc == null;\n this._maybeAddAuxComment(this._insideAux && !oldInAux);\n }\n let oldTokenContext = 0;\n if (resetTokenContext) {\n oldTokenContext = this.tokenContext;\n if (oldTokenContext & 128) {\n this.tokenContext = 0;\n } else {\n oldTokenContext = 0;\n }\n }\n const parenthesized = extra != null && extra.parenthesized;\n let shouldPrintParens = parenthesized && flags & 1 || parenthesized && flags & 16 && nodeId === 72 || parent && (parentNeedsParens(node, parent, parentId) || needsParens != null && needsParens(node, parent, parentId, this.tokenContext, flags & 1 ? this._boundGetRawIdentifier : undefined));\n if (!shouldPrintParens && parenthesized && node.leadingComments?.length && node.leadingComments[0].type === \"CommentBlock\") {\n switch (parentId) {\n case 66:\n case 241:\n case 6:\n case 141:\n break;\n case 18:\n case 131:\n case 113:\n if (parent.callee !== node) break;\n default:\n shouldPrintParens = true;\n }\n }\n let indentParenthesized = false;\n if (!shouldPrintParens && this._noLineTerminator && (node.leadingComments?.some(commentIsNewline) || flags & 8 && loc && loc.start.line > this._buf.getCurrentLine())) {\n shouldPrintParens = true;\n indentParenthesized = true;\n }\n let oldNoLineTerminatorAfterNode;\n if (!shouldPrintParens) {\n noLineTerminatorAfter ||= !!parent && this._noLineTerminatorAfterNode === parent && isLastChild(parent, node);\n if (noLineTerminatorAfter) {\n if (node.trailingComments?.some(commentIsNewline)) {\n if (isExpression(node)) shouldPrintParens = true;\n } else {\n oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n this._noLineTerminatorAfterNode = node;\n }\n }\n }\n if (shouldPrintParens) {\n this.tokenChar(40);\n if (indentParenthesized) this.indent();\n this._innerCommentsState = 0;\n if (!resetTokenContext) {\n oldTokenContext = this.tokenContext;\n }\n if (oldTokenContext & 128) {\n this.tokenContext = 0;\n }\n oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n this._noLineTerminatorAfterNode = null;\n }\n this._printLeadingComments(node, parent);\n this.exactSource(nodeId === 137 || nodeId === 67 ? null : loc, printMethod.bind(this, node, parent));\n if (shouldPrintParens) {\n this._printTrailingComments(node, parent);\n if (indentParenthesized) {\n this.dedent();\n this.newline();\n }\n this.tokenChar(41);\n this._noLineTerminator = noLineTerminatorAfter;\n } else if (noLineTerminatorAfter && !this._noLineTerminator) {\n this._noLineTerminator = true;\n this._printTrailingComments(node, parent);\n } else {\n this._printTrailingComments(node, parent, trailingCommentsLineOffset);\n }\n if (oldTokenContext) this.tokenContext = oldTokenContext;\n this._currentNode = parent;\n this._currentTypeId = parentId;\n if (changedFlags) {\n this._flags = flags;\n }\n if (flags & 32) {\n this._insideAux = oldInAux;\n }\n if (oldNoLineTerminatorAfterNode != null) {\n this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n }\n this._innerCommentsState = 0;\n }\n _maybeAddAuxComment(enteredPositionlessNode) {\n if (enteredPositionlessNode) this._printAuxBeforeComment();\n if (!this._insideAux) this._printAuxAfterComment();\n }\n _printAuxBeforeComment() {\n if (this._printAuxAfterOnNextUserNode) return;\n this._printAuxAfterOnNextUserNode = true;\n const comment = this.format.auxiliaryCommentBefore;\n if (comment) {\n this._printComment({\n type: \"CommentBlock\",\n value: comment\n }, 0);\n }\n }\n _printAuxAfterComment() {\n if (!this._printAuxAfterOnNextUserNode) return;\n this._printAuxAfterOnNextUserNode = false;\n const comment = this.format.auxiliaryCommentAfter;\n if (comment) {\n this._printComment({\n type: \"CommentBlock\",\n value: comment\n }, 0);\n }\n }\n getPossibleRaw(node) {\n const extra = node.extra;\n if (extra?.raw != null && extra.rawValue != null && node.value === extra.rawValue) {\n return extra.raw;\n }\n }\n printJoin(nodes, statement, indent, separator, printTrailingSeparator, resetTokenContext, trailingCommentsLineOffset) {\n if (!nodes?.length) return;\n const flags = this._flags;\n if (indent == null && flags & 8) {\n const startLine = nodes[0].loc?.start.line;\n if (startLine != null && startLine !== this._buf.getCurrentLine()) {\n indent = true;\n }\n }\n if (indent) this.indent(flags);\n const len = nodes.length;\n for (let i = 0; i < len; i++) {\n const node = nodes[i];\n if (!node) continue;\n if (statement && i === 0 && this._buf.hasContent()) {\n this.newline(1, flags);\n }\n this.print(node, false, resetTokenContext, trailingCommentsLineOffset || 0);\n if (separator != null) {\n if (i < len - 1) separator.call(this, i, false);else if (printTrailingSeparator) separator.call(this, i, true);\n }\n if (statement) {\n if (i + 1 === len) {\n this.newline(1, flags);\n } else {\n const lastCommentLine = this._lastCommentLine;\n if (lastCommentLine > 0) {\n const offset = (nodes[i + 1].loc?.start.line || 0) - lastCommentLine;\n if (offset >= 0) {\n this.newline(offset || 1, flags);\n continue;\n }\n }\n this.newline(1, flags);\n }\n }\n }\n if (indent) this.dedent(flags);\n }\n printAndIndentOnComments(node) {\n const indent = node.leadingComments && node.leadingComments.length > 0;\n if (indent) this.indent();\n this.print(node);\n if (indent) this.dedent();\n }\n printBlock(body) {\n if (body.type !== \"EmptyStatement\") {\n this.space();\n }\n this.print(body);\n }\n _printTrailingComments(node, parent, lineOffset) {\n const {\n innerComments,\n trailingComments\n } = node;\n if (innerComments?.length) {\n this._printComments(2, innerComments, node, parent, lineOffset);\n }\n if (trailingComments?.length) {\n this._printComments(2, trailingComments, node, parent, lineOffset);\n } else {\n this._lastCommentLine = 0;\n }\n }\n _printLeadingComments(node, parent) {\n const comments = node.leadingComments;\n if (!comments?.length) return;\n this._printComments(0, comments, node, parent);\n }\n _maybePrintInnerComments(nextTokenStr, nextTokenOccurrenceCount) {\n const state = this._innerCommentsState;\n switch (state & 3) {\n case 0:\n this._innerCommentsState = 1 | 4;\n return;\n case 1:\n this.printInnerComments((state & 4) > 0, this.tokenMap?.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount));\n }\n }\n printInnerComments(indent = true, nextToken) {\n const node = this._currentNode;\n const comments = node.innerComments;\n if (!comments?.length) {\n this._innerCommentsState = 2;\n return;\n }\n const hasSpace = this.endsWith(32);\n if (indent) this.indent();\n switch (this._printComments(1, comments, node, undefined, undefined, nextToken)) {\n case 2:\n this._innerCommentsState = 2;\n case 1:\n if (hasSpace) this.space();\n }\n if (indent) this.dedent();\n }\n noIndentInnerCommentsHere() {\n this._innerCommentsState &= -5;\n }\n printSequence(nodes, indent, resetTokenContext, trailingCommentsLineOffset) {\n this.printJoin(nodes, true, indent ?? false, undefined, undefined, resetTokenContext, trailingCommentsLineOffset);\n }\n printList(items, printTrailingSeparator, statement, indent, separator, resetTokenContext) {\n this.printJoin(items, statement, indent, separator ?? commaSeparator, printTrailingSeparator, resetTokenContext);\n }\n shouldPrintTrailingComma(listEnd) {\n if (!this.tokenMap) return null;\n const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, typeof listEnd === \"number\" ? String.fromCharCode(listEnd) : listEnd));\n if (listEndIndex <= 0) return null;\n return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], \",\");\n }\n _shouldPrintComment(comment, nextToken) {\n if (comment.ignore) return 0;\n if (this._printedComments.has(comment)) return 0;\n if (this._noLineTerminator && HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)) {\n return 2;\n }\n if (nextToken && this.tokenMap) {\n const commentTok = this.tokenMap.find(this._currentNode, token => token.value === comment.value);\n if (commentTok && commentTok.start > nextToken.start) {\n return 2;\n }\n }\n this._printedComments.add(comment);\n if (!this.format.shouldPrintComment(comment.value)) {\n return 0;\n }\n return 1;\n }\n _printComment(comment, skipNewLines) {\n const noLineTerminator = this._noLineTerminator;\n const isBlockComment = comment.type === \"CommentBlock\";\n const printNewLines = isBlockComment && skipNewLines !== 1 && !noLineTerminator;\n if (printNewLines && this._buf.hasContent() && skipNewLines !== 2) {\n this.newline(1);\n }\n switch (this.getLastChar(true)) {\n case 47:\n this._space();\n case 91:\n case 123:\n case 40:\n break;\n default:\n this.space();\n }\n let val;\n if (isBlockComment) {\n val = `/*${comment.value}*/`;\n if (this.format.indent.adjustMultilineComment) {\n const offset = comment.loc?.start.column;\n if (offset) {\n const newlineRegex = new RegExp(\"\\\\n\\\\s{1,\" + offset + \"}\", \"g\");\n val = val.replace(newlineRegex, \"\\n\");\n }\n if (this._flags & 4) {\n val = val.replace(/\\n(?!$)/g, `\\n`);\n } else {\n let indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn();\n if (this._shouldIndent() || this.format.retainLines) {\n indentSize += this._indent;\n }\n val = val.replace(/\\n(?!$)/g, `\\n${\" \".repeat(indentSize)}`);\n }\n }\n } else if (!noLineTerminator) {\n val = `//${comment.value}`;\n } else {\n val = `/*${comment.value}*/`;\n }\n this.source(\"start\", comment.loc);\n this._append(val, isBlockComment);\n if (!isBlockComment && !noLineTerminator) {\n this._newline();\n }\n if (printNewLines && skipNewLines !== 3) {\n this.newline(1);\n }\n }\n _printComments(type, comments, node, parent, lineOffset = 0, nextToken) {\n const nodeLoc = node.loc;\n const len = comments.length;\n let hasLoc = !!nodeLoc;\n const nodeStartLine = hasLoc ? nodeLoc.start.line : 0;\n const nodeEndLine = hasLoc ? nodeLoc.end.line : 0;\n let lastLine = 0;\n let leadingCommentNewline = 0;\n const {\n _noLineTerminator,\n _flags\n } = this;\n for (let i = 0; i < len; i++) {\n const comment = comments[i];\n const shouldPrint = this._shouldPrintComment(comment, nextToken);\n if (shouldPrint === 2) {\n return i === 0 ? 0 : 1;\n }\n if (hasLoc && comment.loc && shouldPrint === 1) {\n const commentStartLine = comment.loc.start.line;\n const commentEndLine = comment.loc.end.line;\n if (type === 0) {\n let offset = 0;\n if (i === 0) {\n if (this._buf.hasContent() && (comment.type === \"CommentLine\" || commentStartLine !== commentEndLine)) {\n offset = leadingCommentNewline = 1;\n }\n } else {\n offset = commentStartLine - lastLine;\n }\n lastLine = commentEndLine;\n if (offset > 0 && !_noLineTerminator) {\n this.newline(offset, _flags);\n }\n this._printComment(comment, 1);\n if (i + 1 === len) {\n const count = Math.max(nodeStartLine - lastLine, leadingCommentNewline);\n if (count > 0 && !_noLineTerminator) {\n this.newline(count, _flags);\n }\n lastLine = nodeStartLine;\n }\n } else if (type === 1) {\n const offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine);\n lastLine = commentEndLine;\n if (offset > 0 && !_noLineTerminator) {\n this.newline(offset, _flags);\n }\n this._printComment(comment, 1);\n if (i + 1 === len) {\n const count = Math.min(1, nodeEndLine - lastLine);\n if (count > 0 && !_noLineTerminator) {\n this.newline(count, _flags);\n }\n lastLine = nodeEndLine;\n }\n } else {\n const offset = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);\n lastLine = commentEndLine;\n if (offset > 0 && !_noLineTerminator) {\n this.newline(offset, _flags);\n }\n this._printComment(comment, 1);\n }\n } else {\n hasLoc = false;\n if (shouldPrint !== 1) {\n continue;\n }\n if (len === 1) {\n const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value);\n const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumMember(node);\n if (type === 0) {\n this._printComment(comment, shouldSkipNewline && node.type !== \"ObjectExpression\" || singleLine && isFunction(parent) && parent.body === node ? 1 : 0);\n } else if (shouldSkipNewline && type === 2) {\n this._printComment(comment, 1);\n } else {\n this._printComment(comment, 0);\n }\n } else if (type === 1 && !(node.type === \"ObjectExpression\" && node.properties.length > 1) && node.type !== \"ClassBody\" && node.type !== \"TSInterfaceBody\") {\n this._printComment(comment, i === 0 ? 2 : i === len - 1 ? 3 : 0);\n } else {\n this._printComment(comment, 0);\n }\n }\n }\n if (type === 2 && hasLoc && lastLine) {\n this._lastCommentLine = lastLine;\n }\n return 2;\n }\n}\nfunction commaSeparator(occurrenceCount, last) {\n this.tokenChar(44, occurrenceCount);\n if (!last) this.space();\n}\nfunction normalizeOptions(code, opts, ast) {\n if (opts.experimental_preserveFormat) {\n if (typeof code !== \"string\") {\n throw new Error(\"`experimental_preserveFormat` requires the original `code` to be passed to @babel/generator as a string\");\n }\n if (!opts.retainLines) {\n throw new Error(\"`experimental_preserveFormat` requires `retainLines` to be set to `true`\");\n }\n if (opts.compact && opts.compact !== \"auto\") {\n throw new Error(\"`experimental_preserveFormat` is not compatible with the `compact` option\");\n }\n if (opts.minified) {\n throw new Error(\"`experimental_preserveFormat` is not compatible with the `minified` option\");\n }\n if (opts.jsescOption) {\n throw new Error(\"`experimental_preserveFormat` is not compatible with the `jsescOption` option\");\n }\n if (!Array.isArray(ast.tokens)) {\n throw new Error(\"`experimental_preserveFormat` requires the AST to have attached the token of the input code. Make sure to enable the `tokens: true` parser option.\");\n }\n }\n const format = {\n auxiliaryCommentBefore: opts.auxiliaryCommentBefore,\n auxiliaryCommentAfter: opts.auxiliaryCommentAfter,\n shouldPrintComment: opts.shouldPrintComment,\n preserveFormat: opts.experimental_preserveFormat,\n retainLines: opts.retainLines,\n retainFunctionParens: opts.retainFunctionParens,\n comments: opts.comments == null || opts.comments,\n compact: opts.compact,\n minified: opts.minified,\n concise: opts.concise,\n indent: {\n adjustMultilineComment: true,\n style: \" \"\n },\n jsescOption: {\n quotes: \"double\",\n wrap: true,\n minimal: true,\n ...opts.jsescOption\n },\n topicToken: opts.topicToken\n };\n if (format.minified) {\n format.compact = true;\n format.shouldPrintComment = format.shouldPrintComment || (() => format.comments);\n } else {\n format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.includes(\"@license\") || value.includes(\"@preserve\"));\n }\n if (format.compact === \"auto\") {\n format.compact = typeof code === \"string\" && code.length > 500_000;\n if (format.compact) {\n console.error(\"[BABEL] Note: The code generator has deoptimised the styling of \" + `${opts.filename} as it exceeds the max of ${\"500KB\"}.`);\n }\n }\n if (format.compact || format.preserveFormat) {\n format.indent.adjustMultilineComment = false;\n }\n const {\n auxiliaryCommentBefore,\n auxiliaryCommentAfter,\n shouldPrintComment\n } = format;\n if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {\n format.auxiliaryCommentBefore = undefined;\n }\n if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {\n format.auxiliaryCommentAfter = undefined;\n }\n return format;\n}\nfunction generate(ast, opts = {}, code) {\n const format = normalizeOptions(code, opts, ast);\n const map = opts.sourceMaps ? new SourceMap(opts, code) : null;\n const printer = new Printer(format, map, ast.tokens, typeof code === \"string\" ? code : null);\n return printer.generate(ast);\n}\nexport { generate as default, generate };\n//# sourceMappingURL=index.js.map\n","import * as _t from '@babel/types';\nimport { parse } from '@babel/parser';\nimport { codeFrameColumns } from '@babel/code-frame';\n\nconst {\n assertExpressionStatement\n} = _t;\nfunction makeStatementFormatter(fn) {\n return {\n code: str => `/* @babel/template */;\\n${str}`,\n validate: () => {},\n unwrap: ast => {\n return fn(ast.program.body.slice(1));\n }\n };\n}\nconst smart$1 = makeStatementFormatter(body => {\n if (body.length > 1) {\n return body;\n } else {\n return body[0];\n }\n});\nconst statements$1 = makeStatementFormatter(body => body);\nconst statement$1 = makeStatementFormatter(body => {\n if (body.length === 0) {\n throw new Error(\"Found nothing to return.\");\n }\n if (body.length > 1) {\n throw new Error(\"Found multiple statements but wanted one\");\n }\n return body[0];\n});\nconst expression$1 = {\n code: str => `(\\n${str}\\n)`,\n validate: ast => {\n if (ast.program.body.length > 1) {\n throw new Error(\"Found multiple statements but wanted one\");\n }\n if (expression$1.unwrap(ast).start === 0) {\n throw new Error(\"Parse result included parens.\");\n }\n },\n unwrap: ({\n program\n }) => {\n const [stmt] = program.body;\n assertExpressionStatement(stmt);\n return stmt.expression;\n }\n};\nconst program$1 = {\n code: str => str,\n validate: () => {},\n unwrap: ast => ast.program\n};\n\nfunction merge(a, b) {\n const {\n placeholderAllowlist = a.placeholderAllowlist,\n placeholderPattern = a.placeholderPattern,\n preserveComments = a.preserveComments,\n syntacticPlaceholders = a.syntacticPlaceholders\n } = b;\n return {\n parser: {\n ...a.parser,\n ...b.parser\n },\n placeholderAllowlist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders\n };\n}\nfunction validate$1(opts) {\n if (opts != null && typeof opts !== \"object\") {\n throw new Error(\"Unknown template options.\");\n }\n if (opts != null && Object.hasOwn(opts, \"placeholderWhitelist\")) {\n if (!Object.hasOwn(opts, \"placeholderAllowlist\")) {\n throw new Error(\"The 'placeholderWhitelist' option has been renamed to \" + \"'placeholderAllowlist'. Please update your configuration.\");\n }\n }\n const {\n placeholderAllowlist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders,\n ...parser\n } = opts || {};\n if (placeholderAllowlist != null && !(placeholderAllowlist instanceof Set)) {\n throw new Error(\"'.placeholderAllowlist' must be a Set, null, or undefined\");\n }\n if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) {\n throw new Error(\"'.placeholderPattern' must be a RegExp, false, null, or undefined\");\n }\n if (preserveComments != null && typeof preserveComments !== \"boolean\") {\n throw new Error(\"'.preserveComments' must be a boolean, null, or undefined\");\n }\n if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== \"boolean\") {\n throw new Error(\"'.syntacticPlaceholders' must be a boolean, null, or undefined\");\n }\n if (syntacticPlaceholders === true && (placeholderAllowlist != null || placeholderPattern != null)) {\n throw new Error(\"'.placeholderAllowlist' and '.placeholderPattern' aren't compatible\" + \" with '.syntacticPlaceholders: true'\");\n }\n return {\n parser,\n placeholderAllowlist: placeholderAllowlist || undefined,\n placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern,\n preserveComments: preserveComments == null ? undefined : preserveComments,\n syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders\n };\n}\nfunction normalizeReplacements(replacements) {\n if (Array.isArray(replacements)) {\n return replacements.reduce((acc, replacement, i) => {\n acc[\"$\" + i] = replacement;\n return acc;\n }, {});\n } else if (typeof replacements === \"object\" || replacements == null) {\n return replacements || undefined;\n }\n throw new Error(\"Template replacements must be an array, object, null, or undefined\");\n}\n\nconst {\n isCallExpression,\n isExpressionStatement,\n isFunction,\n isIdentifier,\n isJSXIdentifier,\n isNewExpression,\n isPlaceholder,\n isStatement: isStatement$1,\n isStringLiteral: isStringLiteral$1,\n removePropertiesDeep,\n traverse\n} = _t;\nconst PATTERN = /^[_$A-Z0-9]+$/;\nfunction parseAndBuildMetadata(formatter, code, opts) {\n const {\n placeholderAllowlist,\n placeholderPattern,\n preserveComments = false,\n syntacticPlaceholders\n } = opts;\n const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);\n removePropertiesDeep(ast, {\n preserveComments\n });\n formatter.validate(ast);\n const state = {\n syntactic: {\n placeholders: [],\n placeholderNames: new Set()\n },\n legacy: {\n placeholders: [],\n placeholderNames: new Set()\n },\n placeholderAllowlist,\n placeholderPattern,\n syntacticPlaceholders\n };\n traverse(ast, placeholderVisitorHandler, state);\n return {\n ast,\n ...(state.syntactic.placeholders.length ? state.syntactic : state.legacy)\n };\n}\nfunction placeholderVisitorHandler(node, ancestors, state) {\n let name;\n let hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0;\n if (isPlaceholder(node)) {\n if (state.syntacticPlaceholders === false) {\n throw new Error(\"%%foo%%-style placeholders can't be used when \" + \"'.syntacticPlaceholders' is false.\");\n }\n name = node.name.name;\n hasSyntacticPlaceholders = true;\n } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) {\n return;\n } else if (isIdentifier(node) || isJSXIdentifier(node)) {\n name = node.name;\n } else if (isStringLiteral$1(node)) {\n name = node.value;\n } else {\n return;\n }\n if (hasSyntacticPlaceholders && (state.placeholderPattern != null || state.placeholderAllowlist != null)) {\n throw new Error(\"'.placeholderAllowlist' and '.placeholderPattern' aren't compatible\" + \" with '.syntacticPlaceholders: true'\");\n }\n if (!hasSyntacticPlaceholders && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !state.placeholderAllowlist?.has(name)) {\n return;\n }\n ancestors = ancestors.slice();\n const {\n node: parent,\n key\n } = ancestors[ancestors.length - 1];\n let type;\n if (isStringLiteral$1(node) || isPlaceholder(node, {\n expectedNode: \"StringLiteral\"\n })) {\n type = \"string\";\n } else if (isNewExpression(parent) && key === \"arguments\" || isCallExpression(parent) && key === \"arguments\" || isFunction(parent) && key === \"params\") {\n type = \"param\";\n } else if (isExpressionStatement(parent) && !isPlaceholder(node)) {\n type = \"statement\";\n ancestors = ancestors.slice(0, -1);\n } else if (isStatement$1(node) && isPlaceholder(node)) {\n type = \"statement\";\n } else {\n type = \"other\";\n }\n const {\n placeholders,\n placeholderNames\n } = !hasSyntacticPlaceholders ? state.legacy : state.syntactic;\n placeholders.push({\n name,\n type,\n resolve: ast => resolveAncestors(ast, ancestors),\n isDuplicate: placeholderNames.has(name)\n });\n placeholderNames.add(name);\n}\nfunction resolveAncestors(ast, ancestors) {\n let parent = ast;\n for (let i = 0; i < ancestors.length - 1; i++) {\n const {\n key,\n index\n } = ancestors[i];\n if (index === undefined) {\n parent = parent[key];\n } else {\n parent = parent[key][index];\n }\n }\n const {\n key,\n index\n } = ancestors[ancestors.length - 1];\n return {\n parent,\n key,\n index\n };\n}\nfunction parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {\n const plugins = (parserOpts.plugins || []).slice();\n if (syntacticPlaceholders !== false) {\n plugins.push(\"placeholders\");\n }\n parserOpts = {\n allowAwaitOutsideFunction: true,\n allowReturnOutsideFunction: true,\n allowNewTargetOutsideFunction: true,\n allowSuperOutsideMethod: true,\n allowYieldOutsideFunction: true,\n sourceType: \"module\",\n ...parserOpts,\n plugins\n };\n try {\n return parse(code, parserOpts);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message += \"\\n\" + codeFrameColumns(code, {\n start: loc\n });\n err.code = \"BABEL_TEMPLATE_PARSE_ERROR\";\n }\n throw err;\n }\n}\n\nconst {\n blockStatement,\n cloneNode,\n emptyStatement,\n expressionStatement,\n identifier,\n isStatement,\n isStringLiteral,\n stringLiteral,\n validate\n} = _t;\nfunction populatePlaceholders(metadata, replacements) {\n const ast = cloneNode(metadata.ast);\n if (replacements) {\n metadata.placeholders.forEach(placeholder => {\n if (!Object.hasOwn(replacements, placeholder.name)) {\n const placeholderName = placeholder.name;\n throw new Error(`Error: No substitution given for \"${placeholderName}\". If this is not meant to be a\n placeholder you may want to consider passing one of the following options to @babel/template:\n - { placeholderPattern: false, placeholderAllowlist: new Set(['${placeholderName}'])}\n - { placeholderPattern: /^${placeholderName}$/ }`);\n }\n });\n Object.keys(replacements).forEach(key => {\n if (!metadata.placeholderNames.has(key)) {\n throw new Error(`Unknown substitution \"${key}\" given`);\n }\n });\n }\n metadata.placeholders.slice().reverse().forEach(placeholder => {\n try {\n applyReplacement(placeholder, ast, (replacements && replacements[placeholder.name]) ?? null);\n } catch (e) {\n e.message = `@babel/template placeholder \"${placeholder.name}\": ${e.message}`;\n throw e;\n }\n });\n return ast;\n}\nfunction applyReplacement(placeholder, ast, replacement) {\n if (placeholder.isDuplicate) {\n if (Array.isArray(replacement)) {\n replacement = replacement.map(node => cloneNode(node));\n } else if (typeof replacement === \"object\") {\n replacement = cloneNode(replacement);\n }\n }\n const {\n parent,\n key,\n index\n } = placeholder.resolve(ast);\n if (placeholder.type === \"string\") {\n if (typeof replacement === \"string\") {\n replacement = stringLiteral(replacement);\n }\n if (!replacement || !isStringLiteral(replacement)) {\n throw new Error(\"Expected string substitution\");\n }\n } else if (placeholder.type === \"statement\") {\n if (index === undefined) {\n if (!replacement) {\n replacement = emptyStatement();\n } else if (Array.isArray(replacement)) {\n replacement = blockStatement(replacement);\n } else if (typeof replacement === \"string\") {\n replacement = expressionStatement(identifier(replacement));\n } else if (!isStatement(replacement)) {\n replacement = expressionStatement(replacement);\n }\n } else {\n if (replacement && !Array.isArray(replacement)) {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (!isStatement(replacement)) {\n replacement = expressionStatement(replacement);\n }\n }\n }\n } else if (placeholder.type === \"param\") {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (index === undefined) throw new Error(\"Assertion failure.\");\n } else {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (Array.isArray(replacement)) {\n throw new Error(\"Cannot replace single expression with an array.\");\n }\n }\n function set(parent, key, value) {\n const node = parent[key];\n parent[key] = value;\n if (node.type === \"Identifier\" || node.type === \"Placeholder\") {\n if (node.typeAnnotation) {\n value.typeAnnotation = node.typeAnnotation;\n }\n if (node.optional) {\n value.optional = node.optional;\n }\n if (node.decorators) {\n value.decorators = node.decorators;\n }\n }\n }\n if (index === undefined) {\n validate(parent, key, replacement);\n set(parent, key, replacement);\n } else {\n const items = parent[key].slice();\n if (placeholder.type === \"statement\" || placeholder.type === \"param\") {\n if (replacement == null) {\n items.splice(index, 1);\n } else if (Array.isArray(replacement)) {\n items.splice(index, 1, ...replacement);\n } else {\n set(items, index, replacement);\n }\n } else {\n set(items, index, replacement);\n }\n validate(parent, key, items);\n parent[key] = items;\n }\n}\n\nfunction stringTemplate(formatter, code, opts) {\n code = formatter.code(code);\n let metadata;\n return arg => {\n const replacements = normalizeReplacements(arg);\n if (!metadata) metadata = parseAndBuildMetadata(formatter, code, opts);\n return formatter.unwrap(populatePlaceholders(metadata, replacements));\n };\n}\n\nfunction literalTemplate(formatter, tpl, opts) {\n const {\n metadata,\n names\n } = buildLiteralData(formatter, tpl, opts);\n return arg => {\n const defaultReplacements = {};\n arg.forEach((replacement, i) => {\n defaultReplacements[names[i]] = replacement;\n });\n return arg => {\n const replacements = normalizeReplacements(arg);\n if (replacements) {\n Object.keys(replacements).forEach(key => {\n if (Object.hasOwn(defaultReplacements, key)) {\n throw new Error(\"Unexpected replacement overlap.\");\n }\n });\n }\n return formatter.unwrap(populatePlaceholders(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements));\n };\n };\n}\nfunction buildLiteralData(formatter, tpl, opts) {\n let prefix = \"BABEL_TPL$\";\n const raw = tpl.join(\"\");\n do {\n prefix = \"$$\" + prefix;\n } while (raw.includes(prefix));\n const {\n names,\n code\n } = buildTemplateCode(tpl, prefix);\n const metadata = parseAndBuildMetadata(formatter, formatter.code(code), {\n parser: opts.parser,\n placeholderAllowlist: new Set(names.concat(opts.placeholderAllowlist ? Array.from(opts.placeholderAllowlist) : [])),\n placeholderPattern: opts.placeholderPattern,\n preserveComments: opts.preserveComments,\n syntacticPlaceholders: opts.syntacticPlaceholders\n });\n return {\n metadata,\n names\n };\n}\nfunction buildTemplateCode(tpl, prefix) {\n const names = [];\n let code = tpl[0];\n for (let i = 1; i < tpl.length; i++) {\n const value = `${prefix}${i - 1}`;\n names.push(value);\n code += value + tpl[i];\n }\n return {\n names,\n code\n };\n}\n\nconst NO_PLACEHOLDER = validate$1({\n placeholderPattern: false\n});\nfunction createTemplateBuilder(formatter, defaultOpts) {\n const templateFnCache = new WeakMap();\n const templateAstCache = new WeakMap();\n const cachedOpts = defaultOpts || validate$1(null);\n return Object.assign((tpl, ...args) => {\n if (typeof tpl === \"string\") {\n if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n return extendedTrace(stringTemplate(formatter, tpl, merge(cachedOpts, validate$1(args[0]))));\n } else if (Array.isArray(tpl)) {\n let builder = templateFnCache.get(tpl);\n if (!builder) {\n builder = literalTemplate(formatter, tpl, cachedOpts);\n templateFnCache.set(tpl, builder);\n }\n return extendedTrace(builder(args));\n } else if (typeof tpl === \"object\" && tpl) {\n if (args.length > 0) throw new Error(\"Unexpected extra params.\");\n return createTemplateBuilder(formatter, merge(cachedOpts, validate$1(tpl)));\n }\n throw new Error(`Unexpected template param ${typeof tpl}`);\n }, {\n ast: (tpl, ...args) => {\n if (typeof tpl === \"string\") {\n if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n return stringTemplate(formatter, tpl, merge(merge(cachedOpts, validate$1(args[0])), NO_PLACEHOLDER))();\n } else if (Array.isArray(tpl)) {\n let builder = templateAstCache.get(tpl);\n if (!builder) {\n builder = literalTemplate(formatter, tpl, merge(cachedOpts, NO_PLACEHOLDER));\n templateAstCache.set(tpl, builder);\n }\n return builder(args)();\n }\n throw new Error(`Unexpected template param ${typeof tpl}`);\n }\n });\n}\nfunction extendedTrace(fn) {\n const rootErr = new Error();\n return arg => {\n try {\n return fn(arg);\n } catch (err) {\n err.stack += `\\n =============\\n${rootErr.stack.split(\"\\n\").slice(3).join(\"\\n\")}`;\n throw err;\n }\n };\n}\n\nconst smart = createTemplateBuilder(smart$1);\nconst statement = createTemplateBuilder(statement$1);\nconst statements = createTemplateBuilder(statements$1);\nconst expression = createTemplateBuilder(expression$1);\nconst program = createTemplateBuilder(program$1);\nconst index = Object.assign(smart.bind(undefined), {\n smart,\n statement,\n statements,\n expression,\n program,\n ast: smart.ast\n});\n\nexport { index as default, expression, program, smart, statement, statements };\n//# sourceMappingURL=index.js.map\n","import { createDebug } from 'obug';\nimport { codeFrameColumns } from '@babel/code-frame';\nimport * as _t from '@babel/types';\nimport { parse } from '@babel/parser';\nimport globalsBuiltinLower from '@babel/helper-globals/data/builtin-lower.json' with { type: 'json' };\nimport globalsBuiltinUpper from '@babel/helper-globals/data/builtin-upper.json' with { type: 'json' };\nimport generator from '@babel/generator';\nimport template from '@babel/template';\n\nconst ReferencedIdentifier = [\"Identifier\", \"JSXIdentifier\"];\nconst ReferencedMemberExpression = [\"MemberExpression\"];\nconst BindingIdentifier = [\"Identifier\"];\nconst Statement = [\"Statement\"];\nconst Expression = [\"Expression\"];\nconst Scope$1 = [\"Scopable\", \"Pattern\"];\nconst Referenced = null;\nconst BlockScoped = [\"FunctionDeclaration\", \"ClassDeclaration\", \"VariableDeclaration\"];\nconst Var = [\"VariableDeclaration\"];\nconst User = null;\nconst Generated = null;\nconst Pure = null;\nconst Flow = [\"Flow\", \"ImportDeclaration\", \"ExportDeclaration\", \"ImportSpecifier\"];\nconst RestProperty = [\"RestElement\"];\nconst SpreadProperty = [\"RestElement\"];\nconst ExistentialTypeParam = [\"ExistsTypeAnnotation\"];\nconst NumericLiteralTypeAnnotation = [\"NumberLiteralTypeAnnotation\"];\nconst ForAwaitStatement = [\"ForOfStatement\"];\n\nconst virtualTypes = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n BindingIdentifier,\n BlockScoped,\n ExistentialTypeParam,\n Expression,\n Flow,\n ForAwaitStatement,\n Generated,\n NumericLiteralTypeAnnotation,\n Pure,\n Referenced,\n ReferencedIdentifier,\n ReferencedMemberExpression,\n RestProperty,\n Scope: Scope$1,\n SpreadProperty,\n Statement,\n User,\n Var\n}, Symbol.toStringTag, { value: 'Module' });\n\nclass TraversalContext {\n constructor(opts, state) {\n this.state = state;\n this.opts = opts;\n }\n queue = null;\n priorityQueue = null;\n maybeQueue(path, notPriority) {\n if (this.queue) {\n if (notPriority) {\n this.queue.push(path);\n } else {\n this.priorityQueue.push(path);\n }\n }\n }\n}\n\nconst {\n VISITOR_KEYS: VISITOR_KEYS$4\n} = _t;\nfunction _visitPaths(ctx, paths) {\n ctx.queue = paths;\n ctx.priorityQueue = [];\n const visited = new Set();\n let stop = false;\n let visitIndex = 0;\n for (; visitIndex < paths.length;) {\n const path = paths[visitIndex];\n visitIndex++;\n resync.call(path);\n if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== ctx) {\n pushContext.call(path, ctx);\n }\n if (path.key === null) continue;\n const {\n node\n } = path;\n if (visited.has(node)) continue;\n if (node) visited.add(node);\n if (_visit(ctx, path)) {\n stop = true;\n break;\n }\n if (ctx.priorityQueue.length) {\n stop = _visitPaths(ctx, ctx.priorityQueue);\n ctx.priorityQueue = [];\n ctx.queue = paths;\n if (stop) break;\n }\n }\n for (let i = 0; i < visitIndex; i++) {\n popContext.call(paths[i]);\n }\n ctx.queue = null;\n return stop;\n}\nfunction _visit(ctx, path) {\n const node = path.node;\n if (!node) {\n return false;\n }\n const opts = ctx.opts;\n const denylist = opts.denylist;\n if (denylist?.includes(node.type)) {\n return false;\n }\n if (opts.shouldSkip?.(path)) {\n return false;\n }\n if (path.shouldSkip) return path.shouldStop;\n if (_call.call(path, opts.enter)) return path.shouldStop;\n if (path.node) {\n if (_call.call(path, opts[node.type]?.enter)) return path.shouldStop;\n }\n path.shouldStop = traverseNode(path.node, opts, path.scope, ctx.state, path, path.skipKeys);\n if (path.node) {\n if (_call.call(path, opts.exit)) return path.shouldStop;\n }\n if (path.node) {\n _call.call(path, opts[node.type]?.exit);\n }\n return path.shouldStop;\n}\nfunction traverseNode(node, opts, scope, state, path, skipKeys, visitSelf) {\n const keys = VISITOR_KEYS$4[node.type];\n if (!keys?.length) return false;\n const ctx = new TraversalContext(opts, state);\n if (visitSelf) {\n if (skipKeys?.[path.parentKey]) return false;\n return _visitPaths(ctx, [path]);\n }\n const hub = path == null ? node.type === \"Program\" || node.type === \"File\" ? new Hub() : undefined : path.hub;\n for (const key of keys) {\n if (skipKeys?.[key]) continue;\n const prop = node[key];\n if (!prop) continue;\n if (Array.isArray(prop)) {\n if (!prop.length) continue;\n const paths = [];\n for (let i = 0; i < prop.length; i++) {\n const childPath = NodePath_Final.get({\n parentPath: path,\n parent: node,\n container: prop,\n key: i,\n listKey: key,\n hub\n });\n paths.push(childPath);\n }\n if (_visitPaths(ctx, paths)) return true;\n } else {\n if (_visitPaths(ctx, [NodePath_Final.get({\n parentPath: path,\n parent: node,\n container: node,\n key,\n listKey: null,\n hub\n })])) {\n return true;\n }\n }\n }\n return false;\n}\n\nconst {\n isBinding,\n isBlockScoped: nodeIsBlockScoped,\n isExportDeclaration: isExportDeclaration$1,\n isExpression: nodeIsExpression,\n isFlow: nodeIsFlow,\n isForStatement,\n isForXStatement,\n isIdentifier: isIdentifier$5,\n isImportDeclaration: isImportDeclaration$1,\n isImportSpecifier,\n isJSXIdentifier,\n isJSXMemberExpression,\n isMemberExpression: isMemberExpression$1,\n isRestElement: nodeIsRestElement,\n isReferenced: nodeIsReferenced,\n isScope: nodeIsScope,\n isStatement: nodeIsStatement,\n isVar: nodeIsVar,\n isVariableDeclaration: isVariableDeclaration$2,\n react,\n isForOfStatement\n} = _t;\nconst {\n isCompatTag\n} = react;\nfunction isReferencedIdentifier(opts) {\n const {\n node,\n parent\n } = this;\n if (isIdentifier$5(node, opts)) {\n return nodeIsReferenced(node, parent, this.parentPath.parent);\n } else if (isJSXIdentifier(node, opts)) {\n if (!isJSXMemberExpression(parent) && isCompatTag(node.name)) return false;\n return nodeIsReferenced(node, parent, this.parentPath.parent);\n } else {\n return false;\n }\n}\nfunction isReferencedMemberExpression() {\n const {\n node,\n parent\n } = this;\n return isMemberExpression$1(node) && nodeIsReferenced(node, parent);\n}\nfunction isBindingIdentifier() {\n const {\n node,\n parent\n } = this;\n const grandparent = this.parentPath.parent;\n return isIdentifier$5(node) && isBinding(node, parent, grandparent);\n}\nfunction isStatement$1() {\n const {\n node,\n parent\n } = this;\n if (nodeIsStatement(node)) {\n if (isVariableDeclaration$2(node)) {\n if (isForXStatement(parent, {\n left: node\n })) return false;\n if (isForStatement(parent, {\n init: node\n })) return false;\n }\n return true;\n } else {\n return false;\n }\n}\nfunction isExpression$3() {\n if (this.isIdentifier()) {\n return this.isReferencedIdentifier();\n } else {\n return nodeIsExpression(this.node);\n }\n}\nfunction isScope() {\n return nodeIsScope(this.node, this.parent);\n}\nfunction isReferenced() {\n return nodeIsReferenced(this.node, this.parent);\n}\nfunction isBlockScoped() {\n return nodeIsBlockScoped(this.node);\n}\nfunction isVar() {\n return nodeIsVar(this.node);\n}\nfunction isUser() {\n return !!this.node?.loc;\n}\nfunction isGenerated() {\n return !this.isUser();\n}\nfunction isPure(constantsOnly) {\n return this.scope.isPure(this.node, constantsOnly);\n}\nfunction isFlow() {\n const {\n node\n } = this;\n if (nodeIsFlow(node)) {\n return true;\n } else if (isImportDeclaration$1(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else if (isExportDeclaration$1(node)) {\n return node.exportKind === \"type\";\n } else if (isImportSpecifier(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else {\n return false;\n }\n}\nfunction isRestProperty() {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectPattern();\n}\nfunction isSpreadProperty() {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectExpression();\n}\nfunction isForAwaitStatement() {\n return isForOfStatement(this.node, {\n await: true\n });\n}\n\nconst NodePath_virtual_types_validator = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isBindingIdentifier,\n isBlockScoped,\n isExpression: isExpression$3,\n isFlow,\n isForAwaitStatement,\n isGenerated,\n isPure,\n isReferenced,\n isReferencedIdentifier,\n isReferencedMemberExpression,\n isRestProperty,\n isScope,\n isSpreadProperty,\n isStatement: isStatement$1,\n isUser,\n isVar\n}, Symbol.toStringTag, { value: 'Module' });\n\nconst {\n DEPRECATED_KEYS,\n DEPRECATED_ALIASES,\n FLIPPED_ALIAS_KEYS,\n TYPES,\n __internal__deprecationWarning: deprecationWarning\n} = _t;\nfunction isVirtualType(type) {\n return type in virtualTypes;\n}\nfunction isExplodedVisitor(visitor) {\n return visitor?._exploded;\n}\nfunction explode$1(visitor) {\n if (isExplodedVisitor(visitor)) return visitor;\n visitor._exploded = true;\n if (Object.hasOwn(visitor, \"blacklist\")) {\n if (!Object.hasOwn(visitor, \"denylist\")) {\n throw new Error(\"The 'blacklist' visitor option has been renamed to 'denylist'. \" + \"Please update your configuration.\");\n }\n delete visitor.blacklist;\n }\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n const parts = nodeType.split(\"|\");\n if (parts.length === 1) continue;\n const fns = visitor[nodeType];\n delete visitor[nodeType];\n for (const part of parts) {\n visitor[part] = fns;\n }\n }\n verify$1(visitor);\n delete visitor.__esModule;\n ensureEntranceObjects(visitor);\n ensureCallbackArrays(visitor);\n const visitorBase = visitor;\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n if (!isVirtualType(nodeType)) continue;\n const fns = visitorBase[nodeType];\n for (const type of Object.keys(fns)) {\n fns[type] = wrapCheck(nodeType, fns[type]);\n }\n delete visitorBase[nodeType];\n const types = virtualTypes[nodeType];\n if (types !== null) {\n for (const type of types) {\n visitorBase[type] ??= {};\n mergePair(visitorBase[type], fns);\n }\n } else {\n mergePair(visitor, fns);\n }\n }\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n let aliases = FLIPPED_ALIAS_KEYS[nodeType];\n if (nodeType in DEPRECATED_KEYS) {\n const deprecatedKey = DEPRECATED_KEYS[nodeType];\n deprecationWarning(nodeType, deprecatedKey, \"Visitor \");\n aliases = [deprecatedKey];\n } else if (nodeType in DEPRECATED_ALIASES) {\n const deprecatedAlias = DEPRECATED_ALIASES[nodeType];\n deprecationWarning(nodeType, deprecatedAlias, \"Visitor \");\n aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];\n }\n if (!aliases) continue;\n const fns = visitor[nodeType];\n delete visitor[nodeType];\n for (const alias of aliases) {\n const existing = visitorBase[alias];\n if (existing) {\n mergePair(existing, fns);\n } else {\n visitorBase[alias] = {\n ...fns\n };\n }\n }\n }\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n ensureCallbackArrays(visitor[nodeType]);\n }\n return visitor;\n}\nfunction verify$1(visitor) {\n if (visitor._verified) return;\n if (typeof visitor === \"function\") {\n throw new Error(\"You passed `traverse()` a function when it expected a visitor object, \" + \"are you sure you didn't mean `{ enter: Function }`?\");\n }\n for (const nodeType of Object.keys(visitor)) {\n if (nodeType === \"enter\" || nodeType === \"exit\") {\n validateVisitorMethods(nodeType, visitor[nodeType]);\n }\n if (shouldIgnoreKey(nodeType)) continue;\n if (!TYPES.includes(nodeType)) {\n throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${\"8.0.4\"}`);\n }\n const visitors = visitor[nodeType];\n if (typeof visitors === \"object\") {\n for (const visitorKey of Object.keys(visitors)) {\n if (visitorKey === \"enter\" || visitorKey === \"exit\") {\n validateVisitorMethods(`${nodeType}.${visitorKey}`, visitors[visitorKey]);\n } else {\n throw new Error(\"You passed `traverse()` a visitor object with the property \" + `${nodeType} that has the invalid property ${visitorKey}`);\n }\n }\n }\n }\n visitor._verified = true;\n}\nfunction validateVisitorMethods(path, val) {\n const fns = [].concat(val);\n for (const fn of fns) {\n if (typeof fn !== \"function\") {\n throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`);\n }\n }\n}\nfunction merge(visitors, states = [], wrapper) {\n const mergedVisitor = {\n _verified: true,\n _exploded: true\n };\n for (let i = 0; i < visitors.length; i++) {\n const visitor = explode$1(visitors[i]);\n const state = states[i];\n let topVisitor = visitor;\n if (state || wrapper) {\n topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);\n }\n mergePair(mergedVisitor, topVisitor);\n for (const key of Object.keys(visitor)) {\n if (shouldIgnoreKey(key)) continue;\n let typeVisitor = visitor[key];\n if (state || wrapper) {\n typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);\n }\n const nodeVisitor = mergedVisitor[key] ||= {};\n mergePair(nodeVisitor, typeVisitor);\n }\n }\n return mergedVisitor;\n}\nfunction wrapWithStateOrWrapper(oldVisitor, state, wrapper) {\n const newVisitor = {};\n for (const phase of [\"enter\", \"exit\"]) {\n let fns = oldVisitor[phase];\n if (!Array.isArray(fns)) continue;\n fns = fns.map(function (fn) {\n let newFn = fn;\n if (state) {\n newFn = function (path) {\n fn.call(state, path, state);\n };\n }\n if (wrapper) {\n newFn = wrapper(state?.key, phase, newFn);\n }\n if (newFn !== fn) {\n newFn.toString = () => fn.toString();\n }\n return newFn;\n });\n newVisitor[phase] = fns;\n }\n return newVisitor;\n}\nfunction ensureEntranceObjects(obj) {\n for (const key of Object.keys(obj)) {\n if (shouldIgnoreKey(key)) continue;\n const fns = obj[key];\n if (typeof fns === \"function\") {\n obj[key] = {\n enter: fns\n };\n }\n }\n}\nfunction ensureCallbackArrays(obj) {\n if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];\n if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];\n}\nfunction wrapCheck(nodeType, fn) {\n const fnKey = `is${nodeType}`;\n const validator = NodePath_virtual_types_validator[fnKey];\n const newFn = function (path) {\n if (validator.call(path)) {\n return fn.apply(this, arguments);\n }\n };\n newFn.toString = () => fn.toString();\n return newFn;\n}\nfunction shouldIgnoreKey(key) {\n if (key.startsWith(\"_\")) return true;\n if (key === \"enter\" || key === \"exit\" || key === \"shouldSkip\") return true;\n if (key === \"denylist\" || key === \"noScope\" || key === \"skipKeys\") {\n return true;\n }\n if (key === \"blacklist\") {\n throw new Error(\"The 'blacklist' visitor option has been renamed to 'denylist'. \" + \"Please update your configuration.\");\n }\n return false;\n}\nfunction mergePair(dest, src) {\n for (const phase of [\"enter\", \"exit\"]) {\n if (!src[phase]) continue;\n dest[phase] = [].concat(dest[phase] || [], src[phase]);\n }\n}\nconst _environmentVisitor = {\n FunctionParent(path) {\n if (path.isArrowFunctionExpression()) return;\n path.skip();\n if (path.isMethod()) {\n path.requeueComputedKeyAndDecorators();\n }\n },\n Property(path) {\n if (path.isObjectProperty()) return;\n path.skip();\n path.requeueComputedKeyAndDecorators();\n }\n};\nfunction environmentVisitor(visitor) {\n return merge([_environmentVisitor, visitor]);\n}\n\nconst visitors = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n environmentVisitor,\n explode: explode$1,\n isExplodedVisitor,\n merge,\n verify: verify$1\n}, Symbol.toStringTag, { value: 'Module' });\n\nconst {\n getAssignmentIdentifiers: getAssignmentIdentifiers$1\n} = _t;\nlet renameVisitor;\nconst getRenameVisitor = () => renameVisitor ??= explode$1({\n ReferencedIdentifier({\n node\n }, state) {\n if (node.name === state.oldName) {\n node.name = state.newName;\n }\n },\n Scope(path, state) {\n if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) {\n path.skip();\n if (path.isMethod()) {\n path.requeueComputedKeyAndDecorators();\n }\n if (path.isSwitchStatement()) {\n path.context.maybeQueue(path.get(\"discriminant\"));\n }\n }\n },\n ObjectProperty({\n node,\n scope\n }, state) {\n const {\n name\n } = node.key;\n if (node.shorthand && (name === state.oldName || name === state.newName) && scope.getBindingIdentifier(name) === state.binding.identifier) {\n node.shorthand = false;\n }\n },\n \"AssignmentExpression|Declaration|VariableDeclarator\"(path, state) {\n if (path.isVariableDeclaration()) return;\n const ids = path.isAssignmentExpression() ? getAssignmentIdentifiers$1(path.node) : path.getOuterBindingIdentifiers();\n for (const name in ids) {\n if (name === state.oldName) ids[name].name = state.newName;\n }\n }\n});\nclass Renamer {\n constructor(binding, oldName, newName) {\n this.newName = newName;\n this.oldName = oldName;\n this.binding = binding;\n }\n maybeConvertFromExportDeclaration(parentDeclar) {\n const maybeExportDeclar = parentDeclar.parentPath;\n if (!maybeExportDeclar.isExportDeclaration()) {\n return;\n }\n if (maybeExportDeclar.isExportDefaultDeclaration()) {\n const {\n declaration\n } = maybeExportDeclar.node;\n if (_t.isDeclaration(declaration) && !declaration.id) {\n return;\n }\n }\n if (maybeExportDeclar.isExportAllDeclaration()) {\n return;\n }\n maybeExportDeclar.splitExportDeclaration();\n }\n maybeConvertFromClassFunctionDeclaration(path) {\n return path;\n }\n maybeConvertFromClassFunctionExpression(path) {\n return path;\n }\n rename() {\n const {\n binding,\n oldName,\n newName\n } = this;\n const {\n scope,\n path\n } = binding;\n const parentDeclar = path.find(path => path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression());\n if (parentDeclar) {\n const bindingIds = parentDeclar.getOuterBindingIdentifiers();\n if (bindingIds[oldName] === binding.identifier) {\n this.maybeConvertFromExportDeclaration(parentDeclar);\n }\n }\n const blockToTraverse = scope.block;\n const skipKeys = {\n discriminant: true\n };\n if (_t.isMethod(blockToTraverse)) {\n if (blockToTraverse.computed) {\n skipKeys.key = true;\n }\n if (!_t.isObjectMethod(blockToTraverse)) {\n skipKeys.decorators = true;\n }\n }\n traverseNode(blockToTraverse, getRenameVisitor(), scope, this, scope.path, skipKeys);\n scope.removeOwnBinding(oldName);\n scope.bindings[newName] = binding;\n this.binding.identifier.name = newName;\n if (parentDeclar) {\n this.maybeConvertFromClassFunctionDeclaration(path);\n this.maybeConvertFromClassFunctionExpression(path);\n }\n }\n}\n\nconst {\n VISITOR_KEYS: VISITOR_KEYS$3\n} = _t;\nfunction traverseForScope(path, visitors, state) {\n const exploded = explode$1(visitors);\n if (exploded.enter || exploded.exit) {\n throw new Error(\"Should not be used with enter/exit visitors.\");\n }\n _traverse(path.parentPath, path.parent, path.node, path.container, path.key, path.listKey, path.hub, path);\n function _traverse(parentPath, parent, node, container, key, listKey, hub, inPath) {\n if (!node) {\n return;\n }\n const path = inPath || NodePath_Final.get({\n hub,\n parentPath,\n parent,\n container,\n listKey,\n key\n });\n _forceSetScope.call(path);\n const visitor = exploded[node.type];\n if (visitor?.enter) {\n for (const visit of visitor.enter) {\n visit.call(state, path, state);\n }\n }\n if (path.shouldSkip) {\n return;\n }\n const keys = VISITOR_KEYS$3[node.type];\n if (!keys?.length) {\n return;\n }\n for (const key of keys) {\n const prop = node[key];\n if (!prop) continue;\n if (Array.isArray(prop)) {\n for (let i = 0; i < prop.length; i++) {\n const value = prop[i];\n _traverse(path, node, value, prop, i, key);\n }\n } else {\n _traverse(path, node, prop, node, key, null);\n }\n }\n if (visitor?.exit) {\n for (const visit of visitor.exit) {\n visit.call(state, path, state);\n }\n }\n }\n}\n\nclass Binding {\n identifier;\n scope;\n path;\n kind;\n constructor({\n identifier,\n scope,\n path,\n kind\n }) {\n this.identifier = identifier;\n this.scope = scope;\n this.path = path;\n this.kind = kind;\n if ((kind === \"var\" || kind === \"hoisted\") && isInitInLoop(path)) {\n this.reassign(path);\n }\n this.clearValue();\n }\n constantViolations = [];\n constant = true;\n referencePaths = [];\n referenced = false;\n references = 0;\n deoptValue() {\n this.clearValue();\n this.hasDeoptedValue = true;\n }\n setValue(value) {\n if (this.hasDeoptedValue) return;\n this.hasValue = true;\n this.value = value;\n }\n clearValue() {\n this.hasDeoptedValue = false;\n this.hasValue = false;\n this.value = null;\n }\n reassign(path) {\n this.constant = false;\n if (this.constantViolations.includes(path)) {\n return;\n }\n this.constantViolations.push(path);\n }\n reference(path) {\n if (this.referencePaths.includes(path)) {\n return;\n }\n this.referenced = true;\n this.references++;\n this.referencePaths.push(path);\n }\n dereference() {\n this.references--;\n this.referenced = !!this.references;\n }\n}\nfunction isInitInLoop(path) {\n const isFunctionDeclarationOrHasInit = !path.isVariableDeclarator() || path.node.init;\n for (let {\n parentPath,\n key\n } = path; parentPath; {\n parentPath,\n key\n } = parentPath) {\n if (parentPath.isFunctionParent()) return false;\n if (key === \"left\" && parentPath.isForXStatement() || isFunctionDeclarationOrHasInit && key === \"body\" && parentPath.isLoop()) {\n return true;\n }\n }\n return false;\n}\n\nlet pathsCache = new WeakMap();\nlet scope = new WeakMap();\nfunction clear() {\n clearPath();\n clearScope();\n}\nfunction clearPath() {\n pathsCache = new WeakMap();\n}\nfunction clearScope() {\n scope = new WeakMap();\n}\nfunction getCachedPaths(path) {\n const {\n parent,\n parentPath\n } = path;\n return parentPath ? parentPath._store : pathsCache.get(parent);\n}\nfunction getOrCreateCachedPaths(node, parentPath) {\n if (parentPath) {\n return parentPath._store ||= new Map();\n }\n let paths = pathsCache.get(node);\n if (!paths) pathsCache.set(node, paths = new Map());\n return paths;\n}\n\nconst cache = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n clear,\n clearPath,\n clearScope,\n getCachedPaths,\n getOrCreateCachedPaths,\n get path () { return pathsCache; },\n get scope () { return scope; }\n}, Symbol.toStringTag, { value: 'Module' });\n\nconst {\n assignmentExpression: assignmentExpression$3,\n cloneNode: cloneNode$3,\n getBindingIdentifiers: getBindingIdentifiers$2,\n identifier: identifier$3,\n isArrayExpression,\n isBinary,\n isCallExpression: isCallExpression$1,\n isClass,\n isClassBody,\n isClassDeclaration,\n isExportAllDeclaration,\n isExportDefaultDeclaration,\n isExportNamedDeclaration: isExportNamedDeclaration$1,\n isFunctionDeclaration,\n isIdentifier: isIdentifier$4,\n isImportDeclaration,\n isLiteral: isLiteral$1,\n isMemberExpression,\n isMethod,\n isModuleSpecifier,\n isNullLiteral,\n isObjectExpression,\n isProperty,\n isPureish,\n isRegExpLiteral,\n isSuper: isSuper$1,\n isTaggedTemplateExpression,\n isTemplateLiteral,\n isThisExpression,\n isUnaryExpression,\n isVariableDeclaration: isVariableDeclaration$1,\n expressionStatement: expressionStatement$3,\n matchesPattern: matchesPattern$1,\n toIdentifier,\n variableDeclaration: variableDeclaration$1,\n variableDeclarator: variableDeclarator$1,\n isObjectProperty,\n isTopicReference,\n isMetaProperty,\n isPrivateName,\n isExportDeclaration,\n sequenceExpression: sequenceExpression$2\n} = _t;\nfunction gatherNodeParts(node, parts) {\n switch (node?.type) {\n default:\n if (isImportDeclaration(node) || isExportDeclaration(node)) {\n if ((isExportAllDeclaration(node) || isExportNamedDeclaration$1(node) || isImportDeclaration(node)) && node.source) {\n gatherNodeParts(node.source, parts);\n } else if ((isExportNamedDeclaration$1(node) || isImportDeclaration(node)) && node.specifiers?.length) {\n for (const e of node.specifiers) gatherNodeParts(e, parts);\n } else if ((isExportDefaultDeclaration(node) || isExportNamedDeclaration$1(node)) && node.declaration) {\n gatherNodeParts(node.declaration, parts);\n }\n } else if (isModuleSpecifier(node)) {\n gatherNodeParts(node.local, parts);\n } else if (isLiteral$1(node) && !isNullLiteral(node) && !isRegExpLiteral(node) && !isTemplateLiteral(node)) {\n parts.push(node.value);\n }\n break;\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n case \"JSXMemberExpression\":\n gatherNodeParts(node.object, parts);\n gatherNodeParts(node.property, parts);\n break;\n case \"Identifier\":\n case \"JSXIdentifier\":\n parts.push(node.name);\n break;\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n case \"NewExpression\":\n gatherNodeParts(node.callee, parts);\n break;\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n for (const e of node.properties) {\n gatherNodeParts(e, parts);\n }\n break;\n case \"SpreadElement\":\n case \"RestElement\":\n gatherNodeParts(node.argument, parts);\n break;\n case \"ObjectProperty\":\n case \"ObjectMethod\":\n case \"ClassProperty\":\n case \"ClassMethod\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n gatherNodeParts(node.key, parts);\n break;\n case \"ThisExpression\":\n parts.push(\"this\");\n break;\n case \"Super\":\n parts.push(\"super\");\n break;\n case \"Import\":\n case \"ImportExpression\":\n parts.push(\"import\");\n break;\n case \"DoExpression\":\n parts.push(\"do\");\n break;\n case \"YieldExpression\":\n parts.push(\"yield\");\n gatherNodeParts(node.argument, parts);\n break;\n case \"AwaitExpression\":\n parts.push(\"await\");\n gatherNodeParts(node.argument, parts);\n break;\n case \"AssignmentExpression\":\n gatherNodeParts(node.left, parts);\n break;\n case \"VariableDeclarator\":\n gatherNodeParts(node.id, parts);\n break;\n case \"FunctionExpression\":\n case \"FunctionDeclaration\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n gatherNodeParts(node.id, parts);\n break;\n case \"PrivateName\":\n gatherNodeParts(node.id, parts);\n break;\n case \"ParenthesizedExpression\":\n gatherNodeParts(node.expression, parts);\n break;\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n gatherNodeParts(node.argument, parts);\n break;\n case \"MetaProperty\":\n gatherNodeParts(node.meta, parts);\n gatherNodeParts(node.property, parts);\n break;\n case \"JSXElement\":\n gatherNodeParts(node.openingElement, parts);\n break;\n case \"JSXOpeningElement\":\n gatherNodeParts(node.name, parts);\n break;\n case \"JSXFragment\":\n gatherNodeParts(node.openingFragment, parts);\n break;\n case \"JSXOpeningFragment\":\n parts.push(\"Fragment\");\n break;\n case \"JSXNamespacedName\":\n gatherNodeParts(node.namespace, parts);\n gatherNodeParts(node.name, parts);\n break;\n }\n}\nfunction resetScope(scope) {\n if (scope.path.type === \"Program\") {\n scope.referencesSet = new Set();\n scope.uidsSet = new Set();\n }\n scope.bindings = Object.create(null);\n scope.globals = Object.create(null);\n}\nfunction isAnonymousFunctionExpression(path) {\n return path.isFunctionExpression() && !path.node.id || path.isArrowFunctionExpression();\n}\nconst collectorVisitor = {\n ForStatement(path) {\n const declar = path.get(\"init\");\n if (declar.isVar()) {\n const {\n scope\n } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", declar);\n }\n },\n Declaration(path) {\n if (path.isBlockScoped()) return;\n if (path.isImportDeclaration()) return;\n if (path.isExportDeclaration()) return;\n const parent = path.scope.getFunctionParent() || path.scope.getProgramParent();\n parent.registerDeclaration(path);\n },\n ImportDeclaration(path) {\n const parent = path.scope.getBlockParent();\n parent.registerDeclaration(path);\n },\n TSImportEqualsDeclaration(path) {\n const parent = path.scope.getBlockParent();\n parent.registerDeclaration(path);\n },\n ReferencedIdentifier(path, state) {\n if (_t.isTSQualifiedName(path.parent) && path.parent.right === path.node) {\n return;\n }\n if (path.parentPath.isTSImportEqualsDeclaration()) return;\n state.references.push(path);\n },\n ForXStatement(path, state) {\n const left = path.get(\"left\");\n if (left.isPattern() || left.isIdentifier()) {\n state.constantViolations.push(path);\n } else if (left.isVar()) {\n const {\n scope\n } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", left);\n }\n },\n ExportDeclaration: {\n exit(path) {\n const {\n node,\n scope\n } = path;\n if (isExportAllDeclaration(node)) return;\n const declar = node.declaration;\n if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n const id = declar.id;\n if (!id) return;\n const binding = scope.getBinding(id.name);\n binding?.reference(path);\n } else if (isVariableDeclaration$1(declar)) {\n for (const decl of declar.declarations) {\n for (const name of Object.keys(getBindingIdentifiers$2(decl))) {\n const binding = scope.getBinding(name);\n binding?.reference(path);\n }\n }\n }\n }\n },\n LabeledStatement(path) {\n path.scope.getBlockParent().registerDeclaration(path);\n },\n AssignmentExpression(path, state) {\n state.assignments.push(path);\n },\n UpdateExpression(path, state) {\n state.constantViolations.push(path);\n },\n UnaryExpression(path, state) {\n if (path.node.operator === \"delete\") {\n state.constantViolations.push(path);\n }\n },\n BlockScoped(path) {\n let scope = path.scope;\n if (scope.path === path) scope = scope.parent;\n const parent = scope.getBlockParent();\n parent.registerDeclaration(path);\n if (path.isClassDeclaration() && path.node.id) {\n const id = path.node.id;\n const name = id.name;\n path.scope.bindings[name] = path.scope.parent.getBinding(name);\n }\n },\n CatchClause(path) {\n path.scope.registerBinding(\"let\", path);\n },\n Function(path) {\n const params = path.get(\"params\");\n for (const param of params) {\n path.scope.registerBinding(\"param\", param);\n }\n if (path.isFunctionExpression() && path.node.id) {\n path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n }\n },\n ClassExpression(path) {\n if (path.node.id) {\n path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n }\n },\n TSTypeAnnotation(path) {\n path.skip();\n }\n};\nlet scopeVisitor;\nlet uid = 0;\nclass Scope {\n uid;\n path;\n block;\n inited;\n labels;\n bindings;\n referencesSet;\n globals;\n uidsSet;\n data;\n crawling;\n constructor(path) {\n const {\n node\n } = path;\n const cached = scope.get(node);\n if (cached?.path === path) {\n return cached;\n }\n scope.set(node, this);\n this.uid = uid++;\n this.block = node;\n this.path = path;\n this.labels = new Map();\n this.inited = false;\n }\n static globals = [...globalsBuiltinLower, ...globalsBuiltinUpper];\n static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n get parent() {\n let parent,\n path = this.path;\n do {\n const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n path = path.parentPath;\n if (shouldSkip && path.isMethod()) path = path.parentPath;\n if (path?.isScope()) parent = path;\n } while (path && !parent);\n return parent?.scope;\n }\n get references() {\n throw new Error(\"Scope#references is not available in Babel 8. Use Scope#referencesSet instead.\");\n }\n get uids() {\n throw new Error(\"Scope#uids is not available in Babel 8. Use Scope#uidsSet instead.\");\n }\n generateDeclaredUidIdentifier(name) {\n const id = this.generateUidIdentifier(name);\n this.push({\n id\n });\n return cloneNode$3(id);\n }\n generateUidIdentifier(name) {\n return identifier$3(this.generateUid(name));\n }\n generateUid(name = \"temp\") {\n name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n let uid;\n let i = 0;\n do {\n uid = `_${name}`;\n if (i >= 11) uid += i - 1;else if (i >= 9) uid += i - 9;else if (i >= 1) uid += i + 1;\n i++;\n } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid));\n const program = this.getProgramParent();\n program.referencesSet.add(uid);\n program.uidsSet.add(uid);\n return uid;\n }\n generateUidBasedOnNode(node, defaultName) {\n const parts = [];\n gatherNodeParts(node, parts);\n let id = parts.join(\"$\");\n id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n return this.generateUid(id.slice(0, 20));\n }\n generateUidIdentifierBasedOnNode(node, defaultName) {\n return identifier$3(this.generateUidBasedOnNode(node, defaultName));\n }\n isStatic(node) {\n if (isThisExpression(node) || isSuper$1(node) || isTopicReference(node)) {\n return true;\n }\n if (isIdentifier$4(node)) {\n const binding = this.getBinding(node.name);\n if (binding) {\n return binding.constant;\n } else {\n return this.hasBinding(node.name);\n }\n }\n return false;\n }\n maybeGenerateMemoised(node, dontPush) {\n if (this.isStatic(node)) {\n return null;\n } else {\n const id = this.generateUidIdentifierBasedOnNode(node);\n if (!dontPush) {\n this.push({\n id\n });\n return cloneNode$3(id);\n }\n return id;\n }\n }\n checkBlockScopedCollisions(local, kind, name, id) {\n if (kind === \"param\") return;\n if (local.kind === \"local\") return;\n const duplicate = kind === \"let\" || local.kind === \"let\" || local.kind === \"const\" || local.kind === \"module\" || local.kind === \"param\" && kind === \"const\";\n if (duplicate) {\n throw this.path.hub.buildError(id, `Duplicate declaration \"${name}\"`, TypeError);\n }\n }\n rename(oldName, newName) {\n const binding = this.getBinding(oldName);\n if (binding) {\n newName ||= this.generateUidIdentifier(oldName).name;\n const renamer = new Renamer(binding, oldName, newName);\n renamer.rename();\n }\n }\n dump() {\n const sep = \"-\".repeat(60);\n console.log(sep);\n let scope = this;\n do {\n console.log(\"#\", scope.block.type);\n for (const name of Object.keys(scope.bindings)) {\n const binding = scope.bindings[name];\n console.log(\" -\", name, {\n constant: binding.constant,\n references: binding.references,\n violations: binding.constantViolations.length,\n kind: binding.kind\n });\n }\n } while (scope = scope.parent);\n console.log(sep);\n }\n hasLabel(name) {\n return !!this.getLabel(name);\n }\n getLabel(name) {\n return this.labels.get(name);\n }\n registerLabel(path) {\n this.labels.set(path.node.label.name, path);\n }\n registerDeclaration(path) {\n if (path.isLabeledStatement()) {\n this.registerLabel(path);\n } else if (path.isFunctionDeclaration()) {\n this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n } else if (path.isVariableDeclaration()) {\n const declarations = path.get(\"declarations\");\n const {\n kind\n } = path.node;\n for (const declar of declarations) {\n this.registerBinding(kind === \"using\" || kind === \"await using\" ? \"const\" : kind, declar);\n }\n } else if (path.isClassDeclaration()) {\n if (path.node.declare) return;\n this.registerBinding(\"let\", path);\n } else if (path.isImportDeclaration()) {\n const isTypeDeclaration = path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n const specifiers = path.get(\"specifiers\");\n for (const specifier of specifiers) {\n const isTypeSpecifier = isTypeDeclaration || specifier.isImportSpecifier() && (specifier.node.importKind === \"type\" || specifier.node.importKind === \"typeof\");\n this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n }\n } else if (path.isExportDeclaration()) {\n const declar = path.get(\"declaration\");\n if (declar.isClassDeclaration() || declar.isFunctionDeclaration() || declar.isVariableDeclaration()) {\n this.registerDeclaration(declar);\n }\n } else {\n this.registerBinding(\"unknown\", path);\n }\n }\n registerConstantViolation(path) {\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n this.getBinding(name)?.reassign(path);\n }\n }\n registerBinding(kind, path, bindingPath = path) {\n if (!kind) throw new ReferenceError(\"no `kind`\");\n if (path.isVariableDeclaration()) {\n const declarators = path.get(\"declarations\");\n for (const declar of declarators) {\n this.registerBinding(kind, declar);\n }\n return;\n }\n const parent = this.getProgramParent();\n const ids = path.getOuterBindingIdentifiers(true);\n for (const name of Object.keys(ids)) {\n parent.referencesSet.add(name);\n for (const id of ids[name]) {\n const local = this.getOwnBinding(name);\n if (local) {\n if (local.identifier === id) continue;\n this.checkBlockScopedCollisions(local, kind, name, id);\n }\n if (local) {\n local.reassign(bindingPath);\n } else {\n this.bindings[name] = new Binding({\n identifier: id,\n scope: this,\n path: bindingPath,\n kind: kind\n });\n }\n }\n }\n }\n addGlobal(node) {\n this.globals[node.name] = node;\n }\n hasUid(name) {\n return this.getProgramParent().uidsSet.has(name);\n }\n hasGlobal(name) {\n let scope = this;\n do {\n if (scope.globals[name]) return true;\n } while (scope = scope.parent);\n return false;\n }\n hasReference(name) {\n return this.getProgramParent().referencesSet.has(name);\n }\n isPure(node, constantsOnly) {\n if (isIdentifier$4(node)) {\n const binding = this.getBinding(node.name);\n if (!binding) return false;\n if (constantsOnly) return binding.constant;\n return true;\n } else if (isThisExpression(node) || isMetaProperty(node) || isTopicReference(node) || isPrivateName(node)) {\n return true;\n } else if (isClass(node)) {\n if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n return false;\n }\n if (node.decorators?.length > 0) {\n return false;\n }\n return this.isPure(node.body, constantsOnly);\n } else if (isClassBody(node)) {\n for (const method of node.body) {\n if (!this.isPure(method, constantsOnly)) return false;\n }\n return true;\n } else if (isBinary(node)) {\n return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly);\n } else if (isArrayExpression(node)) {\n for (const elem of node.elements) {\n if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n }\n return true;\n } else if (isObjectExpression(node)) {\n for (const prop of node.properties) {\n if (!this.isPure(prop, constantsOnly)) return false;\n }\n return true;\n } else if (isMethod(node)) {\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n if (node.decorators?.length > 0) {\n return false;\n }\n return true;\n } else if (isProperty(node)) {\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n if (node.decorators?.length > 0) {\n return false;\n }\n if (isObjectProperty(node) || node.static) {\n if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n return false;\n }\n }\n return true;\n } else if (isUnaryExpression(node)) {\n return this.isPure(node.argument, constantsOnly);\n } else if (isTemplateLiteral(node)) {\n for (const expression of node.expressions) {\n if (!this.isPure(expression, constantsOnly)) return false;\n }\n return true;\n } else if (isTaggedTemplateExpression(node)) {\n return matchesPattern$1(node.tag, \"String.raw\") && !this.hasBinding(\"String\", {\n noGlobals: true\n }) && this.isPure(node.quasi, constantsOnly);\n } else if (isMemberExpression(node)) {\n return !node.computed && isIdentifier$4(node.object) && node.object.name === \"Symbol\" && isIdentifier$4(node.property) && node.property.name !== \"for\" && !this.hasBinding(\"Symbol\", {\n noGlobals: true\n });\n } else if (isCallExpression$1(node)) {\n return matchesPattern$1(node.callee, \"Symbol.for\") && !this.hasBinding(\"Symbol\", {\n noGlobals: true\n }) && node.arguments.length === 1 && _t.isStringLiteral(node.arguments[0]);\n } else {\n return isPureish(node);\n }\n }\n setData(key, val) {\n return this.data[key] = val;\n }\n getData(key) {\n let scope = this;\n do {\n const data = scope.data[key];\n if (data != null) return data;\n } while (scope = scope.parent);\n }\n removeData(key) {\n let scope = this;\n do {\n const data = scope.data[key];\n if (data != null) scope.data[key] = null;\n } while (scope = scope.parent);\n }\n init() {\n if (!this.inited) {\n this.inited = true;\n this.crawl();\n }\n }\n crawl() {\n const path = this.path;\n resetScope(this);\n this.data = Object.create(null);\n let scope = this;\n do {\n if (scope.crawling) return;\n if (scope.path.isProgram()) {\n break;\n }\n } while (scope = scope.parent);\n const programParent = scope;\n const state = {\n references: [],\n constantViolations: [],\n assignments: []\n };\n this.crawling = true;\n scopeVisitor ||= traverse.visitors.merge([{\n Scope(path) {\n resetScope(path.scope);\n }\n }, collectorVisitor]);\n if (path.type !== \"Program\") {\n const typeVisitors = scopeVisitor[path.type];\n if (typeVisitors) {\n for (const visit of typeVisitors.enter) {\n visit.call(state, path, state);\n }\n }\n }\n traverseForScope(path, scopeVisitor, state);\n this.crawling = false;\n for (const path of state.assignments) {\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n if (path.scope.getBinding(name)) continue;\n programParent.addGlobal(ids[name]);\n }\n path.scope.registerConstantViolation(path);\n }\n for (const ref of state.references) {\n const binding = ref.scope.getBinding(ref.node.name);\n if (binding) {\n binding.reference(ref);\n } else {\n programParent.addGlobal(ref.node);\n }\n }\n for (const path of state.constantViolations) {\n path.scope.registerConstantViolation(path);\n }\n }\n push(opts) {\n let path = this.path;\n if (path.isPattern()) {\n path = this.getPatternParent().path;\n } else if (!path.isBlockStatement() && !path.isProgram()) {\n path = this.getBlockParent().path;\n }\n if (path.isSwitchStatement()) {\n path = (this.getFunctionParent() || this.getProgramParent()).path;\n }\n const {\n init,\n unique,\n kind = \"var\",\n id\n } = opts;\n if (!init && !unique && (kind === \"var\" || kind === \"let\") && isAnonymousFunctionExpression(path) && isCallExpression$1(path.parent, {\n callee: path.node\n }) && path.parent.arguments.length <= path.node.params.length && isIdentifier$4(id)) {\n path.pushContainer(\"params\", id);\n path.scope.registerBinding(\"param\", path.get(\"params\")[path.node.params.length - 1]);\n return;\n }\n if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n path.ensureBlock();\n path = path.get(\"body\");\n }\n const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n const dataKey = `declaration:${kind}:${blockHoist}`;\n let declarPath = !unique && path.getData(dataKey);\n if (!declarPath) {\n const declar = variableDeclaration$1(kind, []);\n declar._blockHoist = blockHoist;\n [declarPath] = path.unshiftContainer(\"body\", [declar]);\n if (!unique) path.setData(dataKey, declarPath);\n }\n const declarator = variableDeclarator$1(id, init);\n const len = declarPath.node.declarations.push(declarator);\n path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n }\n getProgramParent() {\n let scope = this;\n do {\n if (scope.path.isProgram()) {\n return scope;\n }\n } while (scope = scope.parent);\n throw new Error(\"Couldn't find a Program\");\n }\n getFunctionParent() {\n let scope = this;\n do {\n if (scope.path.isFunctionParent()) {\n return scope;\n }\n } while (scope = scope.parent);\n return null;\n }\n getBlockParent() {\n let scope = this;\n do {\n if (scope.path.isBlockParent()) {\n return scope;\n }\n } while (scope = scope.parent);\n throw new Error(\"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\");\n }\n getPatternParent() {\n let scope = this;\n do {\n if (!scope.path.isPattern()) {\n return scope.getBlockParent();\n }\n } while (scope = scope.parent.parent);\n throw new Error(\"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\");\n }\n getAllBindings() {\n const ids = Object.create(null);\n let scope = this;\n do {\n for (const key of Object.keys(scope.bindings)) {\n if (key in ids === false) {\n ids[key] = scope.bindings[key];\n }\n }\n scope = scope.parent;\n } while (scope);\n return ids;\n }\n bindingIdentifierEquals(name, node) {\n return this.getBindingIdentifier(name) === node;\n }\n getBinding(name) {\n let scope = this;\n let previousPath;\n do {\n const binding = scope.getOwnBinding(name);\n if (binding) {\n if (previousPath?.isPattern() && binding.kind !== \"param\" && binding.kind !== \"local\") ; else {\n return binding;\n }\n } else if (!binding && name === \"arguments\" && scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) {\n break;\n }\n previousPath = scope.path;\n } while (scope = scope.parent);\n }\n getOwnBinding(name) {\n return this.bindings[name];\n }\n getBindingIdentifier(name) {\n return this.getBinding(name)?.identifier;\n }\n getOwnBindingIdentifier(name) {\n const binding = this.bindings[name];\n return binding?.identifier;\n }\n hasOwnBinding(name) {\n return !!this.getOwnBinding(name);\n }\n hasBinding(name, opts) {\n if (!name) return false;\n let noGlobals;\n let noUids;\n let upToScope;\n if (typeof opts === \"object\") {\n noGlobals = opts.noGlobals;\n noUids = opts.noUids;\n upToScope = opts.upToScope;\n } else if (typeof opts === \"boolean\") {\n noGlobals = opts;\n }\n let scope = this;\n do {\n if (upToScope === scope) {\n break;\n }\n if (scope.hasOwnBinding(name)) {\n return true;\n }\n } while (scope = scope.parent);\n if (!noUids && this.hasUid(name)) return true;\n if (!noGlobals && Scope.globals.includes(name)) return true;\n if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n return false;\n }\n parentHasBinding(name, opts) {\n return this.parent?.hasBinding(name, opts);\n }\n moveBindingTo(name, scope) {\n const info = this.getBinding(name);\n if (info) {\n info.scope.removeOwnBinding(name);\n info.scope = scope;\n scope.bindings[name] = info;\n }\n }\n removeOwnBinding(name) {\n delete this.bindings[name];\n }\n removeBinding(name) {\n this.getBinding(name)?.scope.removeOwnBinding(name);\n this.getProgramParent().uidsSet.delete(name);\n }\n hoistVariables(emit = id => this.push({\n id\n })) {\n this.crawl();\n const seen = new Set();\n for (const name of Object.keys(this.bindings)) {\n const binding = this.bindings[name];\n if (!binding) continue;\n const {\n path\n } = binding;\n if (!path.isVariableDeclarator()) continue;\n const {\n parent,\n parentPath\n } = path;\n if (parent.kind !== \"var\" || seen.has(parent)) continue;\n seen.add(path.parent);\n let firstId;\n const init = [];\n for (const decl of parent.declarations) {\n firstId ??= decl.id;\n if (decl.init) {\n init.push(assignmentExpression$3(\"=\", decl.id, decl.init));\n }\n const ids = Object.keys(getBindingIdentifiers$2(decl, false, true, true));\n for (const name of ids) {\n emit(identifier$3(name), decl.init != null);\n }\n }\n if (parentPath.parentPath.isForXStatement({\n left: parent\n })) {\n parentPath.replaceWith(firstId);\n } else if (init.length === 0) {\n parentPath.remove();\n } else {\n const expr = init.length === 1 ? init[0] : sequenceExpression$2(init);\n if (parentPath.parentPath.isForStatement({\n init: parent\n })) {\n parentPath.replaceWith(expr);\n } else {\n parentPath.replaceWith(expressionStatement$3(expr));\n }\n }\n }\n }\n}\n\nconst {\n VISITOR_KEYS: VISITOR_KEYS$2\n} = _t;\nfunction findParent(callback) {\n let path = this;\n while (path = path.parentPath) {\n if (callback(path)) return path;\n }\n return null;\n}\nfunction find(callback) {\n let path = this;\n do {\n if (callback(path)) return path;\n } while (path = path.parentPath);\n return null;\n}\nfunction getFunctionParent() {\n return this.findParent(p => p.isFunction());\n}\nfunction getStatementParent() {\n let path = this;\n do {\n if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {\n break;\n } else {\n path = path.parentPath;\n }\n } while (path);\n if (path && (path.isProgram() || path.isFile())) {\n throw new Error(\"File/Program node, we can't possibly find a statement parent to this\");\n }\n return path;\n}\nfunction getEarliestCommonAncestorFrom(paths) {\n return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) {\n let earliest;\n const keys = VISITOR_KEYS$2[deepest.type];\n for (const ancestry of ancestries) {\n const path = ancestry[i + 1];\n if (!earliest) {\n earliest = path;\n continue;\n }\n if (path.listKey && earliest.listKey === path.listKey) {\n if (path.key < earliest.key) {\n earliest = path;\n continue;\n }\n }\n const earliestKeyIndex = keys.indexOf(earliest.parentKey);\n const currentKeyIndex = keys.indexOf(path.parentKey);\n if (earliestKeyIndex > currentKeyIndex) {\n earliest = path;\n }\n }\n return earliest;\n });\n}\nfunction getDeepestCommonAncestorFrom(paths, filter) {\n if (!paths.length) {\n return this;\n }\n if (paths.length === 1) {\n return paths[0];\n }\n let minDepth = Infinity;\n let lastCommonIndex, lastCommon;\n const ancestries = paths.map(path => {\n const ancestry = [];\n do {\n ancestry.unshift(path);\n } while ((path = path.parentPath) && path !== this);\n if (ancestry.length < minDepth) {\n minDepth = ancestry.length;\n }\n return ancestry;\n });\n const first = ancestries[0];\n depthLoop: for (let i = 0; i < minDepth; i++) {\n const shouldMatch = first[i];\n for (const ancestry of ancestries) {\n if (ancestry[i] !== shouldMatch) {\n break depthLoop;\n }\n }\n lastCommonIndex = i;\n lastCommon = shouldMatch;\n }\n if (lastCommon) {\n if (filter) {\n return filter(lastCommon, lastCommonIndex, ancestries);\n } else {\n return lastCommon;\n }\n } else {\n throw new Error(\"Couldn't find intersection\");\n }\n}\nfunction getAncestry() {\n let path = this;\n const paths = [];\n do {\n paths.push(path);\n } while (path = path.parentPath);\n return paths;\n}\nfunction isAncestor(maybeDescendant) {\n return maybeDescendant.isDescendant(this);\n}\nfunction isDescendant(maybeAncestor) {\n return !!this.findParent(parent => parent === maybeAncestor);\n}\nfunction inType(...candidateTypes) {\n let path = this;\n while (path) {\n if (candidateTypes.includes(path.node.type)) return true;\n path = path.parentPath;\n }\n return false;\n}\n\nconst {\n createFlowUnionType,\n createTSUnionType,\n isFlowType,\n isTSType\n} = _t;\nfunction createUnionType(types) {\n if (types.every(v => isFlowType(v))) {\n return createFlowUnionType(types);\n }\n if (types.every(v => isTSType(v))) {\n return createTSUnionType(types);\n }\n}\n\nconst {\n BOOLEAN_NUMBER_BINARY_OPERATORS,\n createTypeAnnotationBasedOnTypeof,\n numberTypeAnnotation: numberTypeAnnotation$1,\n voidTypeAnnotation: voidTypeAnnotation$2\n} = _t;\nfunction infererReference (node) {\n if (!this.isReferenced()) return;\n const binding = this.scope.getBinding(node.name);\n if (binding) {\n if (binding.identifier.typeAnnotation) {\n return binding.identifier.typeAnnotation;\n } else {\n return getTypeAnnotationBindingConstantViolations(binding, this, node.name);\n }\n }\n if (node.name === \"undefined\") {\n return voidTypeAnnotation$2();\n } else if (node.name === \"NaN\" || node.name === \"Infinity\") {\n return numberTypeAnnotation$1();\n } else if (node.name === \"arguments\") ;\n}\nfunction getTypeAnnotationBindingConstantViolations(binding, path, name) {\n const types = [];\n const functionConstantViolations = [];\n let constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations);\n const testType = getConditionalAnnotation(binding, path, name);\n if (testType) {\n const testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement);\n constantViolations = constantViolations.filter(path => !testConstantViolations.includes(path));\n types.push(testType.typeAnnotation);\n }\n if (constantViolations.length) {\n constantViolations.push(...functionConstantViolations);\n for (const violation of constantViolations) {\n types.push(violation.getTypeAnnotation());\n }\n }\n if (!types.length) {\n return;\n }\n return createUnionType(types);\n}\nfunction getConstantViolationsBefore(binding, path, functions) {\n const violations = binding.constantViolations.slice();\n violations.unshift(binding.path);\n return violations.filter(violation => {\n violation = violation.resolve();\n const status = violation._guessExecutionStatusRelativeTo(path);\n if (functions && status === \"unknown\") functions.push(violation);\n return status === \"before\";\n });\n}\nfunction inferAnnotationFromBinaryExpression(name, path) {\n const operator = path.node.operator;\n const right = path.get(\"right\").resolve();\n const left = path.get(\"left\").resolve();\n let target;\n if (left.isIdentifier({\n name\n })) {\n target = right;\n } else if (right.isIdentifier({\n name\n })) {\n target = left;\n }\n if (target) {\n if (operator === \"===\") {\n return target.getTypeAnnotation();\n }\n if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation$1();\n }\n return;\n }\n if (operator !== \"===\" && operator !== \"==\") return;\n let typeofPath;\n let typePath;\n if (left.isUnaryExpression({\n operator: \"typeof\"\n })) {\n typeofPath = left;\n typePath = right;\n } else if (right.isUnaryExpression({\n operator: \"typeof\"\n })) {\n typeofPath = right;\n typePath = left;\n }\n if (!typeofPath) return;\n if (!typeofPath.get(\"argument\").isIdentifier({\n name\n })) return;\n typePath = typePath.resolve();\n if (!typePath.isLiteral()) return;\n const typeValue = typePath.node.value;\n if (typeof typeValue !== \"string\") return;\n return createTypeAnnotationBasedOnTypeof(typeValue);\n}\nfunction getParentConditionalPath(binding, path, name) {\n let parentPath;\n while (parentPath = path.parentPath) {\n if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {\n if (path.key === \"test\") {\n return;\n }\n return parentPath;\n }\n if (parentPath.isFunction()) {\n if (name == null || parentPath.parentPath.scope.getBinding(name) !== binding) return;\n }\n path = parentPath;\n }\n}\nfunction getConditionalAnnotation(binding, path, name) {\n const ifStatement = getParentConditionalPath(binding, path, name);\n if (!ifStatement) return;\n const test = ifStatement.get(\"test\");\n const paths = [test];\n const types = [];\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n if (path.isLogicalExpression()) {\n if (path.node.operator === \"&&\") {\n paths.push(path.get(\"left\"));\n paths.push(path.get(\"right\"));\n }\n } else if (path.isBinaryExpression()) {\n const type = inferAnnotationFromBinaryExpression(name, path);\n if (type) types.push(type);\n }\n }\n if (types.length) {\n return {\n typeAnnotation: createUnionType(types),\n ifStatement\n };\n }\n return getConditionalAnnotation(binding, ifStatement, name);\n}\n\nconst {\n BOOLEAN_BINARY_OPERATORS,\n BOOLEAN_UNARY_OPERATORS,\n NUMBER_BINARY_OPERATORS,\n NUMBER_UNARY_OPERATORS,\n STRING_UNARY_OPERATORS,\n anyTypeAnnotation: anyTypeAnnotation$1,\n arrayTypeAnnotation,\n booleanTypeAnnotation,\n buildMatchMemberExpression,\n genericTypeAnnotation,\n identifier: identifier$2,\n nullLiteralTypeAnnotation,\n numberTypeAnnotation,\n stringTypeAnnotation: stringTypeAnnotation$1,\n tupleTypeAnnotation,\n unionTypeAnnotation,\n voidTypeAnnotation: voidTypeAnnotation$1,\n isIdentifier: isIdentifier$3\n} = _t;\nfunction VariableDeclarator() {\n if (!this.get(\"id\").isIdentifier()) return;\n return this.get(\"init\").getTypeAnnotation();\n}\nfunction TypeCastExpression(node) {\n return node.typeAnnotation;\n}\nTypeCastExpression.validParent = true;\nfunction TSAsExpression(node) {\n return node.typeAnnotation;\n}\nTSAsExpression.validParent = true;\nfunction TSNonNullExpression() {\n return this.get(\"expression\").getTypeAnnotation();\n}\nfunction NewExpression(node) {\n if (node.callee.type === \"Identifier\") {\n return genericTypeAnnotation(node.callee);\n }\n}\nfunction TemplateLiteral() {\n return stringTypeAnnotation$1();\n}\nfunction UnaryExpression(node) {\n const operator = node.operator;\n if (operator === \"void\") {\n return voidTypeAnnotation$1();\n } else if (NUMBER_UNARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (STRING_UNARY_OPERATORS.includes(operator)) {\n return stringTypeAnnotation$1();\n } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n }\n}\nfunction BinaryExpression(node) {\n const operator = node.operator;\n if (NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n } else if (operator === \"+\") {\n const right = this.get(\"right\");\n const left = this.get(\"left\");\n if (left.isBaseType(\"number\") && right.isBaseType(\"number\")) {\n return numberTypeAnnotation();\n } else if (left.isBaseType(\"string\") || right.isBaseType(\"string\")) {\n return stringTypeAnnotation$1();\n }\n return unionTypeAnnotation([stringTypeAnnotation$1(), numberTypeAnnotation()]);\n }\n}\nfunction LogicalExpression() {\n const argumentTypes = [this.get(\"left\").getTypeAnnotation(), this.get(\"right\").getTypeAnnotation()];\n return createUnionType(argumentTypes);\n}\nfunction ConditionalExpression() {\n const argumentTypes = [this.get(\"consequent\").getTypeAnnotation(), this.get(\"alternate\").getTypeAnnotation()];\n return createUnionType(argumentTypes);\n}\nfunction SequenceExpression() {\n return this.get(\"expressions\").pop().getTypeAnnotation();\n}\nfunction ParenthesizedExpression() {\n return this.get(\"expression\").getTypeAnnotation();\n}\nfunction AssignmentExpression() {\n return this.get(\"right\").getTypeAnnotation();\n}\nfunction UpdateExpression(node) {\n const operator = node.operator;\n if (operator === \"++\" || operator === \"--\") {\n return numberTypeAnnotation();\n }\n}\nfunction StringLiteral() {\n return stringTypeAnnotation$1();\n}\nfunction NumericLiteral() {\n return numberTypeAnnotation();\n}\nfunction BooleanLiteral() {\n return booleanTypeAnnotation();\n}\nfunction NullLiteral() {\n return nullLiteralTypeAnnotation();\n}\nfunction RegExpLiteral() {\n return genericTypeAnnotation(identifier$2(\"RegExp\"));\n}\nfunction ObjectExpression() {\n return genericTypeAnnotation(identifier$2(\"Object\"));\n}\nfunction ArrayExpression() {\n return genericTypeAnnotation(identifier$2(\"Array\"));\n}\nfunction RestElement() {\n return ArrayExpression();\n}\nRestElement.validParent = true;\nfunction Func() {\n return genericTypeAnnotation(identifier$2(\"Function\"));\n}\nconst isArrayFrom = buildMatchMemberExpression(\"Array.from\");\nconst isObjectKeys = buildMatchMemberExpression(\"Object.keys\");\nconst isObjectValues = buildMatchMemberExpression(\"Object.values\");\nconst isObjectEntries = buildMatchMemberExpression(\"Object.entries\");\nfunction CallExpression() {\n const {\n callee\n } = this.node;\n if (isObjectKeys(callee)) {\n return arrayTypeAnnotation(stringTypeAnnotation$1());\n } else if (isArrayFrom(callee) || isObjectValues(callee) || isIdentifier$3(callee, {\n name: \"Array\"\n })) {\n return arrayTypeAnnotation(anyTypeAnnotation$1());\n } else if (isObjectEntries(callee)) {\n return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation$1(), anyTypeAnnotation$1()]));\n }\n return resolveCall(this.get(\"callee\"));\n}\nfunction TaggedTemplateExpression() {\n return resolveCall(this.get(\"tag\"));\n}\nfunction resolveCall(callee) {\n callee = callee.resolve();\n if (callee.isFunction()) {\n const {\n node\n } = callee;\n if (node.async) {\n if (node.generator) {\n return genericTypeAnnotation(identifier$2(\"AsyncIterator\"));\n } else {\n return genericTypeAnnotation(identifier$2(\"Promise\"));\n }\n } else {\n if (node.generator) {\n return genericTypeAnnotation(identifier$2(\"Iterator\"));\n } else if (callee.node.returnType) {\n return callee.node.returnType;\n } else ;\n }\n }\n}\n\nconst inferers = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n ArrayExpression,\n ArrowFunctionExpression: Func,\n AssignmentExpression,\n BinaryExpression,\n BooleanLiteral,\n CallExpression,\n ClassDeclaration: Func,\n ClassExpression: Func,\n ConditionalExpression,\n FunctionDeclaration: Func,\n FunctionExpression: Func,\n Identifier: infererReference,\n LogicalExpression,\n NewExpression,\n NullLiteral,\n NumericLiteral,\n ObjectExpression,\n ParenthesizedExpression,\n RegExpLiteral,\n RestElement,\n SequenceExpression,\n StringLiteral,\n TSAsExpression,\n TSNonNullExpression,\n TaggedTemplateExpression,\n TemplateLiteral,\n TypeCastExpression,\n UnaryExpression,\n UpdateExpression,\n VariableDeclarator\n}, Symbol.toStringTag, { value: 'Module' });\n\nconst {\n anyTypeAnnotation,\n isAnyTypeAnnotation,\n isArrayTypeAnnotation,\n isBooleanTypeAnnotation,\n isEmptyTypeAnnotation,\n isFlowBaseAnnotation,\n isGenericTypeAnnotation,\n isIdentifier: isIdentifier$2,\n isMixedTypeAnnotation,\n isNumberTypeAnnotation,\n isStringTypeAnnotation,\n isTSArrayType,\n isTSTypeAnnotation,\n isTSTypeReference,\n isTupleTypeAnnotation,\n isTypeAnnotation,\n isUnionTypeAnnotation,\n isVoidTypeAnnotation,\n stringTypeAnnotation,\n voidTypeAnnotation\n} = _t;\nfunction getTypeAnnotation() {\n let type = this.getData(\"typeAnnotation\");\n if (type != null) {\n return type;\n }\n type = _getTypeAnnotation.call(this) || anyTypeAnnotation();\n if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {\n type = type.typeAnnotation;\n }\n this.setData(\"typeAnnotation\", type);\n return type;\n}\nconst typeAnnotationInferringNodes = new WeakSet();\nfunction _getTypeAnnotation() {\n const node = this.node;\n if (!node) {\n if (this.key === \"init\" && this.parentPath.isVariableDeclarator()) {\n const declar = this.parentPath.parentPath;\n const declarParent = declar.parentPath;\n if (declar.key === \"left\" && declarParent.isForInStatement()) {\n return stringTypeAnnotation();\n }\n if (declar.key === \"left\" && declarParent.isForOfStatement()) {\n return anyTypeAnnotation();\n }\n return voidTypeAnnotation();\n } else {\n return;\n }\n }\n if (node.typeAnnotation) {\n return node.typeAnnotation;\n }\n if (typeAnnotationInferringNodes.has(node)) {\n return;\n }\n typeAnnotationInferringNodes.add(node);\n try {\n let inferer = inferers[node.type];\n if (inferer) {\n return inferer.call(this, node);\n }\n inferer = inferers[this.parentPath.type];\n if (inferer?.validParent) {\n return this.parentPath.getTypeAnnotation();\n }\n } finally {\n typeAnnotationInferringNodes.delete(node);\n }\n}\nfunction isBaseType(baseName, soft) {\n return _isBaseType(baseName, this.getTypeAnnotation(), soft);\n}\nfunction _isBaseType(baseName, type, soft) {\n if (baseName === \"string\") {\n return isStringTypeAnnotation(type);\n } else if (baseName === \"number\") {\n return isNumberTypeAnnotation(type);\n } else if (baseName === \"boolean\") {\n return isBooleanTypeAnnotation(type);\n } else if (baseName === \"any\") {\n return isAnyTypeAnnotation(type);\n } else if (baseName === \"mixed\") {\n return isMixedTypeAnnotation(type);\n } else if (baseName === \"empty\") {\n return isEmptyTypeAnnotation(type);\n } else if (baseName === \"void\") {\n return isVoidTypeAnnotation(type);\n } else {\n if (soft) {\n return false;\n } else {\n throw new Error(`Unknown base type ${baseName}`);\n }\n }\n}\nfunction couldBeBaseType(name) {\n const type = this.getTypeAnnotation();\n if (isAnyTypeAnnotation(type)) return true;\n if (isUnionTypeAnnotation(type)) {\n for (const type2 of type.types) {\n if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {\n return true;\n }\n }\n return false;\n } else {\n return _isBaseType(name, type, true);\n }\n}\nfunction baseTypeStrictlyMatches(rightArg) {\n const left = this.getTypeAnnotation();\n const right = rightArg.getTypeAnnotation();\n if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {\n return right.type === left.type;\n }\n return false;\n}\nfunction isGenericType(genericName) {\n const type = this.getTypeAnnotation();\n if (genericName === \"Array\") {\n if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) {\n return true;\n }\n }\n return isGenericTypeAnnotation(type) && isIdentifier$2(type.id, {\n name: genericName\n }) || isTSTypeReference(type) && isIdentifier$2(type.typeName, {\n name: genericName\n });\n}\n\nconst hooks = [function (self, parent) {\n const removeParent = self.key === \"test\" && (parent.isWhile() || parent.isSwitchCase()) || self.key === \"declaration\" && parent.isExportDeclaration() || self.key === \"body\" && parent.isLabeledStatement() || self.listKey === \"declarations\" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === \"expression\" && parent.isExpressionStatement();\n if (removeParent) {\n parent.remove();\n return true;\n }\n}, function (self, parent) {\n if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {\n parent.replaceWith(parent.node.expressions[0]);\n return true;\n }\n}, function (self, parent) {\n if (parent.isBinary()) {\n if (self.key === \"left\") {\n parent.replaceWith(parent.node.right);\n } else {\n parent.replaceWith(parent.node.left);\n }\n return true;\n }\n}, function (self, parent) {\n if (parent.isIfStatement() && self.key === \"consequent\" || self.key === \"body\" && (parent.isLoop() || parent.isArrowFunctionExpression())) {\n self.replaceWith({\n type: \"BlockStatement\",\n directives: [],\n body: []\n });\n return true;\n }\n}];\n\nfunction remove() {\n _assertUnremoved.call(this);\n resync.call(this);\n if (_callRemovalHooks.call(this)) {\n _markRemoved.call(this);\n return;\n }\n if (!this.opts?.noScope) {\n _removeFromScope.call(this);\n }\n this.shareCommentsWithSiblings();\n _remove.call(this);\n _markRemoved.call(this);\n}\nfunction _removeFromScope() {\n if (!this.node) return;\n const bindings = _t.getBindingIdentifiers(this.node, false, false, true);\n Object.keys(bindings).forEach(name => this.scope.removeBinding(name));\n}\nfunction _callRemovalHooks() {\n if (this.parentPath) {\n for (const fn of hooks) {\n if (fn(this, this.parentPath)) return true;\n }\n }\n}\nfunction _remove() {\n if (Array.isArray(this.container)) {\n this.container.splice(this.key, 1);\n updateSiblingKeys.call(this, this.key, -1);\n } else {\n _replaceWith.call(this, null);\n }\n}\nfunction _markRemoved() {\n this._traverseFlags |= SHOULD_SKIP | REMOVED;\n if (this.parent) {\n getCachedPaths(this)?.delete(this.node);\n }\n this.node = null;\n}\nfunction _assertUnremoved() {\n if (this.removed) {\n throw this.buildCodeFrameError(\"NodePath has been removed so is read-only.\");\n }\n}\n\nconst {\n arrowFunctionExpression: arrowFunctionExpression$2,\n assertExpression,\n assignmentExpression: assignmentExpression$2,\n blockStatement: blockStatement$2,\n callExpression: callExpression$2,\n cloneNode: cloneNode$2,\n expressionStatement: expressionStatement$2,\n isAssignmentExpression,\n isCallExpression,\n isExportNamedDeclaration,\n isExpression: isExpression$2,\n isIdentifier: isIdentifier$1,\n isSequenceExpression,\n isSuper,\n thisExpression: thisExpression$1\n} = _t;\nfunction insertBefore(nodes_) {\n _assertUnremoved.call(this);\n const nodes = _verifyNodeList.call(this, nodes_);\n const {\n parentPath,\n parent\n } = this;\n if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {\n return parentPath.insertBefore(nodes);\n } else if (this.isNodeType(\"Expression\") && !this.isJSXElement() || parentPath.isForStatement() && this.key === \"init\") {\n if (this.node) nodes.push(this.node);\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertBefore.call(this, nodes);\n } else if (this.isStatementOrBlock()) {\n const node = this.node;\n const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null);\n const [blockPath] = this.replaceWith(blockStatement$2(shouldInsertCurrentNode ? [node] : []));\n return blockPath.unshiftContainer(\"body\", nodes);\n } else {\n throw new Error(\"We don't know what to do with this node type. \" + \"We were previously a Statement but we can't fit in here?\");\n }\n}\nfunction _containerInsert(from, nodes) {\n updateSiblingKeys.call(this, from, nodes.length);\n const paths = [];\n this.container.splice(from, 0, ...nodes);\n for (let i = 0; i < nodes.length; i++) {\n const to = from + i;\n const path = this.getSibling(to);\n paths.push(path);\n if (this.context?.queue) {\n pushContext.call(path, this.context);\n }\n }\n const contexts = _getQueueContexts.call(this);\n for (const path of paths) {\n setScope.call(path);\n path.debug(\"Inserted.\");\n for (const context of contexts) {\n context.maybeQueue(path, true);\n }\n }\n return paths;\n}\nfunction _containerInsertBefore(nodes) {\n return _containerInsert.call(this, this.key, nodes);\n}\nfunction _containerInsertAfter(nodes) {\n return _containerInsert.call(this, this.key + 1, nodes);\n}\nconst last = arr => arr[arr.length - 1];\nfunction isHiddenInSequenceExpression(path) {\n return isSequenceExpression(path.parent) && (last(path.parent.expressions) !== path.node || isHiddenInSequenceExpression(path.parentPath));\n}\nfunction isAlmostConstantAssignment(node, scope) {\n if (!isAssignmentExpression(node) || !isIdentifier$1(node.left)) {\n return false;\n }\n const blockScope = scope.getBlockParent();\n return blockScope.hasOwnBinding(node.left.name) && blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1;\n}\nfunction insertAfter(nodes_) {\n _assertUnremoved.call(this);\n if (this.isSequenceExpression()) {\n return last(this.get(\"expressions\")).insertAfter(nodes_);\n }\n const nodes = _verifyNodeList.call(this, nodes_);\n const {\n parentPath,\n parent\n } = this;\n if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {\n return parentPath.insertAfter(nodes.map(node => {\n return isExpression$2(node) ? expressionStatement$2(node) : node;\n }));\n } else if (this.isNodeType(\"Expression\") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === \"init\") {\n const self = this;\n if (self.node) {\n const node = self.node;\n let {\n scope\n } = this;\n if (scope.path.isPattern()) {\n assertExpression(node);\n self.replaceWith(callExpression$2(arrowFunctionExpression$2([], node), []));\n self.get(\"callee.body\").insertAfter(nodes);\n return [self];\n }\n if (isHiddenInSequenceExpression(self)) {\n nodes.unshift(node);\n } else if (isCallExpression(node) && isSuper(node.callee)) {\n nodes.unshift(node);\n nodes.push(thisExpression$1());\n } else if (isAlmostConstantAssignment(node, scope)) {\n nodes.unshift(node);\n nodes.push(cloneNode$2(node.left));\n } else if (scope.isPure(node, true)) {\n nodes.push(node);\n } else {\n if (parentPath.isMethod({\n computed: true,\n key: node\n })) {\n scope = scope.parent;\n }\n const temp = scope.generateDeclaredUidIdentifier();\n nodes.unshift(expressionStatement$2(assignmentExpression$2(\"=\", cloneNode$2(temp), node)));\n nodes.push(expressionStatement$2(cloneNode$2(temp)));\n }\n }\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertAfter.call(this, nodes);\n } else if (this.isStatementOrBlock()) {\n const node = this.node;\n const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null);\n const [blockPath] = this.replaceWith(blockStatement$2(shouldInsertCurrentNode ? [node] : []));\n return blockPath.pushContainer(\"body\", nodes);\n } else {\n throw new Error(\"We don't know what to do with this node type. \" + \"We were previously a Statement but we can't fit in here?\");\n }\n}\nfunction updateSiblingKeys(fromIndex, incrementBy) {\n if (!this.parent) return;\n const paths = getCachedPaths(this);\n if (!paths) return;\n for (const [, path] of paths) {\n if (typeof path.key === \"number\" && path.container === this.container && path.key >= fromIndex) {\n path.key += incrementBy;\n }\n }\n}\nfunction _verifyNodeList(nodes) {\n if (!nodes) {\n return [];\n }\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n let msg;\n if (!node) {\n msg = \"has falsy node\";\n } else if (typeof node !== \"object\") {\n msg = \"contains a non-object node\";\n } else if (!node.type) {\n msg = \"without a type\";\n } else if (node instanceof NodePath_Final) {\n msg = \"has a NodePath when it expected a raw object\";\n }\n if (msg) {\n const type = Array.isArray(node) ? \"array\" : typeof node;\n throw new Error(`Node list ${msg} with the index of ${i} and type of ${type}`);\n }\n }\n return nodes;\n}\nfunction unshiftContainer(listKey, nodes) {\n _assertUnremoved.call(this);\n const verifiedNodes = _verifyNodeList.call(this, nodes);\n const container = this.node[listKey];\n const path = NodePath_Final.get({\n parentPath: this,\n parent: this.node,\n container,\n listKey,\n key: 0\n }).setContext(this.context);\n return _containerInsertBefore.call(path, verifiedNodes);\n}\nfunction pushContainer(listKey, nodes) {\n _assertUnremoved.call(this);\n const verifiedNodes = _verifyNodeList.call(this, nodes);\n const container = this.node[listKey];\n const path = NodePath_Final.get({\n parentPath: this,\n parent: this.node,\n container,\n listKey,\n key: container.length\n }).setContext(this.context);\n return path.replaceWithMultiple(verifiedNodes);\n}\n\nconst {\n FUNCTION_TYPES,\n arrowFunctionExpression: arrowFunctionExpression$1,\n assignmentExpression: assignmentExpression$1,\n awaitExpression,\n blockStatement: blockStatement$1,\n buildUndefinedNode: buildUndefinedNode$2,\n callExpression: callExpression$1,\n cloneNode: cloneNode$1,\n conditionalExpression: conditionalExpression$1,\n expressionStatement: expressionStatement$1,\n getBindingIdentifiers: getBindingIdentifiers$1,\n identifier: identifier$1,\n inheritLeadingComments,\n inheritTrailingComments,\n inheritsComments,\n isBlockStatement: isBlockStatement$1,\n isEmptyStatement,\n isExpression: isExpression$1,\n isExpressionStatement,\n isIfStatement,\n isProgram,\n isStatement,\n isVariableDeclaration,\n removeComments,\n returnStatement: returnStatement$1,\n sequenceExpression: sequenceExpression$1,\n validate: validate$1,\n yieldExpression\n} = _t;\nfunction replaceWithMultiple(nodes) {\n resync.call(this);\n const verifiedNodes = _verifyNodeList.call(this, nodes);\n inheritLeadingComments(verifiedNodes[0], this.node);\n inheritTrailingComments(verifiedNodes[verifiedNodes.length - 1], this.node);\n getCachedPaths(this)?.delete(this.node);\n this.node = this.container[this.key] = null;\n const paths = this.insertAfter(nodes);\n if (this.node) {\n this.requeue();\n } else {\n this.remove();\n }\n return paths;\n}\nfunction replaceWithSourceString(replacement) {\n resync.call(this);\n let ast;\n try {\n replacement = `(${replacement})`;\n ast = parse(replacement);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message += \" - make sure this is an expression.\\n\" + codeFrameColumns(replacement, {\n start: {\n line: loc.line,\n column: loc.column\n }\n });\n err.code = \"BABEL_REPLACE_SOURCE_ERROR\";\n }\n throw err;\n }\n const expressionAST = ast.program.body[0].expression;\n traverse.removeProperties(expressionAST);\n return this.replaceWith(expressionAST);\n}\nfunction replaceWith(replacementPath) {\n resync.call(this);\n if (this.removed) {\n throw new Error(\"You can't replace this node, we've already removed it\");\n }\n let replacement = replacementPath instanceof NodePath_Final ? replacementPath.node : replacementPath;\n if (!replacement) {\n throw new Error(\"You passed `path.replaceWith()` a falsy node, use `path.remove()` instead\");\n }\n if (this.node === replacement) {\n return [this];\n }\n if (this.isProgram() && !isProgram(replacement)) {\n throw new Error(\"You can only replace a Program root node with another Program node\");\n }\n if (Array.isArray(replacement)) {\n throw new Error(\"Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`\");\n }\n if (typeof replacement === \"string\") {\n throw new Error(\"Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`\");\n }\n let nodePath = \"\";\n if (this.isNodeType(\"Statement\") && isExpression$1(replacement)) {\n if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) {\n replacement = expressionStatement$1(replacement);\n nodePath = \"expression\";\n }\n }\n if (this.isNodeType(\"Expression\") && isStatement(replacement)) {\n if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {\n return this.replaceExpressionWithStatements([replacement]);\n }\n }\n const oldNode = this.node;\n if (oldNode) {\n inheritsComments(replacement, oldNode);\n removeComments(oldNode);\n }\n _replaceWith.call(this, replacement);\n this.type = replacement.type;\n setScope.call(this);\n this.requeue();\n return [nodePath ? this.get(nodePath) : this];\n}\nfunction _replaceWith(node) {\n if (!this.container) {\n throw new ReferenceError(\"Container is falsy\");\n }\n if (this.inList) {\n validate$1(this.parent, this.key, [node]);\n } else {\n validate$1(this.parent, this.key, node);\n }\n this.debug(`Replace with ${node?.type}`);\n getCachedPaths(this)?.set(node, this).delete(this.node);\n this.node = node;\n this.container[this.key] = node;\n}\nfunction replaceExpressionWithStatements(nodes) {\n resync.call(this);\n const declars = [];\n const nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars);\n if (nodesAsSingleExpression) {\n for (const id of declars) this.scope.push({\n id\n });\n return this.replaceWith(nodesAsSingleExpression)[0].get(\"expressions\");\n }\n const functionParent = this.getFunctionParent();\n const isParentAsync = functionParent?.node.async;\n const isParentGenerator = functionParent?.node.generator;\n const container = arrowFunctionExpression$1([], blockStatement$1(nodes));\n this.replaceWith(callExpression$1(container, []));\n const callee = this.get(\"callee\");\n callee.get(\"body\").scope.hoistVariables(id => this.scope.push({\n id\n }));\n const completionRecords = callee.getCompletionRecords();\n for (const path of completionRecords) {\n if (!path.isExpressionStatement()) continue;\n const loop = path.findParent(path => path.isLoop());\n if (loop) {\n let uid = loop.getData(\"expressionReplacementReturnUid\");\n if (!uid) {\n uid = callee.scope.generateDeclaredUidIdentifier(\"ret\");\n callee.get(\"body\").pushContainer(\"body\", returnStatement$1(cloneNode$1(uid)));\n loop.setData(\"expressionReplacementReturnUid\", uid);\n } else {\n uid = identifier$1(uid.name);\n }\n path.get(\"expression\").replaceWith(assignmentExpression$1(\"=\", cloneNode$1(uid), path.node.expression));\n } else {\n path.replaceWith(returnStatement$1(path.node.expression));\n }\n }\n callee.arrowFunctionToExpression();\n const newCallee = callee;\n const needToAwaitFunction = isParentAsync && traverse.hasType(newCallee.node.body, \"AwaitExpression\", FUNCTION_TYPES);\n const needToYieldFunction = isParentGenerator && traverse.hasType(newCallee.node.body, \"YieldExpression\", FUNCTION_TYPES);\n if (needToAwaitFunction) {\n newCallee.set(\"async\", true);\n if (!needToYieldFunction) {\n this.replaceWith(awaitExpression(this.node));\n }\n }\n if (needToYieldFunction) {\n newCallee.set(\"generator\", true);\n this.replaceWith(yieldExpression(this.node, true));\n }\n return newCallee.get(\"body.body\");\n}\nfunction gatherSequenceExpressions(nodes, declars) {\n const exprs = [];\n let ensureLastUndefined = true;\n for (const node of nodes) {\n if (!isEmptyStatement(node)) {\n ensureLastUndefined = false;\n }\n if (isExpression$1(node)) {\n exprs.push(node);\n } else if (isExpressionStatement(node)) {\n exprs.push(node.expression);\n } else if (isVariableDeclaration(node)) {\n if (node.kind !== \"var\") return;\n for (const declar of node.declarations) {\n const bindings = getBindingIdentifiers$1(declar);\n for (const key of Object.keys(bindings)) {\n declars.push(cloneNode$1(bindings[key]));\n }\n if (declar.init) {\n exprs.push(assignmentExpression$1(\"=\", declar.id, declar.init));\n }\n }\n ensureLastUndefined = true;\n } else if (isIfStatement(node)) {\n const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : buildUndefinedNode$2();\n const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : buildUndefinedNode$2();\n if (!consequent || !alternate) return;\n exprs.push(conditionalExpression$1(node.test, consequent, alternate));\n } else if (isBlockStatement$1(node)) {\n const body = gatherSequenceExpressions(node.body, declars);\n if (!body) return;\n exprs.push(body);\n } else if (isEmptyStatement(node)) {\n if (nodes.indexOf(node) === 0) {\n ensureLastUndefined = true;\n }\n } else {\n return;\n }\n }\n if (ensureLastUndefined) exprs.push(buildUndefinedNode$2());\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return sequenceExpression$1(exprs);\n }\n}\nfunction replaceInline(nodes) {\n resync.call(this);\n if (Array.isArray(nodes)) {\n if (Array.isArray(this.container)) {\n nodes = _verifyNodeList.call(this, nodes);\n const paths = _containerInsertAfter.call(this, nodes);\n this.remove();\n return paths;\n } else {\n return this.replaceWithMultiple(nodes);\n }\n } else {\n return this.replaceWith(nodes);\n }\n}\n\nconst VALID_OBJECT_CALLEES = [\"Number\", \"String\", \"Math\"];\nconst VALID_IDENTIFIER_CALLEES = [\"isFinite\", \"isNaN\", \"parseFloat\", \"parseInt\", \"decodeURI\", \"decodeURIComponent\", \"encodeURI\", \"encodeURIComponent\", \"btoa\", \"atob\"];\nconst INVALID_METHODS = [\"random\"];\nfunction isValidObjectCallee(val) {\n return VALID_OBJECT_CALLEES.includes(val);\n}\nfunction isValidIdentifierCallee(val) {\n return VALID_IDENTIFIER_CALLEES.includes(val);\n}\nfunction isInvalidMethod(val) {\n return INVALID_METHODS.includes(val);\n}\nfunction evaluateTruthy() {\n const res = this.evaluate();\n if (res.confident) return !!res.value;\n}\nfunction deopt(path, state) {\n if (!state.confident) return;\n state.deoptPath = path;\n state.confident = false;\n}\nconst Globals = new Map([[\"undefined\", undefined], [\"Infinity\", Infinity], [\"NaN\", NaN]]);\nfunction evaluateCached(path, state) {\n const {\n node\n } = path;\n const {\n seen\n } = state;\n if (seen.has(node)) {\n const existing = seen.get(node);\n if (existing.resolved) {\n return existing.value;\n } else {\n deopt(path, state);\n return;\n }\n } else {\n const item = {\n resolved: false\n };\n seen.set(node, item);\n const val = _evaluate(path, state);\n if (state.confident) {\n item.resolved = true;\n item.value = val;\n }\n return val;\n }\n}\nfunction _evaluate(path, state) {\n if (!state.confident) return;\n if (path.isSequenceExpression()) {\n const exprs = path.get(\"expressions\");\n return evaluateCached(exprs[exprs.length - 1], state);\n }\n if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) {\n return path.node.value;\n }\n if (path.isNullLiteral()) {\n return null;\n }\n if (path.isTemplateLiteral()) {\n return evaluateQuasis(path, path.node.quasis, state);\n }\n if (path.isTaggedTemplateExpression() && path.get(\"tag\").isMemberExpression()) {\n const object = path.get(\"tag.object\");\n const {\n node: {\n name\n }\n } = object;\n const property = path.get(\"tag.property\");\n if (object.isIdentifier() && name === \"String\" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === \"raw\") {\n return evaluateQuasis(path, path.node.quasi.quasis, state, true);\n }\n }\n if (path.isConditionalExpression()) {\n const testResult = evaluateCached(path.get(\"test\"), state);\n if (!state.confident) return;\n if (testResult) {\n return evaluateCached(path.get(\"consequent\"), state);\n } else {\n return evaluateCached(path.get(\"alternate\"), state);\n }\n }\n if (path.isExpressionWrapper()) {\n return evaluateCached(path.get(\"expression\"), state);\n }\n if (path.isMemberExpression() && !path.parentPath.isCallExpression({\n callee: path.node\n })) {\n const property = path.get(\"property\");\n const object = path.get(\"object\");\n if (object.isLiteral()) {\n const value = object.node.value;\n const type = typeof value;\n let key = null;\n if (path.node.computed) {\n key = evaluateCached(property, state);\n if (!state.confident) return;\n } else if (property.isIdentifier()) {\n key = property.node.name;\n }\n if ((type === \"number\" || type === \"string\") && key != null && (typeof key === \"number\" || typeof key === \"string\")) {\n return value[key];\n }\n }\n }\n if (path.isReferencedIdentifier()) {\n const binding = path.scope.getBinding(path.node.name);\n if (binding) {\n if (binding.constantViolations.length > 0 || path.node.start < binding.path.node.end) {\n deopt(binding.path, state);\n return;\n }\n const bindingPathScope = binding.path.scope;\n if (binding.kind === \"var\" && bindingPathScope !== binding.scope) {\n let hasUnsafeBlock = !bindingPathScope.path.parentPath.isBlockStatement();\n for (let scope = bindingPathScope.parent; scope; scope = scope.parent) {\n if (scope === path.scope) {\n if (hasUnsafeBlock) {\n deopt(binding.path, state);\n return;\n }\n break;\n }\n if (scope.path.parentPath?.isBlockStatement()) {\n hasUnsafeBlock = true;\n }\n }\n }\n if (binding.hasValue) {\n return binding.value;\n }\n }\n const name = path.node.name;\n if (Globals.has(name)) {\n if (!binding) {\n return Globals.get(name);\n }\n deopt(binding.path, state);\n return;\n }\n if (!binding) {\n deopt(path, state);\n return;\n }\n const bindingPath = binding.path;\n if (!bindingPath.isVariableDeclarator()) {\n deopt(bindingPath, state);\n return;\n }\n const initPath = bindingPath.get(\"init\");\n const value = evaluateCached(initPath, state);\n if (typeof value === \"object\" && value !== null && binding.references > 1) {\n deopt(initPath, state);\n return;\n }\n return value;\n }\n if (path.isUnaryExpression({\n prefix: true\n })) {\n if (path.node.operator === \"void\") {\n return undefined;\n }\n const argument = path.get(\"argument\");\n if (path.node.operator === \"typeof\" && (argument.isFunction() || argument.isClass())) {\n return \"function\";\n }\n const arg = evaluateCached(argument, state);\n if (!state.confident) return;\n switch (path.node.operator) {\n case \"!\":\n return !arg;\n case \"+\":\n return +arg;\n case \"-\":\n return -arg;\n case \"~\":\n return ~arg;\n case \"typeof\":\n return typeof arg;\n }\n }\n if (path.isArrayExpression()) {\n const arr = [];\n const elems = path.get(\"elements\");\n for (const elem of elems) {\n const elemValue = elem.evaluate();\n if (elemValue.confident) {\n arr.push(elemValue.value);\n } else {\n deopt(elemValue.deopt, state);\n return;\n }\n }\n return arr;\n }\n if (path.isObjectExpression()) {\n const obj = {};\n const props = path.get(\"properties\");\n for (const prop of props) {\n if (prop.isObjectMethod() || prop.isSpreadElement()) {\n deopt(prop, state);\n return;\n }\n const keyPath = prop.get(\"key\");\n let key;\n if (prop.node.computed) {\n key = keyPath.evaluate();\n if (!key.confident) {\n deopt(key.deopt, state);\n return;\n }\n key = key.value;\n } else if (keyPath.isIdentifier()) {\n key = keyPath.node.name;\n } else {\n key = keyPath.node.value;\n }\n const valuePath = prop.get(\"value\");\n let value = valuePath.evaluate();\n if (!value.confident) {\n deopt(value.deopt, state);\n return;\n }\n value = value.value;\n obj[key] = value;\n }\n return obj;\n }\n if (path.isLogicalExpression()) {\n const wasConfident = state.confident;\n const left = evaluateCached(path.get(\"left\"), state);\n const leftConfident = state.confident;\n state.confident = wasConfident;\n const right = evaluateCached(path.get(\"right\"), state);\n const rightConfident = state.confident;\n switch (path.node.operator) {\n case \"||\":\n state.confident = leftConfident && (!!left || rightConfident);\n if (!state.confident) return;\n return left || right;\n case \"&&\":\n state.confident = leftConfident && (!left || rightConfident);\n if (!state.confident) return;\n return left && right;\n case \"??\":\n state.confident = leftConfident && (left != null || rightConfident);\n if (!state.confident) return;\n return left ?? right;\n }\n }\n if (path.isBinaryExpression()) {\n const left = evaluateCached(path.get(\"left\"), state);\n if (!state.confident) return;\n const right = evaluateCached(path.get(\"right\"), state);\n if (!state.confident) return;\n switch (path.node.operator) {\n case \"-\":\n return left - right;\n case \"+\":\n return left + right;\n case \"/\":\n return left / right;\n case \"*\":\n return left * right;\n case \"%\":\n return left % right;\n case \"**\":\n return left ** right;\n case \"<\":\n return left < right;\n case \">\":\n return left > right;\n case \"<=\":\n return left <= right;\n case \">=\":\n return left >= right;\n case \"==\":\n return left == right;\n case \"!=\":\n return left != right;\n case \"===\":\n return left === right;\n case \"!==\":\n return left !== right;\n case \"|\":\n return left | right;\n case \"&\":\n return left & right;\n case \"^\":\n return left ^ right;\n case \"<<\":\n return left << right;\n case \">>\":\n return left >> right;\n case \">>>\":\n return left >>> right;\n }\n }\n if (path.isCallExpression()) {\n const callee = path.get(\"callee\");\n let context;\n let func;\n if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && (isValidObjectCallee(callee.node.name) || isValidIdentifierCallee(callee.node.name))) {\n func = global[callee.node.name];\n }\n if (callee.isMemberExpression()) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (object.isIdentifier() && property.isIdentifier() && isValidObjectCallee(object.node.name) && !isInvalidMethod(property.node.name) && !path.scope.getBinding(object.node.name)) {\n context = global[object.node.name];\n const key = property.node.name;\n if (Object.hasOwn(context, key)) {\n func = context[key];\n }\n }\n if (object.isLiteral() && property.isIdentifier()) {\n const type = typeof object.node.value;\n if (type === \"string\" || type === \"number\") {\n context = object.node.value;\n func = context[property.node.name];\n }\n }\n }\n if (func) {\n const args = path.get(\"arguments\").map(arg => evaluateCached(arg, state));\n if (!state.confident) return;\n return func.apply(context, args);\n }\n }\n deopt(path, state);\n}\nfunction evaluateQuasis(path, quasis, state, raw = false) {\n let str = \"\";\n let i = 0;\n const exprs = path.isTemplateLiteral() ? path.get(\"expressions\") : path.get(\"quasi.expressions\");\n for (const elem of quasis) {\n if (!state.confident) break;\n str += raw ? elem.value.raw : elem.value.cooked;\n const expr = exprs[i++];\n if (expr) str += String(evaluateCached(expr, state));\n }\n if (!state.confident) return;\n return str;\n}\nfunction evaluate() {\n const state = {\n confident: true,\n deoptPath: null,\n seen: new Map()\n };\n let value = evaluateCached(this, state);\n if (!state.confident) value = undefined;\n return {\n confident: state.confident,\n deopt: state.deoptPath,\n value: value\n };\n}\n\nconst {\n arrowFunctionExpression,\n assignmentExpression,\n binaryExpression,\n blockStatement,\n callExpression,\n conditionalExpression,\n expressionStatement,\n identifier,\n jsxIdentifier,\n logicalExpression,\n LOGICAL_OPERATORS,\n memberExpression,\n metaProperty,\n numericLiteral,\n objectExpression,\n restElement,\n returnStatement,\n sequenceExpression,\n spreadElement,\n stringLiteral,\n super: _super,\n thisExpression,\n toExpression,\n unaryExpression,\n toBindingIdentifierName,\n isFunction,\n isAssignmentPattern,\n isRestElement,\n getFunctionName,\n cloneNode,\n variableDeclaration,\n variableDeclarator,\n exportNamedDeclaration,\n exportSpecifier,\n inherits,\n buildUndefinedNode: buildUndefinedNode$1\n} = _t;\nfunction ensureBlock() {\n const body = this.get(\"body\");\n const bodyNode = body.node;\n if (Array.isArray(body)) {\n throw new Error(\"Can't convert array path to a block statement\");\n }\n if (!bodyNode) {\n throw new Error(\"Can't convert node without a body\");\n }\n if (body.isBlockStatement()) {\n return bodyNode;\n }\n const statements = [];\n let stringPath = \"body\";\n let key;\n let listKey;\n if (body.isStatement()) {\n listKey = \"body\";\n key = 0;\n statements.push(body.node);\n } else {\n stringPath += \".body.0\";\n if (this.isFunction()) {\n key = \"argument\";\n statements.push(returnStatement(body.node));\n } else {\n key = \"expression\";\n statements.push(expressionStatement(body.node));\n }\n }\n this.node.body = blockStatement(statements);\n const parentPath = this.get(stringPath);\n setup.call(body, parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key);\n return this.node;\n}\nfunction unwrapFunctionEnvironment() {\n if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) {\n throw this.buildCodeFrameError(\"Can only unwrap the environment of a function.\");\n }\n hoistFunctionEnvironment(this);\n}\nfunction setType(path, type) {\n path.node.type = type;\n}\nfunction arrowFunctionToExpression({\n allowInsertArrow = true,\n allowInsertArrowWithRest = allowInsertArrow,\n noNewArrows = true\n} = {}) {\n if (!this.isArrowFunctionExpression()) {\n throw this.buildCodeFrameError(\"Cannot convert non-arrow function to a function expression.\");\n }\n let self = this;\n if (!noNewArrows) {\n self = self.ensureFunctionName(false) ?? self;\n }\n const {\n thisBinding,\n fnPath: fn\n } = hoistFunctionEnvironment(self, noNewArrows, allowInsertArrow, allowInsertArrowWithRest);\n fn.ensureBlock();\n setType(fn, \"FunctionExpression\");\n if (!noNewArrows) {\n const checkBinding = thisBinding ? null : fn.scope.generateUidIdentifier(\"arrowCheckId\");\n if (checkBinding) {\n fn.parentPath.scope.push({\n id: checkBinding,\n init: objectExpression([])\n });\n }\n fn.get(\"body\").unshiftContainer(\"body\", expressionStatement(callExpression(this.hub.addHelper(\"newArrowCheck\"), [thisExpression(), checkBinding ? identifier(checkBinding.name) : identifier(thisBinding)])));\n return fn.replaceWith(callExpression(memberExpression(fn.node, identifier(\"bind\")), [checkBinding ? identifier(checkBinding.name) : thisExpression()]))[0].get(\"callee.object\");\n }\n return fn;\n}\nconst getSuperCallsVisitor = environmentVisitor({\n CallExpression(child, {\n allSuperCalls\n }) {\n if (!child.get(\"callee\").isSuper()) return;\n allSuperCalls.push(child);\n }\n});\nfunction hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = true, allowInsertArrowWithRest = true) {\n let arrowParent;\n let thisEnvFn = fnPath.findParent(p => {\n if (p.isArrowFunctionExpression()) {\n arrowParent ??= p;\n return false;\n }\n return p.isFunction() || p.isProgram() || p.isClassProperty({\n static: false\n }) || p.isClassPrivateProperty({\n static: false\n });\n });\n const inConstructor = thisEnvFn.isClassMethod({\n kind: \"constructor\"\n });\n if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {\n if (arrowParent) {\n thisEnvFn = arrowParent;\n } else if (allowInsertArrow) {\n thisEnvFn = fnPath.replaceWith(callExpression(arrowFunctionExpression([], toExpression(fnPath.node)), []))[0].get(\"callee\");\n fnPath = thisEnvFn.get(\"body\");\n } else {\n throw fnPath.buildCodeFrameError(\"Unable to transform arrow inside class property\");\n }\n }\n const {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls\n } = getScopeInformation(fnPath);\n if (inConstructor && superCalls.length > 0) {\n if (!allowInsertArrow) {\n throw superCalls[0].buildCodeFrameError(\"When using '@babel/plugin-transform-arrow-functions', \" + \"it's not possible to compile `super()` in an arrow function without compiling classes.\\n\" + \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\");\n }\n if (!allowInsertArrowWithRest) {\n throw superCalls[0].buildCodeFrameError(\"When using '@babel/plugin-transform-parameters', \" + \"it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\\n\" + \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\");\n }\n const allSuperCalls = [];\n thisEnvFn.traverse(getSuperCallsVisitor, {\n allSuperCalls\n });\n const superBinding = getSuperBinding(thisEnvFn);\n allSuperCalls.forEach(superCall => {\n const callee = identifier(superBinding);\n callee.loc = superCall.node.callee.loc;\n superCall.get(\"callee\").replaceWith(callee);\n });\n }\n if (argumentsPaths.length > 0) {\n const argumentsBinding = getBinding(thisEnvFn, \"arguments\", () => {\n const args = () => identifier(\"arguments\");\n if (thisEnvFn.scope.path.isProgram()) {\n return conditionalExpression(binaryExpression(\"===\", unaryExpression(\"typeof\", args()), stringLiteral(\"undefined\")), buildUndefinedNode$1(), args());\n } else {\n return args();\n }\n });\n argumentsPaths.forEach(argumentsChild => {\n const argsRef = identifier(argumentsBinding);\n argsRef.loc = argumentsChild.node.loc;\n argumentsChild.replaceWith(argsRef);\n });\n }\n if (newTargetPaths.length > 0) {\n const newTargetBinding = getBinding(thisEnvFn, \"newtarget\", () => metaProperty(identifier(\"new\"), identifier(\"target\")));\n newTargetPaths.forEach(targetChild => {\n const targetRef = identifier(newTargetBinding);\n targetRef.loc = targetChild.node.loc;\n targetChild.replaceWith(targetRef);\n });\n }\n if (superProps.length > 0) {\n if (!allowInsertArrow) {\n throw superProps[0].buildCodeFrameError(\"When using '@babel/plugin-transform-arrow-functions', \" + \"it's not possible to compile `super.prop` in an arrow function without compiling classes.\\n\" + \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\");\n }\n const flatSuperProps = superProps.reduce((acc, superProp) => acc.concat(standardizeSuperProperty(superProp)), []);\n flatSuperProps.forEach(superProp => {\n const key = superProp.node.computed ? \"\" : superProp.get(\"property\").node.name;\n const superParentPath = superProp.parentPath;\n const isAssignment = superParentPath.isAssignmentExpression({\n left: superProp.node\n });\n const isCall = superParentPath.isCallExpression({\n callee: superProp.node\n });\n const isTaggedTemplate = superParentPath.isTaggedTemplateExpression({\n tag: superProp.node\n });\n const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);\n const args = [];\n if (superProp.node.computed) {\n args.push(superProp.get(\"property\").node);\n }\n if (isAssignment) {\n const value = superParentPath.node.right;\n args.push(value);\n }\n const call = callExpression(identifier(superBinding), args);\n if (isCall) {\n superParentPath.unshiftContainer(\"arguments\", thisExpression());\n superProp.replaceWith(memberExpression(call, identifier(\"call\")));\n thisPaths.push(superParentPath.get(\"arguments.0\"));\n } else if (isAssignment) {\n superParentPath.replaceWith(call);\n } else if (isTaggedTemplate) {\n thisPaths.push(superProp.replaceWith(callExpression(memberExpression(call, identifier(\"bind\"), false), [thisExpression()]))[0].get(\"arguments.0\"));\n } else {\n superProp.replaceWith(call);\n }\n });\n }\n let thisBinding;\n if (thisPaths.length > 0 || !noNewArrows) {\n thisBinding = getThisBinding(thisEnvFn, inConstructor);\n if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) {\n thisPaths.forEach(thisChild => {\n const thisRef = thisChild.isJSX() ? jsxIdentifier(thisBinding) : identifier(thisBinding);\n thisRef.loc = thisChild.node.loc;\n thisChild.replaceWith(thisRef);\n });\n if (!noNewArrows) thisBinding = null;\n }\n }\n return {\n thisBinding: thisBinding,\n fnPath\n };\n}\nfunction isLogicalOp(op) {\n return LOGICAL_OPERATORS.includes(op);\n}\nfunction standardizeSuperProperty(superProp) {\n if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== \"=\") {\n const assignmentPath = superProp.parentPath;\n const op = assignmentPath.node.operator.slice(0, -1);\n const value = assignmentPath.node.right;\n const isLogicalAssignment = isLogicalOp(op);\n if (superProp.node.computed) {\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n const {\n object,\n property\n } = superProp.node;\n assignmentPath.get(\"left\").replaceWith(memberExpression(object, assignmentExpression(\"=\", tmp, property), true));\n assignmentPath.get(\"right\").replaceWith(rightExpression(isLogicalAssignment ? \"=\" : op, memberExpression(object, identifier(tmp.name), true), value));\n } else {\n const object = superProp.node.object;\n const property = superProp.node.property;\n assignmentPath.get(\"left\").replaceWith(memberExpression(object, property));\n assignmentPath.get(\"right\").replaceWith(rightExpression(isLogicalAssignment ? \"=\" : op, memberExpression(object, identifier(property.name)), value));\n }\n if (isLogicalAssignment) {\n assignmentPath.replaceWith(logicalExpression(op, assignmentPath.node.left, assignmentPath.node.right));\n } else {\n assignmentPath.node.operator = \"=\";\n }\n return [assignmentPath.get(\"left\"), assignmentPath.get(\"right\").get(\"left\")];\n } else if (superProp.parentPath.isUpdateExpression()) {\n const updateExpr = superProp.parentPath;\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n const computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier(\"prop\") : null;\n const parts = [assignmentExpression(\"=\", tmp, memberExpression(superProp.node.object, computedKey ? assignmentExpression(\"=\", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), assignmentExpression(\"=\", memberExpression(superProp.node.object, computedKey ? identifier(computedKey.name) : superProp.node.property, superProp.node.computed), binaryExpression(superProp.parentPath.node.operator[0], identifier(tmp.name), numericLiteral(1)))];\n if (!superProp.parentPath.node.prefix) {\n parts.push(identifier(tmp.name));\n }\n const sequenceExpr = updateExpr.replaceWith(sequenceExpression(parts))[0];\n const left = sequenceExpr.get(\"expressions.0.right\");\n const right = sequenceExpr.get(\"expressions.1.left\");\n return [left, right];\n }\n return [superProp];\n function rightExpression(op, left, right) {\n if (op === \"=\") {\n return assignmentExpression(\"=\", left, right);\n } else {\n return binaryExpression(op, left, right);\n }\n }\n}\nfunction hasSuperClass(thisEnvFn) {\n return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass;\n}\nconst assignSuperThisVisitor = environmentVisitor({\n CallExpression(child, {\n supers,\n thisBinding\n }) {\n if (!child.get(\"callee\").isSuper()) return;\n if (supers.has(child.node)) return;\n supers.add(child.node);\n child.replaceWithMultiple([child.node, assignmentExpression(\"=\", identifier(thisBinding), identifier(\"this\"))]);\n }\n});\nfunction getThisBinding(thisEnvFn, inConstructor) {\n return getBinding(thisEnvFn, \"this\", thisBinding => {\n if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression();\n thisEnvFn.traverse(assignSuperThisVisitor, {\n supers: new WeakSet(),\n thisBinding\n });\n });\n}\nfunction getSuperBinding(thisEnvFn) {\n return getBinding(thisEnvFn, \"supercall\", () => {\n const argsBinding = thisEnvFn.scope.generateUidIdentifier(\"args\");\n return arrowFunctionExpression([restElement(argsBinding)], callExpression(_super(), [spreadElement(identifier(argsBinding.name))]));\n });\n}\nfunction getSuperPropBinding(thisEnvFn, isAssignment, propName) {\n const op = isAssignment ? \"set\" : \"get\";\n return getBinding(thisEnvFn, `superprop_${op}:${propName || \"\"}`, () => {\n const argsList = [];\n let fnBody;\n if (propName) {\n fnBody = memberExpression(_super(), identifier(propName));\n } else {\n const method = thisEnvFn.scope.generateUidIdentifier(\"prop\");\n argsList.unshift(method);\n fnBody = memberExpression(_super(), identifier(method.name), true);\n }\n if (isAssignment) {\n const valueIdent = thisEnvFn.scope.generateUidIdentifier(\"value\");\n argsList.push(valueIdent);\n fnBody = assignmentExpression(\"=\", fnBody, identifier(valueIdent.name));\n }\n return arrowFunctionExpression(argsList, fnBody);\n });\n}\nfunction getBinding(thisEnvFn, key, init) {\n const cacheKey = \"binding:\" + key;\n let data = thisEnvFn.getData(cacheKey);\n if (!data) {\n const id = thisEnvFn.scope.generateUidIdentifier(key);\n data = id.name;\n thisEnvFn.setData(cacheKey, data);\n thisEnvFn.scope.push({\n id: id,\n init: init(data)\n });\n }\n return data;\n}\nconst getScopeInformationVisitor = environmentVisitor({\n ThisExpression(child, {\n thisPaths\n }) {\n thisPaths.push(child);\n },\n JSXIdentifier(child, {\n thisPaths\n }) {\n if (child.node.name !== \"this\") return;\n if (!child.parentPath.isJSXMemberExpression({\n object: child.node\n }) && !child.parentPath.isJSXOpeningElement({\n name: child.node\n })) {\n return;\n }\n thisPaths.push(child);\n },\n CallExpression(child, {\n superCalls\n }) {\n if (child.get(\"callee\").isSuper()) superCalls.push(child);\n },\n MemberExpression(child, {\n superProps\n }) {\n if (child.get(\"object\").isSuper()) superProps.push(child);\n },\n Identifier(child, {\n argumentsPaths\n }) {\n if (!child.isReferencedIdentifier({\n name: \"arguments\"\n })) return;\n let curr = child.scope;\n do {\n if (curr.hasOwnBinding(\"arguments\")) {\n curr.rename(\"arguments\");\n return;\n }\n if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {\n break;\n }\n } while (curr = curr.parent);\n argumentsPaths.push(child);\n },\n MetaProperty(child, {\n newTargetPaths\n }) {\n if (!child.get(\"meta\").isIdentifier({\n name: \"new\"\n })) return;\n if (!child.get(\"property\").isIdentifier({\n name: \"target\"\n })) return;\n newTargetPaths.push(child);\n }\n});\nfunction getScopeInformation(fnPath) {\n const thisPaths = [];\n const argumentsPaths = [];\n const newTargetPaths = [];\n const superProps = [];\n const superCalls = [];\n fnPath.traverse(getScopeInformationVisitor, {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls\n });\n return {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls\n };\n}\nfunction splitExportDeclaration() {\n if (!this.isExportDeclaration() || this.isExportAllDeclaration()) {\n throw new Error(\"Only default and named export declarations can be split.\");\n }\n if (this.isExportNamedDeclaration() && this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n const declaration = this.get(\"declaration\");\n if (this.isExportDefaultDeclaration()) {\n const standaloneDeclaration = declaration.isFunctionDeclaration() || declaration.isClassDeclaration();\n const exportExpr = declaration.isFunctionExpression() || declaration.isClassExpression();\n const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope;\n let id = declaration.node.id;\n let needBindingRegistration = false;\n if (!id) {\n needBindingRegistration = true;\n id = scope.generateUidIdentifier(\"default\");\n if (standaloneDeclaration || exportExpr) {\n declaration.node.id = cloneNode(id);\n }\n } else if (exportExpr && scope.hasBinding(id.name)) {\n needBindingRegistration = true;\n id = scope.generateUidIdentifier(id.name);\n }\n const updatedDeclaration = standaloneDeclaration ? declaration.node : variableDeclaration(\"var\", [variableDeclarator(cloneNode(id), declaration.node)]);\n const updatedExportDeclaration = exportNamedDeclaration(null, [exportSpecifier(cloneNode(id), identifier(\"default\"))]);\n this.insertAfter(updatedExportDeclaration);\n this.replaceWith(updatedDeclaration);\n if (needBindingRegistration) {\n scope.registerDeclaration(this);\n }\n return this;\n } else if (this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n const bindingIdentifiers = declaration.getOuterBindingIdentifiers();\n const specifiers = Object.keys(bindingIdentifiers).map(name => {\n return exportSpecifier(identifier(name), identifier(name));\n });\n const aliasDeclar = exportNamedDeclaration(null, specifiers);\n this.insertAfter(aliasDeclar);\n this.replaceWith(declaration.node);\n return this;\n}\nconst getRefersOuterBindingVisitor = () => explode$1({\n \"ReferencedIdentifier|BindingIdentifier\"(path, state) {\n if (path.node.name !== state.name) return;\n state.needsRename = true;\n path.stop();\n },\n Scope(path, state) {\n if (path.scope.hasOwnBinding(state.name)) {\n path.skip();\n }\n }\n});\nfunction ensureFunctionName(supportUnicodeId) {\n if (this.node.id) return this;\n const res = getFunctionName(this.node, this.parent);\n if (res == null) return this;\n let {\n name\n } = res;\n if (!supportUnicodeId && /[\\uD800-\\uDFFF]/.test(name)) {\n return null;\n }\n if (name.startsWith(\"get \") || name.startsWith(\"set \")) {\n return null;\n }\n name = toBindingIdentifierName(name.replace(/[/ ]/g, \"_\"));\n const id = identifier(name);\n inherits(id, res.originalNode);\n const state = {\n needsRename: false,\n name\n };\n const {\n scope\n } = this;\n const binding = scope.getOwnBinding(name);\n if (binding) {\n if (binding.kind === \"param\") {\n state.needsRename = true;\n }\n } else if (scope.parent.hasBinding(name) || scope.hasGlobal(name)) {\n this.traverse(getRefersOuterBindingVisitor(), state);\n }\n if (!state.needsRename) {\n this.node.id = id;\n scope.getProgramParent().referencesSet.add(id.name);\n return this;\n }\n if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {\n scope.rename(id.name);\n this.node.id = id;\n scope.getProgramParent().referencesSet.add(id.name);\n return this;\n }\n if (!isFunction(this.node)) return null;\n const key = scope.generateUidIdentifier(id.name);\n const params = [];\n for (let i = 0, len = getFunctionArity(this.node); i < len; i++) {\n params.push(scope.generateUidIdentifier(\"x\"));\n }\n const call = template.expression.ast`\n (function (${key}) {\n function ${id}(${params}) {\n return ${cloneNode(key)}.apply(this, arguments);\n }\n\n ${cloneNode(id)}.toString = function () {\n return ${cloneNode(key)}.toString();\n }\n\n return ${cloneNode(id)};\n })(${toExpression(this.node)})\n `;\n return this.replaceWith(call)[0].get(\"arguments.0\");\n}\nfunction getFunctionArity(node) {\n const count = node.params.findIndex(param => isAssignmentPattern(param) || isRestElement(param));\n return count === -1 ? node.params.length : count;\n}\n\nconst {\n STATEMENT_OR_BLOCK_KEYS,\n VISITOR_KEYS: VISITOR_KEYS$1,\n isBlockStatement,\n isExpression,\n isIdentifier,\n isLiteral,\n isStringLiteral,\n isType,\n matchesPattern: _matchesPattern,\n toComputedKey\n} = _t;\nfunction matchesPattern(pattern, allowPartial) {\n return _matchesPattern(this.node, pattern, allowPartial);\n}\nfunction isStatic() {\n return this.scope.isStatic(this.node);\n}\nfunction isNodeType(type) {\n return isType(this.type, type);\n}\nfunction canHaveVariableDeclarationOrExpression() {\n return (this.key === \"init\" || this.key === \"left\") && this.parentPath.isFor();\n}\nfunction canSwapBetweenExpressionAndStatement(replacement) {\n if (this.key !== \"body\" || !this.parentPath.isArrowFunctionExpression()) {\n return false;\n }\n if (this.isExpression()) {\n return isBlockStatement(replacement);\n } else if (this.isBlockStatement()) {\n return isExpression(replacement);\n }\n return false;\n}\nfunction isCompletionRecord(allowInsideFunction) {\n let path = this;\n let first = true;\n do {\n const {\n type,\n container\n } = path;\n if (!first && (path.isFunction() || type === \"StaticBlock\")) {\n return !!allowInsideFunction;\n }\n first = false;\n if (Array.isArray(container) && path.key !== container.length - 1) {\n return false;\n }\n } while ((path = path.parentPath) && !path.isProgram() && !path.isDoExpression());\n return true;\n}\nfunction isStatementOrBlock() {\n if (this.parentPath.isLabeledStatement() || isBlockStatement(this.container)) {\n return false;\n } else {\n return STATEMENT_OR_BLOCK_KEYS.includes(this.key);\n }\n}\nfunction referencesImport(moduleSource, importName) {\n if (!this.isReferencedIdentifier()) {\n if (this.isJSXMemberExpression() && this.node.property.name === importName || (this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral(this.node.property, {\n value: importName\n }) : this.node.property.name === importName)) {\n const object = this.get(\"object\");\n return object.isReferencedIdentifier() && object.referencesImport(moduleSource, \"*\");\n }\n return false;\n }\n const binding = this.scope.getBinding(this.node.name);\n if (binding?.kind !== \"module\") return false;\n const path = binding.path;\n const parent = path.parentPath;\n if (!parent.isImportDeclaration()) return false;\n if (parent.node.source.value === moduleSource) {\n if (!importName) return true;\n } else {\n return false;\n }\n if (path.isImportDefaultSpecifier() && importName === \"default\") {\n return true;\n }\n if (path.isImportNamespaceSpecifier() && importName === \"*\") {\n return true;\n }\n if (path.isImportSpecifier() && isIdentifier(path.node.imported, {\n name: importName\n })) {\n return true;\n }\n return false;\n}\nfunction getSource() {\n const node = this.node;\n if (node.end) {\n const code = this.hub.getCode();\n if (code) return code.slice(node.start, node.end);\n }\n return \"\";\n}\nfunction willIMaybeExecuteBefore(target) {\n return this._guessExecutionStatusRelativeTo(target) !== \"after\";\n}\nfunction getOuterFunction(path) {\n return path.isProgram() ? path : (path.parentPath.scope.getFunctionParent() || path.parentPath.scope.getProgramParent()).path;\n}\nfunction isExecutionUncertain(type, key) {\n switch (type) {\n case \"LogicalExpression\":\n return key === \"right\";\n case \"ConditionalExpression\":\n case \"IfStatement\":\n return key === \"consequent\" || key === \"alternate\";\n case \"WhileStatement\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n return key === \"body\";\n case \"ForStatement\":\n return key === \"body\" || key === \"update\";\n case \"SwitchStatement\":\n return key === \"cases\";\n case \"TryStatement\":\n return key === \"handler\";\n case \"AssignmentPattern\":\n return key === \"right\";\n case \"OptionalMemberExpression\":\n return key === \"property\";\n case \"OptionalCallExpression\":\n return key === \"arguments\";\n default:\n return false;\n }\n}\nfunction isExecutionUncertainInList(paths, maxIndex) {\n for (let i = 0; i < maxIndex; i++) {\n const path = paths[i];\n if (isExecutionUncertain(path.parent.type, path.parentKey)) {\n return true;\n }\n }\n return false;\n}\nconst SYMBOL_CHECKING = Symbol();\nfunction _guessExecutionStatusRelativeTo(target) {\n return _guessExecutionStatusRelativeToCached(this, target, new Map());\n}\nfunction _guessExecutionStatusRelativeToCached(base, target, cache) {\n const funcParent = {\n this: getOuterFunction(base),\n target: getOuterFunction(target)\n };\n if (funcParent.target.node !== funcParent.this.node) {\n return _guessExecutionStatusRelativeToDifferentFunctionsCached(base, funcParent.target, cache);\n }\n const paths = {\n target: target.getAncestry(),\n this: base.getAncestry()\n };\n if (paths.target.includes(base)) return \"after\";\n if (paths.this.includes(target)) return \"before\";\n let commonPath;\n const commonIndex = {\n target: 0,\n this: 0\n };\n while (!commonPath && commonIndex.this < paths.this.length) {\n const path = paths.this[commonIndex.this];\n commonIndex.target = paths.target.indexOf(path);\n if (commonIndex.target >= 0) {\n commonPath = path;\n } else {\n commonIndex.this++;\n }\n }\n if (!commonPath) {\n throw new Error(\"Internal Babel error - The two compared nodes\" + \" don't appear to belong to the same program.\");\n }\n if (isExecutionUncertainInList(paths.this, commonIndex.this - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) {\n return \"unknown\";\n }\n const divergence = {\n this: paths.this[commonIndex.this - 1],\n target: paths.target[commonIndex.target - 1]\n };\n if (divergence.target.listKey && divergence.this.listKey && divergence.target.container === divergence.this.container) {\n return divergence.target.key > divergence.this.key ? \"before\" : \"after\";\n }\n const keys = VISITOR_KEYS$1[commonPath.type];\n const keyPosition = {\n this: keys.indexOf(divergence.this.parentKey),\n target: keys.indexOf(divergence.target.parentKey)\n };\n return keyPosition.target > keyPosition.this ? \"before\" : \"after\";\n}\nfunction _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache) {\n if (!target.isFunctionDeclaration()) {\n if (_guessExecutionStatusRelativeToCached(base, target, cache) === \"before\") {\n return \"before\";\n }\n return \"unknown\";\n } else if (target.parentPath.isExportDeclaration()) {\n return \"unknown\";\n }\n const binding = target.scope.getBinding(target.node.id.name);\n if (!binding.references) return \"before\";\n const referencePaths = binding.referencePaths;\n let allStatus;\n for (const path of referencePaths) {\n const childOfFunction = !!path.find(path => path.node === target.node);\n if (childOfFunction) continue;\n if (path.key !== \"callee\" || !path.parentPath.isCallExpression()) {\n return \"unknown\";\n }\n const status = _guessExecutionStatusRelativeToCached(base, path, cache);\n if (allStatus && allStatus !== status) {\n return \"unknown\";\n } else {\n allStatus = status;\n }\n }\n return allStatus;\n}\nfunction _guessExecutionStatusRelativeToDifferentFunctionsCached(base, target, cache) {\n let nodeMap = cache.get(base.node);\n let cached;\n if (!nodeMap) {\n cache.set(base.node, nodeMap = new Map());\n } else if (cached = nodeMap.get(target.node)) {\n if (cached === SYMBOL_CHECKING) {\n return \"unknown\";\n }\n return cached;\n }\n nodeMap.set(target.node, SYMBOL_CHECKING);\n const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache);\n nodeMap.set(target.node, result);\n return result;\n}\nfunction resolve(dangerous, resolved) {\n return _resolve.call(this, dangerous, resolved) || this;\n}\nfunction _resolve(dangerous, resolved) {\n if (resolved?.includes(this)) return;\n resolved = resolved || [];\n resolved.push(this);\n if (this.isVariableDeclarator()) {\n if (this.get(\"id\").isIdentifier()) {\n return this.get(\"init\").resolve(dangerous, resolved);\n }\n } else if (this.isReferencedIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return;\n if (!binding.constant) return;\n if (binding.kind === \"module\") return;\n if (binding.path !== this) {\n const ret = binding.path.resolve(dangerous, resolved);\n if (this.find(parent => parent.node === ret.node)) return;\n return ret;\n }\n } else if (this.isTypeCastExpression()) {\n return this.get(\"expression\").resolve(dangerous, resolved);\n } else if (dangerous && this.isMemberExpression()) {\n const targetKey = toComputedKey(this.node);\n if (!isLiteral(targetKey)) return;\n const targetName = targetKey.value;\n const target = this.get(\"object\").resolve(dangerous, resolved);\n if (target.isObjectExpression()) {\n const props = target.get(\"properties\");\n for (const prop of props) {\n if (!prop.isProperty()) continue;\n const key = prop.get(\"key\");\n let match = prop.isnt(\"computed\") && key.isIdentifier({\n name: targetName\n });\n match = match || key.isLiteral({\n value: targetName\n });\n if (match) return prop.get(\"value\").resolve(dangerous, resolved);\n }\n } else if (target.isArrayExpression() && !isNaN(+targetName)) {\n const elems = target.get(\"elements\");\n const elem = elems[targetName];\n if (elem) return elem.resolve(dangerous, resolved);\n }\n }\n}\nfunction isConstantExpression() {\n if (this.isIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return false;\n return binding.constant;\n }\n if (this.isLiteral()) {\n if (this.isRegExpLiteral()) {\n return false;\n }\n if (this.isTemplateLiteral()) {\n return this.get(\"expressions\").every(expression => expression.isConstantExpression());\n }\n return true;\n }\n if (this.isUnaryExpression()) {\n if (this.node.operator !== \"void\") {\n return false;\n }\n return this.get(\"argument\").isConstantExpression();\n }\n if (this.isBinaryExpression()) {\n const {\n operator\n } = this.node;\n return operator !== \"in\" && operator !== \"instanceof\" && this.get(\"left\").isConstantExpression() && this.get(\"right\").isConstantExpression();\n }\n if (this.isMemberExpression()) {\n return !this.node.computed && this.get(\"object\").isIdentifier({\n name: \"Symbol\"\n }) && !this.scope.hasBinding(\"Symbol\", {\n noGlobals: true\n });\n }\n if (this.isCallExpression()) {\n return this.node.arguments.length === 1 && this.get(\"callee\").matchesPattern(\"Symbol.for\") && !this.scope.hasBinding(\"Symbol\", {\n noGlobals: true\n }) && this.get(\"arguments\")[0].isStringLiteral();\n }\n return false;\n}\nfunction isInStrictMode() {\n const start = this.isProgram() ? this : this.parentPath;\n const strictParent = start.find(path => {\n if (path.isProgram({\n sourceType: \"module\"\n })) return true;\n if (path.isClass()) return true;\n if (path.isArrowFunctionExpression() && !path.get(\"body\").isBlockStatement()) {\n return false;\n }\n let body;\n if (path.isFunction()) {\n body = path.node.body;\n } else if (path.isProgram()) {\n body = path.node;\n } else {\n return false;\n }\n for (const directive of body.directives) {\n if (directive.value.value === \"use strict\") {\n return true;\n }\n }\n return false;\n });\n return !!strictParent;\n}\n\nconst {\n getAssignmentIdentifiers: _getAssignmentIdentifiers,\n getBindingIdentifiers: _getBindingIdentifiers,\n getOuterBindingIdentifiers: _getOuterBindingIdentifiers,\n buildUndefinedNode\n} = _t;\nconst NORMAL_COMPLETION = 0;\nconst BREAK_COMPLETION = 1;\nfunction NormalCompletion(path) {\n return {\n type: NORMAL_COMPLETION,\n path\n };\n}\nfunction BreakCompletion(path) {\n return {\n type: BREAK_COMPLETION,\n path\n };\n}\nfunction getOpposite() {\n if (this.key === \"left\") {\n return this.getSibling(\"right\");\n } else if (this.key === \"right\") {\n return this.getSibling(\"left\");\n }\n return null;\n}\nfunction addCompletionRecords(path, records, context) {\n if (path) {\n records.push(..._getCompletionRecords(path, context));\n }\n return records;\n}\nfunction completionRecordForSwitch(cases, records, context) {\n let lastNormalCompletions = [];\n for (let i = 0; i < cases.length; i++) {\n const casePath = cases[i];\n const caseCompletions = _getCompletionRecords(casePath, context);\n const normalCompletions = [];\n const breakCompletions = [];\n for (const c of caseCompletions) {\n if (c.type === NORMAL_COMPLETION) {\n normalCompletions.push(c);\n }\n if (c.type === BREAK_COMPLETION) {\n breakCompletions.push(c);\n }\n }\n if (normalCompletions.length) {\n lastNormalCompletions = normalCompletions;\n }\n records.push(...breakCompletions);\n }\n records.push(...lastNormalCompletions);\n return records;\n}\nfunction normalCompletionToBreak(completions) {\n completions.forEach(c => {\n c.type = BREAK_COMPLETION;\n });\n}\nfunction replaceBreakStatementInBreakCompletion(completions, reachable) {\n completions.forEach(c => {\n if (c.path.isBreakStatement({\n label: null\n })) {\n if (reachable) {\n c.path.replaceWith(buildUndefinedNode());\n } else {\n c.path.remove();\n }\n }\n });\n}\nfunction getStatementListCompletion(paths, context) {\n const completions = [];\n if (context.canHaveBreak) {\n let lastNormalCompletions = [];\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n const newContext = {\n ...context,\n inCaseClause: false\n };\n if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) {\n newContext.shouldPopulateBreak = true;\n } else {\n newContext.shouldPopulateBreak = false;\n }\n const statementCompletions = _getCompletionRecords(path, newContext);\n if (statementCompletions.length > 0 && statementCompletions.every(c => c.type === BREAK_COMPLETION)) {\n if (lastNormalCompletions.length > 0 && statementCompletions.every(c => c.path.isBreakStatement({\n label: null\n }))) {\n normalCompletionToBreak(lastNormalCompletions);\n completions.push(...lastNormalCompletions);\n if (lastNormalCompletions.some(c => c.path.isDeclaration())) {\n completions.push(...statementCompletions);\n if (!context.shouldPreserveBreak) {\n replaceBreakStatementInBreakCompletion(statementCompletions, true);\n }\n }\n if (!context.shouldPreserveBreak) {\n replaceBreakStatementInBreakCompletion(statementCompletions, false);\n }\n } else {\n completions.push(...statementCompletions);\n if (!context.shouldPopulateBreak && !context.shouldPreserveBreak) {\n replaceBreakStatementInBreakCompletion(statementCompletions, true);\n }\n }\n break;\n }\n if (i === paths.length - 1) {\n completions.push(...statementCompletions);\n } else {\n lastNormalCompletions = [];\n for (let i = 0; i < statementCompletions.length; i++) {\n const c = statementCompletions[i];\n if (c.type === BREAK_COMPLETION) {\n completions.push(c);\n }\n if (c.type === NORMAL_COMPLETION) {\n lastNormalCompletions.push(c);\n }\n }\n }\n }\n } else if (paths.length) {\n for (let i = paths.length - 1; i >= 0; i--) {\n const pathCompletions = _getCompletionRecords(paths[i], context);\n if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration() && !pathCompletions[0].path.isEmptyStatement()) {\n completions.push(...pathCompletions);\n break;\n }\n }\n }\n return completions;\n}\nfunction _getCompletionRecords(path, context) {\n let records = [];\n if (path.isIfStatement()) {\n records = addCompletionRecords(path.get(\"consequent\"), records, context);\n records = addCompletionRecords(path.get(\"alternate\"), records, context);\n } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isProgram() || path.isBlockStatement()) {\n return getStatementListCompletion(path.get(\"body\"), context);\n } else if (path.isFunction()) {\n return _getCompletionRecords(path.get(\"body\"), context);\n } else if (path.isTryStatement()) {\n records = addCompletionRecords(path.get(\"block\"), records, context);\n records = addCompletionRecords(path.get(\"handler\"), records, context);\n } else if (path.isCatchClause()) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isSwitchStatement()) {\n return completionRecordForSwitch(path.get(\"cases\"), records, context);\n } else if (path.isSwitchCase()) {\n return getStatementListCompletion(path.get(\"consequent\"), {\n canHaveBreak: true,\n shouldPopulateBreak: false,\n inCaseClause: true,\n shouldPreserveBreak: context.shouldPreserveBreak\n });\n } else if (path.isBreakStatement()) {\n records.push(BreakCompletion(path));\n } else {\n records.push(NormalCompletion(path));\n }\n return records;\n}\nfunction getCompletionRecords(shouldPreserveBreak = false) {\n const records = _getCompletionRecords(this, {\n canHaveBreak: false,\n shouldPopulateBreak: false,\n inCaseClause: false,\n shouldPreserveBreak\n });\n return records.map(r => r.path);\n}\nfunction getSibling(key) {\n return NodePath_Final.get({\n parentPath: this.parentPath,\n parent: this.parent,\n container: this.container,\n listKey: this.listKey,\n key: key\n }).setContext(this.context);\n}\nfunction getPrevSibling() {\n return this.getSibling(this.key - 1);\n}\nfunction getNextSibling() {\n return this.getSibling(this.key + 1);\n}\nfunction getAllNextSiblings() {\n let _key = this.key;\n let sibling = this.getSibling(++_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(++_key);\n }\n return siblings;\n}\nfunction getAllPrevSiblings() {\n let _key = this.key;\n let sibling = this.getSibling(--_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(--_key);\n }\n return siblings;\n}\nfunction get(key, context = true) {\n if (context === true) context = this.context;\n const parts = key.split(\".\");\n if (parts.length === 1) {\n return _getKey.call(this, key, context);\n } else {\n return _getPattern.call(this, parts, context);\n }\n}\nfunction _getKey(key, context) {\n const node = this.node;\n const container = node[key];\n if (Array.isArray(container)) {\n return container.map((_, i) => {\n return NodePath_Final.get({\n listKey: key,\n parentPath: this,\n parent: node,\n container: container,\n key: i\n }).setContext(context);\n });\n } else {\n return NodePath_Final.get({\n parentPath: this,\n parent: node,\n container: node,\n key: key\n }).setContext(context);\n }\n}\nfunction _getPattern(parts, context) {\n let path = this;\n for (const part of parts) {\n if (part === \".\") {\n path = path.parentPath;\n } else {\n if (Array.isArray(path)) {\n path = path[part];\n } else {\n path = path.get(part, context);\n }\n }\n }\n return path;\n}\nfunction getAssignmentIdentifiers() {\n return _getAssignmentIdentifiers(this.node);\n}\nfunction getBindingIdentifiers(duplicates) {\n return _getBindingIdentifiers(this.node, duplicates);\n}\nfunction getOuterBindingIdentifiers(duplicates) {\n return _getOuterBindingIdentifiers(this.node, duplicates);\n}\nfunction getBindingIdentifierPaths(duplicates = false, outerOnly = false) {\n const path = this;\n const search = [path];\n const ids = Object.create(null);\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n if (!id.node) continue;\n const keys = _getBindingIdentifiers.keys[id.node.type];\n if (id.isIdentifier()) {\n if (duplicates) {\n const _ids = ids[id.node.name] = ids[id.node.name] || [];\n _ids.push(id);\n } else {\n ids[id.node.name] = id;\n }\n continue;\n }\n if (id.isExportDeclaration()) {\n const declaration = id.get(\"declaration\");\n if (declaration.isDeclaration()) {\n search.push(declaration);\n }\n continue;\n }\n if (outerOnly) {\n if (id.isFunctionDeclaration()) {\n search.push(id.get(\"id\"));\n continue;\n }\n if (id.isFunctionExpression()) {\n continue;\n }\n }\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const child = id.get(key);\n if (Array.isArray(child)) {\n search.push(...child);\n } else if (child.node) {\n search.push(child);\n }\n }\n }\n }\n return ids;\n}\nfunction getOuterBindingIdentifierPaths(duplicates = false) {\n return this.getBindingIdentifierPaths(duplicates, true);\n}\n\nconst {\n addComment: _addComment,\n addComments: _addComments\n} = _t;\nfunction shareCommentsWithSiblings() {\n if (typeof this.key === \"string\") return;\n const node = this.node;\n if (!node) return;\n const trailing = node.trailingComments;\n const leading = node.leadingComments;\n if (!trailing && !leading) return;\n const prev = this.getSibling(this.key - 1);\n const next = this.getSibling(this.key + 1);\n const hasPrev = !!prev.node;\n const hasNext = !!next.node;\n if (hasPrev) {\n if (leading) {\n prev.addComments(\"trailing\", removeIfExisting(leading, prev.node.trailingComments));\n }\n if (trailing && !hasNext) prev.addComments(\"trailing\", trailing);\n }\n if (hasNext) {\n if (trailing) {\n next.addComments(\"leading\", removeIfExisting(trailing, next.node.leadingComments));\n }\n if (leading && !hasPrev) next.addComments(\"leading\", leading);\n }\n}\nfunction removeIfExisting(list, toRemove) {\n if (!toRemove?.length) return list;\n const set = new Set(toRemove);\n return list.filter(el => {\n return !set.has(el);\n });\n}\nfunction addComment(type, content, line) {\n _addComment(this.node, type, content, line);\n}\nfunction addComments(type, comments) {\n _addComments(this.node, type, comments);\n}\n\nconst {\n validate\n} = _t;\nconst debug = createDebug(\"babel\");\nconst REMOVED = 1 << 0;\nconst SHOULD_STOP = 1 << 1;\nconst SHOULD_SKIP = 1 << 2;\nconst NodePath_Final = class NodePath {\n constructor(hub, parent) {\n this.parent = parent;\n this.hub = hub;\n this.data = null;\n this.context = null;\n this.scope = null;\n }\n contexts = [];\n state = null;\n _traverseFlags = 0;\n get removed() {\n return (this._traverseFlags & 1) > 0;\n }\n set removed(v) {\n if (v) this._traverseFlags |= 1;else this._traverseFlags &= -2;\n }\n get shouldStop() {\n return (this._traverseFlags & 2) > 0;\n }\n set shouldStop(v) {\n if (v) this._traverseFlags |= 2;else this._traverseFlags &= -3;\n }\n get shouldSkip() {\n return (this._traverseFlags & 4) > 0;\n }\n set shouldSkip(v) {\n if (v) this._traverseFlags |= 4;else this._traverseFlags &= -5;\n }\n skipKeys = null;\n parentPath = null;\n container = null;\n listKey = null;\n key = null;\n node = null;\n type = null;\n _store = null;\n static get({\n hub,\n parentPath,\n parent,\n container,\n listKey,\n key\n }) {\n if (!hub && parentPath) {\n hub = parentPath.hub;\n }\n if (!parent) {\n throw new Error(\"To get a node path the parent needs to exist\");\n }\n const targetNode = container[key];\n const paths = getOrCreateCachedPaths(parent, parentPath);\n let path = paths.get(targetNode);\n if (!path) {\n path = new NodePath(hub, parent);\n if (targetNode) paths.set(targetNode, path);\n }\n setup.call(path, parentPath, container, listKey, key);\n return path;\n }\n getScope(scope) {\n return this.isScope() ? new Scope(this) : scope;\n }\n setData(key, val) {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n return this.data[key] = val;\n }\n getData(key, def) {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n let val = this.data[key];\n if (val === undefined && def !== undefined) val = this.data[key] = def;\n return val;\n }\n hasNode() {\n return this.node != null;\n }\n buildCodeFrameError(msg, Error = SyntaxError) {\n return this.hub.buildError(this.node, msg, Error);\n }\n traverse(visitor, state) {\n traverse(this.node, visitor, this.scope, state, this);\n }\n set(key, node) {\n validate(this.node, key, node);\n this.node[key] = node;\n }\n getPathLocation() {\n const parts = [];\n let path = this;\n do {\n let key = path.key;\n if (path.inList) key = `${path.listKey}[${key}]`;\n parts.unshift(key);\n } while (path = path.parentPath);\n return parts.join(\".\");\n }\n debug(message) {\n if (!debug.enabled) return;\n debug(`${this.getPathLocation()} ${this.type}: ${message}`);\n }\n toString() {\n return generator(this.node).code;\n }\n get inList() {\n return !!this.listKey;\n }\n set inList(inList) {\n if (!inList) {\n this.listKey = null;\n }\n }\n get parentKey() {\n return this.listKey || this.key;\n }\n};\nconst methods = {\n findParent: findParent,\n find: find,\n getFunctionParent: getFunctionParent,\n getStatementParent: getStatementParent,\n getEarliestCommonAncestorFrom: getEarliestCommonAncestorFrom,\n getDeepestCommonAncestorFrom: getDeepestCommonAncestorFrom,\n getAncestry: getAncestry,\n isAncestor: isAncestor,\n isDescendant: isDescendant,\n inType: inType,\n getTypeAnnotation: getTypeAnnotation,\n isBaseType: isBaseType,\n couldBeBaseType: couldBeBaseType,\n baseTypeStrictlyMatches: baseTypeStrictlyMatches,\n isGenericType: isGenericType,\n replaceWithMultiple: replaceWithMultiple,\n replaceWithSourceString: replaceWithSourceString,\n replaceWith: replaceWith,\n replaceExpressionWithStatements: replaceExpressionWithStatements,\n replaceInline: replaceInline,\n evaluateTruthy: evaluateTruthy,\n evaluate: evaluate,\n ensureBlock: ensureBlock,\n unwrapFunctionEnvironment: unwrapFunctionEnvironment,\n arrowFunctionToExpression: arrowFunctionToExpression,\n splitExportDeclaration: splitExportDeclaration,\n ensureFunctionName: ensureFunctionName,\n matchesPattern: matchesPattern,\n isStatic: isStatic,\n isNodeType: isNodeType,\n canHaveVariableDeclarationOrExpression: canHaveVariableDeclarationOrExpression,\n canSwapBetweenExpressionAndStatement: canSwapBetweenExpressionAndStatement,\n isCompletionRecord: isCompletionRecord,\n isStatementOrBlock: isStatementOrBlock,\n referencesImport: referencesImport,\n getSource: getSource,\n willIMaybeExecuteBefore: willIMaybeExecuteBefore,\n _guessExecutionStatusRelativeTo: _guessExecutionStatusRelativeTo,\n resolve: resolve,\n isConstantExpression: isConstantExpression,\n isInStrictMode: isInStrictMode,\n isDenylisted: isDenylisted,\n skip: skip,\n skipKey: skipKey,\n stop: stop,\n setContext: setContext,\n requeue: requeue,\n requeueComputedKeyAndDecorators: requeueComputedKeyAndDecorators,\n remove: remove,\n insertBefore: insertBefore,\n insertAfter: insertAfter,\n unshiftContainer: unshiftContainer,\n pushContainer: pushContainer,\n getOpposite: getOpposite,\n getCompletionRecords: getCompletionRecords,\n getSibling: getSibling,\n getPrevSibling: getPrevSibling,\n getNextSibling: getNextSibling,\n getAllNextSiblings: getAllNextSiblings,\n getAllPrevSiblings: getAllPrevSiblings,\n get: get,\n getAssignmentIdentifiers: getAssignmentIdentifiers,\n getBindingIdentifiers: getBindingIdentifiers,\n getOuterBindingIdentifiers: getOuterBindingIdentifiers,\n getBindingIdentifierPaths: getBindingIdentifierPaths,\n getOuterBindingIdentifierPaths: getOuterBindingIdentifierPaths,\n shareCommentsWithSiblings: shareCommentsWithSiblings,\n addComment: addComment,\n addComments: addComments\n};\nObject.assign(NodePath_Final.prototype, methods);\nfor (const type of _t.TYPES) {\n const typeKey = `is${type}`;\n const fn = _t[typeKey];\n NodePath_Final.prototype[typeKey] = function (opts) {\n return fn(this.node, opts);\n };\n NodePath_Final.prototype[`assert${type}`] = function (opts) {\n if (!fn(this.node, opts)) {\n throw new TypeError(`Expected node path of type ${type}`);\n }\n };\n}\nObject.assign(NodePath_Final.prototype, NodePath_virtual_types_validator);\nfor (const type of Object.keys(virtualTypes)) {\n if (type.startsWith(\"_\")) continue;\n if (!_t.TYPES.includes(type)) _t.TYPES.push(type);\n}\n\nfunction _call(fns) {\n if (!fns) return false;\n for (const fn of fns) {\n if (!fn) continue;\n const node = this.node;\n if (!node) return true;\n const ret = fn.call(this.state, this, this.state);\n if (ret && typeof ret === \"object\" && typeof ret.then === \"function\") {\n throw new Error(`You appear to be using a plugin with an async traversal visitor, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);\n }\n if (ret) {\n throw new Error(`Unexpected return value from visitor method ${fn}`);\n }\n if (this.node !== node) return true;\n if (this._traverseFlags > 0) return true;\n }\n return false;\n}\nfunction isDenylisted() {\n return !!this.opts.denylist?.includes(this.node.type);\n}\nfunction skip() {\n this.shouldSkip = true;\n}\nfunction skipKey(key) {\n if (this.skipKeys == null) {\n this.skipKeys = {};\n }\n this.skipKeys[key] = true;\n}\nfunction stop() {\n this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;\n}\nfunction _forceSetScope() {\n let path = this.parentPath;\n if ((this.key === \"key\" || this.listKey === \"decorators\") && path.isMethod() || this.key === \"discriminant\" && path.isSwitchStatement()) {\n path = path.parentPath;\n }\n let target;\n while (path && !target) {\n target = path.scope;\n path = path.parentPath;\n }\n this.scope = this.getScope(target);\n this.scope?.init();\n}\nfunction setScope() {\n if (this.opts?.noScope) return;\n let path = this.parentPath;\n if ((this.key === \"key\" || this.listKey === \"decorators\") && path.isMethod() || this.key === \"discriminant\" && path.isSwitchStatement()) {\n path = path.parentPath;\n }\n let target;\n while (path && !target) {\n if (path.opts?.noScope) return;\n target = path.scope;\n path = path.parentPath;\n }\n this.scope = this.getScope(target);\n this.scope?.init();\n}\nfunction setContext(context) {\n if (this.skipKeys != null) {\n this.skipKeys = {};\n }\n this._traverseFlags = 0;\n if (context) {\n this.context = context;\n this.state = context.state;\n this.opts = context.opts;\n }\n setScope.call(this);\n return this;\n}\nfunction resync() {\n if (this.removed) return;\n _resyncParent.call(this);\n _resyncList.call(this);\n _resyncKey.call(this);\n}\nfunction _resyncParent() {\n if (this.parentPath) {\n this.parent = this.parentPath.node;\n }\n}\nfunction _resyncKey() {\n if (!this.container) return;\n if (this.node === this.container[this.key]) {\n return;\n }\n if (Array.isArray(this.container)) {\n for (let i = 0; i < this.container.length; i++) {\n if (this.container[i] === this.node) {\n setKey.call(this, i);\n return;\n }\n }\n } else {\n for (const key of Object.keys(this.container)) {\n if (this.container[key] === this.node) {\n setKey.call(this, key);\n return;\n }\n }\n }\n this.key = null;\n}\nfunction _resyncList() {\n if (!this.parent || !this.inList) return;\n const newContainer = this.parent[this.listKey];\n if (this.container === newContainer) return;\n this.container = newContainer || null;\n}\nfunction popContext() {\n this.contexts.pop();\n if (this.contexts.length > 0) {\n this.setContext(this.contexts[this.contexts.length - 1]);\n } else {\n this.setContext(undefined);\n }\n}\nfunction pushContext(context) {\n this.contexts.push(context);\n this.setContext(context);\n}\nfunction setup(parentPath, container, listKey, key) {\n this.listKey = listKey;\n this.container = container;\n this.parentPath = parentPath || this.parentPath;\n setKey.call(this, key);\n}\nfunction setKey(key) {\n this.key = key;\n this.node = this.container[this.key];\n this.type = this.node?.type ?? null;\n}\nfunction requeue(pathToQueue = this) {\n if (pathToQueue.removed) return;\n pathToQueue.shouldSkip = false;\n const contexts = this.contexts;\n for (const context of contexts) {\n context.maybeQueue(pathToQueue);\n }\n}\nfunction requeueComputedKeyAndDecorators() {\n const {\n context,\n node\n } = this;\n if (!_t.isPrivate(node) && node.computed) {\n context.maybeQueue(this.get(\"key\"));\n }\n if (node.decorators) {\n for (const decorator of this.get(\"decorators\")) {\n context.maybeQueue(decorator);\n }\n }\n}\nfunction _getQueueContexts() {\n let path = this;\n let contexts = this.contexts;\n while (!contexts.length) {\n path = path.parentPath;\n if (!path) break;\n contexts = path.contexts;\n }\n return contexts;\n}\n\nclass Hub {\n getCode() {}\n getScope() {}\n addHelper() {\n throw new Error(\"Helpers are not supported by the default hub.\");\n }\n buildError(node, msg, Error = TypeError) {\n return new Error(msg);\n }\n}\n\nconst {\n VISITOR_KEYS,\n removeProperties,\n traverseFast\n} = _t;\nfunction traverse(parent, opts = {}, scope, state, parentPath, visitSelf) {\n if (!parent) return;\n if (!opts.noScope && !scope) {\n if (parent.type !== \"Program\" && parent.type !== \"File\") {\n throw new Error(\"You must pass a scope and parentPath unless traversing a Program/File. \" + `Instead of that you tried to traverse a ${parent.type} node without ` + \"passing scope and parentPath.\");\n }\n }\n if (!parentPath && visitSelf) {\n throw new Error(\"visitSelf can only be used when providing a NodePath.\");\n }\n if (!VISITOR_KEYS[parent.type]) {\n return;\n }\n explode$1(opts);\n traverseNode(parent, opts, scope, state, parentPath, undefined, visitSelf);\n}\ntraverse.visitors = visitors;\ntraverse.verify = verify$1;\ntraverse.explode = explode$1;\ntraverse.cheap = function (node, enter) {\n traverseFast(node, enter);\n return;\n};\ntraverse.node = function (node, opts, scope, state, path, skipKeys) {\n traverseNode(node, opts, scope, state, path, skipKeys);\n};\ntraverse.clearNode = function (node, opts) {\n removeProperties(node, opts);\n};\ntraverse.removeProperties = function (tree, opts) {\n traverseFast(tree, traverse.clearNode, opts);\n return tree;\n};\ntraverse.hasType = function (tree, type, denylistTypes) {\n if (denylistTypes?.includes(tree.type)) return false;\n if (tree.type === type) return true;\n return traverseFast(tree, function (node) {\n if (denylistTypes?.includes(node.type)) {\n return traverseFast.skip;\n }\n if (node.type === type) {\n return traverseFast.stop;\n }\n });\n};\ntraverse.cache = cache;\n\nexport { Hub, NodePath_Final as NodePath, Scope, traverse as default, visitors };\n//# sourceMappingURL=index.js.map\n","/**\n * @elurjs/ionic / vite-plugin.ts\n *\n * Vite plugin `elurIonic()` that scans `html\\`\\`` template literals for\n * `<ion-*>` tags and static `name=\"icon-name\"` attributes, then generates\n * a virtual module that imports and registers only the used components\n * and icons.\n *\n * Usage:\n * ```ts\n * // vite.config.ts\n * import { defineConfig } from \"vite\";\n * import elurJs from \"@elurjs/vite-plugin-elur\";\n * import { elurIonic } from \"@elurjs/ionic/vite-plugin\";\n *\n * export default defineConfig({\n * plugins: [elurJs(), elurIonic()],\n * });\n * ```\n *\n * The plugin generates a virtual module at `virtual:elur-ionic/registration`\n * that imports only the detected components and icons, and calls\n * `initializeElurIonic()` + `registerIonicComponents()` + `registerIonicons()`.\n *\n * For dynamic tags or icons (e.g. `<ion-${type}>` or `name=${iconName}`),\n * the plugin emits a diagnostic warning. Users can suppress warnings and\n * declare allowlists via the `allow` option.\n */\n\nimport type { Plugin } from \"vite\";\nimport { parse } from \"@babel/parser\";\nimport _traverse from \"@babel/traverse\";\nimport * as t from \"@babel/types\";\nimport {\n isSupportedTag,\n tagToSubpath,\n tagToDefinerName,\n} from \"./components/manifest.js\";\n\nconst traverse = ((_traverse as unknown as { default?: typeof _traverse }).default ?? _traverse) as typeof _traverse;\n\nconst VIRTUAL_MODULE_ID = \"virtual:elur-ionic/registration\";\nconst RESOLVED_VIRTUAL_ID = \"\\0virtual:elur-ionic/registration\";\n\nexport interface ElurIonicPluginOptions {\n /**\n * Auto-register detected components. Set to `false` to only scan and\n * emit diagnostics without generating registration code.\n * @default true\n */\n autoRegister?: boolean;\n\n /**\n * Tags to allow even if not detected statically (e.g. dynamically\n * rendered components). Suppresses diagnostics for these tags.\n */\n allowTags?: string[];\n\n /**\n * Icon names to allow even if not detected statically.\n */\n allowIcons?: string[];\n\n /**\n * Icon import mode: \"inline\" (default) or \"assets\".\n */\n icons?: \"inline\" | \"assets\";\n\n /**\n * Custom icon asset path (only used when icons === \"assets\").\n */\n iconAssetPath?: string;\n\n /**\n * Emit warnings for undetected/dynamic tags. Set to `false` to silence.\n * @default true\n */\n diagnostics?: boolean;\n}\n\ninterface ScanResult {\n tags: Set<string>;\n icons: Set<string>;\n dynamicTags: string[];\n dynamicIcons: string[];\n}\n\nfunction scanCode(code: string, id: string): ScanResult {\n const result: ScanResult = {\n tags: new Set(),\n icons: new Set(),\n dynamicTags: [],\n dynamicIcons: [],\n };\n\n let ast: t.File;\n try {\n ast = parse(code, {\n sourceType: \"module\",\n plugins: [\"typescript\", \"jsx\", \"importMeta\"],\n });\n } catch {\n return result; // not parseable, skip\n }\n\n traverse(ast, {\n // Match html`...` tagged template literals\n TaggedTemplateExpression(path: any) {\n const { tag, quasi } = path.node;\n if (!t.isIdentifier(tag) || tag.name !== \"html\") return;\n\n // Extract raw text from template quasis\n const rawText = quasi.quasis.map((q: any) => q.value.raw).join(\"__elur_hole__\");\n\n // Scan for <ion-*> tags\n const tagRegex = /<ion-([a-z][a-z0-9-]*)/g;\n let match: RegExpExecArray | null;\n while ((match = tagRegex.exec(rawText)) !== null) {\n const fullTag = `ion-${match[1]}`;\n if (isSupportedTag(fullTag)) {\n result.tags.add(fullTag);\n }\n }\n\n // Scan for name=\"icon-name\" or name='icon-name' inside <ion-icon>\n // Only static string attributes are detected.\n const iconTagRegex = /<ion-icon[^>]*\\sname=[\"']([a-z][a-z0-9-]+)[\"']/g;\n while ((match = iconTagRegex.exec(rawText)) !== null) {\n result.icons.add(match[1]);\n }\n\n // Detect dynamic tag patterns: <ion-${var}> or name=${var}\n // The __elur_hole__ placeholder marks where ${} expressions were.\n const dynamicTagRegex = /<ion-__elur_hole__/g;\n if (dynamicTagRegex.test(rawText)) {\n result.dynamicTags.push(id);\n }\n\n // Dynamic icon name: name=__elur_hole__ (no quotes around the hole)\n const dynamicIconRegex = /<ion-icon[^>]*\\sname=__elur_hole__/g;\n if (dynamicIconRegex.test(rawText)) {\n result.dynamicIcons.push(id);\n }\n },\n });\n\n return result;\n}\n\nexport function generateRegistrationModule(\n tags: Set<string>,\n icons: Set<string>,\n options: ElurIonicPluginOptions,\n): string {\n const lines: string[] = [\n \"// Auto-generated by @elurjs/ionic/vite-plugin — do not edit.\",\n \"import { initializeElurIonic, registerIonicComponents, registerIonicons } from \\\"@elurjs/ionic\\\";\",\n \"\",\n ];\n\n // Import component definers.\n // Skip core tags that initializeElurIonic() already registers:\n // ion-app, ion-router-outlet, ion-back-button, ion-icon.\n const CORE_TAGS = new Set([\"ion-app\", \"ion-router-outlet\", \"ion-back-button\", \"ion-icon\"]);\n const tagArray = [...tags].sort().filter((t) => !CORE_TAGS.has(t));\n const definerNames: string[] = [];\n for (const tag of tagArray) {\n const subpath = tagToSubpath(tag);\n const definerName = tagToDefinerName(tag);\n lines.push(`import { ${definerName} } from \"@elurjs/ionic/components/${subpath}\";`);\n definerNames.push(definerName);\n }\n\n // Import icons from ionicons/icons\n const iconArray = [...icons].sort();\n if (iconArray.length > 0) {\n // ionicons/icons exports icons in camelCase (e.g. `home`, `alertCircleOutline`).\n // We import them as camelCase identifiers and map them to kebab-case names\n // in the registerIonicons() call below.\n // NOTE: `import { foo as \"string\" }` is NOT valid JS syntax — aliases must\n // be identifiers. The kebab-case name goes in the object literal instead.\n const iconImports = iconArray.map((name) => {\n // Convert kebab-case to camelCase for ionicons/icons export\n return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n });\n // Deduplicate in case two kebab names map to the same camelCase\n const uniqueImports = [...new Set(iconImports)];\n lines.push(`import { ${uniqueImports.join(\", \")} } from \"ionicons/icons\";`);\n }\n\n lines.push(\"\");\n\n // Initialize\n const initOpts: string[] = [];\n if (options.icons) initOpts.push(`icons: \"${options.icons}\"`);\n if (options.iconAssetPath) initOpts.push(`icons: { mode: \"assets\", path: \"${options.iconAssetPath}\" }`);\n lines.push(`initializeElurIonic({ ${initOpts.join(\", \")} });`);\n\n // Register components\n if (definerNames.length > 0) {\n lines.push(`registerIonicComponents(${definerNames.join(\", \")});`);\n }\n\n // Register icons\n if (iconArray.length > 0) {\n const iconObj = iconArray.map((name) => {\n const camelName = name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n return `\"${name}\": ${camelName}`;\n });\n lines.push(`registerIonicons({ ${iconObj.join(\", \")} });`);\n }\n\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n}\n\nexport function elurIonic(options: ElurIonicPluginOptions = {}): Plugin {\n const {\n autoRegister = true,\n allowTags = [],\n allowIcons = [],\n diagnostics = true,\n } = options;\n\n const allowTagSet = new Set(allowTags);\n const allowIconSet = new Set(allowIcons);\n\n // Accumulated scan results across all modules\n const allTags = new Set<string>();\n const allIcons = new Set<string>();\n const dynamicTagFiles: string[] = [];\n const dynamicIconFiles: string[] = [];\n\n // Track whether the virtual module has already been served and what\n // tags/icons it contained. If new tags are discovered after it was\n // served (e.g. lazy-loaded pages), we warn the user to add them to\n // allowTags so they're included in the initial registration.\n let virtualModuleServed = false;\n let lastServedTags = new Set<string>();\n\n return {\n name: \"elur-ionic\",\n enforce: \"pre\",\n\n resolveId(id) {\n if (id === VIRTUAL_MODULE_ID) return RESOLVED_VIRTUAL_ID;\n },\n\n load(id) {\n if (id === RESOLVED_VIRTUAL_ID) {\n if (!autoRegister) {\n return \"export {}; // autoRegister disabled\";\n }\n // Merge allowlists into detected sets\n for (const tag of allowTagSet) allTags.add(tag);\n for (const icon of allowIconSet) allIcons.add(icon);\n\n // Snapshot what we're serving\n lastServedTags = new Set(allTags);\n virtualModuleServed = true;\n\n return generateRegistrationModule(allTags, allIcons, options);\n }\n },\n\n transform(code, id) {\n // Only process TS/JS/TSX/JSX files, skip node_modules and virtual\n if (!/\\.(ts|tsx|js|jsx)$/.test(id)) return null;\n if (id.includes(\"node_modules\")) return null;\n if (id.includes(\"\\0\")) return null;\n\n const result = scanCode(code, id);\n if (result.tags.size === 0 && result.icons.size === 0 && result.dynamicTags.length === 0 && result.dynamicIcons.length === 0) {\n return null;\n }\n\n // Accumulate detected tags and icons\n for (const tag of result.tags) allTags.add(tag);\n for (const icon of result.icons) allIcons.add(icon);\n\n // Warn about tags detected in templates but not in allowTags.\n // These are auto-detected and will be registered IF the virtual\n // module is loaded after this file is scanned. But with lazy\n // loading, the virtual module may already have been served.\n if (diagnostics) {\n const unlistedTags = [...result.tags].filter((t) => !allowTagSet.has(t));\n if (unlistedTags.length > 0) {\n const shortId = id.replace(process.cwd() + \"/\", \"\");\n this.warn(\n `[elur-ionic] Tags used in ${shortId} but not in allowTags: ` +\n `${unlistedTags.join(\", \")}. ` +\n \"Add them to `elurIonic({ allowTags: [...] })` to ensure \" +\n \"they are registered before first use.\",\n );\n }\n // Warn about icons detected but not in allowIcons.\n const unlistedIcons = [...result.icons].filter((i) => !allowIconSet.has(i));\n if (unlistedIcons.length > 0) {\n const shortId = id.replace(process.cwd() + \"/\", \"\");\n this.warn(\n `[elur-ionic] Icons used in ${shortId} but not in allowIcons: ` +\n `${unlistedIcons.join(\", \")}. ` +\n \"Add them to `elurIonic({ allowIcons: [...] })` to ensure \" +\n \"they are registered before first use.\",\n );\n }\n }\n\n // If the virtual module was already served and we found tags\n // that weren't in it, warn that a reload is needed.\n if (virtualModuleServed && diagnostics) {\n const newTags = [...result.tags].filter((t) => !lastServedTags.has(t));\n if (newTags.length > 0) {\n this.warn(\n `[elur-ionic] New tags discovered after registration: ` +\n `${newTags.join(\", \")}. These were NOT included in the ` +\n \"registration module. Add them to allowTags and reload.\",\n );\n }\n }\n\n // Track dynamic usage for diagnostics\n if (result.dynamicTags.length > 0) dynamicTagFiles.push(id);\n if (result.dynamicIcons.length > 0) dynamicIconFiles.push(id);\n\n // Emit diagnostics for dynamic tags/icons\n if (diagnostics) {\n if (dynamicTagFiles.length > 0 && dynamicTagFiles.length <= 3) {\n for (const file of result.dynamicTags) {\n this.warn(\n `[elur-ionic] Dynamic <ion-*> tag detected in ${file}. ` +\n \"Add the tag to `elurIonic({ allowTags: [...] })` to suppress this warning.\",\n );\n }\n }\n if (dynamicIconFiles.length > 0 && dynamicIconFiles.length <= 3) {\n for (const file of result.dynamicIcons) {\n this.warn(\n `[elur-ionic] Dynamic icon name detected in ${file}. ` +\n \"Add the icon to `elurIonic({ allowIcons: [...] })` to suppress this warning.\",\n );\n }\n }\n }\n\n return null; // don't transform code, just scan\n },\n\n buildStart() {\n // Emit final diagnostics\n if (diagnostics && dynamicTagFiles.length > 3) {\n this.warn(\n `[elur-ionic] Dynamic <ion-*> tags detected in ${dynamicTagFiles.length} files. ` +\n \"Add tags to `elurIonic({ allowTags: [...] })` to suppress.\",\n );\n }\n if (diagnostics && dynamicIconFiles.length > 3) {\n this.warn(\n `[elur-ionic] Dynamic icon names detected in ${dynamicIconFiles.length} files. ` +\n \"Add icons to `elurIonic({ allowIcons: [...] })` to suppress.\",\n );\n }\n },\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"mappings":"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AI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,GAAI,GAAI,KAAM,GAAI,EAAG,GAAI,KAAM,EAAG,IAAK,KAAM,GAAI,KAAM,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,KAAM,GAAI,GAAI,GAAI,IAAK,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,KAAM,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,KAAM,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,MAAO,GAAI,KAAM,EAAG,KAAM,EAAG,KAAM,GAAI,IAAK,KAAM,IAAK,KAAM,KAAM,EAAG,IAAI,EAC1tE,GAA+B,CAAC,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,KAAM,EAAG,EAAG,GAAI,MAAO,GAAI,KAAM,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,MAAO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AAS,GAAc,EAAO,CAE5B,OADA,EAAmB,gBAAiB,iBAAkB,gBAAgB,EAC/D9B,GAAe,CAAK,CAC7B,CACA,SAAS,GAAa,EAAS,EAAQ,GAAI,CAEzC,OADA,EAAmB,eAAgB,gBAAiB,gBAAgB,EAC7D,GAAc,EAAS,CAAK,CACrC,CACA,SAAS,GAAa,EAAU,CAE9B,OADA,EAAmB,eAAgB,cAAe,gBAAgB,EAC3DK,GAAY,CAAQ,CAC7B,CACA,SAAS,GAAe,EAAU,CAEhC,OADA,EAAmB,iBAAkB,gBAAiB,gBAAgB,EAC/DW,GAAc,CAAQ,CAC/B,CAEA,IAAM,GAAiB,OAAO,eAAe,CAC3C,UAAW,KACX,kBAAA,GACA,uBACA,mBACA,gBACA,oBAAA,GACA,wBAAA,GACA,qBAAA,GACA,qBACA,gBAAA,GACA,iBACA,+BACA,iBAAA,GACA,kBACA,eAAA,GACA,kBACA,gCACA,sBAAA,GACA,kBACA,eAAA,GACA,eACA,yBACA,aACA,oBACA,mBACA,mBACA,eACA,sBACA,wBACA,iBACA,sBAAA,GACA,qBACA,qBACA,gBACA,+BACA,4BACA,mBACA,oBACA,iBACA,wBACA,qBACA,oBACA,mBACA,qBACA,aACA,aACA,oBACA,gBACA,oBACA,eAAA,GACA,uBACA,mBACA,qBACA,mBACA,uBACA,kBACA,oBACA,kBACA,oBACA,kBACA,wBACA,wBACA,4BACA,0BACA,uBAAA,GACA,4BACA,gBAAA,GACA,oBAAA,GACA,QACA,kBACA,kBACA,gBACA,uBACA,sBACA,0BACA,qBACA,sBAAA,GACA,WAAA,GACA,eACA,OAAQ,GACR,mBACA,qBACA,0BACA,oBACA,4BACA,mBACA,qBACA,qBACA,wBACA,oBACA,2BACA,wBACA,8BACA,gBACA,qBACA,sBACA,cACA,sBACA,0BACA,eACA,cAAA,GACA,uBACA,qBACA,qBACA,sBACA,sBACA,kBACA,WACA,oBACA,kBAAA,GACA,iBAAA,GACA,aAAA,GACA,uBACA,oBACA,iBACA,eACA,0BAAA,GACA,0BACA,cAAe,GACf,+BACA,qBAAA,GACA,eAAA,GACA,iBAAA,GACA,gBACA,iBACA,kBACA,wBACA,0BACA,qBACA,0BACA,sBACA,4BACA,cACA,0BACA,6BACA,4BACA,2BACA,eACA,eACA,QAAA,GACA,2BACA,iBACA,aAAc,GACd,YAAA,GACA,aAAc,GACd,gBAAA,GACA,mBAAA,GACA,cAAA,GACA,eAAgB,GAChB,eACA,cAAA,GACA,+BACA,qBAAA,GACA,MAAOC,GACP,cACA,mBACA,wBACA,4BACA,mBACA,mBACA,eAAA,GACA,sBACA,kBACA,kBACA,gBACA,gBACA,eACA,kBACA,mBACA,oBACA,8BACA,qBACA,qBACA,mCACA,qBACA,qBACA,mBACA,cACA,qBACA,gBACA,sBACA,6BACA,kBACA,6BACA,gBACA,oBACA,uBACA,eACA,6BACA,mBACA,0BACA,uBACA,sBACA,sBACA,iBACA,gBACA,qBACA,iBACA,uBACA,sBACA,gCACA,kBACA,uBACA,iBACA,mBACA,mBACA,kBACA,uBACA,uBACA,uBACA,mBACA,cACA,yBACA,mBACA,mBACA,yBACA,cACA,eACA,0BACA,oBACA,mBACA,iBACA,kBACA,mBACA,8BACA,gCACA,mBACA,eACA,mBACA,sBACA,eACA,oBACA,iBACA,oBAAA,GACA,aACA,kBACA,sBACA,iBACA,4BACA,8BACA,wBACA,gBAAA,GACA,oBAAA,GACA,oBACA,yBACA,oBAAA,GACA,mBAAA,GACA,YACA,eACA,mBAAA,GACA,kBACA,iBACA,gBAAA,EACF,EAAG,OAAO,YAAa,CAAE,MAAO,QAAS,CAAC,EAE1C,SAAS,EAAM,EAAW,CACxB,OAAO,UAAY,CAEjB,OADA,EAAmB,EAAU,QAAQ,oBAAqB,GAAK,EAAE,YAAY,CAAC,EAAG,EAAW,+DAAgE,oBAAoB,EACzK,GAAE,EAAU,CAAC,GAAG,SAAS,CAClC,CACF,CACA,IAAMc,GAAkB,EAAM,iBAAiB,EAC7CC,GAAuB,EAAM,sBAAsB,EACnDC,GAAmB,EAAM,kBAAkB,EAC3CC,GAAuB,EAAM,sBAAsB,EACnDC,GAAY,EAAM,WAAW,EAC7BC,GAAmB,EAA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CA,gBAAA,GACA,aAAcV,GACd,uBACA,2BACA,qBAAA,GACA,qBACA,mBACA,iBACA,4BAA6B,GAC7B,iBAAA,GACA,kBACA,kBACA,eAAA,GACA,gCACA,yBACA,kBACA,eAAA,GACA,eACA,yBACA,aACA,oBACA,gBAAiB,GACjB,gBAAiB,GACjB,eACA,sBACA,wBACA,iBACA,sBAAA,GACA,qBACA,qBACA,gBACA,+BACA,4BACA,mBACA,oBACA,iBACA,wBACA,qBACA,oBACA,mBACA,qBACA,aACA,aACA,oBACA,gBACA,oBACA,kBACA,uBACA,mBACA,qBACA,mBACA,uBACA,kBACA,oBACA,kBACA,oBACA,kBACA,wBACA,wBACA,4BACA,0BACA,0BACA,4BACA,mBACA,uBACA,QACA,kBACA,kBACA,gBACA,oBAAqB,GACrB,sBACA,0BACA,qBACA,sBAAuB,GACvB,cACA,eACA,UACA,mBACA,qBACA,0BACA,oBACA,4BACA,mBACA,qBACA,qBACA,wBACA,oBACA,2BACA,wBACA,8BACA,gBACA,qBACA,sBACA,cACA,sBACA,0BACA,eACA,iBACA,uBACA,qBACA,qBACA,sBACA,sBACA,kBACA,WACA,oBACA,kBAAmBb,GACnB,oBACA,gBACA,uBACA,oBACA,cAAA,GACA,YAAA,GACA,6BACA,0BACA,4BAA6BiB,GAC7B,wBACA,eAAA,GACA,iBAAA,GACA,gBACA,cAAeP,GACf,kBACA,wBACA,0BACA,qBACA,0BACA,sBACA,4BACA,cACA,0BACA,6BACA,4BACA,wBAAA,GACA,eACA,eACA,WACA,2BACA,cAAA,GACA,YAAA,GACA,mBACA,mBAAA,GACA,cAAeD,GACf,eACA,cAAA,GACA,4BAA6BU,GAC7B,wBACA,SACA,cACA,mBACA,wBACA,gBACA,eACA,eAAA,GACA,mBACA,oBACA,8BACA,qBACA,qBACA,mCACA,qBACA,qBACA,mBACA,cACA,qBACA,gBACA,sBACA,6BACA,kBACA,6BACA,gBACA,oBACA,uBACA,eACA,6BACA,mBACA,0BACA,oBAAqB,GACrB,sBAC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"}
|