From 2fc9c729087f3a770c9bc381f469feae63351d39 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 5 Feb 2025 00:20:23 +0800 Subject: [PATCH] dbeaver/dbeaver-vscode#77 refactor: yarn & vit migration (#3229) * dbeaver/vscode#77 refactor: yarn & vit migration * chore: configure eslint & typescript & prettier * fix: chunk splitting & assets loading * fix: enable corepack * refactor: dev environment * chore: remove corepack enable from build scripts * chore: make script executable * fix: SSL check in vite dev * chore: update debug launch configs --------- Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com> Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com> --- .github/workflows/frontend-build.yml | 40 +- .github/workflows/frontend-lint.yml | 23 +- .vscode/launch.json | 2 +- .vscode/settings.json | 4 +- common-react/.editorconfig | 10 + common-react/.gitattributes | 4 + common-react/.gitignore | 19 + common-react/.prettierrc.mjs | 10 + common-react/.vscode/extensions.json | 6 + common-react/.vscode/settings.json | 9 + common-react/.yarn/sdks/integrations.yml | 5 + .../.yarn/sdks/prettier/bin/prettier.cjs | 32 + common-react/.yarn/sdks/prettier/index.cjs | 32 + common-react/.yarn/sdks/prettier/package.json | 7 + common-react/.yarn/sdks/typescript/bin/tsc | 32 + .../.yarn/sdks/typescript/bin/tsserver | 32 + .../.yarn/sdks/typescript/package.json | 10 + common-react/.yarnrc.yml | 3 + .../@dbeaver/react-data-grid/README.md | 1 + .../@dbeaver/react-data-grid/package.json | 39 + .../@dbeaver/react-data-grid/src/DataGrid.tsx | 45 + .../@dbeaver/react-data-grid/src/index.ts | 1 + .../@dbeaver/react-data-grid/tsconfig.json | 16 + common-react/README.md | 1 + common-react/package.json | 16 + common-react/yarn.lock | 903 + common-typescript/.editorconfig | 10 + common-typescript/.gitattributes | 4 + common-typescript/.gitignore | 13 + common-typescript/.prettierrc.mjs | 10 + common-typescript/.vscode/extensions.json | 6 + common-typescript/.vscode/settings.json | 7 + common-typescript/.yarn/sdks/integrations.yml | 5 + .../.yarn/sdks/prettier/bin/prettier.cjs | 32 + .../.yarn/sdks/prettier/index.cjs | 32 + .../.yarn/sdks/prettier/package.json | 7 + .../@dbeaver/prettier-config/config.js | 23 + .../@dbeaver/prettier-config/package.json | 19 + common-typescript/@dbeaver/tsconfig/README.md | 1 + .../@dbeaver/tsconfig/package.json | 4 + .../@dbeaver/tsconfig/tsconfig.json | 33 + .../@dbeaver/tsconfig/tsconfig.webview.json | 37 + .../@dbeaver/tsconfig/tsconfig.webworker.json | 34 + common-typescript/README.md | 1 + common-typescript/package.json | 12 + common-typescript/yarn.lock | 257 + generate_workspace.sh | 0 vscode-java-configs/.editorconfig | 10 + vscode-java-configs/.gitattributes | 4 + vscode-java-configs/.gitignore | 13 + vscode-java-configs/.vscode/extensions.json | 5 + vscode-java-configs/.vscode/settings.json | 8 + .../.yarn/sdks/integrations.yml | 5 + .../.yarn/sdks/typescript/bin/tsc | 32 + .../.yarn/sdks/typescript/bin/tsserver | 32 + .../.yarn/sdks/typescript/lib/tsc.js | 32 + .../.yarn/sdks/typescript/lib/tsserver.js | 248 + .../sdks/typescript/lib/tsserverlibrary.js | 248 + .../.yarn/sdks/typescript/lib/typescript.js | 32 + .../.yarn/sdks/typescript/package.json | 10 + vscode-java-configs/README.md | 1 + .../javaConfig.json | 0 .../org.jkiss.cloudbeaver.tp.target | 2 +- vscode-java-configs/package.json | 7 + vscode-java-configs/yarn.lock | 34 + webapp/.gitattributes | 4 + webapp/.gitignore | 15 +- webapp/.prettierrc.mjs | 10 + webapp/.vscode/extensions.json | 7 + webapp/.vscode/settings.json | 10 + .../@yarnpkg/plugin-ts-project-linker.cjs | 74 + webapp/.yarn/sdks/eslint/bin/eslint.js | 32 + webapp/.yarn/sdks/eslint/package.json | 14 + webapp/.yarn/sdks/integrations.yml | 5 + webapp/.yarn/sdks/prettier/bin/prettier.cjs | 32 + webapp/.yarn/sdks/prettier/index.cjs | 32 + webapp/.yarn/sdks/prettier/package.json | 7 + webapp/.yarn/sdks/typescript/bin/tsc | 32 + webapp/.yarn/sdks/typescript/bin/tsserver | 32 + webapp/.yarn/sdks/typescript/package.json | 10 + webapp/.yarnrc.yml | 17 + webapp/global.d.ts | 1 + webapp/lerna.json | 8 - webapp/package.json | 31 +- .../packages/browserslist-config/package.json | 6 +- .../packages/core-administration/package.json | 35 +- .../core-administration/tsconfig.json | 30 +- webapp/packages/core-app/package.json | 43 +- webapp/packages/core-app/tsconfig.json | 36 +- .../packages/core-authentication/package.json | 50 +- .../src/AuthSettingsService.test.ts | 12 +- .../resolvers/mockGetActiveUser.ts | 8 +- .../core-authentication/tsconfig.json | 45 +- webapp/packages/core-blocks/package.json | 54 +- .../src/AuthenticationProvider.tsx | 5 +- .../src/AuthenticationProviderLoader.ts | 3 +- webapp/packages/core-blocks/src/Cell.test.tsx | 1 + .../FormControls/InputAutocompletionMenu.tsx | 1 - webapp/packages/core-blocks/src/Icon.test.tsx | 1 + webapp/packages/core-blocks/src/Link.test.tsx | 1 + .../core-blocks/src/Menu/MenuItem.tsx | 3 +- .../core-blocks/src/Menu/MenuItemCheckbox.tsx | 3 +- .../core-blocks/src/Menu/MenuItemRadio.tsx | 3 +- .../core-blocks/src/Menu/MenuSeparator.tsx | 3 +- .../core-blocks/src/StatusMessage.test.tsx | 1 + webapp/packages/core-blocks/src/Text.test.tsx | 1 + .../core-blocks/src/TextPlaceholder.test.tsx | 1 + .../core-blocks/src/TimerIcon.test.tsx | 1 + webapp/packages/core-blocks/src/index.ts | 2 + .../src/useAuthenticationAction.ts | 2 +- .../packages/core-blocks/src/useExecutor.ts | 2 +- webapp/packages/core-blocks/tsconfig.json | 52 +- webapp/packages/core-bootstrap/package.json | 84 +- webapp/packages/core-bootstrap/tsconfig.json | 78 +- .../core-browser-cookies/package.json | 15 +- .../core-browser-cookies/tsconfig.json | 12 +- .../core-browser-settings/package.json | 32 +- .../src/BrowserSettingsService.test.ts | 12 +- .../core-browser-settings/tsconfig.json | 29 +- webapp/packages/core-browser/package.json | 22 +- .../core-browser/src/ServiceWorkerService.ts | 3 +- webapp/packages/core-browser/tsconfig.json | 14 +- .../_templates/plugin/new/package.json.ejs.t | 9 +- .../_templates/plugin/new/tsconfig.json.ejs.t | 3 +- webapp/packages/core-cli/bin/add-plugin.js | 26 +- webapp/packages/core-cli/bin/analyzer.js | 10 +- webapp/packages/core-cli/bin/build.js | 6 - .../packages/core-cli/bin/dependency-graph.js | 22 +- webapp/packages/core-cli/bin/set-version.js | 22 + webapp/packages/core-cli/bin/test.js | 22 +- webapp/packages/core-cli/bin/test_wrapper.js | 31 +- .../bin/typescript-resolve-references.js | 122 - .../core-cli/bin/validate-dependencies.js | 27 - .../core-cli/configs/webpack.config.js | 346 - .../configs/webpack.product.config.js | 90 - .../configs/webpack.product.dev.config.js | 142 - .../core-cli/configs/webpack.product.utils.js | 43 - webapp/packages/core-cli/package.json | 75 +- .../core-cli/src/cli/validate-dependencies.ts | 33 + .../IGNORED_DEPENDENCIES.ts | 1 + .../src/dependency-validator/INodePackage.ts | 8 + .../KNOWN_PEER_DEPS_MAP.ts | 7 + .../src/dependency-validator/PackageLogger.ts | 34 + .../dependency-validator/sortDependencies.ts | 10 + .../validateDependencies.ts | 267 + .../utils/printMessage.ts} | 20 +- .../core-cli/src/utils/sortObjectKeys.ts | 18 + webapp/packages/core-cli/tsconfig.json | 21 + .../core-cli/utils/HtmlInjectWebpackPlugin.js | 33 - .../utils/IgnoreNotFoundExportPlugin.js | 31 - .../core-cli/utils/SourceAssetsResolver.js | 73 - .../core-cli/utils/validateDependencies.js | 218 - .../core-client-activity/package.json | 15 +- .../core-client-activity/tsconfig.json | 12 +- webapp/packages/core-connections/package.json | 46 +- .../src/ConnectionDialectResource.ts | 2 +- .../src/ConnectionsSettingsService.ts | 7 +- .../getConnectionFolderIdFromNodeId.ts | 2 +- .../packages/core-connections/tsconfig.json | 40 +- .../packages/core-data-context/package.json | 18 +- .../packages/core-data-context/tsconfig.json | 12 +- webapp/packages/core-di/package.json | 16 +- webapp/packages/core-di/src/DIContainer.ts | 2 + webapp/packages/core-di/tsconfig.json | 10 +- webapp/packages/core-dialogs/package.json | 17 +- .../src/CommonDialog/CommonDialogService.ts | 4 +- webapp/packages/core-dialogs/tsconfig.json | 12 +- webapp/packages/core-events/package.json | 37 +- .../src/EventsSettingsService.test.ts | 12 +- webapp/packages/core-events/tsconfig.json | 31 +- webapp/packages/core-executor/package.json | 13 +- .../packages/core-executor/src/whileTask.ts | 4 +- webapp/packages/core-executor/tsconfig.json | 11 +- webapp/packages/core-extensions/package.json | 14 +- webapp/packages/core-extensions/tsconfig.json | 11 +- webapp/packages/core-links/package.json | 13 +- webapp/packages/core-links/tsconfig.json | 10 +- .../packages/core-localization/package.json | 17 +- .../packages/core-localization/tsconfig.json | 12 +- .../core-navigation-tree/package.json | 67 +- .../src/NavTreeSettingsService.test.ts | 14 +- .../src/NavTreeSettingsService.ts | 2 - .../src/NodesManager/NavTreeResource.ts | 2 +- .../core-navigation-tree/tsconfig.json | 65 +- .../packages/core-notifications/package.json | 21 +- .../packages/core-notifications/tsconfig.json | 14 +- webapp/packages/core-product/package.json | 17 +- webapp/packages/core-product/tsconfig.json | 12 +- webapp/packages/core-projects/package.json | 33 +- webapp/packages/core-projects/tsconfig.json | 28 +- .../core-resource-manager/package.json | 34 +- .../core-resource-manager/tsconfig.json | 27 +- webapp/packages/core-resource/package.json | 21 +- .../src/Resource/CachedResource.ts | 6 +- .../src/Resource/ResourceAlias.ts | 4 +- .../src/Resource/ResourceError.ts | 1 - webapp/packages/core-resource/tsconfig.json | 14 +- webapp/packages/core-root/package.json | 38 +- .../src/DefaultNavigatorSettingsResource.ts | 1 - .../ServerEventEmitter/TopicEventHandler.ts | 2 +- .../resolvers/mockOpenSession.ts | 8 +- .../resolvers/mockServerConfig.ts | 4 +- webapp/packages/core-root/tsconfig.json | 29 +- webapp/packages/core-routing/package.json | 19 +- webapp/packages/core-routing/tsconfig.json | 14 +- webapp/packages/core-sdk/package.json | 20 +- .../core-sdk/src/CustomGraphQLClient.ts | 10 +- webapp/packages/core-sdk/tsconfig.json | 11 +- .../core-server-localization/package.json | 17 +- .../core-server-localization/tsconfig.json | 14 +- .../core-session-localization/package.json | 19 +- .../core-session-localization/tsconfig.json | 16 +- .../core-settings-localization/package.json | 33 +- .../src/SettingsLocalizationService.test.ts | 12 +- .../core-settings-localization/tsconfig.json | 26 +- .../packages/core-settings-user/package.json | 27 +- .../packages/core-settings-user/tsconfig.json | 22 +- webapp/packages/core-settings/package.json | 26 +- webapp/packages/core-settings/tsconfig.json | 17 +- webapp/packages/core-storage/package.json | 17 +- webapp/packages/core-storage/tsconfig.json | 14 +- .../packages/core-task-manager/package.json | 19 +- .../packages/core-task-manager/tsconfig.json | 14 +- webapp/packages/core-theming/package.json | 39 +- .../src/ThemeSettingsService.test.ts | 12 +- webapp/packages/core-theming/tsconfig.json | 33 +- webapp/packages/core-ui/package.json | 35 +- .../packages/core-ui/src/Tabs/TabsState.tsx | 36 +- webapp/packages/core-ui/src/index.ts | 2 - webapp/packages/core-ui/tsconfig.json | 32 +- webapp/packages/core-utils/package.json | 11 +- webapp/packages/core-utils/src/MetadataMap.ts | 8 +- webapp/packages/core-utils/src/TempMap.ts | 8 +- webapp/packages/core-utils/tsconfig.json | 11 +- .../packages/core-version-update/package.json | 22 +- .../core-version-update/tsconfig.json | 16 +- webapp/packages/core-version/package.json | 23 +- webapp/packages/core-version/tsconfig.json | 18 +- webapp/packages/core-view/package.json | 26 +- webapp/packages/core-view/tsconfig.json | 20 +- .../packages/eslint-config/eslint-config.json | 2 +- webapp/packages/eslint-config/package.json | 14 +- webapp/packages/eslint-plugin/package.json | 7 +- .../plugin-administration/package.json | 52 +- .../plugin-administration/tsconfig.json | 46 +- .../package.json | 18 +- .../tsconfig.json | 13 +- webapp/packages/plugin-app-logo/package.json | 32 +- webapp/packages/plugin-app-logo/tsconfig.json | 21 +- .../package.json | 52 +- .../Users/UsersTable/useUsersTable.tsx | 2 +- .../tsconfig.json | 46 +- .../plugin-authentication/package.json | 47 +- .../src/AuthenticationService.ts | 2 - .../AuthProviderForm/ConfigurationsList.tsx | 12 +- .../plugin-authentication/tsconfig.json | 39 +- webapp/packages/plugin-browser/package.json | 19 +- .../src/PluginBrowserBootstrap.ts | 13 +- webapp/packages/plugin-browser/tsconfig.json | 16 +- .../packages/plugin-codemirror6/package.json | 23 +- .../packages/plugin-codemirror6/tsconfig.json | 13 +- .../plugin-connection-custom/package.json | 46 +- .../plugin-connection-custom/tsconfig.json | 40 +- .../plugin-connection-search/package.json | 46 +- .../plugin-connection-search/tsconfig.json | 40 +- .../plugin-connection-template/package.json | 42 +- .../plugin-connection-template/tsconfig.json | 36 +- .../package.json | 46 +- .../tsconfig.json | 40 +- .../packages/plugin-connections/package.json | 58 +- .../src/ConnectionAuthService.ts | 2 +- .../ConnectionFormBaseActions.tsx | 3 +- .../src/ConnectionForm/Options/Options.tsx | 3 +- .../ConnectionFormAuthenticationAction.tsx | 3 +- .../DatabaseAuthDialog/DatabaseAuthDialog.tsx | 2 +- .../src/PluginConnectionsSettingsService.ts | 7 +- .../packages/plugin-connections/tsconfig.json | 52 +- webapp/packages/plugin-d3js/package.json | 17 +- webapp/packages/plugin-d3js/tsconfig.json | 10 +- .../packages/plugin-data-export/package.json | 44 +- .../packages/plugin-data-export/tsconfig.json | 38 +- webapp/packages/plugin-data-grid/package.json | 21 +- .../packages/plugin-data-grid/tsconfig.json | 14 +- .../packages/plugin-data-import/package.json | 38 +- .../packages/plugin-data-import/tsconfig.json | 32 +- .../plugin-data-spreadsheet-new/package.json | 92 +- .../src/DataGrid/DataGridTable.tsx | 3 + .../CellFormatters/BlobFormatter.tsx | 2 - .../src/DataGrid/TableDataContext.ts | 3 +- .../src/DataGridSettingsService.test.ts | 14 +- .../plugin-data-spreadsheet-new/tsconfig.json | 91 +- .../package.json | 40 +- .../tsconfig.json | 34 +- .../package.json | 28 +- .../src/DVResultTraceDetailsPresentation.tsx | 10 +- .../tsconfig.json | 22 +- .../packages/plugin-data-viewer/package.json | 103 +- .../src/DataViewerSettingsService.test.ts | 14 +- .../Actions/DatabaseDataActionDecorator.ts | 1 + .../Actions/Document/DocumentEditAction.ts | 4 +- .../ResultSet/ResultSetSelectAction.ts | 2 +- .../packages/plugin-data-viewer/tsconfig.json | 105 +- .../package.json | 44 +- .../tsconfig.json | 38 +- .../package.json | 52 +- .../TransactionLogTable.tsx | 10 +- .../tsconfig.json | 46 +- .../packages/plugin-ddl-viewer/package.json | 45 +- .../packages/plugin-ddl-viewer/tsconfig.json | 38 +- webapp/packages/plugin-devtools/package.json | 38 +- .../plugin-devtools/src/DevToolsService.ts | 3 +- webapp/packages/plugin-devtools/tsconfig.json | 28 +- .../packages/plugin-gis-viewer/package.json | 26 +- .../plugin-gis-viewer/src/LeafletMap.tsx | 3 +- .../plugin-gis-viewer/src/react-leaflet.d.ts | 3 +- .../packages/plugin-gis-viewer/tsconfig.json | 20 +- webapp/packages/plugin-help/package.json | 46 +- .../src/Shortcuts/SHORTCUTS_DATA.ts | 3 +- webapp/packages/plugin-help/tsconfig.json | 43 +- .../package.json | 18 +- .../tsconfig.json | 13 +- webapp/packages/plugin-holidays/package.json | 22 +- webapp/packages/plugin-holidays/tsconfig.json | 16 +- .../packages/plugin-localization/package.json | 19 +- .../plugin-localization/tsconfig.json | 14 +- .../packages/plugin-log-viewer/package.json | 62 +- .../LogViewerSettingsService.test.ts | 14 +- .../packages/plugin-log-viewer/tsconfig.json | 59 +- .../plugin-navigation-tabs/package.json | 42 +- .../plugin-navigation-tabs/tsconfig.json | 36 +- .../package.json | 32 +- .../src/NavigationTreeFiltersBootstrap.ts | 2 +- .../tsconfig.json | 26 +- .../plugin-navigation-tree-rm/package.json | 51 +- ...navigationTreeProjectsRendererRenderer.tsx | 3 - .../plugin-navigation-tree-rm/tsconfig.json | 44 +- .../plugin-navigation-tree/package.json | 90 +- .../ElementsTreeToolsMenuService.ts | 48 +- .../NavigationTree/NavigationTreeService.ts | 3 +- .../src/NavigationTreeSettingsService.ts | 3 +- .../NavNodeView/NavNodeViewService.test.ts | 12 +- .../NavNodeView/NavNodeViewService.ts | 3 +- .../plugin-navigation-tree/src/index.ts | 2 - .../plugin-navigation-tree/src/locales/en.ts | 1 - .../plugin-navigation-tree/src/locales/it.ts | 1 - .../plugin-navigation-tree/src/locales/ru.ts | 1 - .../plugin-navigation-tree/src/locales/zh.ts | 1 - .../plugin-navigation-tree/tsconfig.json | 98 +- .../.gitignore | 17 + .../package.json | 35 + .../src/ACTION_LINK_OBJECT.d.ts | 2 + .../src/ACTION_LINK_OBJECT.d.ts.map | 1 + .../src/ACTION_LINK_OBJECT.js | 13 + .../src/ACTION_LINK_OBJECT.js.map | 1 + .../src}/ACTION_LINK_OBJECT.ts | 0 .../src/KEY_BINDING_LINK_OBJECT.d.ts | 2 + .../src/KEY_BINDING_LINK_OBJECT.d.ts.map | 1 + .../src/KEY_BINDING_LINK_OBJECT.js | 14 + .../src/KEY_BINDING_LINK_OBJECT.js.map | 1 + .../src}/KEY_BINDING_LINK_OBJECT.ts | 0 .../src/LocaleService.ts | 0 .../src/ObjectViewerNavTreeLinkMenuService.ts | 106 + .../src/index.ts | 5 + .../src/locales/en.ts | 8 + .../src/locales/fr.ts | 8 + .../src/locales/it.ts | 8 + .../src/locales/ru.ts | 8 + .../src/locales/zh.ts | 8 + .../src/manifest.ts | 16 + .../tsconfig.json | 44 + .../plugin-object-viewer/package.json | 50 +- .../ObjectPropertyTable/Table/Table.tsx | 1 + .../plugin-object-viewer/tsconfig.json | 44 +- .../package.json | 33 +- .../tsconfig.json | 26 +- webapp/packages/plugin-product/package.json | 35 +- webapp/packages/plugin-product/tsconfig.json | 28 +- webapp/packages/plugin-projects/package.json | 28 +- webapp/packages/plugin-projects/tsconfig.json | 22 +- .../plugin-react-data-grid/package.json | 14 +- .../plugin-react-data-grid/tsconfig.json | 11 +- .../package.json | 26 +- .../tsconfig.json | 21 +- .../package.json | 50 +- .../ResourceManagerScriptsSettingsService.ts | 3 +- .../src/locales/zh.ts | 4 +- .../tsconfig.json | 44 +- .../plugin-resource-manager/package.json | 45 +- .../ResourceManagerSettingsService.test.ts | 12 +- .../plugin-resource-manager/tsconfig.json | 40 +- webapp/packages/plugin-root/package.json | 31 +- webapp/packages/plugin-root/tsconfig.json | 24 +- .../plugin-session-expiration/package.json | 35 +- .../plugin-session-expiration/tsconfig.json | 28 +- .../package.json | 34 +- .../src/SettingsAdministration.tsx | 2 +- .../tsconfig.json | 24 +- .../package.json | 13 +- .../tsconfig.json | 10 +- .../plugin-settings-menu/package.json | 25 +- .../plugin-settings-menu/tsconfig.json | 18 +- .../plugin-settings-panel/package.json | 26 +- .../plugin-settings-panel/tsconfig.json | 20 +- .../package.json | 59 +- .../tsconfig.json | 54 +- .../package.json | 56 +- .../src/SqlEditorTabService.ts | 2 +- .../tsconfig.json | 50 +- .../plugin-sql-editor-new/package.json | 34 +- .../plugin-sql-editor-new/tsconfig.json | 28 +- .../plugin-sql-editor-screen/package.json | 40 +- .../plugin-sql-editor-screen/tsconfig.json | 34 +- .../packages/plugin-sql-editor/package.json | 104 +- .../src/SqlEditorSettingsService.test.ts | 14 +- .../OutputLogs/OutputLogsToolbar.tsx | 1 - .../packages/plugin-sql-editor/tsconfig.json | 108 +- .../plugin-sql-generator/package.json | 42 +- .../plugin-sql-generator/tsconfig.json | 36 +- webapp/packages/plugin-sso/package.json | 14 +- webapp/packages/plugin-sso/src/index.html.ejs | 18 - .../packages/plugin-sso/src/ssoError.html.ejs | 11 - webapp/packages/plugin-sso/tsconfig.json | 10 +- .../packages/plugin-task-manager/package.json | 21 +- .../plugin-task-manager/tsconfig.json | 18 +- webapp/packages/plugin-theme/package.json | 13 +- webapp/packages/plugin-theme/tsconfig.json | 10 +- .../packages/plugin-tools-panel/package.json | 32 +- .../packages/plugin-tools-panel/tsconfig.json | 26 +- .../package.json | 19 +- .../tsconfig.json | 14 +- .../packages/plugin-top-app-bar/package.json | 30 +- .../packages/plugin-top-app-bar/tsconfig.json | 25 +- .../package.json | 17 +- .../tsconfig.json | 14 +- .../plugin-user-profile-settings/package.json | 37 +- .../src/UserProfileSettings.tsx | 2 +- .../tsconfig.json | 30 +- .../packages/plugin-user-profile/package.json | 44 +- .../plugin-user-profile/tsconfig.json | 38 +- .../package.json | 36 +- .../tsconfig.json | 27 +- webapp/packages/plugin-version/package.json | 13 +- webapp/packages/plugin-version/tsconfig.json | 10 +- webapp/packages/prettier-config/index.json | 16 - webapp/packages/prettier-config/package.json | 11 - webapp/packages/product-base/.gitignore | 17 + webapp/packages/product-base/package.json | 44 + .../src/baseConfigurationPlugin.ts | 120 + .../product-base/src/baseHtmlPlugin.ts | 75 + .../src/copy-assets/copyAssetsPlugin.ts | 34 + .../product-base/src/copy-assets/getAssets.ts | 20 + .../src/copy-assets/getCloudBeaverDeps.ts} | 17 +- .../src/copy-assets/resolvePathWithPnpApi.ts | 16 + .../src/copy-assets/scanCloudbeaverDeps.ts | 34 + webapp/packages/product-base/src/head.html | 21 + webapp/packages/product-base/src/index.html | 11 + webapp/packages/product-base/src/index.ts | 11 + .../product-base/src/loading-screen.html | 89 + .../packages/product-base/src/manualChunks.ts | 97 + .../packages/product-base/src/sso-error.html | 67 + webapp/packages/product-base/src/sso.html | 67 + webapp/packages/product-base/tsconfig.json | 26 + .../packages/product-default-impl/.gitignore | 17 + .../product-default-impl/package.json | 105 + .../public/manifest.webmanifest | 0 .../product-default-impl/src/LocaleService.ts | 35 + .../src/ProductBootstrap.ts | 0 .../src/UpdateInstruction.tsx | 0 .../product-default-impl/src/index.ts | 146 + .../src/locales/en.ts} | 0 .../product-default-impl/src/locales/fr.ts | 12 + .../product-default-impl/src/locales/it.ts | 11 + .../product-default-impl/src/locales/ru.ts | 11 + .../src/locales/zh.ts | 0 .../src/manifest.ts | 0 .../product-default-impl/tsconfig.json | 230 + webapp/packages/product-default/.gitignore | 1 + .../product-default/node.tsconfig.json | 17 + webapp/packages/product-default/package.json | 107 +- .../packages/product-default/src/index.html | 1 + .../product-default/src/index.html.ejs | 18 - webapp/packages/product-default/src/index.ts | 138 +- .../product-default/src/locales/en.ts | 5 - .../product-default/src/locales/it.ts | 4 - .../product-default/src/locales/ru.ts | 4 - .../product-default/src/service-worker.ts | 8 + webapp/packages/product-default/src/sso.html | 1 + webapp/packages/product-default/src/sso.ts | 8 + .../product-default/src/ssoError.html | 1 + .../packages/product-default/src/ssoError.ts | 8 + webapp/packages/product-default/tsconfig.json | 201 +- .../packages/product-default/vite.config.ts | 19 + webapp/packages/tests-runner/package.json | 17 +- webapp/packages/tests-runner/tsconfig.json | 10 +- webapp/packages/tsconfig/README.md | 1 + webapp/packages/tsconfig/package.json | 13 + webapp/packages/tsconfig/tsconfig.json | 34 + webapp/readme.md | 12 +- webapp/scripts/license-check.mjs | 2 +- webapp/tsconfig.base.json | 64 - webapp/yarn.lock | 35152 ++++++++-------- 501 files changed, 27417 insertions(+), 22068 deletions(-) create mode 100644 common-react/.editorconfig create mode 100644 common-react/.gitattributes create mode 100644 common-react/.gitignore create mode 100644 common-react/.prettierrc.mjs create mode 100644 common-react/.vscode/extensions.json create mode 100644 common-react/.vscode/settings.json create mode 100644 common-react/.yarn/sdks/integrations.yml create mode 100755 common-react/.yarn/sdks/prettier/bin/prettier.cjs create mode 100644 common-react/.yarn/sdks/prettier/index.cjs create mode 100644 common-react/.yarn/sdks/prettier/package.json create mode 100755 common-react/.yarn/sdks/typescript/bin/tsc create mode 100755 common-react/.yarn/sdks/typescript/bin/tsserver create mode 100644 common-react/.yarn/sdks/typescript/package.json create mode 100644 common-react/.yarnrc.yml create mode 100644 common-react/@dbeaver/react-data-grid/README.md create mode 100644 common-react/@dbeaver/react-data-grid/package.json create mode 100644 common-react/@dbeaver/react-data-grid/src/DataGrid.tsx create mode 100644 common-react/@dbeaver/react-data-grid/src/index.ts create mode 100644 common-react/@dbeaver/react-data-grid/tsconfig.json create mode 100644 common-react/README.md create mode 100644 common-react/package.json create mode 100644 common-react/yarn.lock create mode 100644 common-typescript/.editorconfig create mode 100644 common-typescript/.gitattributes create mode 100644 common-typescript/.gitignore create mode 100644 common-typescript/.prettierrc.mjs create mode 100644 common-typescript/.vscode/extensions.json create mode 100644 common-typescript/.vscode/settings.json create mode 100644 common-typescript/.yarn/sdks/integrations.yml create mode 100755 common-typescript/.yarn/sdks/prettier/bin/prettier.cjs create mode 100644 common-typescript/.yarn/sdks/prettier/index.cjs create mode 100644 common-typescript/.yarn/sdks/prettier/package.json create mode 100644 common-typescript/@dbeaver/prettier-config/config.js create mode 100644 common-typescript/@dbeaver/prettier-config/package.json create mode 100644 common-typescript/@dbeaver/tsconfig/README.md create mode 100644 common-typescript/@dbeaver/tsconfig/package.json create mode 100644 common-typescript/@dbeaver/tsconfig/tsconfig.json create mode 100644 common-typescript/@dbeaver/tsconfig/tsconfig.webview.json create mode 100644 common-typescript/@dbeaver/tsconfig/tsconfig.webworker.json create mode 100644 common-typescript/README.md create mode 100644 common-typescript/package.json create mode 100644 common-typescript/yarn.lock mode change 100644 => 100755 generate_workspace.sh create mode 100644 vscode-java-configs/.editorconfig create mode 100644 vscode-java-configs/.gitattributes create mode 100644 vscode-java-configs/.gitignore create mode 100644 vscode-java-configs/.vscode/extensions.json create mode 100644 vscode-java-configs/.vscode/settings.json create mode 100644 vscode-java-configs/.yarn/sdks/integrations.yml create mode 100755 vscode-java-configs/.yarn/sdks/typescript/bin/tsc create mode 100755 vscode-java-configs/.yarn/sdks/typescript/bin/tsserver create mode 100644 vscode-java-configs/.yarn/sdks/typescript/lib/tsc.js create mode 100644 vscode-java-configs/.yarn/sdks/typescript/lib/tsserver.js create mode 100644 vscode-java-configs/.yarn/sdks/typescript/lib/tsserverlibrary.js create mode 100644 vscode-java-configs/.yarn/sdks/typescript/lib/typescript.js create mode 100644 vscode-java-configs/.yarn/sdks/typescript/package.json create mode 100644 vscode-java-configs/README.md rename javaConfig.json => vscode-java-configs/javaConfig.json (100%) rename org.jkiss.cloudbeaver.tp.target => vscode-java-configs/org.jkiss.cloudbeaver.tp.target (64%) create mode 100644 vscode-java-configs/package.json create mode 100644 vscode-java-configs/yarn.lock create mode 100644 webapp/.gitattributes create mode 100644 webapp/.prettierrc.mjs create mode 100644 webapp/.vscode/extensions.json create mode 100644 webapp/.vscode/settings.json create mode 100644 webapp/.yarn/plugins/@yarnpkg/plugin-ts-project-linker.cjs create mode 100755 webapp/.yarn/sdks/eslint/bin/eslint.js create mode 100644 webapp/.yarn/sdks/eslint/package.json create mode 100644 webapp/.yarn/sdks/integrations.yml create mode 100755 webapp/.yarn/sdks/prettier/bin/prettier.cjs create mode 100644 webapp/.yarn/sdks/prettier/index.cjs create mode 100644 webapp/.yarn/sdks/prettier/package.json create mode 100755 webapp/.yarn/sdks/typescript/bin/tsc create mode 100755 webapp/.yarn/sdks/typescript/bin/tsserver create mode 100644 webapp/.yarn/sdks/typescript/package.json create mode 100644 webapp/.yarnrc.yml create mode 100644 webapp/global.d.ts delete mode 100644 webapp/lerna.json rename webapp/packages/{core-ui => core-blocks}/src/AuthenticationProvider.tsx (88%) rename webapp/packages/{core-ui => core-blocks}/src/AuthenticationProviderLoader.ts (84%) rename webapp/packages/{core-ui => core-blocks}/src/useAuthenticationAction.ts (96%) delete mode 100755 webapp/packages/core-cli/bin/build.js create mode 100755 webapp/packages/core-cli/bin/set-version.js delete mode 100755 webapp/packages/core-cli/bin/typescript-resolve-references.js delete mode 100755 webapp/packages/core-cli/bin/validate-dependencies.js delete mode 100644 webapp/packages/core-cli/configs/webpack.config.js delete mode 100644 webapp/packages/core-cli/configs/webpack.product.config.js delete mode 100644 webapp/packages/core-cli/configs/webpack.product.dev.config.js delete mode 100644 webapp/packages/core-cli/configs/webpack.product.utils.js create mode 100755 webapp/packages/core-cli/src/cli/validate-dependencies.ts create mode 100644 webapp/packages/core-cli/src/dependency-validator/IGNORED_DEPENDENCIES.ts create mode 100644 webapp/packages/core-cli/src/dependency-validator/INodePackage.ts create mode 100644 webapp/packages/core-cli/src/dependency-validator/KNOWN_PEER_DEPS_MAP.ts create mode 100644 webapp/packages/core-cli/src/dependency-validator/PackageLogger.ts create mode 100644 webapp/packages/core-cli/src/dependency-validator/sortDependencies.ts create mode 100644 webapp/packages/core-cli/src/dependency-validator/validateDependencies.ts rename webapp/packages/core-cli/{utils/printMessage.js => src/utils/printMessage.ts} (61%) create mode 100644 webapp/packages/core-cli/src/utils/sortObjectKeys.ts create mode 100644 webapp/packages/core-cli/tsconfig.json delete mode 100644 webapp/packages/core-cli/utils/HtmlInjectWebpackPlugin.js delete mode 100644 webapp/packages/core-cli/utils/IgnoreNotFoundExportPlugin.js delete mode 100644 webapp/packages/core-cli/utils/SourceAssetsResolver.js delete mode 100644 webapp/packages/core-cli/utils/validateDependencies.js create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/.gitignore create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/package.json create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/ACTION_LINK_OBJECT.d.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/ACTION_LINK_OBJECT.d.ts.map create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/ACTION_LINK_OBJECT.js create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/ACTION_LINK_OBJECT.js.map rename webapp/packages/{plugin-navigation-tree/src/NavigationTree/ElementsTree => plugin-object-viewer-nav-tree-link/src}/ACTION_LINK_OBJECT.ts (100%) create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/KEY_BINDING_LINK_OBJECT.d.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/KEY_BINDING_LINK_OBJECT.d.ts.map create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/KEY_BINDING_LINK_OBJECT.js create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/KEY_BINDING_LINK_OBJECT.js.map rename webapp/packages/{plugin-navigation-tree/src/NavigationTree/ElementsTree => plugin-object-viewer-nav-tree-link/src}/KEY_BINDING_LINK_OBJECT.ts (100%) rename webapp/packages/{product-default => plugin-object-viewer-nav-tree-link}/src/LocaleService.ts (100%) create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/ObjectViewerNavTreeLinkMenuService.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/index.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/locales/en.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/locales/fr.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/locales/it.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/locales/ru.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/locales/zh.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/src/manifest.ts create mode 100644 webapp/packages/plugin-object-viewer-nav-tree-link/tsconfig.json delete mode 100644 webapp/packages/plugin-sso/src/index.html.ejs delete mode 100644 webapp/packages/plugin-sso/src/ssoError.html.ejs delete mode 100644 webapp/packages/prettier-config/index.json delete mode 100644 webapp/packages/prettier-config/package.json create mode 100644 webapp/packages/product-base/.gitignore create mode 100644 webapp/packages/product-base/package.json create mode 100644 webapp/packages/product-base/src/baseConfigurationPlugin.ts create mode 100644 webapp/packages/product-base/src/baseHtmlPlugin.ts create mode 100644 webapp/packages/product-base/src/copy-assets/copyAssetsPlugin.ts create mode 100644 webapp/packages/product-base/src/copy-assets/getAssets.ts rename webapp/packages/{core-cli/utils/getCloudBeaverDeps.js => product-base/src/copy-assets/getCloudBeaverDeps.ts} (61%) create mode 100644 webapp/packages/product-base/src/copy-assets/resolvePathWithPnpApi.ts create mode 100644 webapp/packages/product-base/src/copy-assets/scanCloudbeaverDeps.ts create mode 100644 webapp/packages/product-base/src/head.html create mode 100644 webapp/packages/product-base/src/index.html create mode 100644 webapp/packages/product-base/src/index.ts create mode 100644 webapp/packages/product-base/src/loading-screen.html create mode 100644 webapp/packages/product-base/src/manualChunks.ts create mode 100644 webapp/packages/product-base/src/sso-error.html create mode 100644 webapp/packages/product-base/src/sso.html create mode 100644 webapp/packages/product-base/tsconfig.json create mode 100644 webapp/packages/product-default-impl/.gitignore create mode 100644 webapp/packages/product-default-impl/package.json rename webapp/packages/{product-default => product-default-impl}/public/manifest.webmanifest (100%) create mode 100644 webapp/packages/product-default-impl/src/LocaleService.ts rename webapp/packages/{product-default => product-default-impl}/src/ProductBootstrap.ts (100%) rename webapp/packages/{product-default => product-default-impl}/src/UpdateInstruction.tsx (100%) create mode 100644 webapp/packages/product-default-impl/src/index.ts rename webapp/packages/{product-default/src/locales/fr.ts => product-default-impl/src/locales/en.ts} (100%) create mode 100644 webapp/packages/product-default-impl/src/locales/fr.ts create mode 100644 webapp/packages/product-default-impl/src/locales/it.ts create mode 100644 webapp/packages/product-default-impl/src/locales/ru.ts rename webapp/packages/{product-default => product-default-impl}/src/locales/zh.ts (100%) rename webapp/packages/{product-default => product-default-impl}/src/manifest.ts (100%) create mode 100644 webapp/packages/product-default-impl/tsconfig.json create mode 100644 webapp/packages/product-default/node.tsconfig.json create mode 100644 webapp/packages/product-default/src/index.html delete mode 100644 webapp/packages/product-default/src/index.html.ejs delete mode 100644 webapp/packages/product-default/src/locales/en.ts delete mode 100644 webapp/packages/product-default/src/locales/it.ts delete mode 100644 webapp/packages/product-default/src/locales/ru.ts create mode 100644 webapp/packages/product-default/src/service-worker.ts create mode 100644 webapp/packages/product-default/src/sso.html create mode 100644 webapp/packages/product-default/src/sso.ts create mode 100644 webapp/packages/product-default/src/ssoError.html create mode 100644 webapp/packages/product-default/src/ssoError.ts create mode 100644 webapp/packages/product-default/vite.config.ts create mode 100644 webapp/packages/tsconfig/README.md create mode 100644 webapp/packages/tsconfig/package.json create mode 100644 webapp/packages/tsconfig/tsconfig.json delete mode 100644 webapp/tsconfig.base.json diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 4ee591ae46..58b2a247a6 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -11,9 +11,9 @@ on: description: "Test status" value: ${{ jobs.frontend-build.outputs.test-status }} inputs: - skip_cache: + clean-cache: required: false - type: string + type: boolean jobs: frontend-build: @@ -29,42 +29,42 @@ jobs: defaults: run: - working-directory: ./webapp + working-directory: ./cloudbeaver/webapp steps: - - uses: actions/checkout@v4 + - name: Checkout cloudbeaver + uses: actions/checkout@v4 + with: + path: cloudbeaver + + - name: Clone Deps Repositories + uses: dbeaver/github-actions/clone-repositories@devel + with: + project_deps_path: './cloudbeaver/project.deps' + token: ${{ secrets.DEVOPS_ISSUE_RO_TOKEN }} - run: corepack enable - uses: actions/setup-node@v4 with: - node-version: "20" - cache: yarn - cache-dependency-path: webapp/yarn.lock - - - name: restore node_modules - uses: actions/cache@v4 - with: - path: "**/node_modules" - key: ${{ runner.os }}-node_modules-${{ hashFiles('webapp/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- + node-version: "lts/*" + cache: "yarn" + cache-dependency-path: './cloudbeaver/webapp/yarn.lock' - name: restore typescript cache uses: actions/cache@v4 with: - path: "**/packages/*/dist" - key: ${{ runner.os }}-dist-${{ hashFiles('webapp/yarn.lock') }} + path: "cloudbeaver/webapp/**/packages/*/dist" + key: ${{ runner.os }}-dist-${{ hashFiles('cloudbeaver/webapp/yarn.lock') }} restore-keys: | ${{ runner.os }}-dist- - - name: yarn clean - if: env.skip_cache == 'true' + - if: inputs.clean-cache run: yarn clear - run: yarn install --immutable - run: yarn bundle - working-directory: ./webapp/packages/product-default + working-directory: ./cloudbeaver/webapp/packages/product-default - run: yarn test diff --git a/.github/workflows/frontend-lint.yml b/.github/workflows/frontend-lint.yml index 0d969da4a3..95b0279c59 100644 --- a/.github/workflows/frontend-lint.yml +++ b/.github/workflows/frontend-lint.yml @@ -14,25 +14,20 @@ jobs: defaults: run: - working-directory: ./webapp - + working-directory: ./cloudbeaver/webapp + steps: - - uses: actions/checkout@v4 + - name: Checkout cloudbeaver + uses: actions/checkout@v4 + with: + path: cloudbeaver - run: corepack enable - uses: actions/setup-node@v4 with: - node-version: "20" - cache: yarn - cache-dependency-path: webapp/yarn.lock - - - name: restore node_modules - uses: actions/cache@v4 - with: - path: "**/node_modules" - key: ${{ runner.os }}-node_modules-${{ hashFiles('webapp/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node_modules- + node-version: "lts/*" + cache: "yarn" + cache-dependency-path: "./cloudbeaver/webapp/yarn.lock" - run: | yarn install --immutable diff --git a/.vscode/launch.json b/.vscode/launch.json index 7b5160c2f0..291242cde3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -18,7 +18,7 @@ { "type": "java", "name": "CloudBeaver CE Server", - "cwd": "${workspaceFolder}/../opt/cbce", + "cwd": "${workspaceFolder}/../dbeaver-workspace/app-workspace/cbce", "request": "launch", "mainClass": "org.jkiss.dbeaver.launcher.DBeaverLauncher", "args": [ diff --git a/.vscode/settings.json b/.vscode/settings.json index a039fe497d..da7345800c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,7 +13,9 @@ "typescript.preferences.importModuleSpecifier": "relative", "typescript.preferences.includePackageJsonAutoImports": "on", "typescript.preferences.quoteStyle": "single", - "typescript.tsdk": "webapp/node_modules/typescript/lib", + "typescript.tsdk": "webapp/.yarn/sdks/typescript/lib", + "prettier.prettierPath": "webapp/.yarn/sdks/prettier/index.cjs", + "eslint.nodePath": "webapp/.yarn/sdks", "eslint.enable": true, "eslint.validate": [ diff --git a/common-react/.editorconfig b/common-react/.editorconfig new file mode 100644 index 0000000000..1ed453a371 --- /dev/null +++ b/common-react/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{js,json,yml}] +charset = utf-8 +indent_style = space +indent_size = 2 diff --git a/common-react/.gitattributes b/common-react/.gitattributes new file mode 100644 index 0000000000..af3ad12812 --- /dev/null +++ b/common-react/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/common-react/.gitignore b/common-react/.gitignore new file mode 100644 index 0000000000..cc85fee307 --- /dev/null +++ b/common-react/.gitignore @@ -0,0 +1,19 @@ +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Swap the comments on the following lines if you wish to use zero-installs +# In that case, don't forget to run `yarn config set enableGlobalCache false`! +# Documentation here: https://yarnpkg.com/features/caching#zero-installs + +#!.yarn/cache +.pnp.* + +# artifacts +lib +out +dist +node_modules diff --git a/common-react/.prettierrc.mjs b/common-react/.prettierrc.mjs new file mode 100644 index 0000000000..de21a410e9 --- /dev/null +++ b/common-react/.prettierrc.mjs @@ -0,0 +1,10 @@ +import defaultDbeaverConfig from '@dbeaver/prettier-config'; + +/** + * @type {import("prettier").Config} + */ +const config = { + ...defaultDbeaverConfig, +}; + +export default config; diff --git a/common-react/.vscode/extensions.json b/common-react/.vscode/extensions.json new file mode 100644 index 0000000000..bedb7ca3ac --- /dev/null +++ b/common-react/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "arcanis.vscode-zipfs", + "esbenp.prettier-vscode" + ] +} diff --git a/common-react/.vscode/settings.json b/common-react/.vscode/settings.json new file mode 100644 index 0000000000..13bcc928d4 --- /dev/null +++ b/common-react/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "typescript.tsdk": ".yarn/sdks/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "prettier.prettierPath": ".yarn/sdks/prettier/index.cjs" +} diff --git a/common-react/.yarn/sdks/integrations.yml b/common-react/.yarn/sdks/integrations.yml new file mode 100644 index 0000000000..aa9d0d0ad8 --- /dev/null +++ b/common-react/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by @yarnpkg/sdks. +# Manual changes might be lost! + +integrations: + - vscode diff --git a/common-react/.yarn/sdks/prettier/bin/prettier.cjs b/common-react/.yarn/sdks/prettier/bin/prettier.cjs new file mode 100755 index 0000000000..9a4098f7dc --- /dev/null +++ b/common-react/.yarn/sdks/prettier/bin/prettier.cjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/bin/prettier.cjs + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real prettier/bin/prettier.cjs your application uses +module.exports = wrapWithUserWrapper(absRequire(`prettier/bin/prettier.cjs`)); diff --git a/common-react/.yarn/sdks/prettier/index.cjs b/common-react/.yarn/sdks/prettier/index.cjs new file mode 100644 index 0000000000..57cb2ab17f --- /dev/null +++ b/common-react/.yarn/sdks/prettier/index.cjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real prettier your application uses +module.exports = wrapWithUserWrapper(absRequire(`prettier`)); diff --git a/common-react/.yarn/sdks/prettier/package.json b/common-react/.yarn/sdks/prettier/package.json new file mode 100644 index 0000000000..b9ab57f09d --- /dev/null +++ b/common-react/.yarn/sdks/prettier/package.json @@ -0,0 +1,7 @@ +{ + "name": "prettier", + "version": "3.4.2-sdk", + "main": "./index.cjs", + "type": "commonjs", + "bin": "./bin/prettier.cjs" +} diff --git a/common-react/.yarn/sdks/typescript/bin/tsc b/common-react/.yarn/sdks/typescript/bin/tsc new file mode 100755 index 0000000000..867a7bdfe2 --- /dev/null +++ b/common-react/.yarn/sdks/typescript/bin/tsc @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsc + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/bin/tsc your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsc`)); diff --git a/common-react/.yarn/sdks/typescript/bin/tsserver b/common-react/.yarn/sdks/typescript/bin/tsserver new file mode 100755 index 0000000000..3fc5aa31cc --- /dev/null +++ b/common-react/.yarn/sdks/typescript/bin/tsserver @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsserver + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/bin/tsserver your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsserver`)); diff --git a/common-react/.yarn/sdks/typescript/package.json b/common-react/.yarn/sdks/typescript/package.json new file mode 100644 index 0000000000..d6d5ec3c15 --- /dev/null +++ b/common-react/.yarn/sdks/typescript/package.json @@ -0,0 +1,10 @@ +{ + "name": "typescript", + "version": "5.7.3-sdk", + "main": "./lib/typescript.js", + "type": "commonjs", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + } +} diff --git a/common-react/.yarnrc.yml b/common-react/.yarnrc.yml new file mode 100644 index 0000000000..134dfe022c --- /dev/null +++ b/common-react/.yarnrc.yml @@ -0,0 +1,3 @@ +enableTelemetry: false + +preferReuse: true diff --git a/common-react/@dbeaver/react-data-grid/README.md b/common-react/@dbeaver/react-data-grid/README.md new file mode 100644 index 0000000000..99aa541366 --- /dev/null +++ b/common-react/@dbeaver/react-data-grid/README.md @@ -0,0 +1 @@ +# @dbeaver/react-data-grid diff --git a/common-react/@dbeaver/react-data-grid/package.json b/common-react/@dbeaver/react-data-grid/package.json new file mode 100644 index 0000000000..df08bb4695 --- /dev/null +++ b/common-react/@dbeaver/react-data-grid/package.json @@ -0,0 +1,39 @@ +{ + "name": "@dbeaver/react-data-grid", + "type": "module", + "sideEffects": [], + "exports": { + ".": "./lib/index.js", + "./*": "./lib/*.js" + }, + "scripts": { + "clear": "rimraf lib" + }, + "files": [ + "package.json", + "LICENSE", + "README.md", + "CHANGELOG.md", + "lib", + "!lib/**/*.d.ts.map", + "!lib/**/*.test.js", + "!lib/**/*.test.d.ts", + "!lib/**/*.test.d.ts.map", + "!lib/**/*.test.js.map", + "!lib/tests", + "!.tsbuildinfo" + ], + "packageManager": "yarn@4.6.0", + "devDependencies": { + "@dbeaver/tsconfig": "workspace:^", + "@types/react": "^19", + "@types/react-dom": "^19", + "rimraf": "^6", + "typescript": "^5" + }, + "dependencies": { + "react": "^19", + "react-data-grid": "7.0.0-beta.47", + "react-dom": "^19" + } +} diff --git a/common-react/@dbeaver/react-data-grid/src/DataGrid.tsx b/common-react/@dbeaver/react-data-grid/src/DataGrid.tsx new file mode 100644 index 0000000000..697e79d62f --- /dev/null +++ b/common-react/@dbeaver/react-data-grid/src/DataGrid.tsx @@ -0,0 +1,45 @@ +// import { useSyncExternalStore } from 'react'; +import DataGridBase, { type ColumnOrColumnGroup } from 'react-data-grid'; +import 'react-data-grid/lib/styles.css'; + +export interface DataGridProps { + getHeaderHeight?: () => number; + getRowHeight?: (rowIdx: number) => number; + getHeaderText: (colIdx: number) => string; + getCellText: (rowIdx: number, colIdx: number) => string; + getColumnCount: () => number; + getRowCount: () => number; + subscribeToStore: (onStoreChange: () => void) => () => void; + className?: string; +} + +export const DataGrid: React.FC = function DataGrid({ + getHeaderText, + getCellText, + getColumnCount, + getRowCount, + getHeaderHeight, + getRowHeight, + subscribeToStore, + className, +}) { + // const store = useSyncExternalStore(subscribeToStore, () => { + // return { + // columns: getColumnCount(), + // rows: getRowCount(), + // }; + // }); + + const columns = new Array>(getColumnCount()).fill(null as any).map( + (_, i) => + ({ + key: i + '', + name: getHeaderText(i), + renderCell: ({ rowIdx }) => getCellText(rowIdx, i), + }) as ColumnOrColumnGroup, + ); + + const rows = new Array(getRowCount()).fill({}); + + return ; +}; diff --git a/common-react/@dbeaver/react-data-grid/src/index.ts b/common-react/@dbeaver/react-data-grid/src/index.ts new file mode 100644 index 0000000000..25b8541169 --- /dev/null +++ b/common-react/@dbeaver/react-data-grid/src/index.ts @@ -0,0 +1 @@ +export * from './DataGrid.js'; diff --git a/common-react/@dbeaver/react-data-grid/tsconfig.json b/common-react/@dbeaver/react-data-grid/tsconfig.json new file mode 100644 index 0000000000..9b5f89e66a --- /dev/null +++ b/common-react/@dbeaver/react-data-grid/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "@dbeaver/tsconfig/tsconfig.webview.json", + "compilerOptions": { + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "rootDir": "src", + "rootDirs": [ + "src" + ], + "outDir": "lib", + "incremental": true, + "composite": true + }, + "include": [ + "src" + ] +} diff --git a/common-react/README.md b/common-react/README.md new file mode 100644 index 0000000000..0626812ab4 --- /dev/null +++ b/common-react/README.md @@ -0,0 +1 @@ +# common-react diff --git a/common-react/package.json b/common-react/package.json new file mode 100644 index 0000000000..f4e0e72670 --- /dev/null +++ b/common-react/package.json @@ -0,0 +1,16 @@ +{ + "name": "common-react", + "packageManager": "yarn@4.6.0", + "private": true, + "workspaces": [ + "@dbeaver/*", + "../common-typescript" + ], + "devDependencies": { + "@dbeaver/prettier-config": "workspace:^", + "@wroud/ts-template": "^0", + "prettier": "^3", + "rimraf": "^6", + "typescript": "^5" + } +} diff --git a/common-react/yarn.lock b/common-react/yarn.lock new file mode 100644 index 0000000000..f20ceae44e --- /dev/null +++ b/common-react/yarn.lock @@ -0,0 +1,903 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.26.2, @babel/generator@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/generator@npm:7.26.5" + dependencies: + "@babel/parser": "npm:^7.26.5" + "@babel/types": "npm:^7.26.5" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/3be79e0aa03f38858a465d12ee2e468320b9122dc44fc85984713e32f16f4d77ce34a16a1a9505972782590e0b8d847b6f373621f9c6fafa1906d90f31416cb0 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d + languageName: node + linkType: hard + +"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/parser@npm:7.26.5" + dependencies: + "@babel/types": "npm:^7.26.5" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/2e77dd99ee028ee3c10fa03517ae1169f2432751adf71315e4dc0d90b61639d51760d622f418f6ac665ae4ea65f8485232a112ea0e76f18e5900225d3d19a61e + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" + dependencies: + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.25.9": + version: 7.26.5 + resolution: "@babel/traverse@npm:7.26.5" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.5" + "@babel/parser": "npm:^7.26.5" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.5" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/0779059ecf63e31446564cf31adf170e701e8017ef02c819c57924a9a83d6b2ce41dbff3ef295589da9410497a3e575655bb8084ca470e0ab1bc193128afa9fe + languageName: node + linkType: hard + +"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/types@npm:7.26.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/0278053b69d7c2b8573aa36dc5242cad95f0d965e1c0ed21ccacac6330092e59ba5949753448f6d6eccf6ad59baaef270295cc05218352e060ea8c68388638c4 + languageName: node + linkType: hard + +"@dbeaver/prettier-config@workspace:../common-typescript/@dbeaver/prettier-config, @dbeaver/prettier-config@workspace:^": + version: 0.0.0-use.local + resolution: "@dbeaver/prettier-config@workspace:../common-typescript/@dbeaver/prettier-config" + dependencies: + "@trivago/prettier-plugin-sort-imports": "npm:^5" + prettier: "npm:^3" + peerDependencies: + prettier: ">=3.0.0" + languageName: unknown + linkType: soft + +"@dbeaver/react-data-grid@workspace:@dbeaver/react-data-grid": + version: 0.0.0-use.local + resolution: "@dbeaver/react-data-grid@workspace:@dbeaver/react-data-grid" + dependencies: + "@dbeaver/tsconfig": "workspace:^" + "@types/react": "npm:^19" + "@types/react-dom": "npm:^19" + react: "npm:^19" + react-data-grid: "npm:7.0.0-beta.47" + react-dom: "npm:^19" + rimraf: "npm:^6" + typescript: "npm:^5" + languageName: unknown + linkType: soft + +"@dbeaver/tsconfig@workspace:../common-typescript/@dbeaver/tsconfig, @dbeaver/tsconfig@workspace:^": + version: 0.0.0-use.local + resolution: "@dbeaver/tsconfig@workspace:../common-typescript/@dbeaver/tsconfig" + languageName: unknown + linkType: soft + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@sec-ant/readable-stream@npm:^0.4.1": + version: 0.4.1 + resolution: "@sec-ant/readable-stream@npm:0.4.1" + checksum: 10c0/64e9e9cf161e848067a5bf60cdc04d18495dc28bb63a8d9f8993e4dd99b91ad34e4b563c85de17d91ffb177ec17a0664991d2e115f6543e73236a906068987af + languageName: node + linkType: hard + +"@sindresorhus/merge-streams@npm:^4.0.0": + version: 4.0.0 + resolution: "@sindresorhus/merge-streams@npm:4.0.0" + checksum: 10c0/482ee543629aa1933b332f811a1ae805a213681ecdd98c042b1c1b89387df63e7812248bb4df3910b02b3cc5589d3d73e4393f30e197c9dde18046ccd471fc6b + languageName: node + linkType: hard + +"@trivago/prettier-plugin-sort-imports@npm:^5": + version: 5.2.1 + resolution: "@trivago/prettier-plugin-sort-imports@npm:5.2.1" + dependencies: + "@babel/generator": "npm:^7.26.2" + "@babel/parser": "npm:^7.26.2" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + javascript-natural-sort: "npm:^0.7.1" + lodash: "npm:^4.17.21" + peerDependencies: + "@vue/compiler-sfc": 3.x + prettier: 2.x - 3.x + prettier-plugin-svelte: 3.x + svelte: 4.x || 5.x + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + prettier-plugin-svelte: + optional: true + svelte: + optional: true + checksum: 10c0/fd782f84d44c61159dce099775a86ebb5082b5e5eea205ec71d6fede3cf079aafb8f9a9979d5742ff0126598a37098cf679d5bad268320907513f2984df3d501 + languageName: node + linkType: hard + +"@types/react-dom@npm:^19": + version: 19.0.3 + resolution: "@types/react-dom@npm:19.0.3" + peerDependencies: + "@types/react": ^19.0.0 + checksum: 10c0/3867427b333cbe8cbba496d7cc20ec9676d32c25ae44f4d1263a4129d42e57cf4adf0039ad263432f1215b88075c27d326e7eb4ed646128235d01a76e661d48f + languageName: node + linkType: hard + +"@types/react@npm:^19": + version: 19.0.7 + resolution: "@types/react@npm:19.0.7" + dependencies: + csstype: "npm:^3.0.2" + checksum: 10c0/818e546fa03a2a65ac2652fc472891ac96684211e8967bc25e1da6a8a09e2301ad972b1b038d128f8b4cbbd7691f6f57fee274db568169e9b6b01556abbb5bee + languageName: node + linkType: hard + +"@wroud/ts-template@npm:^0": + version: 0.5.1 + resolution: "@wroud/ts-template@npm:0.5.1" + dependencies: + execa: "npm:^9" + picocolors: "npm:^1" + tslib: "npm:^2" + yargs: "npm:^17" + bin: + ts-template: ./lib/cli.js + tst: ./lib/cli.js + checksum: 10c0/09a76cd64337f91fb3aba812a1f6eeb083f6df955e6cd4c2d1cd3f676c6a0473d4ce818dad64869fbbe8c356f6832fbec5b2232a596acabeea841359ed692fc1 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clsx@npm:^2.0.0": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"common-react@workspace:.": + version: 0.0.0-use.local + resolution: "common-react@workspace:." + dependencies: + "@dbeaver/prettier-config": "workspace:^" + "@wroud/ts-template": "npm:^0" + prettier: "npm:^3" + rimraf: "npm:^6" + typescript: "npm:^5" + languageName: unknown + linkType: soft + +"common-typescript@workspace:../common-typescript": + version: 0.0.0-use.local + resolution: "common-typescript@workspace:../common-typescript" + dependencies: + "@dbeaver/prettier-config": "workspace:^" + prettier: "npm:^3" + languageName: unknown + linkType: soft + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"debug@npm:^4.3.1": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"execa@npm:^9": + version: 9.5.2 + resolution: "execa@npm:9.5.2" + dependencies: + "@sindresorhus/merge-streams": "npm:^4.0.0" + cross-spawn: "npm:^7.0.3" + figures: "npm:^6.1.0" + get-stream: "npm:^9.0.0" + human-signals: "npm:^8.0.0" + is-plain-obj: "npm:^4.1.0" + is-stream: "npm:^4.0.1" + npm-run-path: "npm:^6.0.0" + pretty-ms: "npm:^9.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^4.0.0" + yoctocolors: "npm:^2.0.0" + checksum: 10c0/94782a6282e03253224406c29068d18f9095cc251a45d1f19ac3d8f2a9db2cbe32fb8ceb039db1451d8fce3531135a6c0c559f76d634f85416268fc4a6995365 + languageName: node + linkType: hard + +"figures@npm:^6.1.0": + version: 6.1.0 + resolution: "figures@npm:6.1.0" + dependencies: + is-unicode-supported: "npm:^2.0.0" + checksum: 10c0/9159df4264d62ef447a3931537de92f5012210cf5135c35c010df50a2169377581378149abfe1eb238bd6acbba1c0d547b1f18e0af6eee49e30363cedaffcfe4 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-stream@npm:^9.0.0": + version: 9.0.1 + resolution: "get-stream@npm:9.0.1" + dependencies: + "@sec-ant/readable-stream": "npm:^0.4.1" + is-stream: "npm:^4.0.1" + checksum: 10c0/d70e73857f2eea1826ac570c3a912757dcfbe8a718a033fa0c23e12ac8e7d633195b01710e0559af574cbb5af101009b42df7b6f6b29ceec8dbdf7291931b948 + languageName: node + linkType: hard + +"glob@npm:^11.0.0": + version: 11.0.1 + resolution: "glob@npm:11.0.1" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^4.0.1" + minimatch: "npm:^10.0.0" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/2b32588be52e9e90f914c7d8dec32f3144b81b84054b0f70e9adfebf37cd7014570489f2a79d21f7801b9a4bd4cca94f426966bfd00fb64a5b705cfe10da3a03 + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"human-signals@npm:^8.0.0": + version: 8.0.0 + resolution: "human-signals@npm:8.0.0" + checksum: 10c0/e4dac4f7d3eb791ed04129fc6a85bd454a9102d3e3b76c911d0db7057ebd60b2956b435b5b5712aec18960488ede3c21ef7c56e42cdd70760c0d84d3c05cd92e + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.1.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + +"is-stream@npm:^4.0.1": + version: 4.0.1 + resolution: "is-stream@npm:4.0.1" + checksum: 10c0/2706c7f19b851327ba374687bc4a3940805e14ca496dc672b9629e744d143b1ad9c6f1b162dece81c7bfbc0f83b32b61ccc19ad2e05aad2dd7af347408f60c7f + languageName: node + linkType: hard + +"is-unicode-supported@npm:^2.0.0": + version: 2.1.0 + resolution: "is-unicode-supported@npm:2.1.0" + checksum: 10c0/a0f53e9a7c1fdbcf2d2ef6e40d4736fdffff1c9f8944c75e15425118ff3610172c87bf7bc6c34d3903b04be59790bb2212ddbe21ee65b5a97030fc50370545a5 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"jackspeak@npm:^4.0.1": + version: 4.0.2 + resolution: "jackspeak@npm:4.0.2" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10c0/b26039d11c0163a95b1e58851b9ac453cce64ad6d1eb98a00b303ad5eeb761b29d33c9419d1e16c016d3f7151c8edf7df223e6cf93a1907655fd95d6ce85c0de + languageName: node + linkType: hard + +"javascript-natural-sort@npm:^0.7.1": + version: 0.7.1 + resolution: "javascript-natural-sort@npm:0.7.1" + checksum: 10c0/340f8ffc5d30fb516e06dc540e8fa9e0b93c865cf49d791fed3eac3bdc5fc71f0066fc81d44ec1433edc87caecaf9f13eec4a1fce8c5beafc709a71eaedae6fe + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0": + version: 11.0.2 + resolution: "lru-cache@npm:11.0.2" + checksum: 10c0/c993b8e06ead0b24b969c1dbb5b301716aed66e320e9014a80012f5febe280b438f28ff50046b2c55ff404e889351ccb332ff91f8dd175a21f5eae80e3fb155f + languageName: node + linkType: hard + +"minimatch@npm:^10.0.0": + version: 10.0.1 + resolution: "minimatch@npm:10.0.1" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e6c29a81fe83e1877ad51348306be2e8aeca18c88fdee7a99df44322314279e15799e41d7cb274e4e8bb0b451a3bc622d6182e157dfa1717d6cda75e9cd8cd5d + languageName: node + linkType: hard + +"minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"npm-run-path@npm:^6.0.0": + version: 6.0.0 + resolution: "npm-run-path@npm:6.0.0" + dependencies: + path-key: "npm:^4.0.0" + unicorn-magic: "npm:^0.3.0" + checksum: 10c0/b223c8a0dcd608abf95363ea5c3c0ccc3cd877daf0102eaf1b0f2390d6858d8337fbb7c443af2403b067a7d2c116d10691ecd22ab3c5273c44da1ff8d07753bd + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"parse-ms@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-ms@npm:4.0.0" + checksum: 10c0/a7900f4f1ebac24cbf5e9708c16fb2fd482517fad353aecd7aefb8c2ba2f85ce017913ccb8925d231770404780df46244ea6fec598b3bde6490882358b4d2d16 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.0": + version: 2.0.0 + resolution: "path-scurry@npm:2.0.0" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/3da4adedaa8e7ef8d6dc4f35a0ff8f05a9b4d8365f2b28047752b62d4c1ad73eec21e37b1579ef2d075920157856a3b52ae8309c480a6f1a8bbe06ff8e52b33c + languageName: node + linkType: hard + +"picocolors@npm:^1, picocolors@npm:^1.0.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"prettier@npm:^3": + version: 3.4.2 + resolution: "prettier@npm:3.4.2" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 + languageName: node + linkType: hard + +"pretty-ms@npm:^9.0.0": + version: 9.2.0 + resolution: "pretty-ms@npm:9.2.0" + dependencies: + parse-ms: "npm:^4.0.0" + checksum: 10c0/ab6d066f90e9f77020426986e1b018369f41575674544c539aabec2e63a20fec01166d8cf6571d0e165ad11cfe5a8134a2a48a36d42ab291c59c6deca5264cbb + languageName: node + linkType: hard + +"react-data-grid@npm:7.0.0-beta.47": + version: 7.0.0-beta.47 + resolution: "react-data-grid@npm:7.0.0-beta.47" + dependencies: + clsx: "npm:^2.0.0" + peerDependencies: + react: ^18.0 || ^19.0 + react-dom: ^18.0 || ^19.0 + checksum: 10c0/d6bf758cd7d55a692c141e425920f62b64a3e899759bd912befe4ebf97a66234615ace78a441451683a5580ddd3b63dddf85dec9fbb583fa1e7008530799b1b4 + languageName: node + linkType: hard + +"react-dom@npm:^19": + version: 19.0.0 + resolution: "react-dom@npm:19.0.0" + dependencies: + scheduler: "npm:^0.25.0" + peerDependencies: + react: ^19.0.0 + checksum: 10c0/a36ce7ab507b237ae2759c984cdaad4af4096d8199fb65b3815c16825e5cfeb7293da790a3fc2184b52bfba7ba3ff31c058c01947aff6fd1a3701632aabaa6a9 + languageName: node + linkType: hard + +"react@npm:^19": + version: 19.0.0 + resolution: "react@npm:19.0.0" + checksum: 10c0/9cad8f103e8e3a16d15cb18a0d8115d8bd9f9e1ce3420310aea381eb42aa0a4f812cf047bb5441349257a05fba8a291515691e3cb51267279b2d2c3253f38471 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"rimraf@npm:^6": + version: 6.0.1 + resolution: "rimraf@npm:6.0.1" + dependencies: + glob: "npm:^11.0.0" + package-json-from-dist: "npm:^1.0.0" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/b30b6b072771f0d1e73b4ca5f37bb2944ee09375be9db5f558fcd3310000d29dfcfa93cf7734d75295ad5a7486dc8e40f63089ced1722a664539ffc0c3ece8c6 + languageName: node + linkType: hard + +"scheduler@npm:^0.25.0": + version: 0.25.0 + resolution: "scheduler@npm:0.25.0" + checksum: 10c0/a4bb1da406b613ce72c1299db43759526058fdcc413999c3c3e0db8956df7633acf395cb20eb2303b6a65d658d66b6585d344460abaee8080b4aa931f10eaafe + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-final-newline@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-final-newline@npm:4.0.0" + checksum: 10c0/b0cf2b62d597a1b0e3ebc42b88767f0a0d45601f89fd379a928a1812c8779440c81abba708082c946445af1d6b62d5f16e2a7cf4f30d9d6587b89425fae801ff + languageName: node + linkType: hard + +"tslib@npm:^2": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"typescript@npm:^5": + version: 5.7.3 + resolution: "typescript@npm:5.7.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/b7580d716cf1824736cc6e628ab4cd8b51877408ba2be0869d2866da35ef8366dd6ae9eb9d0851470a39be17cbd61df1126f9e211d8799d764ea7431d5435afa + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5#optional!builtin": + version: 5.7.3 + resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6fd7e0ed3bf23a81246878c613423730c40e8bdbfec4c6e4d7bf1b847cbb39076e56ad5f50aa9d7ebd89877999abaee216002d3f2818885e41c907caaa192cc4 + languageName: node + linkType: hard + +"unicorn-magic@npm:^0.3.0": + version: 0.3.0 + resolution: "unicorn-magic@npm:0.3.0" + checksum: 10c0/0a32a997d6c15f1c2a077a15b1c4ca6f268d574cf5b8975e778bb98e6f8db4ef4e86dfcae4e158cd4c7e38fb4dd383b93b13eefddc7f178dea13d3ac8a603271 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yoctocolors@npm:^2.0.0": + version: 2.1.1 + resolution: "yoctocolors@npm:2.1.1" + checksum: 10c0/85903f7fa96f1c70badee94789fade709f9d83dab2ec92753d612d84fcea6d34c772337a9f8914c6bed2f5fc03a428ac5d893e76fab636da5f1236ab725486d0 + languageName: node + linkType: hard diff --git a/common-typescript/.editorconfig b/common-typescript/.editorconfig new file mode 100644 index 0000000000..1ed453a371 --- /dev/null +++ b/common-typescript/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{js,json,yml}] +charset = utf-8 +indent_style = space +indent_size = 2 diff --git a/common-typescript/.gitattributes b/common-typescript/.gitattributes new file mode 100644 index 0000000000..af3ad12812 --- /dev/null +++ b/common-typescript/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/common-typescript/.gitignore b/common-typescript/.gitignore new file mode 100644 index 0000000000..870eb6a500 --- /dev/null +++ b/common-typescript/.gitignore @@ -0,0 +1,13 @@ +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Swap the comments on the following lines if you wish to use zero-installs +# In that case, don't forget to run `yarn config set enableGlobalCache false`! +# Documentation here: https://yarnpkg.com/features/caching#zero-installs + +#!.yarn/cache +.pnp.* diff --git a/common-typescript/.prettierrc.mjs b/common-typescript/.prettierrc.mjs new file mode 100644 index 0000000000..de21a410e9 --- /dev/null +++ b/common-typescript/.prettierrc.mjs @@ -0,0 +1,10 @@ +import defaultDbeaverConfig from '@dbeaver/prettier-config'; + +/** + * @type {import("prettier").Config} + */ +const config = { + ...defaultDbeaverConfig, +}; + +export default config; diff --git a/common-typescript/.vscode/extensions.json b/common-typescript/.vscode/extensions.json new file mode 100644 index 0000000000..bedb7ca3ac --- /dev/null +++ b/common-typescript/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "arcanis.vscode-zipfs", + "esbenp.prettier-vscode" + ] +} diff --git a/common-typescript/.vscode/settings.json b/common-typescript/.vscode/settings.json new file mode 100644 index 0000000000..003274530e --- /dev/null +++ b/common-typescript/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "prettier.prettierPath": ".yarn/sdks/prettier/index.cjs" +} diff --git a/common-typescript/.yarn/sdks/integrations.yml b/common-typescript/.yarn/sdks/integrations.yml new file mode 100644 index 0000000000..aa9d0d0ad8 --- /dev/null +++ b/common-typescript/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by @yarnpkg/sdks. +# Manual changes might be lost! + +integrations: + - vscode diff --git a/common-typescript/.yarn/sdks/prettier/bin/prettier.cjs b/common-typescript/.yarn/sdks/prettier/bin/prettier.cjs new file mode 100755 index 0000000000..9a4098f7dc --- /dev/null +++ b/common-typescript/.yarn/sdks/prettier/bin/prettier.cjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/bin/prettier.cjs + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real prettier/bin/prettier.cjs your application uses +module.exports = wrapWithUserWrapper(absRequire(`prettier/bin/prettier.cjs`)); diff --git a/common-typescript/.yarn/sdks/prettier/index.cjs b/common-typescript/.yarn/sdks/prettier/index.cjs new file mode 100644 index 0000000000..57cb2ab17f --- /dev/null +++ b/common-typescript/.yarn/sdks/prettier/index.cjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real prettier your application uses +module.exports = wrapWithUserWrapper(absRequire(`prettier`)); diff --git a/common-typescript/.yarn/sdks/prettier/package.json b/common-typescript/.yarn/sdks/prettier/package.json new file mode 100644 index 0000000000..b9ab57f09d --- /dev/null +++ b/common-typescript/.yarn/sdks/prettier/package.json @@ -0,0 +1,7 @@ +{ + "name": "prettier", + "version": "3.4.2-sdk", + "main": "./index.cjs", + "type": "commonjs", + "bin": "./bin/prettier.cjs" +} diff --git a/common-typescript/@dbeaver/prettier-config/config.js b/common-typescript/@dbeaver/prettier-config/config.js new file mode 100644 index 0000000000..e44fe1d19a --- /dev/null +++ b/common-typescript/@dbeaver/prettier-config/config.js @@ -0,0 +1,23 @@ +import sortImports from '@trivago/prettier-plugin-sort-imports'; + +/** + * @see https://prettier.io/docs/en/configuration.html + * @type {import("prettier").Config} + */ +const config = { + tabWidth: 2, + semi: true, + singleQuote: true, + trailingComma: 'all', + endOfLine: 'lf', + printWidth: 150, + arrowParens: 'avoid', + // plugins: [sortImports], + importOrderParserPlugins: ['typescript', 'jsx', 'decorators-legacy'], + importOrder: ['^@dbeaver/(.*)$', '^@cloudbeaver/(.*)$', '^[./]'], + importOrderSeparation: true, + importOrderSortSpecifiers: true, + importOrderCaseInsensitive: true, +}; + +export default config; diff --git a/common-typescript/@dbeaver/prettier-config/package.json b/common-typescript/@dbeaver/prettier-config/package.json new file mode 100644 index 0000000000..612b10b9f8 --- /dev/null +++ b/common-typescript/@dbeaver/prettier-config/package.json @@ -0,0 +1,19 @@ +{ + "name": "@dbeaver/prettier-config", + "version": "1.0.0", + "type": "module", + "exports": "./config.js", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@trivago/prettier-plugin-sort-imports": "^5" + }, + "peerDependencies": { + "prettier": ">=3.0.0" + }, + "devDependencies": { + "prettier": "^3" + } +} diff --git a/common-typescript/@dbeaver/tsconfig/README.md b/common-typescript/@dbeaver/tsconfig/README.md new file mode 100644 index 0000000000..8dde350b40 --- /dev/null +++ b/common-typescript/@dbeaver/tsconfig/README.md @@ -0,0 +1 @@ +# @dbeaver/tsconfig diff --git a/common-typescript/@dbeaver/tsconfig/package.json b/common-typescript/@dbeaver/tsconfig/package.json new file mode 100644 index 0000000000..cee6a55ae4 --- /dev/null +++ b/common-typescript/@dbeaver/tsconfig/package.json @@ -0,0 +1,4 @@ +{ + "name": "@dbeaver/tsconfig", + "packageManager": "yarn@4.6.0" +} diff --git a/common-typescript/@dbeaver/tsconfig/tsconfig.json b/common-typescript/@dbeaver/tsconfig/tsconfig.json new file mode 100644 index 0000000000..755b02b523 --- /dev/null +++ b/common-typescript/@dbeaver/tsconfig/tsconfig.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "include": [], + "compilerOptions": { + "target": "esnext", + "lib": [ + "esnext" + ], + "module": "nodenext", + "skipLibCheck": true, + "moduleResolution": "NodeNext", + "resolveJsonModule": true, + "importHelpers": true, + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true, + "exactOptionalPropertyTypes": false, + "verbatimModuleSyntax": true, + "checkJs": true, + "allowUnusedLabels": false, + "allowUnreachableCode": false, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true, + /* Source maps */ + "sourceMap": true, + /* project references */ + "declarationMap": true + } +} diff --git a/common-typescript/@dbeaver/tsconfig/tsconfig.webview.json b/common-typescript/@dbeaver/tsconfig/tsconfig.webview.json new file mode 100644 index 0000000000..8fc113e54f --- /dev/null +++ b/common-typescript/@dbeaver/tsconfig/tsconfig.webview.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "include": [], + "compilerOptions": { + "target": "ESNext", + "lib": [ + "DOM", + "DOM.AsyncIterable", + "DOM.Iterable", + "esnext" + ], + "jsx": "react-jsx", + "module": "nodenext", + "skipLibCheck": true, + "moduleResolution": "NodeNext", + "resolveJsonModule": true, + "importHelpers": true, + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true, + "exactOptionalPropertyTypes": false, + "verbatimModuleSyntax": true, + "checkJs": true, + "allowUnusedLabels": false, + "allowUnreachableCode": false, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true, + /* Source maps */ + "sourceMap": true, + /* project references */ + "declarationMap": true + } +} diff --git a/common-typescript/@dbeaver/tsconfig/tsconfig.webworker.json b/common-typescript/@dbeaver/tsconfig/tsconfig.webworker.json new file mode 100644 index 0000000000..f92fa7b90d --- /dev/null +++ b/common-typescript/@dbeaver/tsconfig/tsconfig.webworker.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "include": [], + "compilerOptions": { + "target": "esnext", + "lib": [ + "esnext", + "WebWorker" + ], + "module": "nodenext", + "skipLibCheck": true, + "moduleResolution": "NodeNext", + "resolveJsonModule": true, + "importHelpers": true, + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true, + "exactOptionalPropertyTypes": false, + "verbatimModuleSyntax": true, + "checkJs": true, + "allowUnusedLabels": false, + "allowUnreachableCode": false, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true, + /* Source maps */ + "sourceMap": true, + /* project references */ + "declarationMap": true + } +} diff --git a/common-typescript/README.md b/common-typescript/README.md new file mode 100644 index 0000000000..9c61707494 --- /dev/null +++ b/common-typescript/README.md @@ -0,0 +1 @@ +# common-typescript diff --git a/common-typescript/package.json b/common-typescript/package.json new file mode 100644 index 0000000000..638c116869 --- /dev/null +++ b/common-typescript/package.json @@ -0,0 +1,12 @@ +{ + "name": "common-typescript", + "packageManager": "yarn@4.6.0", + "private": true, + "workspaces": [ + "@dbeaver/*" + ], + "devDependencies": { + "@dbeaver/prettier-config": "workspace:^", + "prettier": "^3" + } +} diff --git a/common-typescript/yarn.lock b/common-typescript/yarn.lock new file mode 100644 index 0000000000..a543112e55 --- /dev/null +++ b/common-typescript/yarn.lock @@ -0,0 +1,257 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.26.2, @babel/generator@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/generator@npm:7.26.5" + dependencies: + "@babel/parser": "npm:^7.26.5" + "@babel/types": "npm:^7.26.5" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/3be79e0aa03f38858a465d12ee2e468320b9122dc44fc85984713e32f16f4d77ce34a16a1a9505972782590e0b8d847b6f373621f9c6fafa1906d90f31416cb0 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d + languageName: node + linkType: hard + +"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/parser@npm:7.26.5" + dependencies: + "@babel/types": "npm:^7.26.5" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/2e77dd99ee028ee3c10fa03517ae1169f2432751adf71315e4dc0d90b61639d51760d622f418f6ac665ae4ea65f8485232a112ea0e76f18e5900225d3d19a61e + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" + dependencies: + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.25.9": + version: 7.26.5 + resolution: "@babel/traverse@npm:7.26.5" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.5" + "@babel/parser": "npm:^7.26.5" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.5" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/0779059ecf63e31446564cf31adf170e701e8017ef02c819c57924a9a83d6b2ce41dbff3ef295589da9410497a3e575655bb8084ca470e0ab1bc193128afa9fe + languageName: node + linkType: hard + +"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/types@npm:7.26.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/0278053b69d7c2b8573aa36dc5242cad95f0d965e1c0ed21ccacac6330092e59ba5949753448f6d6eccf6ad59baaef270295cc05218352e060ea8c68388638c4 + languageName: node + linkType: hard + +"@dbeaver/prettier-config@workspace:@dbeaver/prettier-config, @dbeaver/prettier-config@workspace:^": + version: 0.0.0-use.local + resolution: "@dbeaver/prettier-config@workspace:@dbeaver/prettier-config" + dependencies: + "@trivago/prettier-plugin-sort-imports": "npm:^5" + prettier: "npm:^3" + peerDependencies: + prettier: ">=3.0.0" + languageName: unknown + linkType: soft + +"@dbeaver/tsconfig@workspace:@dbeaver/tsconfig": + version: 0.0.0-use.local + resolution: "@dbeaver/tsconfig@workspace:@dbeaver/tsconfig" + languageName: unknown + linkType: soft + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@trivago/prettier-plugin-sort-imports@npm:^5": + version: 5.2.1 + resolution: "@trivago/prettier-plugin-sort-imports@npm:5.2.1" + dependencies: + "@babel/generator": "npm:^7.26.2" + "@babel/parser": "npm:^7.26.2" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + javascript-natural-sort: "npm:^0.7.1" + lodash: "npm:^4.17.21" + peerDependencies: + "@vue/compiler-sfc": 3.x + prettier: 2.x - 3.x + prettier-plugin-svelte: 3.x + svelte: 4.x || 5.x + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + prettier-plugin-svelte: + optional: true + svelte: + optional: true + checksum: 10c0/fd782f84d44c61159dce099775a86ebb5082b5e5eea205ec71d6fede3cf079aafb8f9a9979d5742ff0126598a37098cf679d5bad268320907513f2984df3d501 + languageName: node + linkType: hard + +"common-typescript@workspace:.": + version: 0.0.0-use.local + resolution: "common-typescript@workspace:." + dependencies: + "@dbeaver/prettier-config": "workspace:^" + prettier: "npm:^3" + languageName: unknown + linkType: soft + +"debug@npm:^4.3.1": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"javascript-natural-sort@npm:^0.7.1": + version: 0.7.1 + resolution: "javascript-natural-sort@npm:0.7.1" + checksum: 10c0/340f8ffc5d30fb516e06dc540e8fa9e0b93c865cf49d791fed3eac3bdc5fc71f0066fc81d44ec1433edc87caecaf9f13eec4a1fce8c5beafc709a71eaedae6fe + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"prettier@npm:^3": + version: 3.4.2 + resolution: "prettier@npm:3.4.2" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 + languageName: node + linkType: hard diff --git a/generate_workspace.sh b/generate_workspace.sh old mode 100644 new mode 100755 diff --git a/vscode-java-configs/.editorconfig b/vscode-java-configs/.editorconfig new file mode 100644 index 0000000000..1ed453a371 --- /dev/null +++ b/vscode-java-configs/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{js,json,yml}] +charset = utf-8 +indent_style = space +indent_size = 2 diff --git a/vscode-java-configs/.gitattributes b/vscode-java-configs/.gitattributes new file mode 100644 index 0000000000..af3ad12812 --- /dev/null +++ b/vscode-java-configs/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/vscode-java-configs/.gitignore b/vscode-java-configs/.gitignore new file mode 100644 index 0000000000..870eb6a500 --- /dev/null +++ b/vscode-java-configs/.gitignore @@ -0,0 +1,13 @@ +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Swap the comments on the following lines if you wish to use zero-installs +# In that case, don't forget to run `yarn config set enableGlobalCache false`! +# Documentation here: https://yarnpkg.com/features/caching#zero-installs + +#!.yarn/cache +.pnp.* diff --git a/vscode-java-configs/.vscode/extensions.json b/vscode-java-configs/.vscode/extensions.json new file mode 100644 index 0000000000..06dd640c09 --- /dev/null +++ b/vscode-java-configs/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "arcanis.vscode-zipfs" + ] +} diff --git a/vscode-java-configs/.vscode/settings.json b/vscode-java-configs/.vscode/settings.json new file mode 100644 index 0000000000..7629b325de --- /dev/null +++ b/vscode-java-configs/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "typescript.tsdk": ".yarn/sdks/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/vscode-java-configs/.yarn/sdks/integrations.yml b/vscode-java-configs/.yarn/sdks/integrations.yml new file mode 100644 index 0000000000..aa9d0d0ad8 --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by @yarnpkg/sdks. +# Manual changes might be lost! + +integrations: + - vscode diff --git a/vscode-java-configs/.yarn/sdks/typescript/bin/tsc b/vscode-java-configs/.yarn/sdks/typescript/bin/tsc new file mode 100755 index 0000000000..867a7bdfe2 --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/bin/tsc @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsc + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/bin/tsc your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsc`)); diff --git a/vscode-java-configs/.yarn/sdks/typescript/bin/tsserver b/vscode-java-configs/.yarn/sdks/typescript/bin/tsserver new file mode 100755 index 0000000000..3fc5aa31cc --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/bin/tsserver @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsserver + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/bin/tsserver your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsserver`)); diff --git a/vscode-java-configs/.yarn/sdks/typescript/lib/tsc.js b/vscode-java-configs/.yarn/sdks/typescript/lib/tsc.js new file mode 100644 index 0000000000..da411bdba0 --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/lib/tsc.js @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsc.js + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/lib/tsc.js your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/lib/tsc.js`)); diff --git a/vscode-java-configs/.yarn/sdks/typescript/lib/tsserver.js b/vscode-java-configs/.yarn/sdks/typescript/lib/tsserver.js new file mode 100644 index 0000000000..6249c4675a --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/lib/tsserver.js @@ -0,0 +1,248 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserver.js + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +const moduleWrapper = exports => { + return wrapWithUserWrapper(moduleWrapperFn(exports)); +}; + +const moduleWrapperFn = tsserver => { + if (!process.versions.pnp) { + return tsserver; + } + + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); + const isPortal = str => str.startsWith("portal:/"); + const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes it much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) { + str = resolved; + } + } + + str = normalize(str); + + if (str.match(/\.zip\//)) { + switch (hostInfo) { + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + // 2021-10-08: VSCode changed the format in 1.61. + // Before | ^zip:/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + // 2022-04-06: VSCode changed the format in 1.66. + // Before | ^/zip//c:/foo/bar.zip/package.json + // After | ^/zip/c:/foo/bar.zip/package.json + // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + case `vscode <1.61`: { + str = `^zip:${str}`; + } break; + + case `vscode <1.66`: { + str = `^/zip/${str}`; + } break; + + case `vscode <1.68`: { + str = `^/zip${str}`; + } break; + + case `vscode`: { + str = `^/zip/${str}`; + } break; + + // To make "go to definition" work, + // We have to resolve the actual file system path from virtual path + // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) + case `coc-nvim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = resolve(`zipfile:${str}`); + } break; + + // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) + // We have to resolve the actual file system path from virtual path, + // everything else is up to neovim + case `neovim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = `zipfile://${str}`; + } break; + + default: { + str = `zip:${str}`; + } break; + } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); + } + } + + return str; + } + + function fromEditorPath(str) { + switch (hostInfo) { + case `coc-nvim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for coc-nvim is in format of //zipfile://.yarn/... + // So in order to convert it back, we use .* to match all the thing + // before `zipfile:` + return process.platform === `win32` + ? str.replace(/^.*zipfile:\//, ``) + : str.replace(/^.*zipfile:/, ``); + } break; + + case `neovim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for neovim is in format of zipfile:////.yarn/... + return str.replace(/^zipfile:\/\//, ``); + } break; + + case `vscode`: + default: { + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) + } break; + } + } + + // Force enable 'allowLocalPluginLoads' + // TypeScript tries to resolve plugins using a path relative to itself + // which doesn't work when using the global cache + // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 + // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but + // TypeScript already does local loads and if this code is running the user trusts the workspace + // https://github.com/microsoft/vscode/issues/45856 + const ConfiguredProject = tsserver.server.ConfiguredProject; + const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; + ConfiguredProject.prototype.enablePluginsWithOptions = function() { + this.projectService.allowLocalPluginLoads = true; + return originalEnablePluginsWithOptions.apply(this, arguments); + }; + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let hostInfo = `unknown`; + + Object.assign(Session.prototype, { + onMessage(/** @type {string | object} */ message) { + const isStringMessage = typeof message === 'string'; + const parsedMessage = isStringMessage ? JSON.parse(message) : message; + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + typeof parsedMessage.arguments.hostInfo === `string` + ) { + hostInfo = parsedMessage.arguments.hostInfo; + if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } + } + } + } + + const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => { + return typeof value === 'string' ? fromEditorPath(value) : value; + }); + + return originalOnMessage.call( + this, + isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON) + ); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); + + return tsserver; +}; + +const [major, minor] = absRequire(`typescript/package.json`).version.split(`.`, 2).map(value => parseInt(value, 10)); +// In TypeScript@>=5.5 the tsserver uses the public TypeScript API so that needs to be patched as well. +// Ref https://github.com/microsoft/TypeScript/pull/55326 +if (major > 5 || (major === 5 && minor >= 5)) { + moduleWrapper(absRequire(`typescript`)); +} + +// Defer to the real typescript/lib/tsserver.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`)); diff --git a/vscode-java-configs/.yarn/sdks/typescript/lib/tsserverlibrary.js b/vscode-java-configs/.yarn/sdks/typescript/lib/tsserverlibrary.js new file mode 100644 index 0000000000..0e50e0a2b0 --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/lib/tsserverlibrary.js @@ -0,0 +1,248 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserverlibrary.js + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +const moduleWrapper = exports => { + return wrapWithUserWrapper(moduleWrapperFn(exports)); +}; + +const moduleWrapperFn = tsserver => { + if (!process.versions.pnp) { + return tsserver; + } + + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); + const isPortal = str => str.startsWith("portal:/"); + const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes it much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) { + str = resolved; + } + } + + str = normalize(str); + + if (str.match(/\.zip\//)) { + switch (hostInfo) { + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + // 2021-10-08: VSCode changed the format in 1.61. + // Before | ^zip:/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + // 2022-04-06: VSCode changed the format in 1.66. + // Before | ^/zip//c:/foo/bar.zip/package.json + // After | ^/zip/c:/foo/bar.zip/package.json + // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + case `vscode <1.61`: { + str = `^zip:${str}`; + } break; + + case `vscode <1.66`: { + str = `^/zip/${str}`; + } break; + + case `vscode <1.68`: { + str = `^/zip${str}`; + } break; + + case `vscode`: { + str = `^/zip/${str}`; + } break; + + // To make "go to definition" work, + // We have to resolve the actual file system path from virtual path + // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) + case `coc-nvim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = resolve(`zipfile:${str}`); + } break; + + // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) + // We have to resolve the actual file system path from virtual path, + // everything else is up to neovim + case `neovim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = `zipfile://${str}`; + } break; + + default: { + str = `zip:${str}`; + } break; + } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); + } + } + + return str; + } + + function fromEditorPath(str) { + switch (hostInfo) { + case `coc-nvim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for coc-nvim is in format of //zipfile://.yarn/... + // So in order to convert it back, we use .* to match all the thing + // before `zipfile:` + return process.platform === `win32` + ? str.replace(/^.*zipfile:\//, ``) + : str.replace(/^.*zipfile:/, ``); + } break; + + case `neovim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for neovim is in format of zipfile:////.yarn/... + return str.replace(/^zipfile:\/\//, ``); + } break; + + case `vscode`: + default: { + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) + } break; + } + } + + // Force enable 'allowLocalPluginLoads' + // TypeScript tries to resolve plugins using a path relative to itself + // which doesn't work when using the global cache + // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 + // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but + // TypeScript already does local loads and if this code is running the user trusts the workspace + // https://github.com/microsoft/vscode/issues/45856 + const ConfiguredProject = tsserver.server.ConfiguredProject; + const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; + ConfiguredProject.prototype.enablePluginsWithOptions = function() { + this.projectService.allowLocalPluginLoads = true; + return originalEnablePluginsWithOptions.apply(this, arguments); + }; + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let hostInfo = `unknown`; + + Object.assign(Session.prototype, { + onMessage(/** @type {string | object} */ message) { + const isStringMessage = typeof message === 'string'; + const parsedMessage = isStringMessage ? JSON.parse(message) : message; + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + typeof parsedMessage.arguments.hostInfo === `string` + ) { + hostInfo = parsedMessage.arguments.hostInfo; + if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } + } + } + } + + const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => { + return typeof value === 'string' ? fromEditorPath(value) : value; + }); + + return originalOnMessage.call( + this, + isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON) + ); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); + + return tsserver; +}; + +const [major, minor] = absRequire(`typescript/package.json`).version.split(`.`, 2).map(value => parseInt(value, 10)); +// In TypeScript@>=5.5 the tsserver uses the public TypeScript API so that needs to be patched as well. +// Ref https://github.com/microsoft/TypeScript/pull/55326 +if (major > 5 || (major === 5 && minor >= 5)) { + moduleWrapper(absRequire(`typescript`)); +} + +// Defer to the real typescript/lib/tsserverlibrary.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`)); diff --git a/vscode-java-configs/.yarn/sdks/typescript/lib/typescript.js b/vscode-java-configs/.yarn/sdks/typescript/lib/typescript.js new file mode 100644 index 0000000000..7b6cc22079 --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/lib/typescript.js @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript`)); diff --git a/vscode-java-configs/.yarn/sdks/typescript/package.json b/vscode-java-configs/.yarn/sdks/typescript/package.json new file mode 100644 index 0000000000..d6d5ec3c15 --- /dev/null +++ b/vscode-java-configs/.yarn/sdks/typescript/package.json @@ -0,0 +1,10 @@ +{ + "name": "typescript", + "version": "5.7.3-sdk", + "main": "./lib/typescript.js", + "type": "commonjs", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + } +} diff --git a/vscode-java-configs/README.md b/vscode-java-configs/README.md new file mode 100644 index 0000000000..1b02209c1f --- /dev/null +++ b/vscode-java-configs/README.md @@ -0,0 +1 @@ +# vscode-java-configs diff --git a/javaConfig.json b/vscode-java-configs/javaConfig.json similarity index 100% rename from javaConfig.json rename to vscode-java-configs/javaConfig.json diff --git a/org.jkiss.cloudbeaver.tp.target b/vscode-java-configs/org.jkiss.cloudbeaver.tp.target similarity index 64% rename from org.jkiss.cloudbeaver.tp.target rename to vscode-java-configs/org.jkiss.cloudbeaver.tp.target index d67fb5bf55..6d0e8b2132 100644 --- a/org.jkiss.cloudbeaver.tp.target +++ b/vscode-java-configs/org.jkiss.cloudbeaver.tp.target @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/vscode-java-configs/package.json b/vscode-java-configs/package.json new file mode 100644 index 0000000000..8eabbd3c91 --- /dev/null +++ b/vscode-java-configs/package.json @@ -0,0 +1,7 @@ +{ + "name": "vscode-java-configs", + "packageManager": "yarn@4.6.0", + "devDependencies": { + "typescript": "^5" + } +} diff --git a/vscode-java-configs/yarn.lock b/vscode-java-configs/yarn.lock new file mode 100644 index 0000000000..a34413e5a1 --- /dev/null +++ b/vscode-java-configs/yarn.lock @@ -0,0 +1,34 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"typescript@npm:^5": + version: 5.7.3 + resolution: "typescript@npm:5.7.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/b7580d716cf1824736cc6e628ab4cd8b51877408ba2be0869d2866da35ef8366dd6ae9eb9d0851470a39be17cbd61df1126f9e211d8799d764ea7431d5435afa + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5#optional!builtin": + version: 5.7.3 + resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6fd7e0ed3bf23a81246878c613423730c40e8bdbfec4c6e4d7bf1b847cbb39076e56ad5f50aa9d7ebd89877999abaee216002d3f2818885e41c907caaa192cc4 + languageName: node + linkType: hard + +"vscode-java-configs@workspace:.": + version: 0.0.0-use.local + resolution: "vscode-java-configs@workspace:." + dependencies: + typescript: "npm:^5" + languageName: unknown + linkType: soft diff --git a/webapp/.gitattributes b/webapp/.gitattributes new file mode 100644 index 0000000000..af3ad12812 --- /dev/null +++ b/webapp/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/webapp/.gitignore b/webapp/.gitignore index d9ea6b69ed..9a44e82d76 100644 --- a/webapp/.gitignore +++ b/webapp/.gitignore @@ -1,4 +1,17 @@ -.idea +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Swap the comments on the following lines if you wish to use zero-installs +# In that case, don't forget to run `yarn config set enableGlobalCache false`! +# Documentation here: https://yarnpkg.com/features/caching#zero-installs + +#!.yarn/cache +.pnp.* + node_modules src/**/*.js src/**/*.js.map diff --git a/webapp/.prettierrc.mjs b/webapp/.prettierrc.mjs new file mode 100644 index 0000000000..de21a410e9 --- /dev/null +++ b/webapp/.prettierrc.mjs @@ -0,0 +1,10 @@ +import defaultDbeaverConfig from '@dbeaver/prettier-config'; + +/** + * @type {import("prettier").Config} + */ +const config = { + ...defaultDbeaverConfig, +}; + +export default config; diff --git a/webapp/.vscode/extensions.json b/webapp/.vscode/extensions.json new file mode 100644 index 0000000000..daaa5ee2ec --- /dev/null +++ b/webapp/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "arcanis.vscode-zipfs", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode" + ] +} diff --git a/webapp/.vscode/settings.json b/webapp/.vscode/settings.json new file mode 100644 index 0000000000..b7e02b5c94 --- /dev/null +++ b/webapp/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "eslint.nodePath": ".yarn/sdks", + "prettier.prettierPath": ".yarn/sdks/prettier/index.cjs", + "typescript.tsdk": ".yarn/sdks/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/webapp/.yarn/plugins/@yarnpkg/plugin-ts-project-linker.cjs b/webapp/.yarn/plugins/@yarnpkg/plugin-ts-project-linker.cjs new file mode 100644 index 0000000000..39e5a79818 --- /dev/null +++ b/webapp/.yarn/plugins/@yarnpkg/plugin-ts-project-linker.cjs @@ -0,0 +1,74 @@ +/* eslint-disable */ +//prettier-ignore +module.exports = { +name: "@yarnpkg/plugin-ts-project-linker", +factory: function (require) { +var plugin=(()=>{var vl=Object.create;var kt=Object.defineProperty;var Sl=Object.getOwnPropertyDescriptor;var Al=Object.getOwnPropertyNames;var Cl=Object.getPrototypeOf,bl=Object.prototype.hasOwnProperty;var O=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Fl=(t,e)=>{for(var r in e)kt(t,r,{get:e[r],enumerable:!0})},as=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Al(e))!bl.call(t,a)&&a!==r&&kt(t,a,{get:()=>e[a],enumerable:!(i=Sl(e,a))||i.enumerable});return t};var ne=(t,e,r)=>(r=t!=null?vl(Cl(t)):{},as(e||!t||!t.__esModule?kt(r,"default",{value:t,enumerable:!0}):r,t)),wl=t=>as(kt({},"__esModule",{value:!0}),t);var ls=_((Z0,Fr)=>{var Bt=process||{},us=Bt.argv||[],Tt=Bt.env||{},_l=!(Tt.NO_COLOR||us.includes("--no-color"))&&(!!Tt.FORCE_COLOR||us.includes("--color")||Bt.platform==="win32"||(Bt.stdout||{}).isTTY&&Tt.TERM!=="dumb"||!!Tt.CI),kl=(t,e,r=t)=>i=>{let a=""+i,c=a.indexOf(e,t.length);return~c?t+Tl(a,e,r,c)+e:t+a+e},Tl=(t,e,r,i)=>{let a="",c=0;do a+=t.substring(c,i)+r,c=i+e.length,i=t.indexOf(e,c);while(~i);return a+t.substring(c)},cs=(t=_l)=>{let e=t?kl:()=>String;return{isColorSupported:t,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};Fr.exports=cs();Fr.exports.createColors=cs});var hs=_((dt,wr)=>{(function(e,r){typeof dt=="object"&&typeof wr=="object"?wr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof dt=="object"?dt.esprima=r():e.esprima=r()})(dt,function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var a=e[i]={exports:{},id:i,loaded:!1};return t[i].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}return r.m=t,r.c=e,r.p="",r(0)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(1),a=r(3),c=r(8),u=r(15);function x(l,n,s){var o=null,f=function(P,N){s&&s(P,N),o&&o.visit(P,N)},E=typeof s=="function"?f:null,g=!1;if(n){g=typeof n.comment=="boolean"&&n.comment;var v=typeof n.attachComment=="boolean"&&n.attachComment;(g||v)&&(o=new i.CommentHandler,o.attach=v,n.comment=!0,E=f)}var F=!1;n&&typeof n.sourceType=="string"&&(F=n.sourceType==="module");var A;n&&typeof n.jsx=="boolean"&&n.jsx?A=new a.JSXParser(l,n,E):A=new c.Parser(l,n,E);var T=F?A.parseModule():A.parseScript(),k=T;return g&&o&&(k.comments=o.comments),A.config.tokens&&(k.tokens=A.tokens),A.config.tolerant&&(k.errors=A.errorHandler.errors),k}e.parse=x;function d(l,n,s){var o=n||{};return o.sourceType="module",x(l,o,s)}e.parseModule=d;function p(l,n,s){var o=n||{};return o.sourceType="script",x(l,o,s)}e.parseScript=p;function h(l,n,s){var o=new u.Tokenizer(l,n),f;f=[];try{for(;;){var E=o.getNextToken();if(!E)break;s&&(E=s(E)),f.push(E)}}catch(g){o.errorHandler.tolerate(g)}return o.errorHandler.tolerant&&(f.errors=o.errors()),f}e.tokenize=h;var m=r(2);e.Syntax=m.Syntax,e.version="4.0.1"},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(2),a=function(){function c(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return c.prototype.insertInnerComments=function(u,x){if(u.type===i.Syntax.BlockStatement&&u.body.length===0){for(var d=[],p=this.leading.length-1;p>=0;--p){var h=this.leading[p];x.end.offset>=h.start&&(d.unshift(h.comment),this.leading.splice(p,1),this.trailing.splice(p,1))}d.length&&(u.innerComments=d)}},c.prototype.findTrailingComments=function(u){var x=[];if(this.trailing.length>0){for(var d=this.trailing.length-1;d>=0;--d){var p=this.trailing[d];p.start>=u.end.offset&&x.unshift(p.comment)}return this.trailing.length=0,x}var h=this.stack[this.stack.length-1];if(h&&h.node.trailingComments){var m=h.node.trailingComments[0];m&&m.range[0]>=u.end.offset&&(x=h.node.trailingComments,delete h.node.trailingComments)}return x},c.prototype.findLeadingComments=function(u){for(var x=[],d;this.stack.length>0;){var p=this.stack[this.stack.length-1];if(p&&p.start>=u.start.offset)d=p.node,this.stack.pop();else break}if(d){for(var h=d.leadingComments?d.leadingComments.length:0,m=h-1;m>=0;--m){var l=d.leadingComments[m];l.range[1]<=u.start.offset&&(x.unshift(l),d.leadingComments.splice(m,1))}return d.leadingComments&&d.leadingComments.length===0&&delete d.leadingComments,x}for(var m=this.leading.length-1;m>=0;--m){var p=this.leading[m];p.start<=u.start.offset&&(x.unshift(p.comment),this.leading.splice(m,1))}return x},c.prototype.visitNode=function(u,x){if(!(u.type===i.Syntax.Program&&u.body.length>0)){this.insertInnerComments(u,x);var d=this.findTrailingComments(x),p=this.findLeadingComments(x);p.length>0&&(u.leadingComments=p),d.length>0&&(u.trailingComments=d),this.stack.push({node:u,start:x.start.offset})}},c.prototype.visitComment=function(u,x){var d=u.type[0]==="L"?"Line":"Block",p={type:d,value:u.value};if(u.range&&(p.range=u.range),u.loc&&(p.loc=u.loc),this.comments.push(p),this.attach){var h={comment:{type:d,value:u.value,range:[x.start.offset,x.end.offset]},start:x.start.offset};u.loc&&(h.comment.loc=u.loc),u.type=d,this.leading.push(h),this.trailing.push(h)}},c.prototype.visit=function(u,x){u.type==="LineComment"?this.visitComment(u,x):u.type==="BlockComment"?this.visitComment(u,x):this.attach&&this.visitNode(u,x)},c}();e.CommentHandler=a},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(t,e,r){"use strict";var i=this&&this.__extends||function(){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var f in o)o.hasOwnProperty(f)&&(s[f]=o[f])};return function(s,o){n(s,o);function f(){this.constructor=s}s.prototype=o===null?Object.create(o):(f.prototype=o.prototype,new f)}}();Object.defineProperty(e,"__esModule",{value:!0});var a=r(4),c=r(5),u=r(6),x=r(7),d=r(8),p=r(13),h=r(14);p.TokenName[100]="JSXIdentifier",p.TokenName[101]="JSXText";function m(n){var s;switch(n.type){case u.JSXSyntax.JSXIdentifier:var o=n;s=o.name;break;case u.JSXSyntax.JSXNamespacedName:var f=n;s=m(f.namespace)+":"+m(f.name);break;case u.JSXSyntax.JSXMemberExpression:var E=n;s=m(E.object)+"."+m(E.property);break;default:break}return s}var l=function(n){i(s,n);function s(o,f,E){return n.call(this,o,f,E)||this}return s.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():n.prototype.parsePrimaryExpression.call(this)},s.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.line,this.scanner.lineStart=this.startMarker.index-this.startMarker.column},s.prototype.finishJSX=function(){this.nextToken()},s.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},s.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},s.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},s.prototype.scanXHTMLEntity=function(o){for(var f="&",E=!0,g=!1,v=!1,F=!1;!this.scanner.eof()&&E&&!g;){var A=this.scanner.source[this.scanner.index];if(A===o)break;if(g=A===";",f+=A,++this.scanner.index,!g)switch(f.length){case 2:v=A==="#";break;case 3:v&&(F=A==="x",E=F||a.Character.isDecimalDigit(A.charCodeAt(0)),v=v&&!F);break;default:E=E&&!(v&&!a.Character.isDecimalDigit(A.charCodeAt(0))),E=E&&!(F&&!a.Character.isHexDigit(A.charCodeAt(0)));break}}if(E&&g&&f.length>2){var T=f.substr(1,f.length-2);v&&T.length>1?f=String.fromCharCode(parseInt(T.substr(1),10)):F&&T.length>2?f=String.fromCharCode(parseInt("0"+T.substr(1),16)):!v&&!F&&h.XHTMLEntities[T]&&(f=h.XHTMLEntities[T])}return f},s.prototype.lexJSX=function(){var o=this.scanner.source.charCodeAt(this.scanner.index);if(o===60||o===62||o===47||o===58||o===61||o===123||o===125){var f=this.scanner.source[this.scanner.index++];return{type:7,value:f,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index}}if(o===34||o===39){for(var E=this.scanner.index,g=this.scanner.source[this.scanner.index++],v="";!this.scanner.eof();){var F=this.scanner.source[this.scanner.index++];if(F===g)break;F==="&"?v+=this.scanXHTMLEntity(g):v+=F}return{type:8,value:v,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:E,end:this.scanner.index}}if(o===46){var A=this.scanner.source.charCodeAt(this.scanner.index+1),T=this.scanner.source.charCodeAt(this.scanner.index+2),f=A===46&&T===46?"...":".",E=this.scanner.index;return this.scanner.index+=f.length,{type:7,value:f,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:E,end:this.scanner.index}}if(o===96)return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(a.Character.isIdentifierStart(o)&&o!==92){var E=this.scanner.index;for(++this.scanner.index;!this.scanner.eof();){var F=this.scanner.source.charCodeAt(this.scanner.index);if(a.Character.isIdentifierPart(F)&&F!==92)++this.scanner.index;else if(F===45)++this.scanner.index;else break}var k=this.scanner.source.slice(E,this.scanner.index);return{type:100,value:k,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:E,end:this.scanner.index}}return this.scanner.lex()},s.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;var o=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(o)),o},s.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;for(var o=this.scanner.index,f="";!this.scanner.eof();){var E=this.scanner.source[this.scanner.index];if(E==="{"||E==="<")break;++this.scanner.index,f+=E,a.Character.isLineTerminator(E.charCodeAt(0))&&(++this.scanner.lineNumber,E==="\r"&&this.scanner.source[this.scanner.index]===` +`&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var g={type:101,value:f,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:o,end:this.scanner.index};return f.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(g)),g},s.prototype.peekJSXToken=function(){var o=this.scanner.saveState();this.scanner.scanComments();var f=this.lexJSX();return this.scanner.restoreState(o),f},s.prototype.expectJSX=function(o){var f=this.nextJSXToken();(f.type!==7||f.value!==o)&&this.throwUnexpectedToken(f)},s.prototype.matchJSX=function(o){var f=this.peekJSXToken();return f.type===7&&f.value===o},s.prototype.parseJSXIdentifier=function(){var o=this.createJSXNode(),f=this.nextJSXToken();return f.type!==100&&this.throwUnexpectedToken(f),this.finalize(o,new c.JSXIdentifier(f.value))},s.prototype.parseJSXElementName=function(){var o=this.createJSXNode(),f=this.parseJSXIdentifier();if(this.matchJSX(":")){var E=f;this.expectJSX(":");var g=this.parseJSXIdentifier();f=this.finalize(o,new c.JSXNamespacedName(E,g))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var v=f;this.expectJSX(".");var F=this.parseJSXIdentifier();f=this.finalize(o,new c.JSXMemberExpression(v,F))}return f},s.prototype.parseJSXAttributeName=function(){var o=this.createJSXNode(),f,E=this.parseJSXIdentifier();if(this.matchJSX(":")){var g=E;this.expectJSX(":");var v=this.parseJSXIdentifier();f=this.finalize(o,new c.JSXNamespacedName(g,v))}else f=E;return f},s.prototype.parseJSXStringLiteralAttribute=function(){var o=this.createJSXNode(),f=this.nextJSXToken();f.type!==8&&this.throwUnexpectedToken(f);var E=this.getTokenRaw(f);return this.finalize(o,new x.Literal(f.value,E))},s.prototype.parseJSXExpressionAttribute=function(){var o=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var f=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(o,new c.JSXExpressionContainer(f))},s.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},s.prototype.parseJSXNameValueAttribute=function(){var o=this.createJSXNode(),f=this.parseJSXAttributeName(),E=null;return this.matchJSX("=")&&(this.expectJSX("="),E=this.parseJSXAttributeValue()),this.finalize(o,new c.JSXAttribute(f,E))},s.prototype.parseJSXSpreadAttribute=function(){var o=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var f=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(o,new c.JSXSpreadAttribute(f))},s.prototype.parseJSXAttributes=function(){for(var o=[];!this.matchJSX("/")&&!this.matchJSX(">");){var f=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();o.push(f)}return o},s.prototype.parseJSXOpeningElement=function(){var o=this.createJSXNode();this.expectJSX("<");var f=this.parseJSXElementName(),E=this.parseJSXAttributes(),g=this.matchJSX("/");return g&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(o,new c.JSXOpeningElement(f,g,E))},s.prototype.parseJSXBoundaryElement=function(){var o=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var f=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(o,new c.JSXClosingElement(f))}var E=this.parseJSXElementName(),g=this.parseJSXAttributes(),v=this.matchJSX("/");return v&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(o,new c.JSXOpeningElement(E,v,g))},s.prototype.parseJSXEmptyExpression=function(){var o=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.finalize(o,new c.JSXEmptyExpression)},s.prototype.parseJSXExpressionContainer=function(){var o=this.createJSXNode();this.expectJSX("{");var f;return this.matchJSX("}")?(f=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),f=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(o,new c.JSXExpressionContainer(f))},s.prototype.parseJSXChildren=function(){for(var o=[];!this.scanner.eof();){var f=this.createJSXChildNode(),E=this.nextJSXText();if(E.start0){var F=this.finalize(o.node,new c.JSXElement(o.opening,o.children,o.closing));o=f[f.length-1],o.children.push(F),f.pop()}else break}}return o},s.prototype.parseJSXElement=function(){var o=this.createJSXNode(),f=this.parseJSXOpeningElement(),E=[],g=null;if(!f.selfClosing){var v=this.parseComplexJSXElement({node:o,opening:f,closing:g,children:E});E=v.children,g=v.closing}return this.finalize(o,new c.JSXElement(f,E,g))},s.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var o=this.parseJSXElement();return this.finishJSX(),o},s.prototype.isStartOfExpression=function(){return n.prototype.isStartOfExpression.call(this)||this.match("<")},s}(d.Parser);e.JSXParser=l},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={NonAsciiIdentifierStart:/[\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\u0561-\u0587\u05D0-\u05EA\u05F0-\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\u08A0-\u08B4\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\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\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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-\u2C2E\u2C30-\u2C5E\u2C60-\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-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\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\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};e.Character={fromCodePoint:function(i){return i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023))},isWhiteSpace:function(i){return i===32||i===9||i===11||i===12||i===160||i>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(i)>=0},isLineTerminator:function(i){return i===10||i===13||i===8232||i===8233},isIdentifierStart:function(i){return i===36||i===95||i>=65&&i<=90||i>=97&&i<=122||i===92||i>=128&&r.NonAsciiIdentifierStart.test(e.Character.fromCodePoint(i))},isIdentifierPart:function(i){return i===36||i===95||i>=65&&i<=90||i>=97&&i<=122||i>=48&&i<=57||i===92||i>=128&&r.NonAsciiIdentifierPart.test(e.Character.fromCodePoint(i))},isDecimalDigit:function(i){return i>=48&&i<=57},isHexDigit:function(i){return i>=48&&i<=57||i>=65&&i<=70||i>=97&&i<=102},isOctalDigit:function(i){return i>=48&&i<=55}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(6),a=function(){function o(f){this.type=i.JSXSyntax.JSXClosingElement,this.name=f}return o}();e.JSXClosingElement=a;var c=function(){function o(f,E,g){this.type=i.JSXSyntax.JSXElement,this.openingElement=f,this.children=E,this.closingElement=g}return o}();e.JSXElement=c;var u=function(){function o(){this.type=i.JSXSyntax.JSXEmptyExpression}return o}();e.JSXEmptyExpression=u;var x=function(){function o(f){this.type=i.JSXSyntax.JSXExpressionContainer,this.expression=f}return o}();e.JSXExpressionContainer=x;var d=function(){function o(f){this.type=i.JSXSyntax.JSXIdentifier,this.name=f}return o}();e.JSXIdentifier=d;var p=function(){function o(f,E){this.type=i.JSXSyntax.JSXMemberExpression,this.object=f,this.property=E}return o}();e.JSXMemberExpression=p;var h=function(){function o(f,E){this.type=i.JSXSyntax.JSXAttribute,this.name=f,this.value=E}return o}();e.JSXAttribute=h;var m=function(){function o(f,E){this.type=i.JSXSyntax.JSXNamespacedName,this.namespace=f,this.name=E}return o}();e.JSXNamespacedName=m;var l=function(){function o(f,E,g){this.type=i.JSXSyntax.JSXOpeningElement,this.name=f,this.selfClosing=E,this.attributes=g}return o}();e.JSXOpeningElement=l;var n=function(){function o(f){this.type=i.JSXSyntax.JSXSpreadAttribute,this.argument=f}return o}();e.JSXSpreadAttribute=n;var s=function(){function o(f,E){this.type=i.JSXSyntax.JSXText,this.value=f,this.raw=E}return o}();e.JSXText=s},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(2),a=function(){function D(y){this.type=i.Syntax.ArrayExpression,this.elements=y}return D}();e.ArrayExpression=a;var c=function(){function D(y){this.type=i.Syntax.ArrayPattern,this.elements=y}return D}();e.ArrayPattern=c;var u=function(){function D(y,w,M){this.type=i.Syntax.ArrowFunctionExpression,this.id=null,this.params=y,this.body=w,this.generator=!1,this.expression=M,this.async=!1}return D}();e.ArrowFunctionExpression=u;var x=function(){function D(y,w,M){this.type=i.Syntax.AssignmentExpression,this.operator=y,this.left=w,this.right=M}return D}();e.AssignmentExpression=x;var d=function(){function D(y,w){this.type=i.Syntax.AssignmentPattern,this.left=y,this.right=w}return D}();e.AssignmentPattern=d;var p=function(){function D(y,w,M){this.type=i.Syntax.ArrowFunctionExpression,this.id=null,this.params=y,this.body=w,this.generator=!1,this.expression=M,this.async=!0}return D}();e.AsyncArrowFunctionExpression=p;var h=function(){function D(y,w,M){this.type=i.Syntax.FunctionDeclaration,this.id=y,this.params=w,this.body=M,this.generator=!1,this.expression=!1,this.async=!0}return D}();e.AsyncFunctionDeclaration=h;var m=function(){function D(y,w,M){this.type=i.Syntax.FunctionExpression,this.id=y,this.params=w,this.body=M,this.generator=!1,this.expression=!1,this.async=!0}return D}();e.AsyncFunctionExpression=m;var l=function(){function D(y){this.type=i.Syntax.AwaitExpression,this.argument=y}return D}();e.AwaitExpression=l;var n=function(){function D(y,w,M){var ae=y==="||"||y==="&&";this.type=ae?i.Syntax.LogicalExpression:i.Syntax.BinaryExpression,this.operator=y,this.left=w,this.right=M}return D}();e.BinaryExpression=n;var s=function(){function D(y){this.type=i.Syntax.BlockStatement,this.body=y}return D}();e.BlockStatement=s;var o=function(){function D(y){this.type=i.Syntax.BreakStatement,this.label=y}return D}();e.BreakStatement=o;var f=function(){function D(y,w){this.type=i.Syntax.CallExpression,this.callee=y,this.arguments=w}return D}();e.CallExpression=f;var E=function(){function D(y,w){this.type=i.Syntax.CatchClause,this.param=y,this.body=w}return D}();e.CatchClause=E;var g=function(){function D(y){this.type=i.Syntax.ClassBody,this.body=y}return D}();e.ClassBody=g;var v=function(){function D(y,w,M){this.type=i.Syntax.ClassDeclaration,this.id=y,this.superClass=w,this.body=M}return D}();e.ClassDeclaration=v;var F=function(){function D(y,w,M){this.type=i.Syntax.ClassExpression,this.id=y,this.superClass=w,this.body=M}return D}();e.ClassExpression=F;var A=function(){function D(y,w){this.type=i.Syntax.MemberExpression,this.computed=!0,this.object=y,this.property=w}return D}();e.ComputedMemberExpression=A;var T=function(){function D(y,w,M){this.type=i.Syntax.ConditionalExpression,this.test=y,this.consequent=w,this.alternate=M}return D}();e.ConditionalExpression=T;var k=function(){function D(y){this.type=i.Syntax.ContinueStatement,this.label=y}return D}();e.ContinueStatement=k;var P=function(){function D(){this.type=i.Syntax.DebuggerStatement}return D}();e.DebuggerStatement=P;var N=function(){function D(y,w){this.type=i.Syntax.ExpressionStatement,this.expression=y,this.directive=w}return D}();e.Directive=N;var U=function(){function D(y,w){this.type=i.Syntax.DoWhileStatement,this.body=y,this.test=w}return D}();e.DoWhileStatement=U;var S=function(){function D(){this.type=i.Syntax.EmptyStatement}return D}();e.EmptyStatement=S;var j=function(){function D(y){this.type=i.Syntax.ExportAllDeclaration,this.source=y}return D}();e.ExportAllDeclaration=j;var J=function(){function D(y){this.type=i.Syntax.ExportDefaultDeclaration,this.declaration=y}return D}();e.ExportDefaultDeclaration=J;var ye=function(){function D(y,w,M){this.type=i.Syntax.ExportNamedDeclaration,this.declaration=y,this.specifiers=w,this.source=M}return D}();e.ExportNamedDeclaration=ye;var C=function(){function D(y,w){this.type=i.Syntax.ExportSpecifier,this.exported=w,this.local=y}return D}();e.ExportSpecifier=C;var b=function(){function D(y){this.type=i.Syntax.ExpressionStatement,this.expression=y}return D}();e.ExpressionStatement=b;var Y=function(){function D(y,w,M){this.type=i.Syntax.ForInStatement,this.left=y,this.right=w,this.body=M,this.each=!1}return D}();e.ForInStatement=Y;var $=function(){function D(y,w,M){this.type=i.Syntax.ForOfStatement,this.left=y,this.right=w,this.body=M}return D}();e.ForOfStatement=$;var he=function(){function D(y,w,M,ae){this.type=i.Syntax.ForStatement,this.init=y,this.test=w,this.update=M,this.body=ae}return D}();e.ForStatement=he;var fe=function(){function D(y,w,M,ae){this.type=i.Syntax.FunctionDeclaration,this.id=y,this.params=w,this.body=M,this.generator=ae,this.expression=!1,this.async=!1}return D}();e.FunctionDeclaration=fe;var ie=function(){function D(y,w,M,ae){this.type=i.Syntax.FunctionExpression,this.id=y,this.params=w,this.body=M,this.generator=ae,this.expression=!1,this.async=!1}return D}();e.FunctionExpression=ie;var Ye=function(){function D(y){this.type=i.Syntax.Identifier,this.name=y}return D}();e.Identifier=Ye;var Ar=function(){function D(y,w,M){this.type=i.Syntax.IfStatement,this.test=y,this.consequent=w,this.alternate=M}return D}();e.IfStatement=Ar;var Qe=function(){function D(y,w){this.type=i.Syntax.ImportDeclaration,this.specifiers=y,this.source=w}return D}();e.ImportDeclaration=Qe;var we=function(){function D(y){this.type=i.Syntax.ImportDefaultSpecifier,this.local=y}return D}();e.ImportDefaultSpecifier=we;var X=function(){function D(y){this.type=i.Syntax.ImportNamespaceSpecifier,this.local=y}return D}();e.ImportNamespaceSpecifier=X;var Ze=function(){function D(y,w){this.type=i.Syntax.ImportSpecifier,this.local=y,this.imported=w}return D}();e.ImportSpecifier=Ze;var Cr=function(){function D(y,w){this.type=i.Syntax.LabeledStatement,this.label=y,this.body=w}return D}();e.LabeledStatement=Cr;var R=function(){function D(y,w){this.type=i.Syntax.Literal,this.value=y,this.raw=w}return D}();e.Literal=R;var z=function(){function D(y,w){this.type=i.Syntax.MetaProperty,this.meta=y,this.property=w}return D}();e.MetaProperty=z;var B=function(){function D(y,w,M,ae,br){this.type=i.Syntax.MethodDefinition,this.key=y,this.computed=w,this.value=M,this.kind=ae,this.static=br}return D}();e.MethodDefinition=B;var H=function(){function D(y){this.type=i.Syntax.Program,this.body=y,this.sourceType="module"}return D}();e.Module=H;var q=function(){function D(y,w){this.type=i.Syntax.NewExpression,this.callee=y,this.arguments=w}return D}();e.NewExpression=q;var Q=function(){function D(y){this.type=i.Syntax.ObjectExpression,this.properties=y}return D}();e.ObjectExpression=Q;var K=function(){function D(y){this.type=i.Syntax.ObjectPattern,this.properties=y}return D}();e.ObjectPattern=K;var pt=function(){function D(y,w,M,ae,br,yl){this.type=i.Syntax.Property,this.key=w,this.computed=M,this.value=ae,this.kind=y,this.method=br,this.shorthand=yl}return D}();e.Property=pt;var et=function(){function D(y,w,M,ae){this.type=i.Syntax.Literal,this.value=y,this.raw=w,this.regex={pattern:M,flags:ae}}return D}();e.RegexLiteral=et;var Qc=function(){function D(y){this.type=i.Syntax.RestElement,this.argument=y}return D}();e.RestElement=Qc;var Zc=function(){function D(y){this.type=i.Syntax.ReturnStatement,this.argument=y}return D}();e.ReturnStatement=Zc;var el=function(){function D(y){this.type=i.Syntax.Program,this.body=y,this.sourceType="script"}return D}();e.Script=el;var tl=function(){function D(y){this.type=i.Syntax.SequenceExpression,this.expressions=y}return D}();e.SequenceExpression=tl;var rl=function(){function D(y){this.type=i.Syntax.SpreadElement,this.argument=y}return D}();e.SpreadElement=rl;var il=function(){function D(y,w){this.type=i.Syntax.MemberExpression,this.computed=!1,this.object=y,this.property=w}return D}();e.StaticMemberExpression=il;var nl=function(){function D(){this.type=i.Syntax.Super}return D}();e.Super=nl;var sl=function(){function D(y,w){this.type=i.Syntax.SwitchCase,this.test=y,this.consequent=w}return D}();e.SwitchCase=sl;var al=function(){function D(y,w){this.type=i.Syntax.SwitchStatement,this.discriminant=y,this.cases=w}return D}();e.SwitchStatement=al;var ol=function(){function D(y,w){this.type=i.Syntax.TaggedTemplateExpression,this.tag=y,this.quasi=w}return D}();e.TaggedTemplateExpression=ol;var ul=function(){function D(y,w){this.type=i.Syntax.TemplateElement,this.value=y,this.tail=w}return D}();e.TemplateElement=ul;var cl=function(){function D(y,w){this.type=i.Syntax.TemplateLiteral,this.quasis=y,this.expressions=w}return D}();e.TemplateLiteral=cl;var ll=function(){function D(){this.type=i.Syntax.ThisExpression}return D}();e.ThisExpression=ll;var hl=function(){function D(y){this.type=i.Syntax.ThrowStatement,this.argument=y}return D}();e.ThrowStatement=hl;var fl=function(){function D(y,w,M){this.type=i.Syntax.TryStatement,this.block=y,this.handler=w,this.finalizer=M}return D}();e.TryStatement=fl;var pl=function(){function D(y,w){this.type=i.Syntax.UnaryExpression,this.operator=y,this.argument=w,this.prefix=!0}return D}();e.UnaryExpression=pl;var dl=function(){function D(y,w,M){this.type=i.Syntax.UpdateExpression,this.operator=y,this.argument=w,this.prefix=M}return D}();e.UpdateExpression=dl;var ml=function(){function D(y,w){this.type=i.Syntax.VariableDeclaration,this.declarations=y,this.kind=w}return D}();e.VariableDeclaration=ml;var xl=function(){function D(y,w){this.type=i.Syntax.VariableDeclarator,this.id=y,this.init=w}return D}();e.VariableDeclarator=xl;var El=function(){function D(y,w){this.type=i.Syntax.WhileStatement,this.test=y,this.body=w}return D}();e.WhileStatement=El;var gl=function(){function D(y,w){this.type=i.Syntax.WithStatement,this.object=y,this.body=w}return D}();e.WithStatement=gl;var Dl=function(){function D(y,w){this.type=i.Syntax.YieldExpression,this.argument=y,this.delegate=w}return D}();e.YieldExpression=Dl},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(9),a=r(10),c=r(11),u=r(7),x=r(12),d=r(2),p=r(13),h="ArrowParameterPlaceHolder",m=function(){function l(n,s,o){s===void 0&&(s={}),this.config={range:typeof s.range=="boolean"&&s.range,loc:typeof s.loc=="boolean"&&s.loc,source:null,tokens:typeof s.tokens=="boolean"&&s.tokens,comment:typeof s.comment=="boolean"&&s.comment,tolerant:typeof s.tolerant=="boolean"&&s.tolerant},this.config.loc&&s.source&&s.source!==null&&(this.config.source=String(s.source)),this.delegate=o,this.errorHandler=new a.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new x.Scanner(n,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={isModule:!1,await:!1,allowIn:!0,allowStrictDirective:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:!1},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}return l.prototype.throwError=function(n){for(var s=[],o=1;o0&&this.delegate)for(var s=0;s>="||n===">>>="||n==="&="||n==="^="||n==="|="},l.prototype.isolateCoverGrammar=function(n){var s=this.context.isBindingElement,o=this.context.isAssignmentTarget,f=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var E=n.call(this);return this.context.firstCoverInitializedNameError!==null&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=s,this.context.isAssignmentTarget=o,this.context.firstCoverInitializedNameError=f,E},l.prototype.inheritCoverGrammar=function(n){var s=this.context.isBindingElement,o=this.context.isAssignmentTarget,f=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var E=n.call(this);return this.context.isBindingElement=this.context.isBindingElement&&s,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&o,this.context.firstCoverInitializedNameError=f||this.context.firstCoverInitializedNameError,E},l.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(this.lookahead.type!==2&&!this.match("}")&&this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)},l.prototype.parsePrimaryExpression=function(){var n=this.createNode(),s,o,f;switch(this.lookahead.type){case 3:(this.context.isModule||this.context.await)&&this.lookahead.value==="await"&&this.tolerateUnexpectedToken(this.lookahead),s=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(n,new u.Identifier(this.nextToken().value));break;case 6:case 8:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,c.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,o=this.nextToken(),f=this.getTokenRaw(o),s=this.finalize(n,new u.Literal(o.value,f));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,o=this.nextToken(),f=this.getTokenRaw(o),s=this.finalize(n,new u.Literal(o.value==="true",f));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,o=this.nextToken(),f=this.getTokenRaw(o),s=this.finalize(n,new u.Literal(null,f));break;case 10:s=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,s=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":s=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":s=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,o=this.nextRegexToken(),f=this.getTokenRaw(o),s=this.finalize(n,new u.RegexLiteral(o.regex,f,o.pattern,o.flags));break;default:s=this.throwUnexpectedToken(this.nextToken())}break;case 4:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?s=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?s=this.finalize(n,new u.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?s=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),s=this.finalize(n,new u.ThisExpression)):this.matchKeyword("class")?s=this.parseClassExpression():s=this.throwUnexpectedToken(this.nextToken()));break;default:s=this.throwUnexpectedToken(this.nextToken())}return s},l.prototype.parseSpreadElement=function(){var n=this.createNode();this.expect("...");var s=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(n,new u.SpreadElement(s))},l.prototype.parseArrayInitializer=function(){var n=this.createNode(),s=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),s.push(null);else if(this.match("...")){var o=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),s.push(o)}else s.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(n,new u.ArrayExpression(s))},l.prototype.parsePropertyMethod=function(n){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var s=this.context.strict,o=this.context.allowStrictDirective;this.context.allowStrictDirective=n.simple;var f=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&n.firstRestricted&&this.tolerateUnexpectedToken(n.firstRestricted,n.message),this.context.strict&&n.stricted&&this.tolerateUnexpectedToken(n.stricted,n.message),this.context.strict=s,this.context.allowStrictDirective=o,f},l.prototype.parsePropertyMethodFunction=function(){var n=!1,s=this.createNode(),o=this.context.allowYield;this.context.allowYield=!0;var f=this.parseFormalParameters(),E=this.parsePropertyMethod(f);return this.context.allowYield=o,this.finalize(s,new u.FunctionExpression(null,f.params,E,n))},l.prototype.parsePropertyMethodAsyncFunction=function(){var n=this.createNode(),s=this.context.allowYield,o=this.context.await;this.context.allowYield=!1,this.context.await=!0;var f=this.parseFormalParameters(),E=this.parsePropertyMethod(f);return this.context.allowYield=s,this.context.await=o,this.finalize(n,new u.AsyncFunctionExpression(null,f.params,E))},l.prototype.parseObjectPropertyKey=function(){var n=this.createNode(),s=this.nextToken(),o;switch(s.type){case 8:case 6:this.context.strict&&s.octal&&this.tolerateUnexpectedToken(s,c.Messages.StrictOctalLiteral);var f=this.getTokenRaw(s);o=this.finalize(n,new u.Literal(s.value,f));break;case 3:case 1:case 5:case 4:o=this.finalize(n,new u.Identifier(s.value));break;case 7:s.value==="["?(o=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):o=this.throwUnexpectedToken(s);break;default:o=this.throwUnexpectedToken(s)}return o},l.prototype.isPropertyKey=function(n,s){return n.type===d.Syntax.Identifier&&n.name===s||n.type===d.Syntax.Literal&&n.value===s},l.prototype.parseObjectProperty=function(n){var s=this.createNode(),o=this.lookahead,f,E=null,g=null,v=!1,F=!1,A=!1,T=!1;if(o.type===3){var k=o.value;this.nextToken(),v=this.match("["),T=!this.hasLineTerminator&&k==="async"&&!this.match(":")&&!this.match("(")&&!this.match("*")&&!this.match(","),E=T?this.parseObjectPropertyKey():this.finalize(s,new u.Identifier(k))}else this.match("*")?this.nextToken():(v=this.match("["),E=this.parseObjectPropertyKey());var P=this.qualifiedPropertyName(this.lookahead);if(o.type===3&&!T&&o.value==="get"&&P)f="get",v=this.match("["),E=this.parseObjectPropertyKey(),this.context.allowYield=!1,g=this.parseGetterMethod();else if(o.type===3&&!T&&o.value==="set"&&P)f="set",v=this.match("["),E=this.parseObjectPropertyKey(),g=this.parseSetterMethod();else if(o.type===7&&o.value==="*"&&P)f="init",v=this.match("["),E=this.parseObjectPropertyKey(),g=this.parseGeneratorMethod(),F=!0;else if(E||this.throwUnexpectedToken(this.lookahead),f="init",this.match(":")&&!T)!v&&this.isPropertyKey(E,"__proto__")&&(n.value&&this.tolerateError(c.Messages.DuplicateProtoProperty),n.value=!0),this.nextToken(),g=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))g=T?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),F=!0;else if(o.type===3){var k=this.finalize(s,new u.Identifier(o.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),A=!0;var N=this.isolateCoverGrammar(this.parseAssignmentExpression);g=this.finalize(s,new u.AssignmentPattern(k,N))}else A=!0,g=k}else this.throwUnexpectedToken(this.nextToken());return this.finalize(s,new u.Property(f,E,v,g,F,A))},l.prototype.parseObjectInitializer=function(){var n=this.createNode();this.expect("{");for(var s=[],o={value:!1};!this.match("}");)s.push(this.parseObjectProperty(o)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(n,new u.ObjectExpression(s))},l.prototype.parseTemplateHead=function(){i.assert(this.lookahead.head,"Template literal must start with a template head");var n=this.createNode(),s=this.nextToken(),o=s.value,f=s.cooked;return this.finalize(n,new u.TemplateElement({raw:o,cooked:f},s.tail))},l.prototype.parseTemplateElement=function(){this.lookahead.type!==10&&this.throwUnexpectedToken();var n=this.createNode(),s=this.nextToken(),o=s.value,f=s.cooked;return this.finalize(n,new u.TemplateElement({raw:o,cooked:f},s.tail))},l.prototype.parseTemplateLiteral=function(){var n=this.createNode(),s=[],o=[],f=this.parseTemplateHead();for(o.push(f);!f.tail;)s.push(this.parseExpression()),f=this.parseTemplateElement(),o.push(f);return this.finalize(n,new u.TemplateLiteral(o,s))},l.prototype.reinterpretExpressionAsPattern=function(n){switch(n.type){case d.Syntax.Identifier:case d.Syntax.MemberExpression:case d.Syntax.RestElement:case d.Syntax.AssignmentPattern:break;case d.Syntax.SpreadElement:n.type=d.Syntax.RestElement,this.reinterpretExpressionAsPattern(n.argument);break;case d.Syntax.ArrayExpression:n.type=d.Syntax.ArrayPattern;for(var s=0;s")||this.expect("=>"),n={type:h,params:[],async:!1};else{var s=this.lookahead,o=[];if(this.match("..."))n=this.parseRestElement(o),this.expect(")"),this.match("=>")||this.expect("=>"),n={type:h,params:[n],async:!1};else{var f=!1;if(this.context.isBindingElement=!0,n=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var E=[];for(this.context.isAssignmentTarget=!1,E.push(n);this.lookahead.type!==2&&this.match(",");){if(this.nextToken(),this.match(")")){this.nextToken();for(var g=0;g")||this.expect("=>"),this.context.isBindingElement=!1;for(var g=0;g")&&(n.type===d.Syntax.Identifier&&n.name==="yield"&&(f=!0,n={type:h,params:[n],async:!1}),!f)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),n.type===d.Syntax.SequenceExpression)for(var g=0;g")){for(var F=0;F0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var E=[n,this.lookahead],g=s,v=this.isolateCoverGrammar(this.parseExponentiationExpression),F=[g,o.value,v],A=[f];f=this.binaryPrecedence(this.lookahead),!(f<=0);){for(;F.length>2&&f<=A[A.length-1];){v=F.pop();var T=F.pop();A.pop(),g=F.pop(),E.pop();var k=this.startNode(E[E.length-1]);F.push(this.finalize(k,new u.BinaryExpression(T,g,v)))}F.push(this.nextToken().value),A.push(f),E.push(this.lookahead),F.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var P=F.length-1;s=F[P];for(var N=E.pop();P>1;){var U=E.pop(),S=N&&N.lineStart,k=this.startNode(U,S),T=F[P-1];s=this.finalize(k,new u.BinaryExpression(T,F[P-2],s)),P-=2,N=U}}return s},l.prototype.parseConditionalExpression=function(){var n=this.lookahead,s=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var o=this.context.allowIn;this.context.allowIn=!0;var f=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=o,this.expect(":");var E=this.isolateCoverGrammar(this.parseAssignmentExpression);s=this.finalize(this.startNode(n),new u.ConditionalExpression(s,f,E)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return s},l.prototype.checkPatternParam=function(n,s){switch(s.type){case d.Syntax.Identifier:this.validateParam(n,s,s.name);break;case d.Syntax.RestElement:this.checkPatternParam(n,s.argument);break;case d.Syntax.AssignmentPattern:this.checkPatternParam(n,s.left);break;case d.Syntax.ArrayPattern:for(var o=0;o")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var E=n.async,g=this.reinterpretAsCoverFormalsList(n);if(g){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var v=this.context.strict,F=this.context.allowStrictDirective;this.context.allowStrictDirective=g.simple;var A=this.context.allowYield,T=this.context.await;this.context.allowYield=!0,this.context.await=E;var k=this.startNode(s);this.expect("=>");var P=void 0;if(this.match("{")){var N=this.context.allowIn;this.context.allowIn=!0,P=this.parseFunctionSourceElements(),this.context.allowIn=N}else P=this.isolateCoverGrammar(this.parseAssignmentExpression);var U=P.type!==d.Syntax.BlockStatement;this.context.strict&&g.firstRestricted&&this.throwUnexpectedToken(g.firstRestricted,g.message),this.context.strict&&g.stricted&&this.tolerateUnexpectedToken(g.stricted,g.message),n=E?this.finalize(k,new u.AsyncArrowFunctionExpression(g.params,P,U)):this.finalize(k,new u.ArrowFunctionExpression(g.params,P,U)),this.context.strict=v,this.context.allowStrictDirective=F,this.context.allowYield=A,this.context.await=T}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(c.Messages.InvalidLHSInAssignment),this.context.strict&&n.type===d.Syntax.Identifier){var S=n;this.scanner.isRestrictedWord(S.name)&&this.tolerateUnexpectedToken(o,c.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(S.name)&&this.tolerateUnexpectedToken(o,c.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(n):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),o=this.nextToken();var j=o.value,J=this.isolateCoverGrammar(this.parseAssignmentExpression);n=this.finalize(this.startNode(s),new u.AssignmentExpression(j,n,J)),this.context.firstCoverInitializedNameError=null}}return n},l.prototype.parseExpression=function(){var n=this.lookahead,s=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var o=[];for(o.push(s);this.lookahead.type!==2&&this.match(",");)this.nextToken(),o.push(this.isolateCoverGrammar(this.parseAssignmentExpression));s=this.finalize(this.startNode(n),new u.SequenceExpression(o))}return s},l.prototype.parseStatementListItem=function(){var n;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,this.lookahead.type===4)switch(this.lookahead.value){case"export":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,c.Messages.IllegalExportDeclaration),n=this.parseExportDeclaration();break;case"import":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,c.Messages.IllegalImportDeclaration),n=this.parseImportDeclaration();break;case"const":n=this.parseLexicalDeclaration({inFor:!1});break;case"function":n=this.parseFunctionDeclaration();break;case"class":n=this.parseClassDeclaration();break;case"let":n=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:!1}):this.parseStatement();break;default:n=this.parseStatement();break}else n=this.parseStatement();return n},l.prototype.parseBlock=function(){var n=this.createNode();this.expect("{");for(var s=[];!this.match("}");)s.push(this.parseStatementListItem());return this.expect("}"),this.finalize(n,new u.BlockStatement(s))},l.prototype.parseLexicalBinding=function(n,s){var o=this.createNode(),f=[],E=this.parsePattern(f,n);this.context.strict&&E.type===d.Syntax.Identifier&&this.scanner.isRestrictedWord(E.name)&&this.tolerateError(c.Messages.StrictVarName);var g=null;return n==="const"?!this.matchKeyword("in")&&!this.matchContextualKeyword("of")&&(this.match("=")?(this.nextToken(),g=this.isolateCoverGrammar(this.parseAssignmentExpression)):this.throwError(c.Messages.DeclarationMissingInitializer,"const")):(!s.inFor&&E.type!==d.Syntax.Identifier||this.match("="))&&(this.expect("="),g=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(o,new u.VariableDeclarator(E,g))},l.prototype.parseBindingList=function(n,s){for(var o=[this.parseLexicalBinding(n,s)];this.match(",");)this.nextToken(),o.push(this.parseLexicalBinding(n,s));return o},l.prototype.isLexicalDeclaration=function(){var n=this.scanner.saveState();this.scanner.scanComments();var s=this.scanner.lex();return this.scanner.restoreState(n),s.type===3||s.type===7&&s.value==="["||s.type===7&&s.value==="{"||s.type===4&&s.value==="let"||s.type===4&&s.value==="yield"},l.prototype.parseLexicalDeclaration=function(n){var s=this.createNode(),o=this.nextToken().value;i.assert(o==="let"||o==="const","Lexical declaration must be either let or const");var f=this.parseBindingList(o,n);return this.consumeSemicolon(),this.finalize(s,new u.VariableDeclaration(f,o))},l.prototype.parseBindingRestElement=function(n,s){var o=this.createNode();this.expect("...");var f=this.parsePattern(n,s);return this.finalize(o,new u.RestElement(f))},l.prototype.parseArrayPattern=function(n,s){var o=this.createNode();this.expect("[");for(var f=[];!this.match("]");)if(this.match(","))this.nextToken(),f.push(null);else{if(this.match("...")){f.push(this.parseBindingRestElement(n,s));break}else f.push(this.parsePatternWithDefault(n,s));this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(o,new u.ArrayPattern(f))},l.prototype.parsePropertyPattern=function(n,s){var o=this.createNode(),f=!1,E=!1,g=!1,v,F;if(this.lookahead.type===3){var A=this.lookahead;v=this.parseVariableIdentifier();var T=this.finalize(o,new u.Identifier(A.value));if(this.match("=")){n.push(A),E=!0,this.nextToken();var k=this.parseAssignmentExpression();F=this.finalize(this.startNode(A),new u.AssignmentPattern(T,k))}else this.match(":")?(this.expect(":"),F=this.parsePatternWithDefault(n,s)):(n.push(A),E=!0,F=T)}else f=this.match("["),v=this.parseObjectPropertyKey(),this.expect(":"),F=this.parsePatternWithDefault(n,s);return this.finalize(o,new u.Property("init",v,f,F,g,E))},l.prototype.parseObjectPattern=function(n,s){var o=this.createNode(),f=[];for(this.expect("{");!this.match("}");)f.push(this.parsePropertyPattern(n,s)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(o,new u.ObjectPattern(f))},l.prototype.parsePattern=function(n,s){var o;return this.match("[")?o=this.parseArrayPattern(n,s):this.match("{")?o=this.parseObjectPattern(n,s):(this.matchKeyword("let")&&(s==="const"||s==="let")&&this.tolerateUnexpectedToken(this.lookahead,c.Messages.LetInLexicalBinding),n.push(this.lookahead),o=this.parseVariableIdentifier(s)),o},l.prototype.parsePatternWithDefault=function(n,s){var o=this.lookahead,f=this.parsePattern(n,s);if(this.match("=")){this.nextToken();var E=this.context.allowYield;this.context.allowYield=!0;var g=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=E,f=this.finalize(this.startNode(o),new u.AssignmentPattern(f,g))}return f},l.prototype.parseVariableIdentifier=function(n){var s=this.createNode(),o=this.nextToken();return o.type===4&&o.value==="yield"?this.context.strict?this.tolerateUnexpectedToken(o,c.Messages.StrictReservedWord):this.context.allowYield||this.throwUnexpectedToken(o):o.type!==3?this.context.strict&&o.type===4&&this.scanner.isStrictModeReservedWord(o.value)?this.tolerateUnexpectedToken(o,c.Messages.StrictReservedWord):(this.context.strict||o.value!=="let"||n!=="var")&&this.throwUnexpectedToken(o):(this.context.isModule||this.context.await)&&o.type===3&&o.value==="await"&&this.tolerateUnexpectedToken(o),this.finalize(s,new u.Identifier(o.value))},l.prototype.parseVariableDeclaration=function(n){var s=this.createNode(),o=[],f=this.parsePattern(o,"var");this.context.strict&&f.type===d.Syntax.Identifier&&this.scanner.isRestrictedWord(f.name)&&this.tolerateError(c.Messages.StrictVarName);var E=null;return this.match("=")?(this.nextToken(),E=this.isolateCoverGrammar(this.parseAssignmentExpression)):f.type!==d.Syntax.Identifier&&!n.inFor&&this.expect("="),this.finalize(s,new u.VariableDeclarator(f,E))},l.prototype.parseVariableDeclarationList=function(n){var s={inFor:n.inFor},o=[];for(o.push(this.parseVariableDeclaration(s));this.match(",");)this.nextToken(),o.push(this.parseVariableDeclaration(s));return o},l.prototype.parseVariableStatement=function(){var n=this.createNode();this.expectKeyword("var");var s=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(n,new u.VariableDeclaration(s,"var"))},l.prototype.parseEmptyStatement=function(){var n=this.createNode();return this.expect(";"),this.finalize(n,new u.EmptyStatement)},l.prototype.parseExpressionStatement=function(){var n=this.createNode(),s=this.parseExpression();return this.consumeSemicolon(),this.finalize(n,new u.ExpressionStatement(s))},l.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(c.Messages.StrictFunction),this.parseStatement()},l.prototype.parseIfStatement=function(){var n=this.createNode(),s,o=null;this.expectKeyword("if"),this.expect("(");var f=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),s=this.finalize(this.createNode(),new u.EmptyStatement)):(this.expect(")"),s=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),o=this.parseIfClause())),this.finalize(n,new u.IfStatement(f,s,o))},l.prototype.parseDoWhileStatement=function(){var n=this.createNode();this.expectKeyword("do");var s=this.context.inIteration;this.context.inIteration=!0;var o=this.parseStatement();this.context.inIteration=s,this.expectKeyword("while"),this.expect("(");var f=this.parseExpression();return!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize(n,new u.DoWhileStatement(o,f))},l.prototype.parseWhileStatement=function(){var n=this.createNode(),s;this.expectKeyword("while"),this.expect("(");var o=this.parseExpression();if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),s=this.finalize(this.createNode(),new u.EmptyStatement);else{this.expect(")");var f=this.context.inIteration;this.context.inIteration=!0,s=this.parseStatement(),this.context.inIteration=f}return this.finalize(n,new u.WhileStatement(o,s))},l.prototype.parseForStatement=function(){var n=null,s=null,o=null,f=!0,E,g,v=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){n=this.createNode(),this.nextToken();var F=this.context.allowIn;this.context.allowIn=!1;var A=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=F,A.length===1&&this.matchKeyword("in")){var T=A[0];T.init&&(T.id.type===d.Syntax.ArrayPattern||T.id.type===d.Syntax.ObjectPattern||this.context.strict)&&this.tolerateError(c.Messages.ForInOfLoopInitializer,"for-in"),n=this.finalize(n,new u.VariableDeclaration(A,"var")),this.nextToken(),E=n,g=this.parseExpression(),n=null}else A.length===1&&A[0].init===null&&this.matchContextualKeyword("of")?(n=this.finalize(n,new u.VariableDeclaration(A,"var")),this.nextToken(),E=n,g=this.parseAssignmentExpression(),n=null,f=!1):(n=this.finalize(n,new u.VariableDeclaration(A,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){n=this.createNode();var k=this.nextToken().value;if(!this.context.strict&&this.lookahead.value==="in")n=this.finalize(n,new u.Identifier(k)),this.nextToken(),E=n,g=this.parseExpression(),n=null;else{var F=this.context.allowIn;this.context.allowIn=!1;var A=this.parseBindingList(k,{inFor:!0});this.context.allowIn=F,A.length===1&&A[0].init===null&&this.matchKeyword("in")?(n=this.finalize(n,new u.VariableDeclaration(A,k)),this.nextToken(),E=n,g=this.parseExpression(),n=null):A.length===1&&A[0].init===null&&this.matchContextualKeyword("of")?(n=this.finalize(n,new u.VariableDeclaration(A,k)),this.nextToken(),E=n,g=this.parseAssignmentExpression(),n=null,f=!1):(this.consumeSemicolon(),n=this.finalize(n,new u.VariableDeclaration(A,k)))}}else{var P=this.lookahead,F=this.context.allowIn;if(this.context.allowIn=!1,n=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=F,this.matchKeyword("in"))(!this.context.isAssignmentTarget||n.type===d.Syntax.AssignmentExpression)&&this.tolerateError(c.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(n),E=n,g=this.parseExpression(),n=null;else if(this.matchContextualKeyword("of"))(!this.context.isAssignmentTarget||n.type===d.Syntax.AssignmentExpression)&&this.tolerateError(c.Messages.InvalidLHSInForLoop),this.nextToken(),this.reinterpretExpressionAsPattern(n),E=n,g=this.parseAssignmentExpression(),n=null,f=!1;else{if(this.match(",")){for(var N=[n];this.match(",");)this.nextToken(),N.push(this.isolateCoverGrammar(this.parseAssignmentExpression));n=this.finalize(this.startNode(P),new u.SequenceExpression(N))}this.expect(";")}}typeof E>"u"&&(this.match(";")||(s=this.parseExpression()),this.expect(";"),this.match(")")||(o=this.parseExpression()));var U;if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),U=this.finalize(this.createNode(),new u.EmptyStatement);else{this.expect(")");var S=this.context.inIteration;this.context.inIteration=!0,U=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=S}return typeof E>"u"?this.finalize(v,new u.ForStatement(n,s,o,U)):f?this.finalize(v,new u.ForInStatement(E,g,U)):this.finalize(v,new u.ForOfStatement(E,g,U))},l.prototype.parseContinueStatement=function(){var n=this.createNode();this.expectKeyword("continue");var s=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var o=this.parseVariableIdentifier();s=o;var f="$"+o.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,f)||this.throwError(c.Messages.UnknownLabel,o.name)}return this.consumeSemicolon(),s===null&&!this.context.inIteration&&this.throwError(c.Messages.IllegalContinue),this.finalize(n,new u.ContinueStatement(s))},l.prototype.parseBreakStatement=function(){var n=this.createNode();this.expectKeyword("break");var s=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var o=this.parseVariableIdentifier(),f="$"+o.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,f)||this.throwError(c.Messages.UnknownLabel,o.name),s=o}return this.consumeSemicolon(),s===null&&!this.context.inIteration&&!this.context.inSwitch&&this.throwError(c.Messages.IllegalBreak),this.finalize(n,new u.BreakStatement(s))},l.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(c.Messages.IllegalReturn);var n=this.createNode();this.expectKeyword("return");var s=!this.match(";")&&!this.match("}")&&!this.hasLineTerminator&&this.lookahead.type!==2||this.lookahead.type===8||this.lookahead.type===10,o=s?this.parseExpression():null;return this.consumeSemicolon(),this.finalize(n,new u.ReturnStatement(o))},l.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(c.Messages.StrictModeWith);var n=this.createNode(),s;this.expectKeyword("with"),this.expect("(");var o=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),s=this.finalize(this.createNode(),new u.EmptyStatement)):(this.expect(")"),s=this.parseStatement()),this.finalize(n,new u.WithStatement(o,s))},l.prototype.parseSwitchCase=function(){var n=this.createNode(),s;this.matchKeyword("default")?(this.nextToken(),s=null):(this.expectKeyword("case"),s=this.parseExpression()),this.expect(":");for(var o=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)o.push(this.parseStatementListItem());return this.finalize(n,new u.SwitchCase(s,o))},l.prototype.parseSwitchStatement=function(){var n=this.createNode();this.expectKeyword("switch"),this.expect("(");var s=this.parseExpression();this.expect(")");var o=this.context.inSwitch;this.context.inSwitch=!0;var f=[],E=!1;for(this.expect("{");!this.match("}");){var g=this.parseSwitchCase();g.test===null&&(E&&this.throwError(c.Messages.MultipleDefaultsInSwitch),E=!0),f.push(g)}return this.expect("}"),this.context.inSwitch=o,this.finalize(n,new u.SwitchStatement(s,f))},l.prototype.parseLabelledStatement=function(){var n=this.createNode(),s=this.parseExpression(),o;if(s.type===d.Syntax.Identifier&&this.match(":")){this.nextToken();var f=s,E="$"+f.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,E)&&this.throwError(c.Messages.Redeclaration,"Label",f.name),this.context.labelSet[E]=!0;var g=void 0;if(this.matchKeyword("class"))this.tolerateUnexpectedToken(this.lookahead),g=this.parseClassDeclaration();else if(this.matchKeyword("function")){var v=this.lookahead,F=this.parseFunctionDeclaration();this.context.strict?this.tolerateUnexpectedToken(v,c.Messages.StrictFunction):F.generator&&this.tolerateUnexpectedToken(v,c.Messages.GeneratorInLegacyContext),g=F}else g=this.parseStatement();delete this.context.labelSet[E],o=new u.LabeledStatement(f,g)}else this.consumeSemicolon(),o=new u.ExpressionStatement(s);return this.finalize(n,o)},l.prototype.parseThrowStatement=function(){var n=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(c.Messages.NewlineAfterThrow);var s=this.parseExpression();return this.consumeSemicolon(),this.finalize(n,new u.ThrowStatement(s))},l.prototype.parseCatchClause=function(){var n=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var s=[],o=this.parsePattern(s),f={},E=0;E0&&this.tolerateError(c.Messages.BadGetterArity);var E=this.parsePropertyMethod(f);return this.context.allowYield=o,this.finalize(n,new u.FunctionExpression(null,f.params,E,s))},l.prototype.parseSetterMethod=function(){var n=this.createNode(),s=!1,o=this.context.allowYield;this.context.allowYield=!s;var f=this.parseFormalParameters();f.params.length!==1?this.tolerateError(c.Messages.BadSetterArity):f.params[0]instanceof u.RestElement&&this.tolerateError(c.Messages.BadSetterRestParameter);var E=this.parsePropertyMethod(f);return this.context.allowYield=o,this.finalize(n,new u.FunctionExpression(null,f.params,E,s))},l.prototype.parseGeneratorMethod=function(){var n=this.createNode(),s=!0,o=this.context.allowYield;this.context.allowYield=!0;var f=this.parseFormalParameters();this.context.allowYield=!1;var E=this.parsePropertyMethod(f);return this.context.allowYield=o,this.finalize(n,new u.FunctionExpression(null,f.params,E,s))},l.prototype.isStartOfExpression=function(){var n=!0,s=this.lookahead.value;switch(this.lookahead.type){case 7:n=s==="["||s==="("||s==="{"||s==="+"||s==="-"||s==="!"||s==="~"||s==="++"||s==="--"||s==="/"||s==="/=";break;case 4:n=s==="class"||s==="delete"||s==="function"||s==="let"||s==="new"||s==="super"||s==="this"||s==="typeof"||s==="void"||s==="yield";break;default:break}return n},l.prototype.parseYieldExpression=function(){var n=this.createNode();this.expectKeyword("yield");var s=null,o=!1;if(!this.hasLineTerminator){var f=this.context.allowYield;this.context.allowYield=!1,o=this.match("*"),o?(this.nextToken(),s=this.parseAssignmentExpression()):this.isStartOfExpression()&&(s=this.parseAssignmentExpression()),this.context.allowYield=f}return this.finalize(n,new u.YieldExpression(s,o))},l.prototype.parseClassElement=function(n){var s=this.lookahead,o=this.createNode(),f="",E=null,g=null,v=!1,F=!1,A=!1,T=!1;if(this.match("*"))this.nextToken();else{v=this.match("["),E=this.parseObjectPropertyKey();var k=E;if(k.name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(s=this.lookahead,A=!0,v=this.match("["),this.match("*")?this.nextToken():E=this.parseObjectPropertyKey()),s.type===3&&!this.hasLineTerminator&&s.value==="async"){var P=this.lookahead.value;P!==":"&&P!=="("&&P!=="*"&&(T=!0,s=this.lookahead,E=this.parseObjectPropertyKey(),s.type===3&&s.value==="constructor"&&this.tolerateUnexpectedToken(s,c.Messages.ConstructorIsAsync))}}var N=this.qualifiedPropertyName(this.lookahead);return s.type===3?s.value==="get"&&N?(f="get",v=this.match("["),E=this.parseObjectPropertyKey(),this.context.allowYield=!1,g=this.parseGetterMethod()):s.value==="set"&&N&&(f="set",v=this.match("["),E=this.parseObjectPropertyKey(),g=this.parseSetterMethod()):s.type===7&&s.value==="*"&&N&&(f="init",v=this.match("["),E=this.parseObjectPropertyKey(),g=this.parseGeneratorMethod(),F=!0),!f&&E&&this.match("(")&&(f="init",g=T?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),F=!0),f||this.throwUnexpectedToken(this.lookahead),f==="init"&&(f="method"),v||(A&&this.isPropertyKey(E,"prototype")&&this.throwUnexpectedToken(s,c.Messages.StaticPrototype),!A&&this.isPropertyKey(E,"constructor")&&((f!=="method"||!F||g&&g.generator)&&this.throwUnexpectedToken(s,c.Messages.ConstructorSpecialMethod),n.value?this.throwUnexpectedToken(s,c.Messages.DuplicateConstructor):n.value=!0,f="constructor")),this.finalize(o,new u.MethodDefinition(E,v,g,f,A))},l.prototype.parseClassElementList=function(){var n=[],s={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():n.push(this.parseClassElement(s));return this.expect("}"),n},l.prototype.parseClassBody=function(){var n=this.createNode(),s=this.parseClassElementList();return this.finalize(n,new u.ClassBody(s))},l.prototype.parseClassDeclaration=function(n){var s=this.createNode(),o=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var f=n&&this.lookahead.type!==3?null:this.parseVariableIdentifier(),E=null;this.matchKeyword("extends")&&(this.nextToken(),E=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var g=this.parseClassBody();return this.context.strict=o,this.finalize(s,new u.ClassDeclaration(f,E,g))},l.prototype.parseClassExpression=function(){var n=this.createNode(),s=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var o=this.lookahead.type===3?this.parseVariableIdentifier():null,f=null;this.matchKeyword("extends")&&(this.nextToken(),f=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var E=this.parseClassBody();return this.context.strict=s,this.finalize(n,new u.ClassExpression(o,f,E))},l.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var n=this.createNode(),s=this.parseDirectivePrologues();this.lookahead.type!==2;)s.push(this.parseStatementListItem());return this.finalize(n,new u.Module(s))},l.prototype.parseScript=function(){for(var n=this.createNode(),s=this.parseDirectivePrologues();this.lookahead.type!==2;)s.push(this.parseStatementListItem());return this.finalize(n,new u.Script(s))},l.prototype.parseModuleSpecifier=function(){var n=this.createNode();this.lookahead.type!==8&&this.throwError(c.Messages.InvalidModuleSpecifier);var s=this.nextToken(),o=this.getTokenRaw(s);return this.finalize(n,new u.Literal(s.value,o))},l.prototype.parseImportSpecifier=function(){var n=this.createNode(),s,o;return this.lookahead.type===3?(s=this.parseVariableIdentifier(),o=s,this.matchContextualKeyword("as")&&(this.nextToken(),o=this.parseVariableIdentifier())):(s=this.parseIdentifierName(),o=s,this.matchContextualKeyword("as")?(this.nextToken(),o=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(n,new u.ImportSpecifier(o,s))},l.prototype.parseNamedImports=function(){this.expect("{");for(var n=[];!this.match("}");)n.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),n},l.prototype.parseImportDefaultSpecifier=function(){var n=this.createNode(),s=this.parseIdentifierName();return this.finalize(n,new u.ImportDefaultSpecifier(s))},l.prototype.parseImportNamespaceSpecifier=function(){var n=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(c.Messages.NoAsAfterImportNamespace),this.nextToken();var s=this.parseIdentifierName();return this.finalize(n,new u.ImportNamespaceSpecifier(s))},l.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(c.Messages.IllegalImportDeclaration);var n=this.createNode();this.expectKeyword("import");var s,o=[];if(this.lookahead.type===8)s=this.parseModuleSpecifier();else{if(this.match("{")?o=o.concat(this.parseNamedImports()):this.match("*")?o.push(this.parseImportNamespaceSpecifier()):this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")?(o.push(this.parseImportDefaultSpecifier()),this.match(",")&&(this.nextToken(),this.match("*")?o.push(this.parseImportNamespaceSpecifier()):this.match("{")?o=o.concat(this.parseNamedImports()):this.throwUnexpectedToken(this.lookahead))):this.throwUnexpectedToken(this.nextToken()),!this.matchContextualKeyword("from")){var f=this.lookahead.value?c.Messages.UnexpectedToken:c.Messages.MissingFromClause;this.throwError(f,this.lookahead.value)}this.nextToken(),s=this.parseModuleSpecifier()}return this.consumeSemicolon(),this.finalize(n,new u.ImportDeclaration(o,s))},l.prototype.parseExportSpecifier=function(){var n=this.createNode(),s=this.parseIdentifierName(),o=s;return this.matchContextualKeyword("as")&&(this.nextToken(),o=this.parseIdentifierName()),this.finalize(n,new u.ExportSpecifier(s,o))},l.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(c.Messages.IllegalExportDeclaration);var n=this.createNode();this.expectKeyword("export");var s;if(this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var o=this.parseFunctionDeclaration(!0);s=this.finalize(n,new u.ExportDefaultDeclaration(o))}else if(this.matchKeyword("class")){var o=this.parseClassDeclaration(!0);s=this.finalize(n,new u.ExportDefaultDeclaration(o))}else if(this.matchContextualKeyword("async")){var o=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression();s=this.finalize(n,new u.ExportDefaultDeclaration(o))}else{this.matchContextualKeyword("from")&&this.throwError(c.Messages.UnexpectedToken,this.lookahead.value);var o=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression();this.consumeSemicolon(),s=this.finalize(n,new u.ExportDefaultDeclaration(o))}else if(this.match("*")){if(this.nextToken(),!this.matchContextualKeyword("from")){var f=this.lookahead.value?c.Messages.UnexpectedToken:c.Messages.MissingFromClause;this.throwError(f,this.lookahead.value)}this.nextToken();var E=this.parseModuleSpecifier();this.consumeSemicolon(),s=this.finalize(n,new u.ExportAllDeclaration(E))}else if(this.lookahead.type===4){var o=void 0;switch(this.lookahead.value){case"let":case"const":o=this.parseLexicalDeclaration({inFor:!1});break;case"var":case"class":case"function":o=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}s=this.finalize(n,new u.ExportNamedDeclaration(o,[],null))}else if(this.matchAsyncFunction()){var o=this.parseFunctionDeclaration();s=this.finalize(n,new u.ExportNamedDeclaration(o,[],null))}else{var g=[],v=null,F=!1;for(this.expect("{");!this.match("}");)F=F||this.matchKeyword("default"),g.push(this.parseExportSpecifier()),this.match("}")||this.expect(",");if(this.expect("}"),this.matchContextualKeyword("from"))this.nextToken(),v=this.parseModuleSpecifier(),this.consumeSemicolon();else if(F){var f=this.lookahead.value?c.Messages.UnexpectedToken:c.Messages.MissingFromClause;this.throwError(f,this.lookahead.value)}else this.consumeSemicolon();s=this.finalize(n,new u.ExportNamedDeclaration(null,g,v))}return s},l}();e.Parser=m},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});function r(i,a){if(!i)throw new Error("ASSERT: "+a)}e.assert=r},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function i(){this.errors=[],this.tolerant=!1}return i.prototype.recordError=function(a){this.errors.push(a)},i.prototype.tolerate=function(a){if(this.tolerant)this.recordError(a);else throw a},i.prototype.constructError=function(a,c){var u=new Error(a);try{throw u}catch(x){Object.create&&Object.defineProperty&&(u=Object.create(x),Object.defineProperty(u,"column",{value:c}))}return u},i.prototype.createError=function(a,c,u,x){var d="Line "+c+": "+x,p=this.constructError(d,u);return p.index=a,p.lineNumber=c,p.description=x,p},i.prototype.throwError=function(a,c,u,x){throw this.createError(a,c,u,x)},i.prototype.tolerateError=function(a,c,u,x){var d=this.createError(a,c,u,x);if(this.tolerant)this.recordError(d);else throw d},i}();e.ErrorHandler=r},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(9),a=r(4),c=r(11);function u(p){return"0123456789abcdef".indexOf(p.toLowerCase())}function x(p){return"01234567".indexOf(p)}var d=function(){function p(h,m){this.source=h,this.errorHandler=m,this.trackComment=!1,this.isModule=!1,this.length=h.length,this.index=0,this.lineNumber=h.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return p.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}},p.prototype.restoreState=function(h){this.index=h.index,this.lineNumber=h.lineNumber,this.lineStart=h.lineStart},p.prototype.eof=function(){return this.index>=this.length},p.prototype.throwUnexpectedToken=function(h){return h===void 0&&(h=c.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,h)},p.prototype.tolerateUnexpectedToken=function(h){h===void 0&&(h=c.Messages.UnexpectedTokenIllegal),this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,h)},p.prototype.skipSingleLineComment=function(h){var m=[],l,n;for(this.trackComment&&(m=[],l=this.index-h,n={start:{line:this.lineNumber,column:this.index-this.lineStart-h},end:{}});!this.eof();){var s=this.source.charCodeAt(this.index);if(++this.index,a.Character.isLineTerminator(s)){if(this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart-1};var o={multiLine:!1,slice:[l+h,this.index-1],range:[l,this.index-1],loc:n};m.push(o)}return s===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,m}}if(this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart};var o={multiLine:!1,slice:[l+h,this.index],range:[l,this.index],loc:n};m.push(o)}return m},p.prototype.skipMultiLineComment=function(){var h=[],m,l;for(this.trackComment&&(h=[],m=this.index-2,l={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var n=this.source.charCodeAt(this.index);if(a.Character.isLineTerminator(n))n===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(n===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,this.trackComment){l.end={line:this.lineNumber,column:this.index-this.lineStart};var s={multiLine:!0,slice:[m+2,this.index-2],range:[m,this.index],loc:l};h.push(s)}return h}++this.index}else++this.index}if(this.trackComment){l.end={line:this.lineNumber,column:this.index-this.lineStart};var s={multiLine:!0,slice:[m+2,this.index],range:[m,this.index],loc:l};h.push(s)}return this.tolerateUnexpectedToken(),h},p.prototype.scanComments=function(){var h;this.trackComment&&(h=[]);for(var m=this.index===0;!this.eof();){var l=this.source.charCodeAt(this.index);if(a.Character.isWhiteSpace(l))++this.index;else if(a.Character.isLineTerminator(l))++this.index,l===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,m=!0;else if(l===47)if(l=this.source.charCodeAt(this.index+1),l===47){this.index+=2;var n=this.skipSingleLineComment(2);this.trackComment&&(h=h.concat(n)),m=!0}else if(l===42){this.index+=2;var n=this.skipMultiLineComment();this.trackComment&&(h=h.concat(n))}else break;else if(m&&l===45)if(this.source.charCodeAt(this.index+1)===45&&this.source.charCodeAt(this.index+2)===62){this.index+=3;var n=this.skipSingleLineComment(3);this.trackComment&&(h=h.concat(n))}else break;else if(l===60&&!this.isModule)if(this.source.slice(this.index+1,this.index+4)==="!--"){this.index+=4;var n=this.skipSingleLineComment(4);this.trackComment&&(h=h.concat(n))}else break;else break}return h},p.prototype.isFutureReservedWord=function(h){switch(h){case"enum":case"export":case"import":case"super":return!0;default:return!1}},p.prototype.isStrictModeReservedWord=function(h){switch(h){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},p.prototype.isRestrictedWord=function(h){return h==="eval"||h==="arguments"},p.prototype.isKeyword=function(h){switch(h.length){case 2:return h==="if"||h==="in"||h==="do";case 3:return h==="var"||h==="for"||h==="new"||h==="try"||h==="let";case 4:return h==="this"||h==="else"||h==="case"||h==="void"||h==="with"||h==="enum";case 5:return h==="while"||h==="break"||h==="catch"||h==="throw"||h==="const"||h==="yield"||h==="class"||h==="super";case 6:return h==="return"||h==="typeof"||h==="delete"||h==="switch"||h==="export"||h==="import";case 7:return h==="default"||h==="finally"||h==="extends";case 8:return h==="function"||h==="continue"||h==="debugger";case 10:return h==="instanceof";default:return!1}},p.prototype.codePointAt=function(h){var m=this.source.charCodeAt(h);if(m>=55296&&m<=56319){var l=this.source.charCodeAt(h+1);if(l>=56320&&l<=57343){var n=m;m=(n-55296)*1024+l-56320+65536}}return m},p.prototype.scanHexEscape=function(h){for(var m=h==="u"?4:2,l=0,n=0;n1114111||h!=="}")&&this.throwUnexpectedToken(),a.Character.fromCodePoint(m)},p.prototype.getIdentifier=function(){for(var h=this.index++;!this.eof();){var m=this.source.charCodeAt(this.index);if(m===92)return this.index=h,this.getComplexIdentifier();if(m>=55296&&m<57343)return this.index=h,this.getComplexIdentifier();if(a.Character.isIdentifierPart(m))++this.index;else break}return this.source.slice(h,this.index)},p.prototype.getComplexIdentifier=function(){var h=this.codePointAt(this.index),m=a.Character.fromCodePoint(h);this.index+=m.length;var l;for(h===92&&(this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,l=this.scanUnicodeCodePointEscape()):(l=this.scanHexEscape("u"),(l===null||l==="\\"||!a.Character.isIdentifierStart(l.charCodeAt(0)))&&this.throwUnexpectedToken()),m=l);!this.eof()&&(h=this.codePointAt(this.index),!!a.Character.isIdentifierPart(h));)l=a.Character.fromCodePoint(h),m+=l,this.index+=l.length,h===92&&(m=m.substr(0,m.length-1),this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,l=this.scanUnicodeCodePointEscape()):(l=this.scanHexEscape("u"),(l===null||l==="\\"||!a.Character.isIdentifierPart(l.charCodeAt(0)))&&this.throwUnexpectedToken()),m+=l);return m},p.prototype.octalToDecimal=function(h){var m=h!=="0",l=x(h);return!this.eof()&&a.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(m=!0,l=l*8+x(this.source[this.index++]),"0123".indexOf(h)>=0&&!this.eof()&&a.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(l=l*8+x(this.source[this.index++]))),{code:l,octal:m}},p.prototype.scanIdentifier=function(){var h,m=this.index,l=this.source.charCodeAt(m)===92?this.getComplexIdentifier():this.getIdentifier();if(l.length===1?h=3:this.isKeyword(l)?h=4:l==="null"?h=5:l==="true"||l==="false"?h=1:h=3,h!==3&&m+l.length!==this.index){var n=this.index;this.index=m,this.tolerateUnexpectedToken(c.Messages.InvalidEscapedReservedWord),this.index=n}return{type:h,value:l,lineNumber:this.lineNumber,lineStart:this.lineStart,start:m,end:this.index}},p.prototype.scanPunctuator=function(){var h=this.index,m=this.source[this.index];switch(m){case"(":case"{":m==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,this.source[this.index]==="."&&this.source[this.index+1]==="."&&(this.index+=2,m="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:m=this.source.substr(this.index,4),m===">>>="?this.index+=4:(m=m.substr(0,3),m==="==="||m==="!=="||m===">>>"||m==="<<="||m===">>="||m==="**="?this.index+=3:(m=m.substr(0,2),m==="&&"||m==="||"||m==="=="||m==="!="||m==="+="||m==="-="||m==="*="||m==="/="||m==="++"||m==="--"||m==="<<"||m===">>"||m==="&="||m==="|="||m==="^="||m==="%="||m==="<="||m===">="||m==="=>"||m==="**"?this.index+=2:(m=this.source[this.index],"<>=!+-*%&|^/".indexOf(m)>=0&&++this.index)))}return this.index===h&&this.throwUnexpectedToken(),{type:7,value:m,lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},p.prototype.scanHexLiteral=function(h){for(var m="";!this.eof()&&a.Character.isHexDigit(this.source.charCodeAt(this.index));)m+=this.source[this.index++];return m.length===0&&this.throwUnexpectedToken(),a.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+m,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},p.prototype.scanBinaryLiteral=function(h){for(var m="",l;!this.eof()&&(l=this.source[this.index],!(l!=="0"&&l!=="1"));)m+=this.source[this.index++];return m.length===0&&this.throwUnexpectedToken(),this.eof()||(l=this.source.charCodeAt(this.index),(a.Character.isIdentifierStart(l)||a.Character.isDecimalDigit(l))&&this.throwUnexpectedToken()),{type:6,value:parseInt(m,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},p.prototype.scanOctalLiteral=function(h,m){var l="",n=!1;for(a.Character.isOctalDigit(h.charCodeAt(0))?(n=!0,l="0"+this.source[this.index++]):++this.index;!this.eof()&&a.Character.isOctalDigit(this.source.charCodeAt(this.index));)l+=this.source[this.index++];return!n&&l.length===0&&this.throwUnexpectedToken(),(a.Character.isIdentifierStart(this.source.charCodeAt(this.index))||a.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt(l,8),octal:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:m,end:this.index}},p.prototype.isImplicitOctalLiteral=function(){for(var h=this.index+1;h=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(o,f,E){var g=parseInt(f||E,16);return g>1114111&&s.throwUnexpectedToken(c.Messages.InvalidRegExp),g<=65535?String.fromCharCode(g):l}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l));try{RegExp(n)}catch{this.throwUnexpectedToken(c.Messages.InvalidRegExp)}try{return new RegExp(h,m)}catch{return null}},p.prototype.scanRegExpBody=function(){var h=this.source[this.index];i.assert(h==="/","Regular expression literal must start with a slash");for(var m=this.source[this.index++],l=!1,n=!1;!this.eof();)if(h=this.source[this.index++],m+=h,h==="\\")h=this.source[this.index++],a.Character.isLineTerminator(h.charCodeAt(0))&&this.throwUnexpectedToken(c.Messages.UnterminatedRegExp),m+=h;else if(a.Character.isLineTerminator(h.charCodeAt(0)))this.throwUnexpectedToken(c.Messages.UnterminatedRegExp);else if(l)h==="]"&&(l=!1);else if(h==="/"){n=!0;break}else h==="["&&(l=!0);return n||this.throwUnexpectedToken(c.Messages.UnterminatedRegExp),m.substr(1,m.length-2)},p.prototype.scanRegExpFlags=function(){for(var h="",m="";!this.eof();){var l=this.source[this.index];if(!a.Character.isIdentifierPart(l.charCodeAt(0)))break;if(++this.index,l==="\\"&&!this.eof())if(l=this.source[this.index],l==="u"){++this.index;var n=this.index,s=this.scanHexEscape("u");if(s!==null)for(m+=s,h+="\\u";n=55296&&h<57343&&a.Character.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()},p}();e.Scanner=d},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenName={},e.TokenName[1]="Boolean",e.TokenName[2]="",e.TokenName[3]="Identifier",e.TokenName[4]="Keyword",e.TokenName[5]="Null",e.TokenName[6]="Numeric",e.TokenName[7]="Punctuator",e.TokenName[8]="String",e.TokenName[9]="RegularExpression",e.TokenName[10]="Template"},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.XHTMLEntities={quot:'"',amp:"&",apos:"'",gt:">",nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",Agrave:"\xC0",Aacute:"\xC1",Acirc:"\xC2",Atilde:"\xC3",Auml:"\xC4",Aring:"\xC5",AElig:"\xC6",Ccedil:"\xC7",Egrave:"\xC8",Eacute:"\xC9",Ecirc:"\xCA",Euml:"\xCB",Igrave:"\xCC",Iacute:"\xCD",Icirc:"\xCE",Iuml:"\xCF",ETH:"\xD0",Ntilde:"\xD1",Ograve:"\xD2",Oacute:"\xD3",Ocirc:"\xD4",Otilde:"\xD5",Ouml:"\xD6",times:"\xD7",Oslash:"\xD8",Ugrave:"\xD9",Uacute:"\xDA",Ucirc:"\xDB",Uuml:"\xDC",Yacute:"\xDD",THORN:"\xDE",szlig:"\xDF",agrave:"\xE0",aacute:"\xE1",acirc:"\xE2",atilde:"\xE3",auml:"\xE4",aring:"\xE5",aelig:"\xE6",ccedil:"\xE7",egrave:"\xE8",eacute:"\xE9",ecirc:"\xEA",euml:"\xEB",igrave:"\xEC",iacute:"\xED",icirc:"\xEE",iuml:"\xEF",eth:"\xF0",ntilde:"\xF1",ograve:"\xF2",oacute:"\xF3",ocirc:"\xF4",otilde:"\xF5",ouml:"\xF6",divide:"\xF7",oslash:"\xF8",ugrave:"\xF9",uacute:"\xFA",ucirc:"\xFB",uuml:"\xFC",yacute:"\xFD",thorn:"\xFE",yuml:"\xFF",OElig:"\u0152",oelig:"\u0153",Scaron:"\u0160",scaron:"\u0161",Yuml:"\u0178",fnof:"\u0192",circ:"\u02C6",tilde:"\u02DC",Alpha:"\u0391",Beta:"\u0392",Gamma:"\u0393",Delta:"\u0394",Epsilon:"\u0395",Zeta:"\u0396",Eta:"\u0397",Theta:"\u0398",Iota:"\u0399",Kappa:"\u039A",Lambda:"\u039B",Mu:"\u039C",Nu:"\u039D",Xi:"\u039E",Omicron:"\u039F",Pi:"\u03A0",Rho:"\u03A1",Sigma:"\u03A3",Tau:"\u03A4",Upsilon:"\u03A5",Phi:"\u03A6",Chi:"\u03A7",Psi:"\u03A8",Omega:"\u03A9",alpha:"\u03B1",beta:"\u03B2",gamma:"\u03B3",delta:"\u03B4",epsilon:"\u03B5",zeta:"\u03B6",eta:"\u03B7",theta:"\u03B8",iota:"\u03B9",kappa:"\u03BA",lambda:"\u03BB",mu:"\u03BC",nu:"\u03BD",xi:"\u03BE",omicron:"\u03BF",pi:"\u03C0",rho:"\u03C1",sigmaf:"\u03C2",sigma:"\u03C3",tau:"\u03C4",upsilon:"\u03C5",phi:"\u03C6",chi:"\u03C7",psi:"\u03C8",omega:"\u03C9",thetasym:"\u03D1",upsih:"\u03D2",piv:"\u03D6",ensp:"\u2002",emsp:"\u2003",thinsp:"\u2009",zwnj:"\u200C",zwj:"\u200D",lrm:"\u200E",rlm:"\u200F",ndash:"\u2013",mdash:"\u2014",lsquo:"\u2018",rsquo:"\u2019",sbquo:"\u201A",ldquo:"\u201C",rdquo:"\u201D",bdquo:"\u201E",dagger:"\u2020",Dagger:"\u2021",bull:"\u2022",hellip:"\u2026",permil:"\u2030",prime:"\u2032",Prime:"\u2033",lsaquo:"\u2039",rsaquo:"\u203A",oline:"\u203E",frasl:"\u2044",euro:"\u20AC",image:"\u2111",weierp:"\u2118",real:"\u211C",trade:"\u2122",alefsym:"\u2135",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193",harr:"\u2194",crarr:"\u21B5",lArr:"\u21D0",uArr:"\u21D1",rArr:"\u21D2",dArr:"\u21D3",hArr:"\u21D4",forall:"\u2200",part:"\u2202",exist:"\u2203",empty:"\u2205",nabla:"\u2207",isin:"\u2208",notin:"\u2209",ni:"\u220B",prod:"\u220F",sum:"\u2211",minus:"\u2212",lowast:"\u2217",radic:"\u221A",prop:"\u221D",infin:"\u221E",ang:"\u2220",and:"\u2227",or:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",there4:"\u2234",sim:"\u223C",cong:"\u2245",asymp:"\u2248",ne:"\u2260",equiv:"\u2261",le:"\u2264",ge:"\u2265",sub:"\u2282",sup:"\u2283",nsub:"\u2284",sube:"\u2286",supe:"\u2287",oplus:"\u2295",otimes:"\u2297",perp:"\u22A5",sdot:"\u22C5",lceil:"\u2308",rceil:"\u2309",lfloor:"\u230A",rfloor:"\u230B",loz:"\u25CA",spades:"\u2660",clubs:"\u2663",hearts:"\u2665",diams:"\u2666",lang:"\u27E8",rang:"\u27E9"}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(10),a=r(12),c=r(13),u=function(){function d(){this.values=[],this.curly=this.paren=-1}return d.prototype.beforeFunctionExpression=function(p){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(p)>=0},d.prototype.isRegexStart=function(){var p=this.values[this.values.length-1],h=p!==null;switch(p){case"this":case"]":h=!1;break;case")":var m=this.values[this.paren-1];h=m==="if"||m==="while"||m==="for"||m==="with";break;case"}":if(h=!1,this.values[this.curly-3]==="function"){var l=this.values[this.curly-4];h=l?!this.beforeFunctionExpression(l):!1}else if(this.values[this.curly-4]==="function"){var l=this.values[this.curly-5];h=l?!this.beforeFunctionExpression(l):!0}break;default:break}return h},d.prototype.push=function(p){p.type===7||p.type===4?(p.value==="{"?this.curly=this.values.length:p.value==="("&&(this.paren=this.values.length),this.values.push(p.value)):this.values.push(null)},d}(),x=function(){function d(p,h){this.errorHandler=new i.ErrorHandler,this.errorHandler.tolerant=h?typeof h.tolerant=="boolean"&&h.tolerant:!1,this.scanner=new a.Scanner(p,this.errorHandler),this.scanner.trackComment=h?typeof h.comment=="boolean"&&h.comment:!1,this.trackRange=h?typeof h.range=="boolean"&&h.range:!1,this.trackLoc=h?typeof h.loc=="boolean"&&h.loc:!1,this.buffer=[],this.reader=new u}return d.prototype.errors=function(){return this.errorHandler.errors},d.prototype.getNextToken=function(){if(this.buffer.length===0){var p=this.scanner.scanComments();if(this.scanner.trackComment)for(var h=0;h{function Bl(t){return Array.isArray?Array.isArray(t):Pt(t)==="[object Array]"}Z.isArray=Bl;function Pl(t){return typeof t=="boolean"}Z.isBoolean=Pl;function Rl(t){return t===null}Z.isNull=Rl;function Il(t){return t==null}Z.isNullOrUndefined=Il;function Nl(t){return typeof t=="number"}Z.isNumber=Nl;function Ll(t){return typeof t=="string"}Z.isString=Ll;function Ol(t){return typeof t=="symbol"}Z.isSymbol=Ol;function Ml(t){return t===void 0}Z.isUndefined=Ml;function Hl(t){return Pt(t)==="[object RegExp]"}Z.isRegExp=Hl;function Xl(t){return typeof t=="object"&&t!==null}Z.isObject=Xl;function Ul(t){return Pt(t)==="[object Date]"}Z.isDate=Ul;function $l(t){return Pt(t)==="[object Error]"||t instanceof Error}Z.isError=$l;function jl(t){return typeof t=="function"}Z.isFunction=jl;function Jl(t){return t===null||typeof t=="boolean"||typeof t=="number"||typeof t=="string"||typeof t=="symbol"||typeof t>"u"}Z.isPrimitive=Jl;Z.isBuffer=O("buffer").Buffer.isBuffer;function Pt(t){return Object.prototype.toString.call(t)}});var Ds=_((tx,gs)=>{var fs=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9],I,ps=t=>t<1e5?t<100?t<10?0:1:t<1e4?t<1e3?2:3:4:t<1e7?t<1e6?5:6:t<1e9?t<1e8?7:8:9;function ds(t,e){if(t===e)return 0;if(~~t===t&&~~e===e){if(t===0||e===0)return t=0)return-1;if(t>=0)return 1;t=-t,e=-e}let a=ps(t),c=ps(e),u=0;return ac&&(e*=fs[a-c-1],t/=10,u=1),t===e?u:t=32;)e|=t&1,t>>=1;return t+e}function ms(t,e,r,i){let a=e+1;if(a===r)return 1;if(i(t[a++],t[e])<0){for(;a=0;)a++;return a-e}function xs(t,e,r){for(r--;e>>1;a(c,t[h])<0?d=h:x=h+1}let p=i-x;switch(p){case 3:t[x+3]=t[x+2],I[x+3]=I[x+2];case 2:t[x+2]=t[x+1],I[x+2]=I[x+1];case 1:t[x+1]=t[x],I[x+1]=I[x];break;default:for(;p>0;)t[x+p]=t[x+p-1],I[x+p]=I[x+p-1],p--}t[x]=c,I[x]=u}}function _r(t,e,r,i,a,c){let u=0,x=0,d=1;if(c(t,e[r+a])>0){for(x=i-a;d0;)u=d,d=(d<<1)+1,d<=0&&(d=x);d>x&&(d=x),u+=a,d+=a}else{for(x=a+1;dx&&(d=x);let p=u;u=a-d,d=a-p}for(u++;u>>1);c(t,e[r+p])>0?u=p+1:d=p}return d}function kr(t,e,r,i,a,c){let u=0,x=0,d=1;if(c(t,e[r+a])<0){for(x=a+1;dx&&(d=x);let p=u;u=a-d,d=a-p}else{for(x=i-a;d=0;)u=d,d=(d<<1)+1,d<=0&&(d=x);d>x&&(d=x),u+=a,d+=a}for(u++;u>>1);c(t,e[r+p])<0?d=p:u=p+1}return d}var Tr=class{constructor(e,r){this.array=e,this.compare=r;let{length:i}=e;this.length=i,this.minGallop=7,this.tmpStorageLength=i<2*256?i>>>1:256,this.tmp=new Array(this.tmpStorageLength),this.tmpIndex=new Array(this.tmpStorageLength),this.stackLength=i<120?5:i<1542?10:i<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength),this.stackSize=0}pushRun(e,r){this.runStart[this.stackSize]=e,this.runLength[this.stackSize]=r,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let e=this.stackSize-2;if(e>=1&&this.runLength[e-1]<=this.runLength[e]+this.runLength[e+1]||e>=2&&this.runLength[e-2]<=this.runLength[e]+this.runLength[e-1])this.runLength[e-1]this.runLength[e+1])break;this.mergeAt(e)}}forceMergeRuns(){for(;this.stackSize>1;){let e=this.stackSize-2;e>0&&this.runLength[e-1]=7||o>=7);if(f)break;n<0&&(n=0),n+=2}if(this.minGallop=n,n<1&&(this.minGallop=1),r===1){for(p=0;p=0;p--)u[s+p]=u[n+p],I[s+p]=I[n+p];u[l]=x[m],I[l]=d[m];return}let{minGallop:o}=this;for(;;){let f=0,E=0,g=!1;do if(c(x[m],u[h])<0){if(u[l]=u[h],I[l]=I[h],l--,h--,f++,E=0,--r===0){g=!0;break}}else if(u[l]=x[m],I[l]=d[m],l--,m--,E++,f=0,--a===1){g=!0;break}while((f|E)=0;p--)u[s+p]=u[n+p],I[s+p]=I[n+p];if(r===0){g=!0;break}}if(u[l]=x[m],I[l]=d[m],l--,m--,--a===1){g=!0;break}if(E=a-_r(u[h],x,0,a,a-1,c),E!==0){for(l-=E,m-=E,a-=E,s=l+1,n=m+1,p=0;p=7||E>=7);if(g)break;o<0&&(o=0),o+=2}if(this.minGallop=o,o<1&&(this.minGallop=1),a===1){for(l-=r,h-=r,s=l+1,n=h+1,p=r-1;p>=0;p--)u[s+p]=u[n+p],I[s+p]=I[n+p];u[l]=x[m],I[l]=d[m]}else{if(a===0)throw new Error("mergeHigh preconditions were not respected");for(n=l-(a-1),p=0;pp&&(h=p),Es(t,r,r+h,r+x,e),x=h}d.pushRun(r,x),d.mergeRuns(),u-=x,r+=x}while(u!==0);return d.forceMergeRuns(),I}gs.exports={sort:ql}});var vs=_((rx,ys)=>{"use strict";var Gl=Object.prototype.hasOwnProperty;ys.exports=(t,e)=>Gl.call(t,e)});var xt=_((ix,Ps)=>{var Rr=vs(),{isObject:Ss,isArray:Kl,isString:Wl,isNumber:Vl}=Rt(),Ir="before",Cs="after-prop",bs="after-colon",Fs="after-value",ws="after",_s="before-all",ks="after-all",Yl="[",Ql="]",Zl="{",eh="}",th=",",rh="",ih="-",Nr=[Ir,Cs,bs,Fs,ws],nh=[Ir,_s,ks].map(Symbol.for),Ts=":",As=void 0,mt=(t,e)=>Symbol.for(t+Ts+e),It=(t,e,r)=>Object.defineProperty(t,e,{value:r,writable:!0,configurable:!0}),Pr=(t,e,r,i,a,c)=>{let u=mt(a,i);if(!Rr(e,u))return;let x=r===i?u:mt(a,r);It(t,x,e[u]),c&&delete e[u]},Bs=(t,e,r,i,a)=>{Nr.forEach(c=>{Pr(t,e,r,i,c,a)})},sh=(t,e,r)=>{e!==r&&Nr.forEach(i=>{let a=mt(i,r);if(!Rr(t,a)){Pr(t,t,r,e,i,!0);return}let c=t[a];delete t[a],Pr(t,t,r,e,i,!0),It(t,mt(i,e),c)})},Br=(t,e)=>{nh.forEach(r=>{let i=e[r];i&&It(t,r,i)})},ah=(t,e,r)=>(r.forEach(i=>{!Wl(i)&&!Vl(i)||Rr(e,i)&&(t[i]=e[i],Bs(t,e,i,i))}),t);Ps.exports={SYMBOL_PREFIXES:Nr,PREFIX_BEFORE:Ir,PREFIX_AFTER_PROP:Cs,PREFIX_AFTER_COLON:bs,PREFIX_AFTER_VALUE:Fs,PREFIX_AFTER:ws,PREFIX_BEFORE_ALL:_s,PREFIX_AFTER_ALL:ks,BRACKET_OPEN:Yl,BRACKET_CLOSE:Ql,CURLY_BRACKET_OPEN:Zl,CURLY_BRACKET_CLOSE:eh,COLON:Ts,COMMA:th,MINUS:ih,EMPTY:rh,UNDEFINED:As,symbol:mt,define:It,copy_comments:Bs,swap_comments:sh,assign_non_prop_comments:Br,assign(t,e,r){if(!Ss(t))throw new TypeError("Cannot convert undefined or null to object");if(!Ss(e))return t;if(r===As)r=Object.keys(e),Br(t,e);else if(Kl(r))r.length===0&&Br(t,e);else throw new TypeError("keys must be array or undefined");return ah(t,e,r)}}});var Or=_((nx,Os)=>{var{isArray:oh}=Rt(),{sort:uh}=Ds(),{SYMBOL_PREFIXES:ch,UNDEFINED:Rs,symbol:lh,copy_comments:hh,swap_comments:Ls}=xt(),fh=t=>{let{length:e}=t,r=0,i=e/2;for(;r{hh(t,e,r+i,r,a)},tt=(t,e,r,i,a,c)=>{if(a>0){let x=i;for(;x-- >0;)Is(t,e,r+x,a,c);return}let u=0;for(;u{ch.forEach(r=>{let i=lh(r,e);delete t[i]})},ph=(t,e)=>{let r=e;for(;r in t;)r=t[r];return r},Lr=class t extends Array{splice(...e){let{length:r}=this,i=super.splice(...e),[a,c,...u]=e;a<0&&(a+=r),arguments.length===1?c=r-a:c=Math.min(r-a,c);let{length:x}=u,d=x-c,p=a+c,h=r-p;return tt(this,this,p,h,d,!0),i}slice(...e){let{length:r}=this,i=super.slice(...e);if(!i.length)return new t;let[a,c]=e;return c===Rs?c=r:c<0&&(c+=r),a<0?a+=r:a===Rs&&(a=0),tt(i,this,a,c-a,-a),i}unshift(...e){let{length:r}=this,i=super.unshift(...e),{length:a}=e;return a>0&&tt(this,this,0,r,a,!0),i}shift(){let e=super.shift(),{length:r}=this;return Ns(this,0),tt(this,this,1,r,-1,!0),e}reverse(){return super.reverse(),fh(this),this}pop(){let e=super.pop();return Ns(this,this.length),e}concat(...e){let{length:r}=this,i=super.concat(...e);return e.length&&(tt(i,this,0,this.length,0),e.forEach(a=>{let c=r;r+=oh(a)?a.length:1,a instanceof t&&tt(i,a,0,a.length,c)})),i}sort(...e){let r=uh(this,...e.slice(0,1)),i=Object.create(null);return r.forEach((a,c)=>{if(a===c)return;let u=ph(i,a);u!==c&&(i[c]=u,Ls(this,c,u))}),this}};Os.exports={CommentArray:Lr}});var ea=_((sx,Zs)=>{var dh=hs(),{CommentArray:mh}=Or(),{PREFIX_BEFORE:Lt,PREFIX_AFTER_PROP:xh,PREFIX_AFTER_COLON:Eh,PREFIX_AFTER_VALUE:Us,PREFIX_AFTER:Hr,PREFIX_BEFORE_ALL:gh,PREFIX_AFTER_ALL:Dh,BRACKET_OPEN:yh,BRACKET_CLOSE:Ms,CURLY_BRACKET_OPEN:vh,CURLY_BRACKET_CLOSE:Hs,COLON:$s,COMMA:js,MINUS:Xs,EMPTY:Sh,UNDEFINED:Ht,define:Xr,assign_non_prop_comments:Ah}=xt(),Js=t=>dh.tokenize(t,{comment:!0,loc:!0}),Ur=[],Re=null,ve=null,$r=[],Ie,zs=!1,qs=!1,Et=null,gt=null,ee=null,Gs,Ot=null,Ks=()=>{$r.length=Ur.length=0,gt=null,Ie=Ht},Ch=()=>{Ks(),Et.length=0,ve=Re=Et=gt=ee=Ot=null},jr=t=>Symbol.for(Ie!==Ht?t+$s+Ie:t),Jr=(t,e)=>Ot?Ot(t,e):e,Ws=()=>{let t=new SyntaxError(`Unexpected token ${ee.value.slice(0,1)}`);throw Object.assign(t,ee.loc.start),t},Vs=()=>{let t=new SyntaxError("Unexpected end of JSON input");throw Object.assign(t,gt?gt.loc.end:{line:1,column:0}),t},pe=()=>{let t=Et[++Gs];qs=ee&&t&&ee.loc.end.line===t.loc.start.line||!1,gt=ee,ee=t},Mr=()=>(ee||Vs(),ee.type==="Punctuator"?ee.value:ee.type),je=t=>Mr()===t,Nt=t=>{je(t)||Ws()},zr=t=>{Ur.push(Re),Re=t},qr=()=>{Re=Ur.pop()},Ys=()=>{if(!ve)return;let t=[];for(let r of ve)if(r.inline)t.push(r);else break;let{length:e}=t;e&&(e===ve.length?ve=null:ve.splice(0,e),Xr(Re,jr(Hr),t))},Pe=t=>{ve&&(Xr(Re,jr(t),ve),ve=null)},Se=t=>{let e=[];for(;ee&&(je("LineComment")||je("BlockComment"));){let r={...ee,inline:qs};e.push(r),pe()}if(!zs&&e.length){if(t){Xr(Re,jr(t),e);return}ve=e}},Mt=(t,e)=>{e&&$r.push(Ie),Ie=t},Qs=()=>{Ie=$r.pop()},bh=()=>{let t={};zr(t),Mt(Ht,!0);let e=!1,r;for(Se();!je(Hs)&&!(e&&(Pe(Us),Nt(js),pe(),Se(),Ys(),je(Hs)));)e=!0,Nt("String"),r=JSON.parse(ee.value),Mt(r),Pe(Lt),pe(),Se(xh),Nt($s),pe(),Se(Eh),t[r]=Jr(r,Gr()),Se();return e&&Pe(Hr),pe(),Ie=void 0,e||Pe(Lt),qr(),Qs(),t},Fh=()=>{let t=new mh;zr(t),Mt(Ht,!0);let e=!1,r=0;for(Se();!je(Ms)&&!(e&&(Pe(Us),Nt(js),pe(),Se(),Ys(),je(Ms)));)e=!0,Mt(r),Pe(Lt),t[r]=Jr(r,Gr()),r++,Se();return e&&Pe(Hr),pe(),Ie=void 0,e||Pe(Lt),qr(),Qs(),t};function Gr(){let t=Mr();if(t===vh)return pe(),bh();if(t===yh)return pe(),Fh();let e=Sh;t===Xs&&(pe(),t=Mr(),e=Xs);let r;switch(t){case"String":case"Boolean":case"Null":case"Numeric":return r=ee.value,pe(),JSON.parse(e+r);default:}}var wh=t=>Object(t)===t,_h=(t,e,r)=>{Ks(),Et=Js(t),Ot=e,zs=r,Et.length||Vs(),Gs=-1,pe(),zr({}),Se(gh);let i=Gr();return Se(Dh),ee&&Ws(),!r&&i!==null&&(wh(i)||(i=new Object(i)),Ah(i,Re)),qr(),i=Jr("",i),Ch(),i};Zs.exports={parse:_h,tokenize:Js}});var ra=_((ax,ta)=>{"use strict";var _e="",Kr;ta.exports=kh;function kh(t,e){if(typeof t!="string")throw new TypeError("expected a string");if(e===1)return t;if(e===2)return t+t;var r=t.length*e;if(Kr!==t||typeof Kr>"u")Kr=t,_e="";else if(_e.length>=r)return _e.substr(0,r);for(;r>_e.length&&e>1;)e&1&&(_e+=t),e>>=1,t+=t;return _e+=t,_e=_e.substr(0,r),_e}});var pa=_((ox,fa)=>{var{isArray:Yr,isObject:ia,isFunction:Vr,isNumber:Th,isString:Bh}=Rt(),Ph=ra(),{PREFIX_BEFORE_ALL:Rh,PREFIX_BEFORE:na,PREFIX_AFTER_PROP:Ih,PREFIX_AFTER_COLON:Nh,PREFIX_AFTER_VALUE:Lh,PREFIX_AFTER:Qr,PREFIX_AFTER_ALL:Oh,BRACKET_OPEN:Mh,BRACKET_CLOSE:Hh,CURLY_BRACKET_OPEN:Xh,CURLY_BRACKET_CLOSE:Uh,COLON:$h,COMMA:sa,EMPTY:ue,UNDEFINED:jh}=xt(),Wr=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,Zr=" ",Je=` +`,aa="null",oa=t=>`${na}:${t}`,Jh=t=>`${Ih}:${t}`,zh=t=>`${Nh}:${t}`,ua=t=>`${Lh}:${t}`,ca=t=>`${Qr}:${t}`,qh={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},Gh=t=>(Wr.lastIndex=0,Wr.test(t)?t.replace(Wr,e=>{let r=qh[e];return typeof r=="string"?r:e}):t),la=t=>`"${Gh(t)}"`,Kh=(t,e)=>e?`//${t}`:`/*${t}*/`,oe=(t,e,r,i)=>{let a=t[Symbol.for(e)];if(!a||!a.length)return ue;let c=!1,u=a.reduce((x,{inline:d,type:p,value:h})=>{let m=d?Zr:Je+r;return c=p==="LineComment",x+m+Kh(h,c)},ue);return i||c?u+Je+r:u},rt=null,yt=ue,Wh=()=>{rt=null,yt=ue},Dt=(t,e,r)=>t?e?t+e.trim()+Je+r:t.trimRight()+Je+r:e?e.trimRight()+Je+r:ue,ha=(t,e,r)=>{let i=oe(e,na,r+yt,!0);return Dt(i,t,r)},Vh=(t,e)=>{let r=e+yt,{length:i}=t,a=ue,c=ue;for(let u=0;u{if(!t)return"null";let r=e+yt,i=ue,a=ue,c=!0,u=Yr(rt)?rt:Object.keys(t),x=d=>{let p=ei(d,t,r);if(p===jh)return;c||(i+=sa),c=!1;let h=Dt(a,oe(t,oa(d),r),r);i+=h||Je+r,i+=la(d)+oe(t,Jh(d),r)+$h+oe(t,zh(d),r)+Zr+p+oe(t,ua(d),r),a=oe(t,ca(d),r)};return u.forEach(x),i+=Dt(a,oe(t,Qr,r),r),Xh+ha(i,t,e)+Uh};function ei(t,e,r){let i=e[t];switch(ia(i)&&Vr(i.toJSON)&&(i=i.toJSON(t)),Vr(rt)&&(i=rt.call(e,t,i)),typeof i){case"string":return la(i);case"number":return Number.isFinite(i)?String(i):aa;case"boolean":case"null":return String(i);case"object":return Yr(i)?Vh(i,r):Yh(i,r);default:}}var Qh=t=>Bh(t)?t:Th(t)?Ph(Zr,t):ue,{toString:Zh}=Object.prototype,ef=["[object Number]","[object String]","[object Boolean]"],tf=t=>{if(typeof t!="object")return!1;let e=Zh.call(t);return ef.includes(e)};fa.exports=(t,e,r)=>{let i=Qh(r);if(!i)return JSON.stringify(t,e);!Vr(e)&&!Yr(e)&&(e=null),rt=e,yt=i;let a=tf(t)?JSON.stringify(t):ei("",{"":t},ue);return Wh(),ia(t)?oe(t,Rh,ue).trimLeft()+a+oe(t,Oh,ue).trimRight():a}});var ti=_((ux,da)=>{var{parse:rf,tokenize:nf}=ea(),sf=pa(),{CommentArray:af}=Or(),{assign:of}=xt();da.exports={parse:rf,stringify:sf,tokenize:nf,CommentArray:af,assign:of}});var Sa=_(it=>{"use strict";Object.defineProperty(it,"__esModule",{value:!0});it.splitWhen=it.flatten=void 0;function Ef(t){return t.reduce((e,r)=>[].concat(e,r),[])}it.flatten=Ef;function gf(t,e){let r=[[]],i=0;for(let a of t)e(a)?(i++,r[i]=[]):r[i].push(a);return r}it.splitWhen=gf});var Aa=_($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.isEnoentCodeError=void 0;function Df(t){return t.code==="ENOENT"}$t.isEnoentCodeError=Df});var Ca=_(jt=>{"use strict";Object.defineProperty(jt,"__esModule",{value:!0});jt.createDirentFromStats=void 0;var oi=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function yf(t,e){return new oi(t,e)}jt.createDirentFromStats=yf});var _a=_(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.convertPosixPathToPattern=V.convertWindowsPathToPattern=V.convertPathToPattern=V.escapePosixPath=V.escapeWindowsPath=V.escape=V.removeLeadingDotSegment=V.makeAbsolute=V.unixify=void 0;var vf=O("os"),Sf=O("path"),ba=vf.platform()==="win32",Af=2,Cf=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,bf=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,Ff=/^\\\\([.?])/,wf=/\\(?![!()+@[\]{}])/g;function _f(t){return t.replace(/\\/g,"/")}V.unixify=_f;function kf(t,e){return Sf.resolve(t,e)}V.makeAbsolute=kf;function Tf(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Af)}return t}V.removeLeadingDotSegment=Tf;V.escape=ba?ui:ci;function ui(t){return t.replace(bf,"\\$2")}V.escapeWindowsPath=ui;function ci(t){return t.replace(Cf,"\\$2")}V.escapePosixPath=ci;V.convertPathToPattern=ba?Fa:wa;function Fa(t){return ui(t).replace(Ff,"//$1").replace(wf,"/")}V.convertWindowsPathToPattern=Fa;function wa(t){return ci(t)}V.convertPosixPathToPattern=wa});var Ta=_((dx,ka)=>{ka.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Ra=_((mx,Pa)=>{var Bf=Ta(),Ba={"{":"}","(":")","[":"]"},Pf=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,i=-2,a=-2,c=-2,u=-2;ee&&(u===-1||u>i||(u=t.indexOf("\\",e),u===-1||u>i)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(u=t.indexOf("\\",e),u===-1||u>a))||c!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(c=t.indexOf(")",e),c>e&&(u=t.indexOf("\\",e),u===-1||u>c))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(u=t.indexOf("\\",r),u===-1||u>c))))return!0;if(t[e]==="\\"){var x=t[e+1];e+=2;var d=Ba[x];if(d){var p=t.indexOf(d,e);p!==-1&&(e=p+1)}if(t[e]==="!")return!0}else e++}return!1},Rf=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var If=Ra(),Nf=O("path").posix.dirname,Lf=O("os").platform()==="win32",li="/",Of=/\\/g,Mf=/[\{\[].*[\}\]]$/,Hf=/(^|[^\\])([\{\[]|\([^\)]+$)/,Xf=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Ia.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Lf&&e.indexOf(li)<0&&(e=e.replace(Of,li)),Mf.test(e)&&(e+=li),e+="a";do e=Nf(e);while(If(e)||Hf.test(e));return e.replace(Xf,"$1")}});var Jt=_(de=>{"use strict";de.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;de.find=(t,e)=>t.nodes.find(r=>r.type===e);de.exceedsLimit=(t,e,r=1,i)=>i===!1||!de.isInteger(t)||!de.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;de.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];i&&(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};de.encloseBrace=t=>t.type!=="brace"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);de.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;de.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;de.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);de.flatten=(...t)=>{let e=[],r=i=>{for(let a=0;a{"use strict";var La=Jt();Oa.exports=(t,e={})=>{let r=(i,a={})=>{let c=e.escapeInvalid&&La.isInvalidBrace(a),u=i.invalid===!0&&e.escapeInvalid===!0,x="";if(i.value)return(c||u)&&La.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let d of i.nodes)x+=r(d);return x};return r(t)}});var Ha=_((Dx,Ma)=>{"use strict";Ma.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var Ka=_((yx,Ga)=>{"use strict";var Xa=Ha(),ze=(t,e,r)=>{if(Xa(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(Xa(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i={relaxZeros:!0,...r};typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let a=String(i.relaxZeros),c=String(i.shorthand),u=String(i.capture),x=String(i.wrap),d=t+":"+e+"="+a+c+u+x;if(ze.cache.hasOwnProperty(d))return ze.cache[d].result;let p=Math.min(t,e),h=Math.max(t,e);if(Math.abs(p-h)===1){let o=t+"|"+e;return i.capture?`(${o})`:i.wrap===!1?o:`(?:${o})`}let m=qa(t)||qa(e),l={min:t,max:e,a:p,b:h},n=[],s=[];if(m&&(l.isPadded=m,l.maxLen=String(l.max).length),p<0){let o=h<0?Math.abs(h):1;s=Ua(o,Math.abs(p),l,i),p=l.a=0}return h>=0&&(n=Ua(p,h,l,i)),l.negatives=s,l.positives=n,l.result=Uf(s,n,i),i.capture===!0?l.result=`(${l.result})`:i.wrap!==!1&&n.length+s.length>1&&(l.result=`(?:${l.result})`),ze.cache[d]=l,l.result};function Uf(t,e,r){let i=hi(t,e,"-",!1,r)||[],a=hi(e,t,"",!1,r)||[],c=hi(t,e,"-?",!0,r)||[];return i.concat(c).concat(a).join("|")}function $f(t,e){let r=1,i=1,a=ja(t,r),c=new Set([e]);for(;t<=a&&a<=e;)c.add(a),r+=1,a=ja(t,r);for(a=Ja(e+1,i)-1;t1&&x.count.pop(),x.count.push(h.count[0]),x.string=x.pattern+za(x.count),u=p+1;continue}r.isPadded&&(m=Gf(p,r,i)),h.string=m+h.pattern+za(h.count),c.push(h),u=p+1,x=h}return c}function hi(t,e,r,i,a){let c=[];for(let u of t){let{string:x}=u;!i&&!$a(e,"string",x)&&c.push(r+x),i&&$a(e,"string",x)&&c.push(r+x)}return c}function Jf(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function $a(t,e,r){return t.some(i=>i[e]===r)}function ja(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function Ja(t,e){return t-t%Math.pow(10,e)}function za(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function qf(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function qa(t){return/^-?(0+)\d/.test(t)}function Gf(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${i}}`:`0{${i}}`}}ze.cache={};ze.clearCache=()=>ze.cache={};Ga.exports=ze});var di=_((vx,to)=>{"use strict";var Kf=O("util"),Va=Ka(),Wa=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),Wf=t=>e=>t===!0?Number(e):String(e),fi=t=>typeof t=="number"||typeof t=="string"&&t!=="",vt=t=>Number.isInteger(+t),pi=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Vf=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,Yf=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},Gt=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((x,d)=>xd?1:0),t.positives.sort((x,d)=>xd?1:0);let i=e.capture?"":"?:",a="",c="",u;return t.positives.length&&(a=t.positives.map(x=>Gt(String(x),r)).join("|")),t.negatives.length&&(c=`-(${i}${t.negatives.map(x=>Gt(String(x),r)).join("|")})`),a&&c?u=`${a}|${c}`:u=a||c,e.wrap?`(${i}${u})`:u},Ya=(t,e,r,i)=>{if(r)return Va(t,e,{wrap:!1,...i});let a=String.fromCharCode(t);if(t===e)return a;let c=String.fromCharCode(e);return`[${a}-${c}]`},Qa=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,a=r.capture?"":"?:";return i?`(${a}${t.join("|")})`:t.join("|")}return Va(t,e,r)},Za=(...t)=>new RangeError("Invalid range arguments: "+Kf.inspect(...t)),eo=(t,e,r)=>{if(r.strictRanges===!0)throw Za([t,e]);return[]},Zf=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ep=(t,e,r=1,i={})=>{let a=Number(t),c=Number(e);if(!Number.isInteger(a)||!Number.isInteger(c)){if(i.strictRanges===!0)throw Za([t,e]);return[]}a===0&&(a=0),c===0&&(c=0);let u=a>c,x=String(t),d=String(e),p=String(r);r=Math.max(Math.abs(r),1);let h=pi(x)||pi(d)||pi(p),m=h?Math.max(x.length,d.length,p.length):0,l=h===!1&&Vf(t,e,i)===!1,n=i.transform||Wf(l);if(i.toRegex&&r===1)return Ya(Gt(t,m),Gt(e,m),!0,i);let s={negatives:[],positives:[]},o=g=>s[g<0?"negatives":"positives"].push(Math.abs(g)),f=[],E=0;for(;u?a>=c:a<=c;)i.toRegex===!0&&r>1?o(a):f.push(Yf(n(a,E),m,l)),a=u?a-r:a+r,E++;return i.toRegex===!0?r>1?Qf(s,i,m):Qa(f,null,{wrap:!1,...i}):f},tp=(t,e,r=1,i={})=>{if(!vt(t)&&t.length>1||!vt(e)&&e.length>1)return eo(t,e,i);let a=i.transform||(l=>String.fromCharCode(l)),c=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),x=c>u,d=Math.min(c,u),p=Math.max(c,u);if(i.toRegex&&r===1)return Ya(d,p,!1,i);let h=[],m=0;for(;x?c>=u:c<=u;)h.push(a(c,m)),c=x?c-r:c+r,m++;return i.toRegex===!0?Qa(h,null,{wrap:!1,options:i}):h},qt=(t,e,r,i={})=>{if(e==null&&fi(t))return[t];if(!fi(t)||!fi(e))return eo(t,e,i);if(typeof r=="function")return qt(t,e,1,{transform:r});if(Wa(r))return qt(t,e,0,r);let a={...i};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,vt(r)?vt(t)&&vt(e)?ep(t,e,r,a):tp(t,e,Math.max(Math.abs(r),1),a):r!=null&&!Wa(r)?Zf(r,a):qt(t,e,1,r)};to.exports=qt});var no=_((Sx,io)=>{"use strict";var rp=di(),ro=Jt(),ip=(t,e={})=>{let r=(i,a={})=>{let c=ro.isInvalidBrace(a),u=i.invalid===!0&&e.escapeInvalid===!0,x=c===!0||u===!0,d=e.escapeInvalid===!0?"\\":"",p="";if(i.isOpen===!0)return d+i.value;if(i.isClose===!0)return console.log("node.isClose",d,i.value),d+i.value;if(i.type==="open")return x?d+i.value:"(";if(i.type==="close")return x?d+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":x?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let h=ro.reduce(i.nodes),m=rp(...h,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(m.length!==0)return h.length>1&&m.length>1?`(${m})`:m}if(i.nodes)for(let h of i.nodes)p+=r(h,i);return p};return r(t)};io.exports=ip});var oo=_((Ax,ao)=>{"use strict";var np=di(),so=zt(),nt=Jt(),qe=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?nt.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let c of a)i.push(qe(c,e,r));else for(let c of e)r===!0&&typeof c=="string"&&(c=`{${c}}`),i.push(Array.isArray(c)?qe(a,c,r):a+c);return nt.flatten(i)},sp=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(a,c={})=>{a.queue=[];let u=c,x=c.queue;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,x=u.queue;if(a.invalid||a.dollar){x.push(qe(x.pop(),so(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){x.push(qe(x.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let m=nt.reduce(a.nodes);if(nt.exceedsLimit(...m,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let l=np(...m,e);l.length===0&&(l=so(a,e)),x.push(qe(x.pop(),l)),a.nodes=[];return}let d=nt.encloseBrace(a),p=a.queue,h=a;for(;h.type!=="brace"&&h.type!=="root"&&h.parent;)h=h.parent,p=h.queue;for(let m=0;m{"use strict";uo.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var mo=_((bx,po)=>{"use strict";var ap=zt(),{MAX_LENGTH:lo,CHAR_BACKSLASH:mi,CHAR_BACKTICK:op,CHAR_COMMA:up,CHAR_DOT:cp,CHAR_LEFT_PARENTHESES:lp,CHAR_RIGHT_PARENTHESES:hp,CHAR_LEFT_CURLY_BRACE:fp,CHAR_RIGHT_CURLY_BRACE:pp,CHAR_LEFT_SQUARE_BRACKET:ho,CHAR_RIGHT_SQUARE_BRACKET:fo,CHAR_DOUBLE_QUOTE:dp,CHAR_SINGLE_QUOTE:mp,CHAR_NO_BREAK_SPACE:xp,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ep}=co(),gp=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(lo,r.maxLength):lo;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let a={type:"root",input:t,nodes:[]},c=[a],u=a,x=a,d=0,p=t.length,h=0,m=0,l,n=()=>t[h++],s=o=>{if(o.type==="text"&&x.type==="dot"&&(x.type="text"),x&&x.type==="text"&&o.type==="text"){x.value+=o.value;return}return u.nodes.push(o),o.parent=u,o.prev=x,x=o,o};for(s({type:"bos"});h0){if(u.ranges>0){u.ranges=0;let o=u.nodes.shift();u.nodes=[o,{type:"text",value:ap(u)}]}s({type:"comma",value:l}),u.commas++;continue}if(l===cp&&m>0&&u.commas===0){let o=u.nodes;if(m===0||o.length===0){s({type:"text",value:l});continue}if(x.type==="dot"){if(u.range=[],x.value+=l,x.type="range",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,x.type="text";continue}u.ranges++,u.args=[];continue}if(x.type==="range"){o.pop();let f=o[o.length-1];f.value+=x.value+l,x=f,u.ranges--;continue}s({type:"dot",value:l});continue}s({type:"text",value:l})}do if(u=c.pop(),u.type!=="root"){u.nodes.forEach(E=>{E.nodes||(E.type==="open"&&(E.isOpen=!0),E.type==="close"&&(E.isClose=!0),E.nodes||(E.type="text"),E.invalid=!0)});let o=c[c.length-1],f=o.nodes.indexOf(u);o.nodes.splice(f,1,...u.nodes)}while(c.length>0);return s({type:"eos"}),a};po.exports=gp});var go=_((Fx,Eo)=>{"use strict";var xo=zt(),Dp=no(),yp=oo(),vp=mo(),ce=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let a=ce.create(i,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(ce.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};ce.parse=(t,e={})=>vp(t,e);ce.stringify=(t,e={})=>xo(typeof t=="string"?ce.parse(t,e):t,e);ce.compile=(t,e={})=>(typeof t=="string"&&(t=ce.parse(t,e)),Dp(t,e));ce.expand=(t,e={})=>{typeof t=="string"&&(t=ce.parse(t,e));let r=yp(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};ce.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?ce.compile(t,e):ce.expand(t,e);Eo.exports=ce});var St=_((wx,Ao)=>{"use strict";var Sp=O("path"),Ae="\\\\/",Do=`[^${Ae}]`,ke="\\.",Ap="\\+",Cp="\\?",Kt="\\/",bp="(?=.)",yo="[^/]",xi=`(?:${Kt}|$)`,vo=`(?:^|${Kt})`,Ei=`${ke}{1,2}${xi}`,Fp=`(?!${ke})`,wp=`(?!${vo}${Ei})`,_p=`(?!${ke}{0,1}${xi})`,kp=`(?!${Ei})`,Tp=`[^.${Kt}]`,Bp=`${yo}*?`,So={DOT_LITERAL:ke,PLUS_LITERAL:Ap,QMARK_LITERAL:Cp,SLASH_LITERAL:Kt,ONE_CHAR:bp,QMARK:yo,END_ANCHOR:xi,DOTS_SLASH:Ei,NO_DOT:Fp,NO_DOTS:wp,NO_DOT_SLASH:_p,NO_DOTS_SLASH:kp,QMARK_NO_DOT:Tp,STAR:Bp,START_ANCHOR:vo},Pp={...So,SLASH_LITERAL:`[${Ae}]`,QMARK:Do,STAR:`${Do}*?`,DOTS_SLASH:`${ke}{1,2}(?:[${Ae}]|$)`,NO_DOT:`(?!${ke})`,NO_DOTS:`(?!(?:^|[${Ae}])${ke}{1,2}(?:[${Ae}]|$))`,NO_DOT_SLASH:`(?!${ke}{0,1}(?:[${Ae}]|$))`,NO_DOTS_SLASH:`(?!${ke}{1,2}(?:[${Ae}]|$))`,QMARK_NO_DOT:`[^.${Ae}]`,START_ANCHOR:`(?:^|[${Ae}])`,END_ANCHOR:`(?:[${Ae}]|$)`},Rp={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Ao.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:Rp,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Sp.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?Pp:So}}});var At=_(se=>{"use strict";var Ip=O("path"),Np=process.platform==="win32",{REGEX_BACKSLASH:Lp,REGEX_REMOVE_BACKSLASH:Op,REGEX_SPECIAL_CHARS:Mp,REGEX_SPECIAL_CHARS_GLOBAL:Hp}=St();se.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);se.hasRegexChars=t=>Mp.test(t);se.isRegexChar=t=>t.length===1&&se.hasRegexChars(t);se.escapeRegex=t=>t.replace(Hp,"\\$1");se.toPosixSlashes=t=>t.replace(Lp,"/");se.removeBackslashes=t=>t.replace(Op,e=>e==="\\"?"":e);se.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};se.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:Np===!0||Ip.sep==="\\";se.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?se.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};se.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};se.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",a=r.contains?"":"$",c=`${i}(?:${t})${a}`;return e.negated===!0&&(c=`(?:^(?!${c}).*$)`),c}});var Bo=_((kx,To)=>{"use strict";var Co=At(),{CHAR_ASTERISK:gi,CHAR_AT:Xp,CHAR_BACKWARD_SLASH:Ct,CHAR_COMMA:Up,CHAR_DOT:Di,CHAR_EXCLAMATION_MARK:yi,CHAR_FORWARD_SLASH:ko,CHAR_LEFT_CURLY_BRACE:vi,CHAR_LEFT_PARENTHESES:Si,CHAR_LEFT_SQUARE_BRACKET:$p,CHAR_PLUS:jp,CHAR_QUESTION_MARK:bo,CHAR_RIGHT_CURLY_BRACE:Jp,CHAR_RIGHT_PARENTHESES:Fo,CHAR_RIGHT_SQUARE_BRACKET:zp}=St(),wo=t=>t===ko||t===Ct,_o=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},qp=(t,e)=>{let r=e||{},i=t.length-1,a=r.parts===!0||r.scanToEnd===!0,c=[],u=[],x=[],d=t,p=-1,h=0,m=0,l=!1,n=!1,s=!1,o=!1,f=!1,E=!1,g=!1,v=!1,F=!1,A=!1,T=0,k,P,N={value:"",depth:0,isGlob:!1},U=()=>p>=i,S=()=>d.charCodeAt(p+1),j=()=>(k=P,d.charCodeAt(++p));for(;p0&&(ye=d.slice(0,h),d=d.slice(h),m-=h),J&&s===!0&&m>0?(J=d.slice(0,m),C=d.slice(m)):s===!0?(J="",C=d):J=d,J&&J!==""&&J!=="/"&&J!==d&&wo(J.charCodeAt(J.length-1))&&(J=J.slice(0,-1)),r.unescape===!0&&(C&&(C=Co.removeBackslashes(C)),J&&g===!0&&(J=Co.removeBackslashes(J)));let b={prefix:ye,input:t,start:h,base:J,glob:C,isBrace:l,isBracket:n,isGlob:s,isExtglob:o,isGlobstar:f,negated:v,negatedExtglob:F};if(r.tokens===!0&&(b.maxDepth=0,wo(P)||u.push(N),b.tokens=u),r.parts===!0||r.tokens===!0){let Y;for(let $=0;${"use strict";var Wt=St(),le=At(),{MAX_LENGTH:Vt,POSIX_REGEX_SOURCE:Gp,REGEX_NON_SPECIAL_CHARS:Kp,REGEX_SPECIAL_CHARS_BACKREF:Wp,REPLACEMENTS:Po}=Wt,Vp=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>le.escapeRegex(a)).join("..")}return r},st=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,Ai=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=Po[t]||t;let r={...e},i=typeof r.maxLength=="number"?Math.min(Vt,r.maxLength):Vt,a=t.length;if(a>i)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${i}`);let c={type:"bos",value:"",output:r.prepend||""},u=[c],x=r.capture?"":"?:",d=le.isWindows(e),p=Wt.globChars(d),h=Wt.extglobChars(p),{DOT_LITERAL:m,PLUS_LITERAL:l,SLASH_LITERAL:n,ONE_CHAR:s,DOTS_SLASH:o,NO_DOT:f,NO_DOT_SLASH:E,NO_DOTS_SLASH:g,QMARK:v,QMARK_NO_DOT:F,STAR:A,START_ANCHOR:T}=p,k=R=>`(${x}(?:(?!${T}${R.dot?o:m}).)*?)`,P=r.dot?"":f,N=r.dot?v:F,U=r.bash===!0?k(r):A;r.capture&&(U=`(${U})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let S={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:u};t=le.removePrefix(t,S),a=t.length;let j=[],J=[],ye=[],C=c,b,Y=()=>S.index===a-1,$=S.peek=(R=1)=>t[S.index+R],he=S.advance=()=>t[++S.index]||"",fe=()=>t.slice(S.index+1),ie=(R="",z=0)=>{S.consumed+=R,S.index+=z},Ye=R=>{S.output+=R.output!=null?R.output:R.value,ie(R.value)},Ar=()=>{let R=1;for(;$()==="!"&&($(2)!=="("||$(3)==="?");)he(),S.start++,R++;return R%2===0?!1:(S.negated=!0,S.start++,!0)},Qe=R=>{S[R]++,ye.push(R)},we=R=>{S[R]--,ye.pop()},X=R=>{if(C.type==="globstar"){let z=S.braces>0&&(R.type==="comma"||R.type==="brace"),B=R.extglob===!0||j.length&&(R.type==="pipe"||R.type==="paren");R.type!=="slash"&&R.type!=="paren"&&!z&&!B&&(S.output=S.output.slice(0,-C.output.length),C.type="star",C.value="*",C.output=U,S.output+=C.output)}if(j.length&&R.type!=="paren"&&(j[j.length-1].inner+=R.value),(R.value||R.output)&&Ye(R),C&&C.type==="text"&&R.type==="text"){C.value+=R.value,C.output=(C.output||"")+R.value;return}R.prev=C,u.push(R),C=R},Ze=(R,z)=>{let B={...h[z],conditions:1,inner:""};B.prev=C,B.parens=S.parens,B.output=S.output;let H=(r.capture?"(":"")+B.open;Qe("parens"),X({type:R,value:z,output:S.output?"":s}),X({type:"paren",extglob:!0,value:he(),output:H}),j.push(B)},Cr=R=>{let z=R.close+(r.capture?")":""),B;if(R.type==="negate"){let H=U;if(R.inner&&R.inner.length>1&&R.inner.includes("/")&&(H=k(r)),(H!==U||Y()||/^\)+$/.test(fe()))&&(z=R.close=`)$))${H}`),R.inner.includes("*")&&(B=fe())&&/^\.[^\\/.]+$/.test(B)){let q=Ai(B,{...e,fastpaths:!1}).output;z=R.close=`)${q})${H})`}R.prev.type==="bos"&&(S.negatedExtglob=!0)}X({type:"paren",extglob:!0,value:b,output:z}),we("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let R=!1,z=t.replace(Wp,(B,H,q,Q,K,pt)=>Q==="\\"?(R=!0,B):Q==="?"?H?H+Q+(K?v.repeat(K.length):""):pt===0?N+(K?v.repeat(K.length):""):v.repeat(q.length):Q==="."?m.repeat(q.length):Q==="*"?H?H+Q+(K?U:""):U:H?B:`\\${B}`);return R===!0&&(r.unescape===!0?z=z.replace(/\\/g,""):z=z.replace(/\\+/g,B=>B.length%2===0?"\\\\":B?"\\":"")),z===t&&r.contains===!0?(S.output=t,S):(S.output=le.wrapOutput(z,S,e),S)}for(;!Y();){if(b=he(),b==="\0")continue;if(b==="\\"){let B=$();if(B==="/"&&r.bash!==!0||B==="."||B===";")continue;if(!B){b+="\\",X({type:"text",value:b});continue}let H=/^\\+/.exec(fe()),q=0;if(H&&H[0].length>2&&(q=H[0].length,S.index+=q,q%2!==0&&(b+="\\")),r.unescape===!0?b=he():b+=he(),S.brackets===0){X({type:"text",value:b});continue}}if(S.brackets>0&&(b!=="]"||C.value==="["||C.value==="[^")){if(r.posix!==!1&&b===":"){let B=C.value.slice(1);if(B.includes("[")&&(C.posix=!0,B.includes(":"))){let H=C.value.lastIndexOf("["),q=C.value.slice(0,H),Q=C.value.slice(H+2),K=Gp[Q];if(K){C.value=q+K,S.backtrack=!0,he(),!c.output&&u.indexOf(C)===1&&(c.output=s);continue}}}(b==="["&&$()!==":"||b==="-"&&$()==="]")&&(b=`\\${b}`),b==="]"&&(C.value==="["||C.value==="[^")&&(b=`\\${b}`),r.posix===!0&&b==="!"&&C.value==="["&&(b="^"),C.value+=b,Ye({value:b});continue}if(S.quotes===1&&b!=='"'){b=le.escapeRegex(b),C.value+=b,Ye({value:b});continue}if(b==='"'){S.quotes=S.quotes===1?0:1,r.keepQuotes===!0&&X({type:"text",value:b});continue}if(b==="("){Qe("parens"),X({type:"paren",value:b});continue}if(b===")"){if(S.parens===0&&r.strictBrackets===!0)throw new SyntaxError(st("opening","("));let B=j[j.length-1];if(B&&S.parens===B.parens+1){Cr(j.pop());continue}X({type:"paren",value:b,output:S.parens?")":"\\)"}),we("parens");continue}if(b==="["){if(r.nobracket===!0||!fe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(st("closing","]"));b=`\\${b}`}else Qe("brackets");X({type:"bracket",value:b});continue}if(b==="]"){if(r.nobracket===!0||C&&C.type==="bracket"&&C.value.length===1){X({type:"text",value:b,output:`\\${b}`});continue}if(S.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(st("opening","["));X({type:"text",value:b,output:`\\${b}`});continue}we("brackets");let B=C.value.slice(1);if(C.posix!==!0&&B[0]==="^"&&!B.includes("/")&&(b=`/${b}`),C.value+=b,Ye({value:b}),r.literalBrackets===!1||le.hasRegexChars(B))continue;let H=le.escapeRegex(C.value);if(S.output=S.output.slice(0,-C.value.length),r.literalBrackets===!0){S.output+=H,C.value=H;continue}C.value=`(${x}${H}|${C.value})`,S.output+=C.value;continue}if(b==="{"&&r.nobrace!==!0){Qe("braces");let B={type:"brace",value:b,output:"(",outputIndex:S.output.length,tokensIndex:S.tokens.length};J.push(B),X(B);continue}if(b==="}"){let B=J[J.length-1];if(r.nobrace===!0||!B){X({type:"text",value:b,output:b});continue}let H=")";if(B.dots===!0){let q=u.slice(),Q=[];for(let K=q.length-1;K>=0&&(u.pop(),q[K].type!=="brace");K--)q[K].type!=="dots"&&Q.unshift(q[K].value);H=Vp(Q,r),S.backtrack=!0}if(B.comma!==!0&&B.dots!==!0){let q=S.output.slice(0,B.outputIndex),Q=S.tokens.slice(B.tokensIndex);B.value=B.output="\\{",b=H="\\}",S.output=q;for(let K of Q)S.output+=K.output||K.value}X({type:"brace",value:b,output:H}),we("braces"),J.pop();continue}if(b==="|"){j.length>0&&j[j.length-1].conditions++,X({type:"text",value:b});continue}if(b===","){let B=b,H=J[J.length-1];H&&ye[ye.length-1]==="braces"&&(H.comma=!0,B="|"),X({type:"comma",value:b,output:B});continue}if(b==="/"){if(C.type==="dot"&&S.index===S.start+1){S.start=S.index+1,S.consumed="",S.output="",u.pop(),C=c;continue}X({type:"slash",value:b,output:n});continue}if(b==="."){if(S.braces>0&&C.type==="dot"){C.value==="."&&(C.output=m);let B=J[J.length-1];C.type="dots",C.output+=b,C.value+=b,B.dots=!0;continue}if(S.braces+S.parens===0&&C.type!=="bos"&&C.type!=="slash"){X({type:"text",value:b,output:m});continue}X({type:"dot",value:b,output:m});continue}if(b==="?"){if(!(C&&C.value==="(")&&r.noextglob!==!0&&$()==="("&&$(2)!=="?"){Ze("qmark",b);continue}if(C&&C.type==="paren"){let H=$(),q=b;if(H==="<"&&!le.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(C.value==="("&&!/[!=<:]/.test(H)||H==="<"&&!/<([!=]|\w+>)/.test(fe()))&&(q=`\\${b}`),X({type:"text",value:b,output:q});continue}if(r.dot!==!0&&(C.type==="slash"||C.type==="bos")){X({type:"qmark",value:b,output:F});continue}X({type:"qmark",value:b,output:v});continue}if(b==="!"){if(r.noextglob!==!0&&$()==="("&&($(2)!=="?"||!/[!=<:]/.test($(3)))){Ze("negate",b);continue}if(r.nonegate!==!0&&S.index===0){Ar();continue}}if(b==="+"){if(r.noextglob!==!0&&$()==="("&&$(2)!=="?"){Ze("plus",b);continue}if(C&&C.value==="("||r.regex===!1){X({type:"plus",value:b,output:l});continue}if(C&&(C.type==="bracket"||C.type==="paren"||C.type==="brace")||S.parens>0){X({type:"plus",value:b});continue}X({type:"plus",value:l});continue}if(b==="@"){if(r.noextglob!==!0&&$()==="("&&$(2)!=="?"){X({type:"at",extglob:!0,value:b,output:""});continue}X({type:"text",value:b});continue}if(b!=="*"){(b==="$"||b==="^")&&(b=`\\${b}`);let B=Kp.exec(fe());B&&(b+=B[0],S.index+=B[0].length),X({type:"text",value:b});continue}if(C&&(C.type==="globstar"||C.star===!0)){C.type="star",C.star=!0,C.value+=b,C.output=U,S.backtrack=!0,S.globstar=!0,ie(b);continue}let R=fe();if(r.noextglob!==!0&&/^\([^?]/.test(R)){Ze("star",b);continue}if(C.type==="star"){if(r.noglobstar===!0){ie(b);continue}let B=C.prev,H=B.prev,q=B.type==="slash"||B.type==="bos",Q=H&&(H.type==="star"||H.type==="globstar");if(r.bash===!0&&(!q||R[0]&&R[0]!=="/")){X({type:"star",value:b,output:""});continue}let K=S.braces>0&&(B.type==="comma"||B.type==="brace"),pt=j.length&&(B.type==="pipe"||B.type==="paren");if(!q&&B.type!=="paren"&&!K&&!pt){X({type:"star",value:b,output:""});continue}for(;R.slice(0,3)==="/**";){let et=t[S.index+4];if(et&&et!=="/")break;R=R.slice(3),ie("/**",3)}if(B.type==="bos"&&Y()){C.type="globstar",C.value+=b,C.output=k(r),S.output=C.output,S.globstar=!0,ie(b);continue}if(B.type==="slash"&&B.prev.type!=="bos"&&!Q&&Y()){S.output=S.output.slice(0,-(B.output+C.output).length),B.output=`(?:${B.output}`,C.type="globstar",C.output=k(r)+(r.strictSlashes?")":"|$)"),C.value+=b,S.globstar=!0,S.output+=B.output+C.output,ie(b);continue}if(B.type==="slash"&&B.prev.type!=="bos"&&R[0]==="/"){let et=R[1]!==void 0?"|$":"";S.output=S.output.slice(0,-(B.output+C.output).length),B.output=`(?:${B.output}`,C.type="globstar",C.output=`${k(r)}${n}|${n}${et})`,C.value+=b,S.output+=B.output+C.output,S.globstar=!0,ie(b+he()),X({type:"slash",value:"/",output:""});continue}if(B.type==="bos"&&R[0]==="/"){C.type="globstar",C.value+=b,C.output=`(?:^|${n}|${k(r)}${n})`,S.output=C.output,S.globstar=!0,ie(b+he()),X({type:"slash",value:"/",output:""});continue}S.output=S.output.slice(0,-C.output.length),C.type="globstar",C.output=k(r),C.value+=b,S.output+=C.output,S.globstar=!0,ie(b);continue}let z={type:"star",value:b,output:U};if(r.bash===!0){z.output=".*?",(C.type==="bos"||C.type==="slash")&&(z.output=P+z.output),X(z);continue}if(C&&(C.type==="bracket"||C.type==="paren")&&r.regex===!0){z.output=b,X(z);continue}(S.index===S.start||C.type==="slash"||C.type==="dot")&&(C.type==="dot"?(S.output+=E,C.output+=E):r.dot===!0?(S.output+=g,C.output+=g):(S.output+=P,C.output+=P),$()!=="*"&&(S.output+=s,C.output+=s)),X(z)}for(;S.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(st("closing","]"));S.output=le.escapeLast(S.output,"["),we("brackets")}for(;S.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(st("closing",")"));S.output=le.escapeLast(S.output,"("),we("parens")}for(;S.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(st("closing","}"));S.output=le.escapeLast(S.output,"{"),we("braces")}if(r.strictSlashes!==!0&&(C.type==="star"||C.type==="bracket")&&X({type:"maybe_slash",value:"",output:`${n}?`}),S.backtrack===!0){S.output="";for(let R of S.tokens)S.output+=R.output!=null?R.output:R.value,R.suffix&&(S.output+=R.suffix)}return S};Ai.fastpaths=(t,e)=>{let r={...e},i=typeof r.maxLength=="number"?Math.min(Vt,r.maxLength):Vt,a=t.length;if(a>i)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${i}`);t=Po[t]||t;let c=le.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:x,ONE_CHAR:d,DOTS_SLASH:p,NO_DOT:h,NO_DOTS:m,NO_DOTS_SLASH:l,STAR:n,START_ANCHOR:s}=Wt.globChars(c),o=r.dot?m:h,f=r.dot?l:h,E=r.capture?"":"?:",g={negated:!1,prefix:""},v=r.bash===!0?".*?":n;r.capture&&(v=`(${v})`);let F=P=>P.noglobstar===!0?v:`(${E}(?:(?!${s}${P.dot?p:u}).)*?)`,A=P=>{switch(P){case"*":return`${o}${d}${v}`;case".*":return`${u}${d}${v}`;case"*.*":return`${o}${v}${u}${d}${v}`;case"*/*":return`${o}${v}${x}${d}${f}${v}`;case"**":return o+F(r);case"**/*":return`(?:${o}${F(r)}${x})?${f}${d}${v}`;case"**/*.*":return`(?:${o}${F(r)}${x})?${f}${v}${u}${d}${v}`;case"**/.*":return`(?:${o}${F(r)}${x})?${u}${d}${v}`;default:{let N=/^(.*?)\.(\w+)$/.exec(P);if(!N)return;let U=A(N[1]);return U?U+u+N[2]:void 0}}},T=le.removePrefix(t,g),k=A(T);return k&&r.strictSlashes!==!0&&(k+=`${x}?`),k};Ro.exports=Ai});var Lo=_((Bx,No)=>{"use strict";var Yp=O("path"),Qp=Bo(),Ci=Io(),bi=At(),Zp=St(),ed=t=>t&&typeof t=="object"&&!Array.isArray(t),W=(t,e,r=!1)=>{if(Array.isArray(t)){let h=t.map(l=>W(l,e,r));return l=>{for(let n of h){let s=n(l);if(s)return s}return!1}}let i=ed(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},c=bi.isWindows(e),u=i?W.compileRe(t,e):W.makeRe(t,e,!1,!0),x=u.state;delete u.state;let d=()=>!1;if(a.ignore){let h={...e,ignore:null,onMatch:null,onResult:null};d=W(a.ignore,h,r)}let p=(h,m=!1)=>{let{isMatch:l,match:n,output:s}=W.test(h,u,e,{glob:t,posix:c}),o={glob:t,state:x,regex:u,posix:c,input:h,output:s,match:n,isMatch:l};return typeof a.onResult=="function"&&a.onResult(o),l===!1?(o.isMatch=!1,m?o:!1):d(h)?(typeof a.onIgnore=="function"&&a.onIgnore(o),o.isMatch=!1,m?o:!1):(typeof a.onMatch=="function"&&a.onMatch(o),m?o:!0)};return r&&(p.state=x),p};W.test=(t,e,r,{glob:i,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let c=r||{},u=c.format||(a?bi.toPosixSlashes:null),x=t===i,d=x&&u?u(t):t;return x===!1&&(d=u?u(t):t,x=d===i),(x===!1||c.capture===!0)&&(c.matchBase===!0||c.basename===!0?x=W.matchBase(t,e,r,a):x=e.exec(d)),{isMatch:!!x,match:x,output:d}};W.matchBase=(t,e,r,i=bi.isWindows(r))=>(e instanceof RegExp?e:W.makeRe(e,r)).test(Yp.basename(t));W.isMatch=(t,e,r)=>W(e,r)(t);W.parse=(t,e)=>Array.isArray(t)?t.map(r=>W.parse(r,e)):Ci(t,{...e,fastpaths:!1});W.scan=(t,e)=>Qp(t,e);W.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let a=e||{},c=a.contains?"":"^",u=a.contains?"":"$",x=`${c}(?:${t.output})${u}`;t&&t.negated===!0&&(x=`^(?!${x}).*$`);let d=W.toRegex(x,e);return i===!0&&(d.state=t),d};W.makeRe=(t,e={},r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=Ci.fastpaths(t,e)),a.output||(a=Ci(t,e)),W.compileRe(a,e,r,i)};W.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};W.constants=Zp;No.exports=W});var Mo=_((Px,Oo)=>{"use strict";Oo.exports=Lo()});var Jo=_((Rx,jo)=>{"use strict";var Xo=O("util"),Uo=go(),Ce=Mo(),Fi=At(),Ho=t=>t===""||t==="./",$o=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},G=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,a=new Set,c=new Set,u=0,x=h=>{c.add(h.output),r&&r.onResult&&r.onResult(h)};for(let h=0;h!i.has(h));if(r&&p.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(h=>h.replace(/\\/g,"")):e}return p};G.match=G;G.matcher=(t,e)=>Ce(t,e);G.isMatch=(t,e,r)=>Ce(e,r)(t);G.any=G.isMatch;G.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,a=[],c=x=>{r.onResult&&r.onResult(x),a.push(x.output)},u=new Set(G(t,e,{...r,onResult:c}));for(let x of a)u.has(x)||i.add(x);return[...i]};G.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${Xo.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>G.contains(t,i,r));if(typeof e=="string"){if(Ho(t)||Ho(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return G.isMatch(t,e,{...r,contains:!0})};G.matchKeys=(t,e,r)=>{if(!Fi.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=G(Object.keys(t),e,r),a={};for(let c of i)a[c]=t[c];return a};G.some=(t,e,r)=>{let i=[].concat(t);for(let a of[].concat(e)){let c=Ce(String(a),r);if(i.some(u=>c(u)))return!0}return!1};G.every=(t,e,r)=>{let i=[].concat(t);for(let a of[].concat(e)){let c=Ce(String(a),r);if(!i.every(u=>c(u)))return!1}return!0};G.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${Xo.inspect(t)}"`);return[].concat(e).every(i=>Ce(i,r)(t))};G.capture=(t,e,r)=>{let i=Fi.isWindows(r),c=Ce.makeRe(String(t),{...r,capture:!0}).exec(i?Fi.toPosixSlashes(e):e);if(c)return c.slice(1).map(u=>u===void 0?"":u)};G.makeRe=(...t)=>Ce.makeRe(...t);G.scan=(...t)=>Ce.scan(...t);G.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let a of Uo(String(i),e))r.push(Ce.parse(a,e));return r};G.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!$o(t)?[t]:Uo(t,e)};G.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return G.braces(t,{...e,expand:!0})};G.hasBraces=$o;jo.exports=G});var Qo=_(L=>{"use strict";Object.defineProperty(L,"__esModule",{value:!0});L.removeDuplicateSlashes=L.matchAny=L.convertPatternsToRe=L.makeRe=L.getPatternParts=L.expandBraceExpansion=L.expandPatternsWithBraceExpansion=L.isAffectDepthOfReadingPattern=L.endsWithSlashGlobStar=L.hasGlobStar=L.getBaseDirectory=L.isPatternRelatedToParentDirectory=L.getPatternsOutsideCurrentDirectory=L.getPatternsInsideCurrentDirectory=L.getPositivePatterns=L.getNegativePatterns=L.isPositivePattern=L.isNegativePattern=L.convertToNegativePattern=L.convertToPositivePattern=L.isDynamicPattern=L.isStaticPattern=void 0;var td=O("path"),rd=Na(),wi=Jo(),zo="**",id="\\",nd=/[*?]|^!/,sd=/\[[^[]*]/,ad=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,od=/[!*+?@]\([^(]*\)/,ud=/,|\.\./,cd=/(?!^)\/{2,}/g;function qo(t,e={}){return!Go(t,e)}L.isStaticPattern=qo;function Go(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(id)||nd.test(t)||sd.test(t)||ad.test(t)||e.extglob!==!1&&od.test(t)||e.braceExpansion!==!1&&ld(t))}L.isDynamicPattern=Go;function ld(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let i=t.slice(e,r);return ud.test(i)}function hd(t){return Yt(t)?t.slice(1):t}L.convertToPositivePattern=hd;function fd(t){return"!"+t}L.convertToNegativePattern=fd;function Yt(t){return t.startsWith("!")&&t[1]!=="("}L.isNegativePattern=Yt;function Ko(t){return!Yt(t)}L.isPositivePattern=Ko;function pd(t){return t.filter(Yt)}L.getNegativePatterns=pd;function dd(t){return t.filter(Ko)}L.getPositivePatterns=dd;function md(t){return t.filter(e=>!_i(e))}L.getPatternsInsideCurrentDirectory=md;function xd(t){return t.filter(_i)}L.getPatternsOutsideCurrentDirectory=xd;function _i(t){return t.startsWith("..")||t.startsWith("./..")}L.isPatternRelatedToParentDirectory=_i;function Ed(t){return rd(t,{flipBackslashes:!1})}L.getBaseDirectory=Ed;function gd(t){return t.includes(zo)}L.hasGlobStar=gd;function Wo(t){return t.endsWith("/"+zo)}L.endsWithSlashGlobStar=Wo;function Dd(t){let e=td.basename(t);return Wo(t)||qo(e)}L.isAffectDepthOfReadingPattern=Dd;function yd(t){return t.reduce((e,r)=>e.concat(Vo(r)),[])}L.expandPatternsWithBraceExpansion=yd;function Vo(t){let e=wi.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,i)=>r.length-i.length),e.filter(r=>r!=="")}L.expandBraceExpansion=Vo;function vd(t,e){let{parts:r}=wi.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}L.getPatternParts=vd;function Yo(t,e){return wi.makeRe(t,e)}L.makeRe=Yo;function Sd(t,e){return t.map(r=>Yo(r,e))}L.convertPatternsToRe=Sd;function Ad(t,e){return e.some(r=>r.test(t))}L.matchAny=Ad;function Cd(t){return t.replace(cd,"/")}L.removeDuplicateSlashes=Cd});var ru=_((Nx,tu)=>{"use strict";var bd=O("stream"),Zo=bd.PassThrough,Fd=Array.prototype.slice;tu.exports=wd;function wd(){let t=[],e=Fd.call(arguments),r=!1,i=e[e.length-1];i&&!Array.isArray(i)&&i.pipe==null?e.pop():i={};let a=i.end!==!1,c=i.pipeError===!0;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let u=Zo(i);function x(){for(let h=0,m=arguments.length;h0||(r=!1,d())}function n(s){function o(){s.removeListener("merge2UnpipeEnd",o),s.removeListener("end",o),c&&s.removeListener("error",f),l()}function f(E){u.emit("error",E)}if(s._readableState.endEmitted)return l();s.on("merge2UnpipeEnd",o),s.on("end",o),c&&s.on("error",f),s.pipe(u,{end:!1}),s.resume()}for(let s=0;s{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.merge=void 0;var _d=ru();function kd(t){let e=_d(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>iu(t)),e.once("end",()=>iu(t)),e}Qt.merge=kd;function iu(t){t.forEach(e=>e.emit("close"))}});var su=_(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.isEmpty=at.isString=void 0;function Td(t){return typeof t=="string"}at.isString=Td;function Bd(t){return t===""}at.isEmpty=Bd});var Te=_(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.string=te.stream=te.pattern=te.path=te.fs=te.errno=te.array=void 0;var Pd=Sa();te.array=Pd;var Rd=Aa();te.errno=Rd;var Id=Ca();te.fs=Id;var Nd=_a();te.path=Nd;var Ld=Qo();te.pattern=Ld;var Od=nu();te.stream=Od;var Md=su();te.string=Md});var cu=_(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.convertPatternGroupToTask=re.convertPatternGroupsToTasks=re.groupPatternsByBaseDirectory=re.getNegativePatternsAsPositive=re.getPositivePatterns=re.convertPatternsToTasks=re.generate=void 0;var ge=Te();function Hd(t,e){let r=au(t,e),i=au(e.ignore,e),a=ou(r),c=uu(r,i),u=a.filter(h=>ge.pattern.isStaticPattern(h,e)),x=a.filter(h=>ge.pattern.isDynamicPattern(h,e)),d=ki(u,c,!1),p=ki(x,c,!0);return d.concat(p)}re.generate=Hd;function au(t,e){let r=t;return e.braceExpansion&&(r=ge.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(i=>i.includes("/")?i:`**/${i}`)),r.map(i=>ge.pattern.removeDuplicateSlashes(i))}function ki(t,e,r){let i=[],a=ge.pattern.getPatternsOutsideCurrentDirectory(t),c=ge.pattern.getPatternsInsideCurrentDirectory(t),u=Ti(a),x=Ti(c);return i.push(...Bi(u,e,r)),"."in x?i.push(Pi(".",c,e,r)):i.push(...Bi(x,e,r)),i}re.convertPatternsToTasks=ki;function ou(t){return ge.pattern.getPositivePatterns(t)}re.getPositivePatterns=ou;function uu(t,e){return ge.pattern.getNegativePatterns(t).concat(e).map(ge.pattern.convertToPositivePattern)}re.getNegativePatternsAsPositive=uu;function Ti(t){let e={};return t.reduce((r,i)=>{let a=ge.pattern.getBaseDirectory(i);return a in r?r[a].push(i):r[a]=[i],r},e)}re.groupPatternsByBaseDirectory=Ti;function Bi(t,e,r){return Object.keys(t).map(i=>Pi(i,t[i],e,r))}re.convertPatternGroupsToTasks=Bi;function Pi(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(ge.pattern.convertToNegativePattern))}}re.convertPatternGroupToTask=Pi});var hu=_(Zt=>{"use strict";Object.defineProperty(Zt,"__esModule",{value:!0});Zt.read=void 0;function Xd(t,e,r){e.fs.lstat(t,(i,a)=>{if(i!==null){lu(r,i);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){Ri(r,a);return}e.fs.stat(t,(c,u)=>{if(c!==null){if(e.throwErrorOnBrokenSymbolicLink){lu(r,c);return}Ri(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),Ri(r,u)})})}Zt.read=Xd;function lu(t,e){t(e)}function Ri(t,e){t(null,e)}});var fu=_(er=>{"use strict";Object.defineProperty(er,"__esModule",{value:!0});er.read=void 0;function Ud(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}er.read=Ud});var pu=_(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.createFileSystemAdapter=Ne.FILE_SYSTEM_ADAPTER=void 0;var tr=O("fs");Ne.FILE_SYSTEM_ADAPTER={lstat:tr.lstat,stat:tr.stat,lstatSync:tr.lstatSync,statSync:tr.statSync};function $d(t){return t===void 0?Ne.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Ne.FILE_SYSTEM_ADAPTER),t)}Ne.createFileSystemAdapter=$d});var du=_(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});var jd=pu(),Ii=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=jd.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};Ni.default=Ii});var Ge=_(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.statSync=Le.stat=Le.Settings=void 0;var mu=hu(),Jd=fu(),Li=du();Le.Settings=Li.default;function zd(t,e,r){if(typeof e=="function"){mu.read(t,Oi(),e);return}mu.read(t,Oi(e),r)}Le.stat=zd;function qd(t,e){let r=Oi(e);return Jd.read(t,r)}Le.statSync=qd;function Oi(t={}){return t instanceof Li.default?t:new Li.default(t)}});var gu=_((zx,Eu)=>{var xu;Eu.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):t=>(xu||(xu=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var yu=_((qx,Du)=>{Du.exports=Kd;var Gd=gu();function Kd(t,e){let r,i,a,c=!0;Array.isArray(t)?(r=[],i=t.length):(a=Object.keys(t),r={},i=a.length);function u(d){function p(){e&&e(d,r),e=null}c?Gd(p):p()}function x(d,p,h){r[d]=h,(--i===0||p)&&u(p)}i?a?a.forEach(function(d){t[d](function(p,h){x(d,p,h)})}):t.forEach(function(d,p){d(function(h,m){x(p,h,m)})}):u(null),c=!1}});var Mi=_(ir=>{"use strict";Object.defineProperty(ir,"__esModule",{value:!0});ir.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var rr=process.versions.node.split(".");if(rr[0]===void 0||rr[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var vu=Number.parseInt(rr[0],10),Wd=Number.parseInt(rr[1],10),Su=10,Vd=10,Yd=vu>Su,Qd=vu===Su&&Wd>=Vd;ir.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Yd||Qd});var Au=_(nr=>{"use strict";Object.defineProperty(nr,"__esModule",{value:!0});nr.createDirentFromStats=void 0;var Hi=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Zd(t,e){return new Hi(t,e)}nr.createDirentFromStats=Zd});var Xi=_(sr=>{"use strict";Object.defineProperty(sr,"__esModule",{value:!0});sr.fs=void 0;var em=Au();sr.fs=em});var Ui=_(ar=>{"use strict";Object.defineProperty(ar,"__esModule",{value:!0});ar.joinPathSegments=void 0;function tm(t,e,r){return t.endsWith(r)?t+e:t+r+e}ar.joinPathSegments=tm});var ku=_(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.readdir=Oe.readdirWithFileTypes=Oe.read=void 0;var rm=Ge(),Cu=yu(),im=Mi(),bu=Xi(),Fu=Ui();function nm(t,e,r){if(!e.stats&&im.IS_SUPPORT_READDIR_WITH_FILE_TYPES){wu(t,e,r);return}_u(t,e,r)}Oe.read=nm;function wu(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,a)=>{if(i!==null){or(r,i);return}let c=a.map(x=>({dirent:x,name:x.name,path:Fu.joinPathSegments(t,x.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){$i(r,c);return}let u=c.map(x=>sm(x,e));Cu(u,(x,d)=>{if(x!==null){or(r,x);return}$i(r,d)})})}Oe.readdirWithFileTypes=wu;function sm(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,a)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=bu.fs.createDirentFromStats(t.name,a),r(null,t)})}}function _u(t,e,r){e.fs.readdir(t,(i,a)=>{if(i!==null){or(r,i);return}let c=a.map(u=>{let x=Fu.joinPathSegments(t,u,e.pathSegmentSeparator);return d=>{rm.stat(x,e.fsStatSettings,(p,h)=>{if(p!==null){d(p);return}let m={name:u,path:x,dirent:bu.fs.createDirentFromStats(u,h)};e.stats&&(m.stats=h),d(null,m)})}});Cu(c,(u,x)=>{if(u!==null){or(r,u);return}$i(r,x)})})}Oe.readdir=_u;function or(t,e){t(e)}function $i(t,e){t(null,e)}});var Iu=_(Me=>{"use strict";Object.defineProperty(Me,"__esModule",{value:!0});Me.readdir=Me.readdirWithFileTypes=Me.read=void 0;var am=Ge(),om=Mi(),Tu=Xi(),Bu=Ui();function um(t,e){return!e.stats&&om.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Pu(t,e):Ru(t,e)}Me.read=um;function Pu(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let a={dirent:i,name:i.name,path:Bu.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let c=e.fs.statSync(a.path);a.dirent=Tu.fs.createDirentFromStats(a.name,c)}catch(c){if(e.throwErrorOnBrokenSymbolicLink)throw c}return a})}Me.readdirWithFileTypes=Pu;function Ru(t,e){return e.fs.readdirSync(t).map(i=>{let a=Bu.joinPathSegments(t,i,e.pathSegmentSeparator),c=am.statSync(a,e.fsStatSettings),u={name:i,path:a,dirent:Tu.fs.createDirentFromStats(i,c)};return e.stats&&(u.stats=c),u})}Me.readdir=Ru});var Nu=_(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.createFileSystemAdapter=He.FILE_SYSTEM_ADAPTER=void 0;var ot=O("fs");He.FILE_SYSTEM_ADAPTER={lstat:ot.lstat,stat:ot.stat,lstatSync:ot.lstatSync,statSync:ot.statSync,readdir:ot.readdir,readdirSync:ot.readdirSync};function cm(t){return t===void 0?He.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},He.FILE_SYSTEM_ADAPTER),t)}He.createFileSystemAdapter=cm});var Lu=_(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});var lm=O("path"),hm=Ge(),fm=Nu(),ji=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=fm.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,lm.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new hm.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};Ji.default=ji});var ur=_(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.Settings=Xe.scandirSync=Xe.scandir=void 0;var Ou=ku(),pm=Iu(),zi=Lu();Xe.Settings=zi.default;function dm(t,e,r){if(typeof e=="function"){Ou.read(t,qi(),e);return}Ou.read(t,qi(e),r)}Xe.scandir=dm;function mm(t,e){let r=qi(e);return pm.read(t,r)}Xe.scandirSync=mm;function qi(t={}){return t instanceof zi.default?t:new zi.default(t)}});var Hu=_((rE,Mu)=>{"use strict";function xm(t){var e=new t,r=e;function i(){var c=e;return c.next?e=c.next:(e=new t,r=e),c.next=null,c}function a(c){r.next=c,r=c}return{get:i,release:a}}Mu.exports=xm});var Uu=_((iE,Gi)=>{"use strict";var Em=Hu();function Xu(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var i=Em(gm),a=null,c=null,u=0,x=null,d={push:o,drain:me,saturated:me,pause:h,paused:!1,get concurrency(){return r},set concurrency(A){if(!(A>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=A,!d.paused)for(;a&&u=r||d.paused?c?(c.next=k,c=k):(a=k,c=k,d.saturated()):(u++,e.call(t,k.value,k.worked))}function f(A,T){var k=i.get();k.context=t,k.release=E,k.value=A,k.callback=T||me,k.errorHandler=x,u>=r||d.paused?a?(k.next=a,a=k):(a=k,c=k,d.saturated()):(u++,e.call(t,k.value,k.worked))}function E(A){A&&i.release(A);var T=a;T&&u<=r?d.paused?u--:(c===a&&(c=null),a=T.next,T.next=null,e.call(t,T.value,T.worked),c===null&&d.empty()):--u===0&&d.drain()}function g(){a=null,c=null,d.drain=me}function v(){a=null,c=null,d.drain(),d.drain=me}function F(A){x=A}}function me(){}function gm(){this.value=null,this.callback=me,this.next=null,this.release=me,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,i){var a=t.callback,c=t.errorHandler,u=t.value;t.value=null,t.callback=me,t.errorHandler&&c(r,u),a.call(t.context,r,i),t.release(t)}}function Dm(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function i(h,m){e.call(this,h).then(function(l){m(null,l)},m)}var a=Xu(t,i,r),c=a.push,u=a.unshift;return a.push=x,a.unshift=d,a.drained=p,a;function x(h){var m=new Promise(function(l,n){c(h,function(s,o){if(s){n(s);return}l(o)})});return m.catch(me),m}function d(h){var m=new Promise(function(l,n){u(h,function(s,o){if(s){n(s);return}l(o)})});return m.catch(me),m}function p(){if(a.idle())return new Promise(function(l){l()});var h=a.drain,m=new Promise(function(l){a.drain=function(){h(),l()}});return m}}Gi.exports=Xu;Gi.exports.promise=Dm});var cr=_(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.joinPathSegments=be.replacePathSegmentSeparator=be.isAppliedFilter=be.isFatalError=void 0;function ym(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}be.isFatalError=ym;function vm(t,e){return t===null||t(e)}be.isAppliedFilter=vm;function Sm(t,e){return t.split(/[/\\]/).join(e)}be.replacePathSegmentSeparator=Sm;function Am(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}be.joinPathSegments=Am});var Vi=_(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});var Cm=cr(),Ki=class{constructor(e,r){this._root=e,this._settings=r,this._root=Cm.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};Wi.default=Ki});var Zi=_(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});var bm=O("events"),Fm=ur(),wm=Uu(),lr=cr(),_m=Vi(),Yi=class extends _m.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=Fm.scandir,this._emitter=new bm.EventEmitter,this._queue=wm(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,a)=>{if(i!==null){r(i,void 0);return}for(let c of a)this._handleEntry(c,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!lr.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=lr.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),lr.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&lr.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};Qi.default=Yi});var $u=_(tn=>{"use strict";Object.defineProperty(tn,"__esModule",{value:!0});var km=Zi(),en=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new km.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{Tm(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Bm(e,this._storage)}),this._reader.read()}};tn.default=en;function Tm(t,e){t(e)}function Bm(t,e){t(null,e)}});var ju=_(nn=>{"use strict";Object.defineProperty(nn,"__esModule",{value:!0});var Pm=O("stream"),Rm=Zi(),rn=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Rm.default(this._root,this._settings),this._stream=new Pm.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};nn.default=rn});var Ju=_(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});var Im=ur(),hr=cr(),Nm=Vi(),sn=class extends Nm.default{constructor(){super(...arguments),this._scandir=Im.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let a of i)this._handleEntry(a,r)}catch(i){this._handleError(i)}}_handleError(e){if(hr.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=hr.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),hr.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&hr.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};an.default=sn});var zu=_(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});var Lm=Ju(),on=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Lm.default(this._root,this._settings)}read(){return this._reader.read()}};un.default=on});var qu=_(ln=>{"use strict";Object.defineProperty(ln,"__esModule",{value:!0});var Om=O("path"),Mm=ur(),cn=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Om.sep),this.fsScandirSettings=new Mm.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};ln.default=cn});var pr=_(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.Settings=Fe.walkStream=Fe.walkSync=Fe.walk=void 0;var Gu=$u(),Hm=ju(),Xm=zu(),hn=qu();Fe.Settings=hn.default;function Um(t,e,r){if(typeof e=="function"){new Gu.default(t,fr()).read(e);return}new Gu.default(t,fr(e)).read(r)}Fe.walk=Um;function $m(t,e){let r=fr(e);return new Xm.default(t,r).read()}Fe.walkSync=$m;function jm(t,e){let r=fr(e);return new Hm.default(t,r).read()}Fe.walkStream=jm;function fr(t={}){return t instanceof hn.default?t:new hn.default(t)}});var dr=_(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});var Jm=O("path"),zm=Ge(),Ku=Te(),fn=class{constructor(e){this._settings=e,this._fsStatSettings=new zm.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Jm.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Ku.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Ku.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};pn.default=fn});var xn=_(mn=>{"use strict";Object.defineProperty(mn,"__esModule",{value:!0});var qm=O("stream"),Gm=Ge(),Km=pr(),Wm=dr(),dn=class extends Wm.default{constructor(){super(...arguments),this._walkStream=Km.walkStream,this._stat=Gm.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),a=new qm.PassThrough({objectMode:!0});a._write=(c,u,x)=>this._getEntry(i[c],e[c],r).then(d=>{d!==null&&r.entryFilter(d)&&a.push(d),c===i.length-1&&a.end(),x()}).catch(x);for(let c=0;cthis._makeEntry(a,r)).catch(a=>{if(i.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(a,c)=>a===null?r(c):i(a))})}};mn.default=dn});var Wu=_(gn=>{"use strict";Object.defineProperty(gn,"__esModule",{value:!0});var Vm=pr(),Ym=dr(),Qm=xn(),En=class extends Ym.default{constructor(){super(...arguments),this._walkAsync=Vm.walk,this._readerStream=new Qm.default(this._settings)}dynamic(e,r){return new Promise((i,a)=>{this._walkAsync(e,r,(c,u)=>{c===null?i(u):a(c)})})}async static(e,r){let i=[],a=this._readerStream.static(e,r);return new Promise((c,u)=>{a.once("error",u),a.on("data",x=>i.push(x)),a.once("end",()=>c(i))})}};gn.default=En});var Vu=_(yn=>{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});var bt=Te(),Dn=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),i=this._splitSegmentsIntoSections(r);this._storage.push({complete:i.length<=1,pattern:e,segments:r,sections:i})}}_getPatternSegments(e){return bt.pattern.getPatternParts(e,this._micromatchOptions).map(i=>bt.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:bt.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return bt.array.splitWhen(e,r=>r.dynamic&&bt.pattern.hasGlobStar(r.pattern))}};yn.default=Dn});var Yu=_(Sn=>{"use strict";Object.defineProperty(Sn,"__esModule",{value:!0});var Zm=Vu(),vn=class extends Zm.default{match(e){let r=e.split("/"),i=r.length,a=this._storage.filter(c=>!c.complete||c.segments.length>i);for(let c of a){let u=c.sections[0];if(!c.complete&&i>u.length||r.every((d,p)=>{let h=c.segments[p];return!!(h.dynamic&&h.patternRe.test(d)||!h.dynamic&&h.pattern===d)}))return!0}return!1}};Sn.default=vn});var Qu=_(Cn=>{"use strict";Object.defineProperty(Cn,"__esModule",{value:!0});var mr=Te(),e0=Yu(),An=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let a=this._getMatcher(r),c=this._getNegativePatternsRe(i);return u=>this._filter(e,u,a,c)}_getMatcher(e){return new e0.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(mr.pattern.isAffectDepthOfReadingPattern);return mr.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let c=mr.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(c,i)?!1:this._isSkippedByNegativePatterns(c,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let i=r.split("/").length;if(e==="")return i;let a=e.split("/").length;return i-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!mr.pattern.matchAny(e,r)}};Cn.default=An});var Zu=_(Fn=>{"use strict";Object.defineProperty(Fn,"__esModule",{value:!0});var Ke=Te(),bn=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=Ke.pattern.convertPatternsToRe(e,this._micromatchOptions),a=Ke.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return c=>this._filter(c,i,a)}_filter(e,r,i){let a=Ke.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(a,i))return!1;let c=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,c)&&!this._isMatchToPatterns(a,i,c);return this._settings.unique&&u&&this._createIndexRecord(a),u}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=Ke.path.makeAbsolute(this._settings.cwd,e);return Ke.pattern.matchAny(i,r)}_isMatchToPatterns(e,r,i){let a=Ke.pattern.matchAny(e,r);return!a&&i?Ke.pattern.matchAny(e+"/",r):a}};Fn.default=bn});var ec=_(_n=>{"use strict";Object.defineProperty(_n,"__esModule",{value:!0});var t0=Te(),wn=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return t0.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};_n.default=wn});var rc=_(Tn=>{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});var tc=Te(),kn=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=tc.path.makeAbsolute(this._settings.cwd,r),r=tc.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};Tn.default=kn});var xr=_(Pn=>{"use strict";Object.defineProperty(Pn,"__esModule",{value:!0});var r0=O("path"),i0=Qu(),n0=Zu(),s0=ec(),a0=rc(),Bn=class{constructor(e){this._settings=e,this.errorFilter=new s0.default(this._settings),this.entryFilter=new n0.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new i0.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new a0.default(this._settings)}_getRootDirectory(e){return r0.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Pn.default=Bn});var ic=_(In=>{"use strict";Object.defineProperty(In,"__esModule",{value:!0});var o0=Wu(),u0=xr(),Rn=class extends u0.default{constructor(){super(...arguments),this._reader=new o0.default(this._settings)}async read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return(await this.api(r,e,i)).map(c=>i.transform(c))}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};In.default=Rn});var nc=_(Ln=>{"use strict";Object.defineProperty(Ln,"__esModule",{value:!0});var c0=O("stream"),l0=xn(),h0=xr(),Nn=class extends h0.default{constructor(){super(...arguments),this._reader=new l0.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),a=this.api(r,e,i),c=new c0.Readable({objectMode:!0,read:()=>{}});return a.once("error",u=>c.emit("error",u)).on("data",u=>c.emit("data",i.transform(u))).once("end",()=>c.emit("end")),c.once("close",()=>a.destroy()),c}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};Ln.default=Nn});var sc=_(Mn=>{"use strict";Object.defineProperty(Mn,"__esModule",{value:!0});var f0=Ge(),p0=pr(),d0=dr(),On=class extends d0.default{constructor(){super(...arguments),this._walkSync=p0.walkSync,this._statSync=f0.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let a of e){let c=this._getFullEntryPath(a),u=this._getEntry(c,a,r);u===null||!r.entryFilter(u)||i.push(u)}return i}_getEntry(e,r,i){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(i.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};Mn.default=On});var ac=_(Xn=>{"use strict";Object.defineProperty(Xn,"__esModule",{value:!0});var m0=sc(),x0=xr(),Hn=class extends x0.default{constructor(){super(...arguments),this._reader=new m0.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};Xn.default=Hn});var oc=_(ct=>{"use strict";Object.defineProperty(ct,"__esModule",{value:!0});ct.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var ut=O("fs"),E0=O("os"),g0=Math.max(E0.cpus().length,1);ct.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:ut.lstat,lstatSync:ut.lstatSync,stat:ut.stat,statSync:ut.statSync,readdir:ut.readdir,readdirSync:ut.readdirSync};var Un=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,g0),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},ct.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};ct.default=Un});var zn=_((_E,cc)=>{"use strict";var uc=cu(),D0=ic(),y0=nc(),v0=ac(),$n=oc(),xe=Te();async function jn(t,e){De(t);let r=Jn(t,D0.default,e),i=await Promise.all(r);return xe.array.flatten(i)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(p,h){De(p);let m=Jn(p,v0.default,h);return xe.array.flatten(m)}t.sync=e;function r(p,h){De(p);let m=Jn(p,y0.default,h);return xe.stream.merge(m)}t.stream=r;function i(p,h){De(p);let m=[].concat(p),l=new $n.default(h);return uc.generate(m,l)}t.generateTasks=i;function a(p,h){De(p);let m=new $n.default(h);return xe.pattern.isDynamicPattern(p,m)}t.isDynamicPattern=a;function c(p){return De(p),xe.path.escape(p)}t.escapePath=c;function u(p){return De(p),xe.path.convertPathToPattern(p)}t.convertPathToPattern=u;let x;(function(p){function h(l){return De(l),xe.path.escapePosixPath(l)}p.escapePath=h;function m(l){return De(l),xe.path.convertPosixPathToPattern(l)}p.convertPathToPattern=m})(x=t.posix||(t.posix={}));let d;(function(p){function h(l){return De(l),xe.path.escapeWindowsPath(l)}p.escapePath=h;function m(l){return De(l),xe.path.convertWindowsPathToPattern(l)}p.convertPathToPattern=m})(d=t.win32||(t.win32={}))})(jn||(jn={}));function Jn(t,e,r){let i=[].concat(t),a=new $n.default(r),c=uc.generate(i,a),u=new e(a);return c.map(u.read,u)}function De(t){if(![].concat(t).every(i=>xe.string.isString(i)&&!xe.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}cc.exports=jn});var vc=_((LE,yc)=>{function pc(t){return Array.isArray(t)?t:[t]}var Vn="",dc=" ",Kn="\\",S0=/^\s+$/,A0=/(?:[^\\]|^)\\$/,C0=/^\\!/,b0=/^\\#/,F0=/\r?\n/g,w0=/^\.*\/|^\.+$/,Wn="/",Ec="node-ignore";typeof Symbol<"u"&&(Ec=Symbol.for("node-ignore"));var mc=Ec,_0=(t,e,r)=>Object.defineProperty(t,e,{value:r}),k0=/([0-z])-([0-z])/g,gc=()=>!1,T0=t=>t.replace(k0,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:Vn),B0=t=>{let{length:e}=t;return t.slice(0,e-e%2)},P0=[[/^\uFEFF/,()=>Vn],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,r)=>e+(r.indexOf("\\")===0?dc:Vn)],[/(\\+?)\s/g,(t,e)=>{let{length:r}=e;return e.slice(0,r-r%2)+dc}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6{let i=r.replace(/\\\*/g,"[^\\/]*");return e+i}],[/\\\\\\(?=[$.|*+(){^])/g,()=>Kn],[/\\\\/g,()=>Kn],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,i,a)=>e===Kn?`\\[${r}${B0(i)}${a}`:a==="]"&&i.length%2===0?`[${T0(r)}${i}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],xc=Object.create(null),R0=(t,e)=>{let r=xc[t];return r||(r=P0.reduce((i,[a,c])=>i.replace(a,c.bind(t)),t),xc[t]=r),e?new RegExp(r,"i"):new RegExp(r)},Zn=t=>typeof t=="string",I0=t=>t&&Zn(t)&&!S0.test(t)&&!A0.test(t)&&t.indexOf("#")!==0,N0=t=>t.split(F0),Yn=class{constructor(e,r,i,a){this.origin=e,this.pattern=r,this.negative=i,this.regex=a}},L0=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(C0,"!").replace(b0,"#");let a=R0(t,e);return new Yn(r,t,i,a)},O0=(t,e)=>{throw new e(t)},Be=(t,e,r)=>Zn(t)?t?Be.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Dc=t=>w0.test(t);Be.isNotRelative=Dc;Be.convert=t=>t;var Qn=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:i=!1}={}){_0(this,mc,!0),this._rules=[],this._ignoreCase=r,this._allowRelativePaths=i,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[mc]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(I0(e)){let r=L0(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,pc(Zn(e)?N0(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,a=!1;return this._rules.forEach(c=>{let{negative:u}=c;if(a===u&&i!==a||u&&!i&&!a&&!r)return;c.regex.test(e)&&(i=!u,a=u)}),{ignored:i,unignored:a}}_test(e,r,i,a){let c=e&&Be.convert(e);return Be(c,e,this._allowRelativePaths?gc:O0),this._t(c,r,i,a)}_t(e,r,i,a){if(e in r)return r[e];if(a||(a=e.split(Wn)),a.pop(),!a.length)return r[e]=this._testOne(e,i);let c=this._t(a.join(Wn)+Wn,r,i,a);return r[e]=c.ignored?c:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return pc(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},gr=t=>new Qn(t),M0=t=>Be(t&&Be.convert(t),t,gc);gr.isPathValid=M0;gr.default=gr;yc.exports=gr;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");Be.convert=t;let e=/^[a-z]:\//i;Be.isNotRelative=r=>e.test(r)||Dc(r)}});var V0={};Fl(V0,{default:()=>W0});var Ue=O("path");var $e=O("path");function os(t){t=t.replace(/\\/g,"/");let e=t,r=[t];return t.endsWith(".json")?(r=[t],e=$e.posix.join(t,"..","package.json"),t=$e.posix.join(t,"..")):(r=[$e.posix.join(t,"tsconfig.json"),$e.posix.join(t,"tsconfig.*.json")],e=$e.posix.join(t,"package.json")),{directory:$e.posix.resolve(t),packageJsonPath:e,tsConfigPatterns:r}}var _t=O("fs/promises"),Ee=ne(ls(),1),ft=ne(ti(),1);var ts=ne(O("process"),1),Ic=ne(O("fs"),1),Ve=ne(O("path"),1);var Ut=O("events"),Ea=O("stream"),si=O("stream/promises");function ai(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let a of t)ii(a);let e=t.some(({readableObjectMode:a})=>a),r=uf(t,e),i=new ri({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let a of t)i.add(a);return t.length===0&&ya(i),i}var uf=(t,e)=>{if(t.length===0)return 16384;let r=t.filter(({readableObjectMode:i})=>i===e).map(({readableHighWaterMark:i})=>i);return Math.max(...r)},ri=class extends Ea.PassThrough{#e=new Set([]);#r=new Set([]);#i=new Set([]);#t;add(e){ii(e),!this.#e.has(e)&&(this.#e.add(e),this.#t??=cf(this,this.#e),ff({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#i,onFinished:this.#t}),e.pipe(this,{end:!1}))}remove(e){return ii(e),this.#e.has(e)?(e.unpipe(this),!0):!1}},cf=async(t,e)=>{Xt(t,ma);let r=new AbortController;try{await Promise.race([lf(t,r),hf(t,e,r)])}finally{r.abort(),Xt(t,-ma)}},lf=async(t,{signal:e})=>{await(0,si.finished)(t,{signal:e,cleanup:!0})},hf=async(t,e,{signal:r})=>{for await(let[i]of(0,Ut.on)(t,"unpipe",{signal:r}))e.has(i)&&i.emit(Da)},ii=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},ff=async({passThroughStream:t,stream:e,streams:r,ended:i,aborted:a,onFinished:c})=>{Xt(t,xa);let u=new AbortController;try{await Promise.race([pf(c,e),df({passThroughStream:t,stream:e,streams:r,ended:i,aborted:a,controller:u}),mf({stream:e,streams:r,ended:i,aborted:a,controller:u})])}finally{u.abort(),Xt(t,-xa)}r.size===i.size+a.size&&(i.size===0&&a.size>0?ni(t):ya(t))},ga=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",pf=async(t,e)=>{try{await t,ni(e)}catch(r){ga(r)?ni(e):va(e,r)}},df=async({passThroughStream:t,stream:e,streams:r,ended:i,aborted:a,controller:{signal:c}})=>{try{await(0,si.finished)(e,{signal:c,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&i.add(e)}catch(u){if(c.aborted||!r.has(e))return;ga(u)?a.add(e):va(t,u)}},mf=async({stream:t,streams:e,ended:r,aborted:i,controller:{signal:a}})=>{await(0,Ut.once)(t,Da,{signal:a}),e.delete(t),r.delete(t),i.delete(t)},Da=Symbol("unpipe"),ya=t=>{t.writable&&t.end()},ni=t=>{(t.readable||t.writable)&&t.destroy()},va=(t,e)=>{t.destroyed||(t.once("error",xf),t.destroy(e))},xf=()=>{},Xt=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},ma=2,xa=1;var ht=ne(zn(),1);var Er=ne(O("fs"),1);async function qn(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await Er.promises[t](r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Gn(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return Er.default[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}var kE=qn.bind(null,"stat","isFile"),lc=qn.bind(null,"stat","isDirectory"),TE=qn.bind(null,"lstat","isSymbolicLink"),BE=Gn.bind(null,"statSync","isFile"),hc=Gn.bind(null,"statSync","isDirectory"),PE=Gn.bind(null,"lstatSync","isSymbolicLink");var fc=O("url");function Ft(t){return t instanceof URL?(0,fc.fileURLToPath)(t):t}var Sc=ne(O("process"),1),Ac=ne(O("fs"),1),Cc=ne(O("fs/promises"),1),We=ne(O("path"),1),es=ne(zn(),1),bc=ne(vc(),1);function lt(t){return t.startsWith("\\\\?\\")?t:t.replace(/\\/g,"/")}var wt=t=>t[0]==="!";var H0=["**/node_modules","**/flow-typed","**/coverage","**/.git"],Fc={absolute:!0,dot:!0},wc="**/.gitignore",X0=(t,e)=>wt(t)?"!"+We.default.posix.join(e,t.slice(1)):We.default.posix.join(e,t),U0=(t,e)=>{let r=lt(We.default.relative(e,We.default.dirname(t.filePath)));return t.content.split(/\r?\n/).filter(i=>i&&!i.startsWith("#")).map(i=>X0(i,r))},$0=(t,e)=>{if(e=lt(e),We.default.isAbsolute(t)){if(lt(t).startsWith(e))return We.default.relative(e,t);throw new Error(`Path ${t} is not in cwd ${e}`)}return t},_c=(t,e)=>{let r=t.flatMap(a=>U0(a,e)),i=(0,bc.default)().add(r);return a=>(a=Ft(a),a=$0(a,e),a?i.ignores(lt(a)):!1)},kc=(t={})=>({cwd:Ft(t.cwd)??Sc.default.cwd(),suppressErrors:!!t.suppressErrors,deep:typeof t.deep=="number"?t.deep:Number.POSITIVE_INFINITY,ignore:[...t.ignore??[],...H0]}),Tc=async(t,e)=>{let{cwd:r,suppressErrors:i,deep:a,ignore:c}=kc(e),u=await(0,es.default)(t,{cwd:r,suppressErrors:i,deep:a,ignore:c,...Fc}),x=await Promise.all(u.map(async d=>({filePath:d,content:await Cc.default.readFile(d,"utf8")})));return _c(x,r)},Bc=(t,e)=>{let{cwd:r,suppressErrors:i,deep:a,ignore:c}=kc(e),x=es.default.sync(t,{cwd:r,suppressErrors:i,deep:a,ignore:c,...Fc}).map(d=>({filePath:d,content:Ac.default.readFileSync(d,"utf8")}));return _c(x,r)};var j0=t=>{if(t.some(e=>typeof e!="string"))throw new TypeError("Patterns must be a string or an array of strings")},Nc=(t,e)=>{let r=wt(t)?t.slice(1):t;return Ve.default.isAbsolute(r)?r:Ve.default.join(e,r)},Lc=({directoryPath:t,files:e,extensions:r})=>{let i=r?.length>0?`.${r.length>1?`{${r.join(",")}}`:r[0]}`:"";return e?e.map(a=>Ve.default.posix.join(t,`**/${Ve.default.extname(a)?a:`${a}${i}`}`)):[Ve.default.posix.join(t,`**${i?`/*${i}`:""}`)]},Pc=async(t,{cwd:e=ts.default.cwd(),files:r,extensions:i}={})=>(await Promise.all(t.map(async c=>await lc(Nc(c,e))?Lc({directoryPath:c,files:r,extensions:i}):c))).flat(),Rc=(t,{cwd:e=ts.default.cwd(),files:r,extensions:i}={})=>t.flatMap(a=>hc(Nc(a,e))?Lc({directoryPath:a,files:r,extensions:i}):a),rs=t=>(t=[...new Set([t].flat())],j0(t),t),J0=t=>{if(!t)return;let e;try{e=Ic.default.statSync(t)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Oc=(t={})=>(t={...t,ignore:t.ignore??[],expandDirectories:t.expandDirectories??!0,cwd:Ft(t.cwd)},J0(t.cwd),t),Mc=t=>async(e,r)=>t(rs(e),Oc(r)),Dr=t=>(e,r)=>t(rs(e),Oc(r)),Hc=t=>{let{ignoreFiles:e,gitignore:r}=t,i=e?rs(e):[];return r&&i.push(wc),i},z0=async t=>{let e=Hc(t);return Uc(e.length>0&&await Tc(e,t))},Xc=t=>{let e=Hc(t);return Uc(e.length>0&&Bc(e,t))},Uc=t=>{let e=new Set;return r=>{let i=Ve.default.normalize(r.path??r);return e.has(i)||t&&t(i)?!1:(e.add(i),!0)}},$c=(t,e)=>t.flat().filter(r=>e(r)),jc=(t,e)=>{let r=[];for(;t.length>0;){let i=t.findIndex(c=>wt(c));if(i===-1){r.push({patterns:t,options:e});break}let a=t[i].slice(1);for(let c of r)c.options.ignore.push(a);i!==0&&r.push({patterns:t.slice(0,i),options:{...e,ignore:[...e.ignore,a]}}),t=t.slice(i+1)}return r},Jc=(t,e)=>({...e?{cwd:e}:{},...Array.isArray(t)?{files:t}:t}),zc=async(t,e)=>{let r=jc(t,e),{cwd:i,expandDirectories:a}=e;if(!a)return r;let c=Jc(a,i);return Promise.all(r.map(async u=>{let{patterns:x,options:d}=u;return[x,d.ignore]=await Promise.all([Pc(x,c),Pc(d.ignore,{cwd:i})]),{patterns:x,options:d}}))},is=(t,e)=>{let r=jc(t,e),{cwd:i,expandDirectories:a}=e;if(!a)return r;let c=Jc(a,i);return r.map(u=>{let{patterns:x,options:d}=u;return x=Rc(x,c),d.ignore=Rc(d.ignore,{cwd:i}),{patterns:x,options:d}})},qc=Mc(async(t,e)=>{let[r,i]=await Promise.all([zc(t,e),z0(e)]),a=await Promise.all(r.map(c=>(0,ht.default)(c.patterns,c.options)));return $c(a,i)}),KE=Dr((t,e)=>{let r=is(t,e),i=Xc(e),a=r.map(c=>ht.default.sync(c.patterns,c.options));return $c(a,i)}),WE=Dr((t,e)=>{let r=is(t,e),i=Xc(e),a=r.map(u=>ht.default.stream(u.patterns,u.options));return ai(a).filter(u=>i(u))}),VE=Dr((t,e)=>t.some(r=>ht.default.isDynamicPattern(r,e))),YE=Mc(zc),QE=Dr(is),{convertPathToPattern:ZE}=ht.default;var ss=ne(O("os"),1);var Gc=O("fs/promises"),Sr=ne(ti(),1),ns=O("path");function yr(t){return t.endsWith("tsconfig.json")}var vr=class{cache;constructor(){this.cache=new Map}async resolve(e){if(this.cache.has(e))return this.cache.get(e);let r=await(0,Gc.readFile)(e,"utf-8").then(i=>Sr.default.parse(i));for(let i of r.references||[])(0,Sr.assign)(i,{path:ns.posix.join(e,"..",i.path)});return this.cache.set(e,r),r}async isReferencedInRootConfig(e){return yr(e)?!1:(await this.resolve(ns.posix.join(e,"..","tsconfig.json"))).references?.some(i=>i.path===e)||!1}};var Wc=O("fs");function Kc(t){return t.replace(/\\/g,"/")}async function Vc(t={},...e){let r=new vr,i=new Map,a=new Map;for(let u of e){let{directory:x,packageJsonPath:d,tsConfigPatterns:p}=os(u);try{let h=await(0,_t.readFile)(d,"utf-8").then(n=>JSON.parse(n));if(!h.name){console.warn(`No name found in package.json at ${d}, skipping`);continue}let m=await qc(p);if(m.length===0)continue;let l={directory:x,tsConfigPaths:m,packageInfo:{name:h.name,dependencies:{...h.dependencies||{},...h.devDependencies||{}}}};a.set(h.name,l),i.set(x,l);for(let n of m)i.set(n,l)}catch{console.warn(`Error reading package.json at ${d}, skipping`)}}let c=!1;for(let[,{directory:u,tsConfigPaths:x,packageInfo:d}]of a)for(let p of x)try{let h=await r.resolve(p),m=new Set,l=new Set,n=[],s=new Set;for(let E of h.references||[]){let g=E.path.endsWith(".json")?E.path:Ue.posix.join(E.path,"tsconfig.json"),v=i.get(g);if(v){if(await r.isReferencedInRootConfig(g)&&!yr(p)){n.push({name:Ue.posix.relative(u,E.path),referencedInRoot:!0});continue}let A=await r.resolve(g),T=!A?.compilerOptions?.composite,k=A?.compilerOptions?.noEmit;if(!(v.packageInfo.name in d.dependencies||v.directory===u)||T||k){n.push({name:v.packageInfo.name,notComposite:T,noEmit:k});continue}}else if((0,Wc.existsSync)(g))m.add(Ue.posix.relative(u,E.path));else{n.push({name:Ue.posix.relative(u,E.path),notFound:!0});continue}s.add(Ue.posix.relative(u,E.path))}for(let E of Object.keys(d.dependencies)){let g=a.get(E);if(g)for(let v of g.tsConfigPaths){if(await r.isReferencedInRootConfig(v))continue;let A=await r.resolve(v);if(!A.compilerOptions?.composite||A.compilerOptions?.noEmit)continue;let T=Ue.posix.relative(u,v.replace("tsconfig.json",""));s.has(T)||(s.add(T),l.add(E))}}if((l.size||m.size||n.length)&&console.log(q0(d.name)+Ee.default.dim(" \xB7"),Ee.default.dim(Ue.posix.relative(Kc(process.cwd()),p))),l.size)for(let E of l)console.log(Ee.default.greenBright(" + ")+Ee.default.dim(`${E}`));if(n.length)for(let E of n){let g="";t.verbose&&(E.noEmit&&(g+=" (noEmit: true)"),E.notComposite&&(g+=" (composite: false)"),E.notFound&&(g+=" (not found)"),E.referencedInRoot&&(g+=" (referenced in root tsconfig.json)")),console.log(Ee.default.redBright(" - ")+Ee.default.dim(`${E.name}${g}`))}if(m.size)for(let E of m)console.log(Ee.default.yellowBright(" ? ")+Ee.default.dim(`${E}`));if(t.immutable){(l.size||n.length)&&(c=!0);continue}let o=await(0,_t.readFile)(p,"utf-8").then(E=>ft.default.parse(E)),f=o.references?.filter(E=>s.has(E.path))||[];for(let E of s)f.some(g=>g.path===E)||f.push({path:E});(0,ft.assign)(o,{references:f.sort((E,g)=>E.path.localeCompare(g.path))}),o.references?.length===0&&delete o.references,await(0,_t.writeFile)(p,G0((0,ft.stringify)(o,null,2))+ss.default.EOL)}catch(h){console.warn(`Error reading tsconfig.json at ${p}, skipping`,h);continue}if(t.verbose){let u=a.size;console.log(Ee.default.dim(Ee.default.greenBright(`Linked ${u} package${u===1?"":"s"}`)))}c&&(console.error("Immutable mode is enabled, please fix the issues manually"),process.exit(1))}function q0(t){let e="\x1B[38;2;200;85;15m",r="\x1B[38;2;200;130;90m";return t.replace(/^(@[^\/]+\/)?(.*?)$/,(i,a,c)=>`${e}${a||""}${r}${c}${e}`+Ee.default.reset(""))}function G0(t){let e=/\r\n|\n|\r/g;return t.replace(e,ss.default.EOL)}var Yc=O("@yarnpkg/fslib"),K0={hooks:{afterAllInstalled:async(t,e)=>{await Vc({immutable:e.immutable},...t.workspaces.map(r=>Yc.npath.fromPortablePath(r.cwd)))}}},W0=K0;return wl(V0);})(); +/*! Bundled license information: + +repeat-string/index.js: + (*! + * repeat-string + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-extglob/index.js: + (*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-glob/index.js: + (*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + *) + +is-number/index.js: + (*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + *) + +to-regex-range/index.js: + (*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + *) + +fill-range/index.js: + (*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + *) + +queue-microtask/index.js: + (*! queue-microtask. MIT License. Feross Aboukhadijeh *) + +run-parallel/index.js: + (*! run-parallel. MIT License. Feross Aboukhadijeh *) +*/ +return plugin; +} +}; diff --git a/webapp/.yarn/sdks/eslint/bin/eslint.js b/webapp/.yarn/sdks/eslint/bin/eslint.js new file mode 100755 index 0000000000..e6604ff595 --- /dev/null +++ b/webapp/.yarn/sdks/eslint/bin/eslint.js @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require eslint/bin/eslint.js + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real eslint/bin/eslint.js your application uses +module.exports = wrapWithUserWrapper(absRequire(`eslint/bin/eslint.js`)); diff --git a/webapp/.yarn/sdks/eslint/package.json b/webapp/.yarn/sdks/eslint/package.json new file mode 100644 index 0000000000..4110fb08c3 --- /dev/null +++ b/webapp/.yarn/sdks/eslint/package.json @@ -0,0 +1,14 @@ +{ + "name": "eslint", + "version": "8.57.1-sdk", + "main": "./lib/api.js", + "type": "commonjs", + "bin": { + "eslint": "./bin/eslint.js" + }, + "exports": { + "./package.json": "./package.json", + ".": "./lib/api.js", + "./use-at-your-own-risk": "./lib/unsupported-api.js" + } +} diff --git a/webapp/.yarn/sdks/integrations.yml b/webapp/.yarn/sdks/integrations.yml new file mode 100644 index 0000000000..aa9d0d0ad8 --- /dev/null +++ b/webapp/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by @yarnpkg/sdks. +# Manual changes might be lost! + +integrations: + - vscode diff --git a/webapp/.yarn/sdks/prettier/bin/prettier.cjs b/webapp/.yarn/sdks/prettier/bin/prettier.cjs new file mode 100755 index 0000000000..9a4098f7dc --- /dev/null +++ b/webapp/.yarn/sdks/prettier/bin/prettier.cjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/bin/prettier.cjs + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real prettier/bin/prettier.cjs your application uses +module.exports = wrapWithUserWrapper(absRequire(`prettier/bin/prettier.cjs`)); diff --git a/webapp/.yarn/sdks/prettier/index.cjs b/webapp/.yarn/sdks/prettier/index.cjs new file mode 100644 index 0000000000..57cb2ab17f --- /dev/null +++ b/webapp/.yarn/sdks/prettier/index.cjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real prettier your application uses +module.exports = wrapWithUserWrapper(absRequire(`prettier`)); diff --git a/webapp/.yarn/sdks/prettier/package.json b/webapp/.yarn/sdks/prettier/package.json new file mode 100644 index 0000000000..b9ab57f09d --- /dev/null +++ b/webapp/.yarn/sdks/prettier/package.json @@ -0,0 +1,7 @@ +{ + "name": "prettier", + "version": "3.4.2-sdk", + "main": "./index.cjs", + "type": "commonjs", + "bin": "./bin/prettier.cjs" +} diff --git a/webapp/.yarn/sdks/typescript/bin/tsc b/webapp/.yarn/sdks/typescript/bin/tsc new file mode 100755 index 0000000000..867a7bdfe2 --- /dev/null +++ b/webapp/.yarn/sdks/typescript/bin/tsc @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsc + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/bin/tsc your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsc`)); diff --git a/webapp/.yarn/sdks/typescript/bin/tsserver b/webapp/.yarn/sdks/typescript/bin/tsserver new file mode 100755 index 0000000000..3fc5aa31cc --- /dev/null +++ b/webapp/.yarn/sdks/typescript/bin/tsserver @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, register} = require(`module`); +const {resolve} = require(`path`); +const {pathToFileURL} = require(`url`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`); +const absRequire = createRequire(absPnpApiPath); + +const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`); +const isPnpLoaderEnabled = existsSync(absPnpLoaderPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsserver + require(absPnpApiPath).setup(); + if (isPnpLoaderEnabled && register) { + register(pathToFileURL(absPnpLoaderPath)); + } + } +} + +const wrapWithUserWrapper = existsSync(absUserWrapperPath) + ? exports => absRequire(absUserWrapperPath)(exports) + : exports => exports; + +// Defer to the real typescript/bin/tsserver your application uses +module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsserver`)); diff --git a/webapp/.yarn/sdks/typescript/package.json b/webapp/.yarn/sdks/typescript/package.json new file mode 100644 index 0000000000..4c87e4cafb --- /dev/null +++ b/webapp/.yarn/sdks/typescript/package.json @@ -0,0 +1,10 @@ +{ + "name": "typescript", + "version": "5.7.2-sdk", + "main": "./lib/typescript.js", + "type": "commonjs", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + } +} diff --git a/webapp/.yarnrc.yml b/webapp/.yarnrc.yml new file mode 100644 index 0000000000..1cfa120bdd --- /dev/null +++ b/webapp/.yarnrc.yml @@ -0,0 +1,17 @@ +nodeLinker: pnp + +packageExtensions: + "@material/switch@*": + dependencies: + "@material/density": "*" + "@material/touch-target@*": + dependencies: + "@material/base": "*" + vite-multiple-assets@*: + dependencies: + mime-types: "*" + +plugins: + - checksum: 50414773926286d8c0fc32e9936a799ad23296281046f03674bc33517b597e1ff7856092c3fcf8d5460a29549ef8b3dca3f59a1732b650a02bf523b255d726e7 + path: .yarn/plugins/@yarnpkg/plugin-ts-project-linker.cjs + spec: "https://raw.githubusercontent.com/Wroud/foundation/refs/heads/main/packages/yarn-plugin-ts-project-linker/bundles/%40yarnpkg/plugin-ts-project-linker.js" diff --git a/webapp/global.d.ts b/webapp/global.d.ts new file mode 100644 index 0000000000..8cf32bb13b --- /dev/null +++ b/webapp/global.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/webapp/lerna.json b/webapp/lerna.json deleted file mode 100644 index 82f5d3e383..0000000000 --- a/webapp/lerna.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "packages": [ - "packages/*" - ], - "version": "independent", - "npmClient": "yarn", - "useWorkspaces": true -} diff --git a/webapp/package.json b/webapp/package.json index 0866919887..4f8dafa4aa 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -3,14 +3,10 @@ "version": "1.0.0", "type": "module", "private": true, - "workspaces": { - "packages": [ - "packages/*" - ], - "nohoist": [ - "**/core-cli/**" - ] - }, + "workspaces": [ + "../common-typescript", + "packages/*" + ], "resolutions": { "@types/react": "^18", "@types/react-dom": "^18", @@ -21,25 +17,32 @@ }, "scripts": { "test": "core-cli-test", - "clean": "rimraf --glob packages/*/dist", + "clear": "rimraf -g 'packages/*/{dist,lib}'", "lint": "eslint --ext .ts,.tsx", "validate-dependencies": "core-cli-validate-dependencies './packages/*/'", - "update-ts-references": "yarn run clean && typescript-resolve-references './packages/*/'", "add-plugin": "core-cli-add-plugin", - "prebuild": "lerna run gql:gen --stream --parallel", "prepare": "cd .. && husky ./webapp/.husky", + "version:set": "yarn workspaces foreach -Ap --include '@cloudbeaver/product-*' run version:set", "postinstall": "husky" }, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/eslint-config": "workspace:*", + "@cloudbeaver/eslint-plugin": "workspace:*", + "@dbeaver/prettier-config": "workspace:*", "@testing-library/dom": "^10", "@testing-library/jest-dom": "^6", "@testing-library/react": "^16", "@testing-library/user-event": "^14", "@types/react": "^18", "@types/react-dom": "^18", + "@typescript-eslint/eslint-plugin": "^6", + "@typescript-eslint/parser": "^6", "concurrently": "^9", + "eslint": "^8", + "eslint-plugin-react": "^7", + "eslint-plugin-react-hooks": "^4", "husky": "^9", - "lerna": "^5", "mobx": "^6", "mobx-react-lite": "^4", "msw": "^2", @@ -53,7 +56,5 @@ "typescript": "^5", "typescript-plugin-css-modules": "^5" }, - "dependencies": {}, - "prettier": "@cloudbeaver/prettier-config", - "packageManager": "yarn@1.22.21" + "packageManager": "yarn@4.6.0" } diff --git a/webapp/packages/browserslist-config/package.json b/webapp/packages/browserslist-config/package.json index 63aac8cc0a..fddc55772c 100644 --- a/webapp/packages/browserslist-config/package.json +++ b/webapp/packages/browserslist-config/package.json @@ -1,6 +1,10 @@ { "name": "@cloudbeaver/browserslist-config", - "sideEffects": false, + "sideEffects": [ + "src/**/*.css", + "src/**/*.scss", + "public/**/*" + ], "version": "0.1.0", "license": "Apache-2.0", "main": "index.js" diff --git a/webapp/packages/core-administration/package.json b/webapp/packages/core-administration/package.json index fb46112aef..b609f6db57 100644 --- a/webapp/packages/core-administration/package.json +++ b/webapp/packages/core-administration/package.json @@ -9,31 +9,34 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-storage": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-storage": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-administration/tsconfig.json b/webapp/packages/core-administration/tsconfig.json index ea42ca1036..b8064ae67d 100644 --- a/webapp/packages/core-administration/tsconfig.json +++ b/webapp/packages/core-administration/tsconfig.json @@ -1,43 +1,47 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-data-context/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-storage/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-storage" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-app/package.json b/webapp/packages/core-app/package.json index 62e0321797..13681bd8ca 100644 --- a/webapp/packages/core-app/package.json +++ b/webapp/packages/core-app/package.json @@ -9,34 +9,39 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-notifications": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-theming": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-utils": "^0", - "@cloudbeaver/core-version": "^0", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-notifications": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-theming": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "@cloudbeaver/core-version": "workspace:*", + "mobx": "^6", "mobx-react-lite": "^4", - "react": "^18" + "react": "^18", + "react-dom": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/core-app/tsconfig.json b/webapp/packages/core-app/tsconfig.json index 0f575e5654..eab47c6f42 100644 --- a/webapp/packages/core-app/tsconfig.json +++ b/webapp/packages/core-app/tsconfig.json @@ -1,52 +1,56 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-notifications/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-notifications" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-projects" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-theming/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-ui/tsconfig.json" + "path": "../core-theming" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-ui" }, { - "path": "../core-version/tsconfig.json" + "path": "../core-utils" + }, + { + "path": "../core-version" } ], "include": [ diff --git a/webapp/packages/core-authentication/package.json b/webapp/packages/core-authentication/package.json index 2cfe0dce7e..91ca08a279 100644 --- a/webapp/packages/core-authentication/package.json +++ b/webapp/packages/core-authentication/package.json @@ -9,38 +9,42 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-storage": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-storage": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "msw": "^2", diff --git a/webapp/packages/core-authentication/src/AuthSettingsService.test.ts b/webapp/packages/core-authentication/src/AuthSettingsService.test.ts index a3deae1c2f..2a102d0d1a 100644 --- a/webapp/packages/core-authentication/src/AuthSettingsService.test.ts +++ b/webapp/packages/core-authentication/src/AuthSettingsService.test.ts @@ -10,15 +10,15 @@ import { expect, test } from '@jest/globals'; import { coreClientActivityManifest } from '@cloudbeaver/core-client-activity'; import { coreLocalizationManifest } from '@cloudbeaver/core-localization'; import { coreRootManifest, ServerConfigResource } from '@cloudbeaver/core-root'; -import { createGQLEndpoint } from '@cloudbeaver/core-root/dist/__custom_mocks__/createGQLEndpoint.js'; -import '@cloudbeaver/core-root/dist/__custom_mocks__/expectWebsocketClosedMessage.js'; -import { mockAppInit } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockAppInit.js'; -import { mockGraphQL } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockGraphQL.js'; -import { mockServerConfig } from '@cloudbeaver/core-root/dist/__custom_mocks__/resolvers/mockServerConfig.js'; +import { createGQLEndpoint } from '@cloudbeaver/core-root/__custom_mocks__/createGQLEndpoint.js'; +import '@cloudbeaver/core-root/__custom_mocks__/expectWebsocketClosedMessage.js'; +import { mockAppInit } from '@cloudbeaver/core-root/__custom_mocks__/mockAppInit.js'; +import { mockGraphQL } from '@cloudbeaver/core-root/__custom_mocks__/mockGraphQL.js'; +import { mockServerConfig } from '@cloudbeaver/core-root/__custom_mocks__/resolvers/mockServerConfig.js'; import { coreRoutingManifest } from '@cloudbeaver/core-routing'; import { coreSDKManifest } from '@cloudbeaver/core-sdk'; import { coreSettingsManifest } from '@cloudbeaver/core-settings'; -import { expectNoDeprecatedSettingMessage } from '@cloudbeaver/core-settings/dist/__custom_mocks__/expectDeprecatedSettingMessage.js'; +import { expectNoDeprecatedSettingMessage } from '@cloudbeaver/core-settings/__custom_mocks__/expectDeprecatedSettingMessage.js'; import { createApp } from '@cloudbeaver/tests-runner'; import { mockAuthentication } from './__custom_mocks__/mockAuthentication.js'; diff --git a/webapp/packages/core-authentication/src/__custom_mocks__/resolvers/mockGetActiveUser.ts b/webapp/packages/core-authentication/src/__custom_mocks__/resolvers/mockGetActiveUser.ts index d32f4957a6..87e22c59cf 100644 --- a/webapp/packages/core-authentication/src/__custom_mocks__/resolvers/mockGetActiveUser.ts +++ b/webapp/packages/core-authentication/src/__custom_mocks__/resolvers/mockGetActiveUser.ts @@ -5,14 +5,12 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ -import { type GraphQLResolverExtras, type GraphQLResponseBody, HttpResponse, type ResponseResolver } from 'msw'; +import { HttpResponse, type GraphQLResponseResolver } from 'msw'; import type { GetActiveUserQuery, GetActiveUserQueryVariables } from '@cloudbeaver/core-sdk'; -export const mockGetActiveUser: ResponseResolver< - GraphQLResolverExtras, - null, - GraphQLResponseBody +export const mockGetActiveUser: GraphQLResponseResolver< +GetActiveUserQuery, GetActiveUserQueryVariables > = function mockGetActiveUser() { return HttpResponse.json({ data: { diff --git a/webapp/packages/core-authentication/tsconfig.json b/webapp/packages/core-authentication/tsconfig.json index 7a9ba996d5..26c55e046a 100644 --- a/webapp/packages/core-authentication/tsconfig.json +++ b/webapp/packages/core-authentication/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "exclude": [ "**/node_modules", "lib/**/*", @@ -8,62 +8,51 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-storage" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-storage/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-blocks/package.json b/webapp/packages/core-blocks/package.json index 0a91adbfd7..6da0754d75 100644 --- a/webapp/packages/core-blocks/package.json +++ b/webapp/packages/core-blocks/package.json @@ -9,54 +9,58 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-theming": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-theming": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "go-split": "^3", "minisearch": "^7", "mobx": "^6", "mobx-react-lite": "^4", "react": "^18", + "react-dom": "^18", "react-hotkeys-hook": "^4", + "react-minisearch": "^7", "reakit": "^1", "reakit-utils": "^0", - "react-minisearch": "^7" + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-theming": "^0", - "@cloudbeaver/core-utils": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", + "@testing-library/dom": "^10", "@testing-library/react": "^16", "@types/jest": "^29", "@types/react": "^18", "mobx": "^6", "react": "^18", + "react-dom": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" } diff --git a/webapp/packages/core-ui/src/AuthenticationProvider.tsx b/webapp/packages/core-blocks/src/AuthenticationProvider.tsx similarity index 88% rename from webapp/packages/core-ui/src/AuthenticationProvider.tsx rename to webapp/packages/core-blocks/src/AuthenticationProvider.tsx index 704a090cf9..3cfcbdbd85 100644 --- a/webapp/packages/core-ui/src/AuthenticationProvider.tsx +++ b/webapp/packages/core-blocks/src/AuthenticationProvider.tsx @@ -7,9 +7,10 @@ */ import { observer } from 'mobx-react-lite'; -import { Button, Container, useTranslate } from '@cloudbeaver/core-blocks'; - import { useAuthenticationAction } from './useAuthenticationAction.js'; +import { useTranslate } from './localization/useTranslate.js'; +import { Container } from './Containers/Container.js'; +import { Button } from './Button.js'; export type Props = { providerId: string; diff --git a/webapp/packages/core-ui/src/AuthenticationProviderLoader.ts b/webapp/packages/core-blocks/src/AuthenticationProviderLoader.ts similarity index 84% rename from webapp/packages/core-ui/src/AuthenticationProviderLoader.ts rename to webapp/packages/core-blocks/src/AuthenticationProviderLoader.ts index 64f67438a8..3a83dc9ccd 100644 --- a/webapp/packages/core-ui/src/AuthenticationProviderLoader.ts +++ b/webapp/packages/core-blocks/src/AuthenticationProviderLoader.ts @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ -import { importLazyComponent } from '@cloudbeaver/core-blocks'; + +import { importLazyComponent } from './importLazyComponent.js'; export const AuthenticationProvider = importLazyComponent(() => import('./AuthenticationProvider.js').then(m => m.AuthenticationProvider)); diff --git a/webapp/packages/core-blocks/src/Cell.test.tsx b/webapp/packages/core-blocks/src/Cell.test.tsx index bf8d145fcf..67b8ffb0ef 100644 --- a/webapp/packages/core-blocks/src/Cell.test.tsx +++ b/webapp/packages/core-blocks/src/Cell.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { afterEach, describe, expect, it } from '@jest/globals'; import { cleanup, waitFor } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/FormControls/InputAutocompletionMenu.tsx b/webapp/packages/core-blocks/src/FormControls/InputAutocompletionMenu.tsx index 46419cf73a..a0c1d37c03 100644 --- a/webapp/packages/core-blocks/src/FormControls/InputAutocompletionMenu.tsx +++ b/webapp/packages/core-blocks/src/FormControls/InputAutocompletionMenu.tsx @@ -9,7 +9,6 @@ import { observer } from 'mobx-react-lite'; import type { RefObject } from 'react'; import BaseDropdownStyles from '../FormControls/BaseDropdown.module.css'; -import { getComputed } from '../getComputed.js'; import { IconOrImage } from '../IconOrImage.js'; import { Menu } from '../Menu/Menu.js'; import { MenuItem } from '../Menu/MenuItem.js'; diff --git a/webapp/packages/core-blocks/src/Icon.test.tsx b/webapp/packages/core-blocks/src/Icon.test.tsx index 71f3e13dc1..8c87b863d5 100644 --- a/webapp/packages/core-blocks/src/Icon.test.tsx +++ b/webapp/packages/core-blocks/src/Icon.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { afterEach, describe, expect, test } from '@jest/globals'; import { cleanup, render, screen } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/Link.test.tsx b/webapp/packages/core-blocks/src/Link.test.tsx index 35853decc7..db4d8f92d3 100644 --- a/webapp/packages/core-blocks/src/Link.test.tsx +++ b/webapp/packages/core-blocks/src/Link.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { afterEach, describe, expect, it, jest } from '@jest/globals'; import { cleanup, fireEvent, queryByAttribute, waitFor } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/Menu/MenuItem.tsx b/webapp/packages/core-blocks/src/Menu/MenuItem.tsx index 792342ad92..92b272b51e 100644 --- a/webapp/packages/core-blocks/src/Menu/MenuItem.tsx +++ b/webapp/packages/core-blocks/src/Menu/MenuItem.tsx @@ -7,8 +7,7 @@ */ import { observer } from 'mobx-react-lite'; import React, { useContext } from 'react'; -import { MenuItem as ReakitMenuItem } from 'reakit'; -import type { CompositeItemOptions } from 'reakit'; +import { MenuItem as ReakitMenuItem, type CompositeItemOptions } from 'reakit'; import { s } from '../s.js'; import { useCombinedHandler } from '../useCombinedHandler.js'; diff --git a/webapp/packages/core-blocks/src/Menu/MenuItemCheckbox.tsx b/webapp/packages/core-blocks/src/Menu/MenuItemCheckbox.tsx index fa17c8c57d..7e62db583c 100644 --- a/webapp/packages/core-blocks/src/Menu/MenuItemCheckbox.tsx +++ b/webapp/packages/core-blocks/src/Menu/MenuItemCheckbox.tsx @@ -7,8 +7,7 @@ */ import { observer } from 'mobx-react-lite'; import { useContext } from 'react'; -import { type MenuItemOptions, MenuItemCheckbox as ReakitMenuItemCheckbox } from 'reakit'; -import type { CheckboxOptions } from 'reakit'; +import { type MenuItemOptions, MenuItemCheckbox as ReakitMenuItemCheckbox, type CheckboxOptions } from 'reakit'; import { s } from '../s.js'; import { useS } from '../useS.js'; diff --git a/webapp/packages/core-blocks/src/Menu/MenuItemRadio.tsx b/webapp/packages/core-blocks/src/Menu/MenuItemRadio.tsx index e8dcde589a..0ca3a1b95b 100644 --- a/webapp/packages/core-blocks/src/Menu/MenuItemRadio.tsx +++ b/webapp/packages/core-blocks/src/Menu/MenuItemRadio.tsx @@ -7,8 +7,7 @@ */ import { observer } from 'mobx-react-lite'; import { useContext } from 'react'; -import { type MenuItemOptions, MenuItemRadio as ReakitMenuItemRadio } from 'reakit'; -import type { RadioOptions } from 'reakit'; +import { type MenuItemOptions, MenuItemRadio as ReakitMenuItemRadio, type RadioOptions } from 'reakit'; import { s } from '../s.js'; import { useS } from '../useS.js'; diff --git a/webapp/packages/core-blocks/src/Menu/MenuSeparator.tsx b/webapp/packages/core-blocks/src/Menu/MenuSeparator.tsx index d0112c25d5..b33b80ac1f 100644 --- a/webapp/packages/core-blocks/src/Menu/MenuSeparator.tsx +++ b/webapp/packages/core-blocks/src/Menu/MenuSeparator.tsx @@ -5,8 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ -import { MenuSeparator as MenuSeparatorBase } from 'reakit'; -import type { SeparatorOptions } from 'reakit'; +import { MenuSeparator as MenuSeparatorBase, type SeparatorOptions } from 'reakit'; import { s } from '../s.js'; import { useS } from '../useS.js'; diff --git a/webapp/packages/core-blocks/src/StatusMessage.test.tsx b/webapp/packages/core-blocks/src/StatusMessage.test.tsx index ce9252c214..c4418dd8a7 100644 --- a/webapp/packages/core-blocks/src/StatusMessage.test.tsx +++ b/webapp/packages/core-blocks/src/StatusMessage.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { describe, expect, it, jest } from '@jest/globals'; import { fireEvent, queryByAttribute, waitFor } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/Text.test.tsx b/webapp/packages/core-blocks/src/Text.test.tsx index 39f64f73ec..72277a6151 100644 --- a/webapp/packages/core-blocks/src/Text.test.tsx +++ b/webapp/packages/core-blocks/src/Text.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { describe, expect, it } from '@jest/globals'; import { waitFor } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/TextPlaceholder.test.tsx b/webapp/packages/core-blocks/src/TextPlaceholder.test.tsx index 27caf53f84..22f7ecb31c 100644 --- a/webapp/packages/core-blocks/src/TextPlaceholder.test.tsx +++ b/webapp/packages/core-blocks/src/TextPlaceholder.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { describe, expect, it } from '@jest/globals'; import { waitFor } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/TimerIcon.test.tsx b/webapp/packages/core-blocks/src/TimerIcon.test.tsx index bdd4c902a3..785e4d3de8 100644 --- a/webapp/packages/core-blocks/src/TimerIcon.test.tsx +++ b/webapp/packages/core-blocks/src/TimerIcon.test.tsx @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +// @ts-nocheck import { describe, expect, it } from '@jest/globals'; import { queryByAttribute, waitFor } from '@testing-library/react'; diff --git a/webapp/packages/core-blocks/src/index.ts b/webapp/packages/core-blocks/src/index.ts index c61d025731..67d9f09813 100644 --- a/webapp/packages/core-blocks/src/index.ts +++ b/webapp/packages/core-blocks/src/index.ts @@ -7,6 +7,8 @@ */ export { useHotkeys } from 'react-hotkeys-hook'; +export * from './AuthenticationProviderLoader.js'; +export * from './useAuthenticationAction.js'; export * from './CommonDialog/CommonDialog/CommonDialogBody.js'; export * from './CommonDialog/CommonDialog/CommonDialogFooter.js'; export * from './CommonDialog/CommonDialog/CommonDialogHeader.js'; diff --git a/webapp/packages/core-ui/src/useAuthenticationAction.ts b/webapp/packages/core-blocks/src/useAuthenticationAction.ts similarity index 96% rename from webapp/packages/core-ui/src/useAuthenticationAction.ts rename to webapp/packages/core-blocks/src/useAuthenticationAction.ts index 0ba7f13a43..6a8a44d7cc 100644 --- a/webapp/packages/core-ui/src/useAuthenticationAction.ts +++ b/webapp/packages/core-blocks/src/useAuthenticationAction.ts @@ -8,8 +8,8 @@ import { computed, observable } from 'mobx'; import { AuthProviderService, UserInfoResource } from '@cloudbeaver/core-authentication'; -import { useObservableRef } from '@cloudbeaver/core-blocks'; import { useService } from '@cloudbeaver/core-di'; +import { useObservableRef } from './useObservableRef.js'; interface IAuthenticationAction { providerId: string; diff --git a/webapp/packages/core-blocks/src/useExecutor.ts b/webapp/packages/core-blocks/src/useExecutor.ts index 2b8f100039..123242dfa4 100644 --- a/webapp/packages/core-blocks/src/useExecutor.ts +++ b/webapp/packages/core-blocks/src/useExecutor.ts @@ -7,7 +7,7 @@ */ import { useEffect } from 'react'; -import type { IExecutor, IExecutorHandler, IExecutorHandlersCollection } from '@cloudbeaver/core-executor'; +import type { IExecutorHandler, IExecutorHandlersCollection } from '@cloudbeaver/core-executor'; import { useObjectRef } from './useObjectRef.js'; diff --git a/webapp/packages/core-blocks/tsconfig.json b/webapp/packages/core-blocks/tsconfig.json index 9e60ef908a..fb7de2f602 100644 --- a/webapp/packages/core-blocks/tsconfig.json +++ b/webapp/packages/core-blocks/tsconfig.json @@ -1,70 +1,50 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-dialogs" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-theming" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-root/tsconfig.json" - }, - { - "path": "../core-sdk/tsconfig.json" - }, - { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-theming/tsconfig.json" - }, - { - "path": "../core-theming/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-bootstrap/package.json b/webapp/packages/core-bootstrap/package.json index bef9e994e6..51c7c8e7be 100644 --- a/webapp/packages/core-bootstrap/package.json +++ b/webapp/packages/core-bootstrap/package.json @@ -9,57 +9,61 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-administration": "^0", - "@cloudbeaver/core-app": "^0", - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-browser": "^0", - "@cloudbeaver/core-browser-cookies": "^0", - "@cloudbeaver/core-browser-settings": "^0", - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-connections": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-links": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-navigation-tree": "^0", - "@cloudbeaver/core-product": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-resource-manager": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-server-localization": "^0", - "@cloudbeaver/core-session-localization": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-settings-localization": "^0", - "@cloudbeaver/core-settings-user": "^0", - "@cloudbeaver/core-storage": "^0", - "@cloudbeaver/core-task-manager": "^0", - "@cloudbeaver/core-theming": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-version": "^0", - "@cloudbeaver/core-version-update": "^0", - "@cloudbeaver/core-view": "^0", + "@cloudbeaver/core-administration": "workspace:*", + "@cloudbeaver/core-app": "workspace:*", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-browser": "workspace:*", + "@cloudbeaver/core-browser-cookies": "workspace:*", + "@cloudbeaver/core-browser-settings": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-connections": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-links": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-navigation-tree": "workspace:*", + "@cloudbeaver/core-product": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-resource-manager": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-server-localization": "workspace:*", + "@cloudbeaver/core-session-localization": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-settings-localization": "workspace:*", + "@cloudbeaver/core-settings-user": "workspace:*", + "@cloudbeaver/core-storage": "workspace:*", + "@cloudbeaver/core-task-manager": "workspace:*", + "@cloudbeaver/core-theming": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-version": "workspace:*", + "@cloudbeaver/core-version-update": "workspace:*", + "@cloudbeaver/core-view": "workspace:*", "mobx": "^6", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", + "@types/react-dom": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" } diff --git a/webapp/packages/core-bootstrap/tsconfig.json b/webapp/packages/core-bootstrap/tsconfig.json index 8542bd6ee6..2be3358be5 100644 --- a/webapp/packages/core-bootstrap/tsconfig.json +++ b/webapp/packages/core-bootstrap/tsconfig.json @@ -1,115 +1,119 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-administration/tsconfig.json" + "path": "../core-administration" }, { - "path": "../core-app/tsconfig.json" + "path": "../core-app" }, { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-browser-cookies/tsconfig.json" + "path": "../core-browser" }, { - "path": "../core-browser-settings/tsconfig.json" + "path": "../core-browser-cookies" }, { - "path": "../core-browser/tsconfig.json" + "path": "../core-browser-settings" }, { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-connections/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-connections" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-dialogs" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-links/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-links" }, { - "path": "../core-navigation-tree/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-product/tsconfig.json" + "path": "../core-navigation-tree" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-product" }, { - "path": "../core-resource-manager/tsconfig.json" + "path": "../core-projects" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource-manager" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-server-localization/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-session-localization/tsconfig.json" + "path": "../core-server-localization" }, { - "path": "../core-settings-localization/tsconfig.json" + "path": "../core-session-localization" }, { - "path": "../core-settings-user/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-settings-localization" }, { - "path": "../core-storage/tsconfig.json" + "path": "../core-settings-user" }, { - "path": "../core-task-manager/tsconfig.json" + "path": "../core-storage" }, { - "path": "../core-theming/tsconfig.json" + "path": "../core-task-manager" }, { - "path": "../core-ui/tsconfig.json" + "path": "../core-theming" }, { - "path": "../core-version-update/tsconfig.json" + "path": "../core-ui" }, { - "path": "../core-version/tsconfig.json" + "path": "../core-version" }, { - "path": "../core-view/tsconfig.json" + "path": "../core-version-update" + }, + { + "path": "../core-view" } ], "include": [ diff --git a/webapp/packages/core-browser-cookies/package.json b/webapp/packages/core-browser-cookies/package.json index 4ef01cf440..115b42ae57 100644 --- a/webapp/packages/core-browser-cookies/package.json +++ b/webapp/packages/core-browser-cookies/package.json @@ -9,21 +9,24 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-browser-settings": "^0", - "@cloudbeaver/core-di": "^0" + "@cloudbeaver/core-browser-settings": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-browser-cookies/tsconfig.json b/webapp/packages/core-browser-cookies/tsconfig.json index 372db61bf5..813d72f7b1 100644 --- a/webapp/packages/core-browser-cookies/tsconfig.json +++ b/webapp/packages/core-browser-cookies/tsconfig.json @@ -1,16 +1,20 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-browser-settings/tsconfig.json" + "path": "../core-browser-settings" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" + }, + { + "path": "../core-di" } ], "include": [ diff --git a/webapp/packages/core-browser-settings/package.json b/webapp/packages/core-browser-settings/package.json index 1a630abe73..250816af2f 100644 --- a/webapp/packages/core-browser-settings/package.json +++ b/webapp/packages/core-browser-settings/package.json @@ -9,30 +9,32 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-browser": "^0", - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-browser-settings/src/BrowserSettingsService.test.ts b/webapp/packages/core-browser-settings/src/BrowserSettingsService.test.ts index 3b8112c7ba..7432abf671 100644 --- a/webapp/packages/core-browser-settings/src/BrowserSettingsService.test.ts +++ b/webapp/packages/core-browser-settings/src/BrowserSettingsService.test.ts @@ -10,17 +10,17 @@ import { expect, test } from '@jest/globals'; import { coreClientActivityManifest } from '@cloudbeaver/core-client-activity'; import { coreLocalizationManifest } from '@cloudbeaver/core-localization'; import { coreRootManifest, ServerConfigResource } from '@cloudbeaver/core-root'; -import { createGQLEndpoint } from '@cloudbeaver/core-root/dist/__custom_mocks__/createGQLEndpoint.js'; -import '@cloudbeaver/core-root/dist/__custom_mocks__/expectWebsocketClosedMessage.js'; -import { mockAppInit } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockAppInit.js'; -import { mockGraphQL } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockGraphQL.js'; -import { mockServerConfig } from '@cloudbeaver/core-root/dist/__custom_mocks__/resolvers/mockServerConfig.js'; +import { createGQLEndpoint } from '@cloudbeaver/core-root/__custom_mocks__/createGQLEndpoint.js'; +import '@cloudbeaver/core-root/__custom_mocks__/expectWebsocketClosedMessage.js'; +import { mockAppInit } from '@cloudbeaver/core-root/__custom_mocks__/mockAppInit.js'; +import { mockGraphQL } from '@cloudbeaver/core-root/__custom_mocks__/mockGraphQL.js'; +import { mockServerConfig } from '@cloudbeaver/core-root/__custom_mocks__/resolvers/mockServerConfig.js'; import { coreSDKManifest } from '@cloudbeaver/core-sdk'; import { coreSettingsManifest } from '@cloudbeaver/core-settings'; import { expectDeprecatedSettingMessage, expectNoDeprecatedSettingMessage, -} from '@cloudbeaver/core-settings/dist/__custom_mocks__/expectDeprecatedSettingMessage.js'; +} from '@cloudbeaver/core-settings/__custom_mocks__/expectDeprecatedSettingMessage.js'; import { createApp } from '@cloudbeaver/tests-runner'; import { BrowserSettingsService } from './BrowserSettingsService.js'; diff --git a/webapp/packages/core-browser-settings/tsconfig.json b/webapp/packages/core-browser-settings/tsconfig.json index 72eb723f7c..d04673b5e4 100644 --- a/webapp/packages/core-browser-settings/tsconfig.json +++ b/webapp/packages/core-browser-settings/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "exclude": [ "**/node_modules", "lib/**/*", @@ -8,41 +8,36 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-browser/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-browser/package.json b/webapp/packages/core-browser/package.json index e5baa2b99e..f801ad8bd5 100644 --- a/webapp/packages/core-browser/package.json +++ b/webapp/packages/core-browser/package.json @@ -2,6 +2,7 @@ "name": "@cloudbeaver/core-browser", "type": "module", "sideEffects": [ + "dist/service-worker.js", "src/**/*.css", "src/**/*.scss", "public/**/*" @@ -9,21 +10,24 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "dexie": "^4", "mobx": "^6", + "tslib": "^2", "workbox-cacheable-response": "^7", "workbox-core": "^7", "workbox-expiration": "^7", @@ -32,8 +36,10 @@ "workbox-strategies": "^7", "workbox-window": "^7" }, - "peerDependencies": {}, "devDependencies": { - "typescript": "^5" + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", + "typescript": "^5", + "vite": "^6" } } diff --git a/webapp/packages/core-browser/src/ServiceWorkerService.ts b/webapp/packages/core-browser/src/ServiceWorkerService.ts index 4a0990867e..fa37429a6b 100644 --- a/webapp/packages/core-browser/src/ServiceWorkerService.ts +++ b/webapp/packages/core-browser/src/ServiceWorkerService.ts @@ -5,6 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ +/// /// import { Workbox, type WorkboxLifecycleEvent, type WorkboxMessageEvent } from 'workbox-window'; @@ -45,7 +46,7 @@ export class ServiceWorkerService extends Disposable { } try { - if (process.env['NODE_ENV'] === 'development') { + if (import.meta.env.DEV) { const registration = await navigator.serviceWorker.getRegistration(this.workerURL); registration?.unregister(); } else { diff --git a/webapp/packages/core-browser/tsconfig.json b/webapp/packages/core-browser/tsconfig.json index ce6eb18de5..c1bde30897 100644 --- a/webapp/packages/core-browser/tsconfig.json +++ b/webapp/packages/core-browser/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-executor" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-cli/_templates/plugin/new/package.json.ejs.t b/webapp/packages/core-cli/_templates/plugin/new/package.json.ejs.t index fe7857b51c..0472367752 100644 --- a/webapp/packages/core-cli/_templates/plugin/new/package.json.ejs.t +++ b/webapp/packages/core-cli/_templates/plugin/new/package.json.ejs.t @@ -12,20 +12,23 @@ to: <%= name %>/package.json "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { "@cloudbeaver/core-di": "^0" }, "peerDependencies": {}, "devDependencies": { + "rimraf": "^6", + "@cloudbeaver/core-cli": "^0", "typescript": "^5" } } \ No newline at end of file diff --git a/webapp/packages/core-cli/_templates/plugin/new/tsconfig.json.ejs.t b/webapp/packages/core-cli/_templates/plugin/new/tsconfig.json.ejs.t index 52d9972feb..b840b29f03 100644 --- a/webapp/packages/core-cli/_templates/plugin/new/tsconfig.json.ejs.t +++ b/webapp/packages/core-cli/_templates/plugin/new/tsconfig.json.ejs.t @@ -7,7 +7,8 @@ to: <%= name %>/tsconfig.json "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true, }, "references": [ { diff --git a/webapp/packages/core-cli/bin/add-plugin.js b/webapp/packages/core-cli/bin/add-plugin.js index 3c46dbab06..48017e7e26 100755 --- a/webapp/packages/core-cli/bin/add-plugin.js +++ b/webapp/packages/core-cli/bin/add-plugin.js @@ -1,22 +1,32 @@ #!/usr/bin/env node +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ -'use strict'; process.title = 'core-add-plugin'; -const { resolve, join } = require('path'); -const { runner, Logger } = require('hygen'); +import { resolve, join } from 'node:path'; +import { runner, Logger } from 'hygen'; +import { command } from 'execa'; +import enquirer from 'enquirer'; -const templates = join(__dirname, '../_templates'); +const templates = join(import.meta.dirname, '../_templates'); const currentDir = resolve(); -runner(['plugin', 'new'], { +const { success } = await runner(['plugin', 'new'], { templates, cwd: join(currentDir, 'packages'), logger: new Logger(console.log.bind(console)), debug: !!process.env.DEBUG, exec: (action, body) => { const opts = body && body.length > 0 ? { input: body } : {}; - return require('execa').command(action, { ...opts, shell: true }); + return command(action, { ...opts, shell: true }); }, - createPrompter: () => require('enquirer'), -}).then(({ success }) => process.exit(success ? 0 : 1)); + createPrompter: () => enquirer, +}); + +process.exit(success ? 0 : 1); diff --git a/webapp/packages/core-cli/bin/analyzer.js b/webapp/packages/core-cli/bin/analyzer.js index f1d310e711..6fa49ca41b 100755 --- a/webapp/packages/core-cli/bin/analyzer.js +++ b/webapp/packages/core-cli/bin/analyzer.js @@ -1,6 +1,10 @@ #!/usr/bin/env node +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ -'use strict'; process.title = 'core-analyser'; - -require('webpack-bundle-analyzer/lib/bin/analyzer'); diff --git a/webapp/packages/core-cli/bin/build.js b/webapp/packages/core-cli/bin/build.js deleted file mode 100755 index ec42482bf5..0000000000 --- a/webapp/packages/core-cli/bin/build.js +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env node - -'use strict'; -process.title = 'core-build'; - -require('webpack/bin/webpack'); diff --git a/webapp/packages/core-cli/bin/dependency-graph.js b/webapp/packages/core-cli/bin/dependency-graph.js index ad611b10b4..0212606ba3 100755 --- a/webapp/packages/core-cli/bin/dependency-graph.js +++ b/webapp/packages/core-cli/bin/dependency-graph.js @@ -1,12 +1,17 @@ #!/usr/bin/env node +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ -'use strict'; process.title = 'dependency-graph'; -const madge = require('madge'); -const { resolve } = require('path'); +import madge from 'madge'; -madge('packages', { +const res = await madge('packages', { includeNpm: true, fileExtensions: ['ts', 'tsx'], detectiveOptions: { @@ -20,8 +25,7 @@ madge('packages', { // skipTypeImports: true, }, }, -}) - .then(res => res.image('image.svg')) - .then(writtenImagePath => { - console.log('Image written to ' + writtenImagePath); - }); \ No newline at end of file +}); + +const writtenImagePath = await res.image('image.svg'); +console.log('Image written to ' + writtenImagePath); diff --git a/webapp/packages/core-cli/bin/set-version.js b/webapp/packages/core-cli/bin/set-version.js new file mode 100755 index 0000000000..ee23b7d85e --- /dev/null +++ b/webapp/packages/core-cli/bin/set-version.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +process.title = 'core-set-version'; + +import fs from 'node:fs/promises'; +import path from 'path'; + +const version = process.argv[2]; +const packageJsonPath = path.join(process.cwd(), 'package.json'); + +await fs.writeFile( + packageJsonPath, + await fs.readFile(packageJsonPath, 'utf8').then(content => content.replace(/"version": ".*"/, `"version": "${version}"`)), + 'utf8', +); diff --git a/webapp/packages/core-cli/bin/test.js b/webapp/packages/core-cli/bin/test.js index e81e5e9e10..33c285d8ab 100755 --- a/webapp/packages/core-cli/bin/test.js +++ b/webapp/packages/core-cli/bin/test.js @@ -1,15 +1,21 @@ #!/usr/bin/env node +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ /* eslint-disable @typescript-eslint/no-var-requires */ -'use strict'; +// import jest from 'jest'; +// import { fileURLToPath } from 'node:url'; process.title = 'core-test'; -const jest = require('jest'); +// if (process.env.NODE_ENV == null) { +// process.env.NODE_ENV = 'test'; +// } -if (process.env.NODE_ENV == null) { - process.env.NODE_ENV = 'test'; -} +// const argv = [...process.argv.slice(2, process.argv.length), '--config', fileURLToPath(import.meta.resolve('../configs/jest.config.js'))]; -const argv = [...process.argv.slice(2, process.argv.length), '--config', require.resolve('../configs/jest.config.js')]; - -jest.run(argv); +// jest.run(argv); diff --git a/webapp/packages/core-cli/bin/test_wrapper.js b/webapp/packages/core-cli/bin/test_wrapper.js index 7b5b066ee8..4725e58984 100644 --- a/webapp/packages/core-cli/bin/test_wrapper.js +++ b/webapp/packages/core-cli/bin/test_wrapper.js @@ -1,18 +1,19 @@ #!/usr/bin/env node -/* eslint-disable @typescript-eslint/no-var-requires */ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ -'use strict'; -const { spawn } = require('node:child_process'); +import { spawn } from 'node:child_process'; -const ls = spawn( - 'cmd', - ['/c', 'yarn', 'run', 'core-cli-test-wrapped', ...process.argv.slice(2, process.argv.length)], - { - // cwd: __dirname, - env: { - ...process.env, - // NODE_OPTIONS: "-r esm" - }, - stdio: 'inherit', - } -); +spawn('cmd', ['/c', 'yarn', 'run', 'core-cli-test-wrapped', ...process.argv.slice(2, process.argv.length)], { + // cwd: __dirname, + env: { + ...process.env, + // NODE_OPTIONS: "-r esm" + }, + stdio: 'inherit', +}); diff --git a/webapp/packages/core-cli/bin/typescript-resolve-references.js b/webapp/packages/core-cli/bin/typescript-resolve-references.js deleted file mode 100755 index 830c47d793..0000000000 --- a/webapp/packages/core-cli/bin/typescript-resolve-references.js +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env node -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -'use strict'; -process.title = 'typescript-resolve-references'; - -const filter = process.argv[2] || '.'; - -const { validateDependencies } = require('../utils/validateDependencies'); -const { printMessage } = require('../utils/printMessage'); -const glob = require('glob'); -const fs = require('fs'); -const { resolve, join } = require('path'); -const upath = require('upath'); -const { getCloudBeaverDeps } = require('../utils/getCloudBeaverDeps'); - -const currentDir = resolve(); -const sourceFilesIterator = glob.globIterateSync(filter, { cwd: currentDir }); - -for (let currentPackageDir of sourceFilesIterator) { - currentPackageDir = resolve(currentPackageDir); - const packageJsonPath = join(currentPackageDir, 'package.json'); - const tsConfigPath = join(currentPackageDir, 'tsconfig.json'); - - if (!fs.existsSync(packageJsonPath) || !fs.existsSync(tsConfigPath)) { - continue; - } - - const pkg = require(packageJsonPath); - console.info(`Processing ${pkg['name']}`); - validateDependencies(currentPackageDir); - - let isNeedToReplace = true; - - function log(type, message, ...args) { - let color = '\x1b[34m%s\x1b[0m'; - if (type === 'warn') { - color = '\x1b[33m%s\x1b[0m'; - } else if (type === 'error') { - color = '\x1b[31m%s\x1b[0m'; - } else if (type === 'success') { - color = '\x1b[32m%s\x1b[0m'; - } - - printMessage(color, isNeedToReplace, message, ...args); - if (isNeedToReplace) { - printMessage('', false); - isNeedToReplace = false; - } - } - - printMessage('Resolving typescript project references', true); - - // const tsRootPath = resolve('../../'); - // const tsRootConfigPath = resolve(join(tsRootPath, 'tsconfig.json')); - const typescriptConfig = require(tsConfigPath); - // const typescriptRootConfig = require(tsRootConfigPath); - - const allDependencies = getCloudBeaverDeps(pkg); - const dependencies = [...allDependencies.dependencies, ...allDependencies.devDependencies, ...allDependencies.peerDependencies]; - - const nodeModules = [join(currentPackageDir, 'node_modules')]; - - typescriptConfig.references = []; - // typescriptRootConfig.references = typescriptRootConfig.references || []; - - for (const dependency of dependencies) { - if (dependency === pkg.name) { - log('error', `Self reference detected: ${dependency}`); - continue; - } - try { - if (!dependency.startsWith('@cloudbeaver')) { - continue; - } - const dependencyPath = join(require.resolve(join(dependency, 'src', 'index.ts'), { paths: nodeModules }), '../../tsconfig.json'); - typescriptConfig.references.push({ - path: upath.relative(currentPackageDir, dependencyPath), - }); - - // const relativePath = relative(tsRootPath, dependencyPath); - - // if (!typescriptRootConfig.references.find(ref => ref.path === relativePath)) { - // typescriptRootConfig.references.push({ - // path: relativePath, - // }); - // } - } catch (e) { - log('error', `Failed to resolve ${dependency}`); - } - } - - typescriptConfig.references = [...new Set(typescriptConfig.references)]; - typescriptConfig.references.sort((a, b) => a.path.localeCompare(b.path)); - - typescriptConfig.compilerOptions = { - rootDir: 'src', - outDir: 'dist', - tsBuildInfoFile: 'dist/tsconfig.tsbuildinfo', - }; - - typescriptConfig.include = ['__custom_mocks__/**/*', 'src/**/*', 'src/**/*.json', 'src/**/*.css', 'src/**/*.scss']; - - typescriptConfig.exclude = typescriptConfig.exclude || []; - - const defaultExclude = ['lib/**/*', 'dist/**/*', '**/node_modules']; - - for (const exclude of defaultExclude) { - if (!typescriptConfig.exclude.includes(exclude)) { - typescriptConfig.exclude.push(exclude); - } - } - - fs.writeFileSync(tsConfigPath, JSON.stringify(typescriptConfig, undefined, 2) + '\n', 'utf8'); - // fs.writeFileSync(tsRootConfigPath, JSON.stringify(typescriptRootConfig, undefined, 2), 'utf8'); - log('success', 'Typescript project references resolved'); -} diff --git a/webapp/packages/core-cli/bin/validate-dependencies.js b/webapp/packages/core-cli/bin/validate-dependencies.js deleted file mode 100755 index 254ef6c3f2..0000000000 --- a/webapp/packages/core-cli/bin/validate-dependencies.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -/* eslint-disable @typescript-eslint/no-var-requires */ -'use strict'; -process.title = 'core-filter-deps'; - -const filter = process.argv[2] || '.'; - -const glob = require('glob'); -const { resolve, join } = require('path'); -const { validateDependencies } = require('../utils/validateDependencies'); - -const currentDir = resolve(); -const sourceFilesIterator = glob.globIterateSync(filter, { cwd: currentDir }); - -for (let currentPackageDir of sourceFilesIterator) { - currentPackageDir = resolve(currentPackageDir); - const pkg = require(join(currentPackageDir, 'package.json')); - console.info(`Processing ${pkg['name']}`); - validateDependencies(currentPackageDir); -} diff --git a/webapp/packages/core-cli/configs/webpack.config.js b/webapp/packages/core-cli/configs/webpack.config.js deleted file mode 100644 index 6492f274f6..0000000000 --- a/webapp/packages/core-cli/configs/webpack.config.js +++ /dev/null @@ -1,346 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -const { resolve } = require('path'); -const PnpWebpackPlugin = require('pnp-webpack-plugin'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { SourceAssetsResolver } = require('../utils/SourceAssetsResolver.js'); -const { IgnoreNotFoundExportPlugin } = require('../utils/IgnoreNotFoundExportPlugin.js'); -const excludedFromVendor = require('./excludedFromVendor.js'); -const WorkboxPlugin = require('workbox-webpack-plugin'); -const webpack = require('webpack'); -const { getServiceWorkerSource } = require('./webpack.product.utils.js'); - -const main = resolve('dist/index.js'); -const sso = require.resolve('@cloudbeaver/plugin-sso/dist/index.js'); - -const nodeModules = [ - resolve('node_modules'), // product - resolve('../../node_modules'), // workspace - resolve('../../node_modules/@cloudbeaver/core-cli/node_modules'), // core-cli -]; - -module.exports = (env, argv) => { - process.env.NODE_ENV = argv.mode; - const devMode = argv.mode !== 'production'; - - const workboxPlugin = []; - - if (!devMode) { - workboxPlugin.push( - new WorkboxPlugin.InjectManifest({ - swSrc: getServiceWorkerSource(), - swDest: 'service-worker.js', - maximumFileSizeToCacheInBytes: 20 * 1024 * 1024, - exclude: [ - /license\.txt$/, - /\.map$/, - /manifest.*\.js$/, - /\.tsx?$/, - /\.tsbuildinfo$/, - /\.DS_Store$/, - /\.svg$/, - /\.png$/, - /\.jpg$/, - /\.gif$/, - /\.jpeg$/, - /.woff2?$/, - /.eot$/, - /.ttf$/, - /.otf$/, - ], - }), - ); - - if (devMode) { - // Suppress the "InjectManifest has been called multiple times" warning by reaching into - // the private properties of the plugin and making sure it never ends up in the state - // where it makes that warning. - // https://github.com/GoogleChrome/workbox/blob/v6/packages/workbox-webpack-plugin/src/inject-manifest.ts#L260-L282 - Object.defineProperty(workboxPlugin, 'alreadyCalled', { - get() { - return false; - }, - set() { - // do nothing; the internals try to set it to true, which then results in a warning - // on the next run of webpack. - }, - }); - } - } - function getBaseStyleLoaders() { - const loaders = []; - - // Broke styles order in dev mode - if (devMode) { - loaders.push('style-loader'); - } else { - loaders.push(MiniCssExtractPlugin.loader); - } - - return loaders; - } - - function generateModuleStyleLoaders() { - return [ - ...getBaseStyleLoaders(), - { - loader: 'css-loader', - options: { - esModule: true, - modules: { - auto: /module\.(css|s[ac]ss)$/, - localIdentName: '[local]___[hash:base64:5]', - namedExport: false, - }, - }, - }, - { - loader: 'postcss-loader', - options: { - postcssOptions: { - plugins: [require('postcss-preset-env')({ stage: 0 })], - }, - }, - }, - { - loader: 'sass-loader', - options: { - sassOptions: { - implementation: require('sass'), - includePaths: nodeModules, - quietDeps: true, - }, - }, - }, - ]; - } - - let entry = {}; - - if (devMode) { - entry = { - main: { - import: main, - }, - sso: { - import: sso, - }, - }; - } else { - entry = { - main: { - import: main, - }, - sso: { - import: sso, - runtime: 'sso-runtime', - }, - }; - } - - return { - context: resolve(__dirname, '../../../../../'), - entry, - output: { - filename: 'js/[name]-[contenthash].js', - chunkFilename: 'js/[name]-[contenthash].js', - pathinfo: false, - }, - optimization: { - runtimeChunk: 'multiple', - moduleIds: 'deterministic', - usedExports: true, - sideEffects: true, - concatenateModules: true, - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: { - /* this impacts how many chunks are created, - we need to keep less then 30 requests for js files for initial page load (with no editors) - we can reduce this number when we will split chunks properly - */ - minSize: 128 * 1024, - cacheGroups: { - styles: { - name: 'styles', - type: 'css/mini-extract', - chunks: 'initial', - reuseExistingChunk: true, - priority: 10, - }, - stylesAsync: { - name: 'styles-async', - type: 'css/mini-extract', - chunks: 'async', - reuseExistingChunk: true, - priority: 20, - }, - locale: { - chunks: 'all', - test: /[\\/]locales[\\/].*?\.js/, - name(module) { - return module.rawRequest.substr(2); - }, - priority: 20, - reuseExistingChunk: true, - enforce: true, - }, - packages: { - chunks: 'initial', - test: /[\\/]packages[\\/]((plugin|core)-.*?)[\\/](src|dist)[\\/]/, - name: 'packages', - priority: 10, - reuseExistingChunk: true, - }, - packagesAsync: { - chunks: 'async', - test: /[\\/]packages[\\/]((plugin|core)-.*?)[\\/](src|dist)[\\/]/, - name(module) { - const path = module.context ?? module.resource; - const match = /[\\/]packages[\\/]((plugin|core)-.*?)([\\/]|$)/.exec(path); - if (!path || !match) { - return 'package'; - } - return match[1]; - }, - priority: 10, - reuseExistingChunk: true, - }, - extendedVendorAsync: { - chunks: 'async', - test: new RegExp(`[\\/]node_modules/(${excludedFromVendor.join('|')}).*?`, ''), - name: 'extended-vendor-async', - priority: -5, - reuseExistingChunk: true, - }, - extendedVendor: { - chunks: 'initial', - name: 'extended-vendor', - test: new RegExp(`[\\/]node_modules/(${excludedFromVendor.join('|')}).*?`, ''), - priority: -5, - reuseExistingChunk: true, - }, - vendorAsync: { - chunks: 'async', - test: new RegExp(`[\\/]node_modules/(?!:${excludedFromVendor.join('|')}).*?`, ''), - name: 'vendor-async', - priority: -10, - reuseExistingChunk: true, - }, - vendor: { - chunks: 'initial', - name: 'vendor', - test: new RegExp(`[\\/]node_modules/(?!:${excludedFromVendor.join('|')}).*?`, ''), - priority: -10, - reuseExistingChunk: true, - }, - asyncCommons: { - chunks: 'async', - name: 'commons-async', - filename: 'js/[name]-[contenthash].js', - priority: -15, - reuseExistingChunk: true, - }, - commons: { - chunks: 'initial', - name: 'commons', - filename: 'js/[name]-[contenthash].js', - priority: -15, - reuseExistingChunk: true, - }, - defaultAsync: { - chunks: 'async', - name: 'bundle-async', - filename: '[name]-[contenthash].js', - priority: -20, - reuseExistingChunk: true, - }, - default: { - chunks: 'initial', - name: 'bundle', - filename: '[name]-[contenthash].js', - priority: -20, - reuseExistingChunk: true, - }, - }, - }, - }, - resolve: { - extensions: ['.ts', '.tsx', '.wasm', '.mjs', '.js', '.jsx', '.json', '.json5'], - modules: nodeModules, - plugins: [PnpWebpackPlugin, new SourceAssetsResolver(['.json5', '.css', '.scss', '.json'])], - }, - resolveLoader: { - modules: nodeModules, - plugins: [PnpWebpackPlugin.moduleLoader(module)], - }, - module: { - rules: [ - { - test: /\.json5$/i, - loader: 'json5-loader', - type: 'javascript/auto', - }, - devMode && { - test: /\.jsx?$/, - enforce: 'pre', - exclude: /node_modules/, - use: ['source-map-loader'], - }, - devMode && { - test: /\.jsx?$/, - exclude: /node_modules/, - use: [ - 'thread-loader', - { - loader: 'swc-loader', - options: { - jsc: { - target: 'esnext', - }, - }, - }, - ], - }, - { - test: /\.(css|s[ac]ss)$/, - exclude: /node_modules/, - use: generateModuleStyleLoaders(), - }, - { - test: /\.(png|jpg|gif)$/i, - type: 'asset/inline', - }, - { - test: /\.(woff|woff2|eot|ttf|otf)$/i, - type: 'asset/resource', - generator: { - filename: 'fonts/[hash][ext][query]', - }, - }, - ], - }, - ignoreWarnings: [/Failed to parse source map/], - devtool: devMode ? 'eval-source-map' : false, - plugins: [ - new webpack.WatchIgnorePlugin({ - paths: [/.tsbuildinfo$/], - }), - new IgnoreNotFoundExportPlugin(), - new MiniCssExtractPlugin({ - filename: 'styles/[name]-[contenthash].css', - chunkFilename: 'styles/[name]-[contenthash].css', - ignoreOrder: true, // Enable to remove warnings about conflicting order - insert: linkTag => { - document.head.appendChild(linkTag); - }, - }), - ...workboxPlugin, - ], - }; -}; diff --git a/webapp/packages/core-cli/configs/webpack.product.config.js b/webapp/packages/core-cli/configs/webpack.product.config.js deleted file mode 100644 index 907df82f6e..0000000000 --- a/webapp/packages/core-cli/configs/webpack.product.config.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -const { resolve } = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const CopyWebpackPlugin = require('copy-webpack-plugin'); -const { EsbuildPlugin } = require('esbuild-loader'); -const { merge } = require('webpack-merge'); - -const commonConfig = require('./webpack.config.js'); -const { getAssets, withTimestamp } = require('./webpack.product.utils'); -const HtmlInjectWebpackPlugin = require('../utils/HtmlInjectWebpackPlugin.js'); - -const ssoHtmlTemplate = require.resolve('@cloudbeaver/plugin-sso/src/index.html.ejs'); -const ssoErrorHtmlTemplate = require.resolve('@cloudbeaver/plugin-sso/src/ssoError.html.ejs'); -const outputDir = resolve('lib'); -const package = require(resolve('package.json')); - -const timestampVersion = withTimestamp(package.version); - -module.exports = (env, argv) => { - const devMode = argv.mode !== 'production'; - - return merge(commonConfig(env, argv), { - mode: 'production', - devtool: false, - output: { - library: package.name, - libraryTarget: 'umd', - path: outputDir, - }, - optimization: { - minimize: true, - - minimizer: [ - new EsbuildPlugin({ - include: /.*?\/(core|plugin|main|sso|packages)-.*/, - target: 'es2023', - keepNames: true, - }), - new EsbuildPlugin({ - exclude: /.*?\/(core|plugin|main|sso|packages)-.*/, - target: 'es2023', - css: true, - }), - ], - }, - plugins: [ - new CopyWebpackPlugin({ - patterns: getAssets(package, ''), - }), - new EsbuildPlugin({ - define: { - _VERSION_: JSON.stringify(timestampVersion), - _DEV_: JSON.stringify(false), - }, - }), - new HtmlWebpackPlugin({ - template: resolve('src/index.html.ejs'), - inject: 'body', - chunks: ['main'], - version: timestampVersion, - title: package.product?.name, - }), - new HtmlWebpackPlugin({ - filename: 'sso.html', - template: ssoHtmlTemplate, - inject: 'body', - chunks: ['sso'], - version: timestampVersion, - title: package.product?.name, - }), - new HtmlWebpackPlugin({ - filename: 'ssoError.html', - template: ssoErrorHtmlTemplate, - inject: 'body', - chunks: ['sso'], - version: timestampVersion, - title: package.product?.name, - }), - new HtmlInjectWebpackPlugin({ - body: [{ attributes: { hidden: true }, tagName: 'object', innerHTML: '{STATIC_CONTENT}', voidTag: false }], - }), - ], - }); -}; diff --git a/webapp/packages/core-cli/configs/webpack.product.dev.config.js b/webapp/packages/core-cli/configs/webpack.product.dev.config.js deleted file mode 100644 index d094edbee8..0000000000 --- a/webapp/packages/core-cli/configs/webpack.product.dev.config.js +++ /dev/null @@ -1,142 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -const { merge } = require('webpack-merge'); -const { resolve } = require('path'); -const webpack = require('webpack'); -const httpProxy = require('http-proxy'); -const { EsbuildPlugin } = require('esbuild-loader'); -const fs = require('fs'); - -const commonConfig = require('./webpack.config.js'); -const ssoHtmlTemplate = require.resolve('@cloudbeaver/plugin-sso/src/index.html.ejs'); -const ssoErrorHtmlTemplate = require.resolve('@cloudbeaver/plugin-sso/src/ssoError.html.ejs'); -const { getAssets } = require('./webpack.product.utils'); - -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const HtmlReplaceWebpackPlugin = require('html-replace-webpack-plugin'); -const CopyWebpackPlugin = require('copy-webpack-plugin'); -const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); -const HtmlInjectWebpackPlugin = require('../utils/HtmlInjectWebpackPlugin'); - - -const package = require(resolve('package.json')); - -const certPath = resolve(__dirname, '../../../../../certs/private.pem'); -const keyPath = resolve(__dirname, '../../../../../certs/private.key'); -let server = undefined; - -if (fs.existsSync(certPath) && fs.existsSync(keyPath)) { - server = { - type: 'https', - options: { - key: fs.readFileSync(keyPath), - cert: fs.readFileSync(certPath), - }, - }; -} - -module.exports = (env, argv) => { - const envServer = env.server ?? process.env.server; - - return merge(commonConfig(env, argv), { - mode: 'development', - output: { - devtoolModuleFilenameTemplate: 'file:///[absolute-resource-path]', - }, - watchOptions: { - aggregateTimeout: 1000, - ignored: ['**/node_modules', '**/packages/*/src/**/*.{ts,tsx}'], - }, - optimization: { - minimize: false, - runtimeChunk: 'single', - moduleIds: 'named', - }, - infrastructureLogging: { - level: 'warn', - }, - devServer: { - allowedHosts: 'all', - host: 'localhost', - port: 8080, - client: { - webSocketURL: 'auto://localhost:0/ws', - overlay: false, - }, - server, - proxy: [ - { - context: ['/api', '/api/ws'], - target: envServer, - secure: false, - ws: true, - }, - ], - // onListening: function (devServer, ...args) { - // if (!devServer) { - // throw new Error('webpack-dev-server is not defined'); - // } - // const logger = devServer.compiler.getInfrastructureLogger('webpack-dev-server'); - // const port = devServer.server.address().port; - // logger.info(`Proxy from http://localhost:8080 to http://127.0.0.1:${port}`); - // httpProxy.createProxyServer({ target:`http://127.0.0.1:${port}`, secure: false }).listen(8080); - // }, - }, - plugins: [ - new CopyWebpackPlugin({ - patterns: getAssets(package, ''), - }), - new webpack.DefinePlugin({ - _VERSION_: JSON.stringify(package.version), - _DEV_: true, - }), - - // for some reason it doesn't work with source maps - // new EsbuildPlugin({ - // define: { - // _VERSION_: JSON.stringify(package.version), - // _DEV_: JSON.stringify(true), - // }, - // }), - new HtmlWebpackPlugin({ - template: resolve('src/index.html.ejs'), - inject: 'body', - chunks: ['main'], - version: package.version, - title: package.product?.name, - }), - new HtmlWebpackPlugin({ - filename: 'sso.html', - template: ssoHtmlTemplate, - inject: 'body', - chunks: ['sso'], - version: package.version, - title: package.product?.name, - }), - new HtmlWebpackPlugin({ - filename: 'ssoError.html', - template: ssoErrorHtmlTemplate, - inject: 'body', - chunks: ['sso'], - version: package.version, - title: package.product?.name, - }), - new HtmlInjectWebpackPlugin({ - body: [{ attributes: { hidden: true }, tagName: 'object', innerHTML: '{STATIC_CONTENT}', voidTag: false }], - }), - new HtmlReplaceWebpackPlugin([ - { - pattern: '{ROOT_URI}', - replacement: '/', - }, - ]), - new webpack.HotModuleReplacementPlugin(), - new ReactRefreshWebpackPlugin({ overlay: false }), - ], - }); -}; diff --git a/webapp/packages/core-cli/configs/webpack.product.utils.js b/webapp/packages/core-cli/configs/webpack.product.utils.js deleted file mode 100644 index c24839982c..0000000000 --- a/webapp/packages/core-cli/configs/webpack.product.utils.js +++ /dev/null @@ -1,43 +0,0 @@ -const fs = require('fs'); -const { resolve } = require('path'); -const { getCloudBeaverDeps } = require('../utils/getCloudBeaverDeps'); - -function getServiceWorkerSource() { - return require.resolve('@cloudbeaver/core-browser/dist/service-worker.js'); -} - -function withTimestamp(version) { - return `${version}.${new Date().toISOString().substr(0, 19).replace('T', '').split(/[-:]+/).join('').slice(0, -2)}`; -} - -function scanCloudbeaverDeps(package) { - const deps = new Set(); - const list = [package.name]; - - while (list.length) { - const dependency = list.shift(); - - if (!deps.has(dependency)) { - const allDependencies = getCloudBeaverDeps(require(resolve('../../node_modules', dependency, 'package.json'))); - list.push(...allDependencies.dependencies, ...allDependencies.peerDependencies); - } - - deps.add(dependency); - } - - return Array.from(deps.keys()); -} - -function getAssets(package, to) { - const patterns = scanCloudbeaverDeps(package) - .reverse() - .map((dependency, index) => ({ from: resolve('../../node_modules', dependency, 'public'), to, force: true, priority: index })); - - return patterns.filter(pattern => fs.existsSync(pattern.from)); -} - -module.exports = { - getServiceWorkerSource, - withTimestamp, - getAssets, -}; diff --git a/webapp/packages/core-cli/package.json b/webapp/packages/core-cli/package.json index faf16d78bb..7cbeb38e05 100644 --- a/webapp/packages/core-cli/package.json +++ b/webapp/packages/core-cli/package.json @@ -1,6 +1,11 @@ { "name": "@cloudbeaver/core-cli", - "sideEffects": [], + "type": "module", + "sideEffects": [ + "src/**/*.css", + "src/**/*.scss", + "public/**/*" + ], "version": "0.1.0", "description": "CLI for CloudBeaver build system", "license": "Apache-2.0", @@ -13,66 +18,42 @@ "/bin", "/tests" ], + "exports": { + "./*": "./*" + }, "bin": { - "core-cli-dependency-graph": "./bin/dependency-graph.js", - "core-cli-build": "./bin/build.js", - "core-cli-test": "./bin/test.js", - "core-cli-analyzer": "./bin/analyzer.js", - "core-cli-validate-dependencies": "./bin/validate-dependencies.js", "core-cli-add-plugin": "./bin/add-plugin.js", - "typescript-resolve-references": "./bin/typescript-resolve-references.js" + "core-cli-analyzer": "./bin/analyzer.js", + "core-cli-dependency-graph": "./bin/dependency-graph.js", + "core-cli-set-version": "./bin/set-version.mjs", + "core-cli-test": "./bin/test.js", + "core-cli-validate-dependencies": "./dist/cli/validate-dependencies.js" + }, + "scripts": { + "build": "tsc -b", + "postinstall": "yarn build" }, "engines": { "node": ">=20.0.0" }, "dependencies": { - "copy-webpack-plugin": "^12", - "css-loader": "^7", - "declaration-bundler-webpack-plugin": "^1", - "html-loader": "^5", - "html-replace-webpack-plugin": "^2", - "html-webpack-plugin": "^5", - "json5-loader": "^4", - "mini-css-extract-plugin": "^2", - "pnp-webpack-plugin": "^1", - "postcss": "^8", - "postcss-discard-comments": "^7", - "postcss-loader": "^8", - "postcss-preset-env": "^10", - "sass": "^1", - "sass-loader": "^16", - "source-map-loader": "^5", - "style-loader": "^4", - "thread-loader": "^4", - "ts-loader": "^9", - "webpack": "^5", - "webpack-bundle-analyzer": "^4", - "webpack-cli": "^5", - "webpack-dev-server": "^5", - "webpack-merge": "^6" + "glob": "^11", + "tslib": "^2" }, "devDependencies": { - "@pmmmwh/react-refresh-webpack-plugin": "^0", + "@cloudbeaver/tsconfig": "workspace:*", "@swc/core": "^1", "@swc/jest": "^0", - "@types/madge": "^5", - "enquirer": "^2.4.1", - "esbuild-loader": "^4.2.2", - "execa": "^9.5.2", + "@testing-library/jest-dom": "^6", + "@types/node": "^20", + "enquirer": "^2", + "execa": "^9", "fake-indexeddb": "^6", "glob": "^11", - "http-proxy": "^1", - "hygen": "^6.2.11", + "hygen": "^6", "jest": "^29", "jest-environment-jsdom": "^29", - "madge": "^8", - "react-refresh": "^0", - "swc-loader": "^0", - "tsconfig-paths-webpack-plugin": "^4", - "upath": "^2", - "workbox-webpack-plugin": "^7" - }, - "resolutions": { - "webpack-dev-middleware": "^7" + "typescript": "^5", + "upath": "^2" } } diff --git a/webapp/packages/core-cli/src/cli/validate-dependencies.ts b/webapp/packages/core-cli/src/cli/validate-dependencies.ts new file mode 100755 index 0000000000..e52e41e28c --- /dev/null +++ b/webapp/packages/core-cli/src/cli/validate-dependencies.ts @@ -0,0 +1,33 @@ +#!/usr/bin/env node +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +/// +import { glob } from 'glob'; +import { resolve } from 'node:path'; +import { validateDependencies } from '../dependency-validator/validateDependencies.js'; +import { printMessage } from '../utils/printMessage.js'; +process.title = 'core-filter-deps'; + +const filter = process.argv[2] || '.'; +const currentDir = resolve(); +const sourceFilesIterator = glob.globIterateSync(filter, { cwd: currentDir }); +let isValidationSuccess = true; + +for (let currentPackageDir of sourceFilesIterator) { + currentPackageDir = resolve(currentPackageDir); + const status = validateDependencies(currentPackageDir); + if (!status) { + isValidationSuccess = false; + } +} +if (isValidationSuccess) { + printMessage('All dependencies are valid', false); +} else { + printMessage('Some dependencies are invalid', false); +} diff --git a/webapp/packages/core-cli/src/dependency-validator/IGNORED_DEPENDENCIES.ts b/webapp/packages/core-cli/src/dependency-validator/IGNORED_DEPENDENCIES.ts new file mode 100644 index 0000000000..a8176afdc6 --- /dev/null +++ b/webapp/packages/core-cli/src/dependency-validator/IGNORED_DEPENDENCIES.ts @@ -0,0 +1 @@ +export const IGNORED_DEPENDENCIES = ['tslib']; diff --git a/webapp/packages/core-cli/src/dependency-validator/INodePackage.ts b/webapp/packages/core-cli/src/dependency-validator/INodePackage.ts new file mode 100644 index 0000000000..0870b0693a --- /dev/null +++ b/webapp/packages/core-cli/src/dependency-validator/INodePackage.ts @@ -0,0 +1,8 @@ +export interface INodePackage { + name: string; + version?: string; + dependencies?: Record; + devDependencies?: Record; + sideEffects?: string[]; + scripts?: Record; +} diff --git a/webapp/packages/core-cli/src/dependency-validator/KNOWN_PEER_DEPS_MAP.ts b/webapp/packages/core-cli/src/dependency-validator/KNOWN_PEER_DEPS_MAP.ts new file mode 100644 index 0000000000..a5ae7e546a --- /dev/null +++ b/webapp/packages/core-cli/src/dependency-validator/KNOWN_PEER_DEPS_MAP.ts @@ -0,0 +1,7 @@ +export const KNOWN_PEER_DEPS_MAP: Record = { + 'mobx-react-lite': ['mobx', 'react-dom'], + '@testing-library/react': ['@testing-library/dom', 'react-dom'], + inversify: ['reflect-metadata'], + '@typescript-eslint/eslint-plugin': ['typescript'], + 'react-minisearch': ['minisearch'], +}; diff --git a/webapp/packages/core-cli/src/dependency-validator/PackageLogger.ts b/webapp/packages/core-cli/src/dependency-validator/PackageLogger.ts new file mode 100644 index 0000000000..8d0dbe8df6 --- /dev/null +++ b/webapp/packages/core-cli/src/dependency-validator/PackageLogger.ts @@ -0,0 +1,34 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ +import { printMessage } from '../utils/printMessage.js'; + +export class PackageLogger { + private isPackageJsonPathPrinted: boolean; + + constructor(private currentPackagePath: string) { + this.isPackageJsonPathPrinted = false; + } + + log(type: 'success' | 'info' | 'warn' | 'error', replace: boolean, message: string, ...args: any[]) { + if (type !== 'success' && type !== 'info' && !this.isPackageJsonPathPrinted) { + this.isPackageJsonPathPrinted = true; + this.log('info', false, 'Package: ' + this.currentPackagePath); + } + + let color = '\x1b[34m%s\x1b[0m'; + if (type === 'warn') { + color = '\x1b[33m%s\x1b[0m'; + } else if (type === 'error') { + color = '\x1b[31m%s\x1b[0m'; + } else if (type === 'success') { + color = '\x1b[32m%s\x1b[0m'; + } + + printMessage(color, replace, message, ...args); + } +} diff --git a/webapp/packages/core-cli/src/dependency-validator/sortDependencies.ts b/webapp/packages/core-cli/src/dependency-validator/sortDependencies.ts new file mode 100644 index 0000000000..71220b44e0 --- /dev/null +++ b/webapp/packages/core-cli/src/dependency-validator/sortDependencies.ts @@ -0,0 +1,10 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ +export function sortDependencies(a: string, b: string) { + return a.localeCompare(b); +} diff --git a/webapp/packages/core-cli/src/dependency-validator/validateDependencies.ts b/webapp/packages/core-cli/src/dependency-validator/validateDependencies.ts new file mode 100644 index 0000000000..0838b45282 --- /dev/null +++ b/webapp/packages/core-cli/src/dependency-validator/validateDependencies.ts @@ -0,0 +1,267 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ +/// +import { glob } from 'glob'; +import fs from 'node:fs'; +import path from 'node:path'; +import type { INodePackage } from './INodePackage.js'; +import { PackageLogger } from './PackageLogger.js'; +import { IGNORED_DEPENDENCIES } from './IGNORED_DEPENDENCIES.js'; +import { KNOWN_PEER_DEPS_MAP } from './KNOWN_PEER_DEPS_MAP.js'; +import { sortObjectKeys } from '../utils/sortObjectKeys.js'; +import { sortDependencies } from './sortDependencies.js'; + +export function validateDependencies(currentPackageRoot: string) { + const currentPackagePath = path.join(currentPackageRoot, 'package.json'); + const currentPackageSrcPath = path.join(currentPackageRoot, 'src'); + const currentPackage = JSON.parse(fs.readFileSync(currentPackagePath, 'utf8')) as INodePackage; + const packageLogger = new PackageLogger(currentPackagePath); + + const dependencies = new Set(); + const devDependencies = new Set(); + const selfImports = new Set(); + let isSuccess = true; + + const sourceFilesIterator = glob.globIterateSync('**/*.{ts,tsx,scss,css}', { cwd: currentPackageSrcPath }); + const referenceRegex = /\/\/\/\s+ script.includes('core-cli')); + + if (isUseCoreCli && currentPackage.name !== '@cloudbeaver/core-cli') { + devDependencies.add('@cloudbeaver/core-cli'); + } + + const tsConfigPath = path.join(currentPackageRoot, 'tsconfig.json'); + + if (fs.existsSync(tsConfigPath)) { + const tsConfigContent = fs.readFileSync(tsConfigPath, 'utf8'); + const extendsMatch = tsConfigContent.match(tsConfigPickExtendsRegex); + + if (extendsMatch) { + const extendsValue = extendsMatch[1]!; + + if (!extendsValue.startsWith('.') && !extendsValue.startsWith('/')) { + devDependencies.add(extendsValue.match(packageNameRegex)![1]!); + } + } + } + + for (const file of sourceFilesIterator) { + const isCSSModuleFileRegex = cssModuleFileRegex.test(file); + const isTSFileRegex = tsFileRegex.test(file); + const isStyleFileRegex = styleFileRegex.test(file); + const isTSXFileRegex = tsxFileRegex.test(file); + const isTestFile = testFileRegex.test(file); + + if (isTSFileRegex) { + devDependencies.add('typescript'); + } + + if (isCSSModuleFileRegex) { + devDependencies.add('typescript-plugin-css-modules'); + } + + if (isTestFile) { + devDependencies.add('@types/jest'); + } + + if (isTSXFileRegex) { + if (isTestFile) { + devDependencies.add('react'); + } else { + dependencies.add('react'); + } + devDependencies.add('@types/react'); + } + + const filePath = path.join(currentPackageSrcPath, file); + const fileContent = fs.readFileSync(filePath, 'utf8'); + const matches = fileContent.matchAll(importRegex); + for (const match of matches) { + const dep = match[6]!; + validateDependency(dep); + } + + const references = fileContent.matchAll(referenceRegex); + + for (const match of references) { + const dep = match[1]!; + + if (dep.startsWith('.')) { + continue; + } + + if (dep === 'node') { + validateDependency('@types/node', true); + continue; + } + + validateDependency(dep.match(packageNameRegex)![1]!, true); + } + + function validateDependency(dep: string, forceDev = false) { + if (dep.startsWith('node:') || dep === 'pnpapi') { + return; + } + + const peerDeps = KNOWN_PEER_DEPS_MAP[dep] || []; + if (isStyleFileRegex || isTestFile || forceDev) { + devDependencies.add(dep); + + for (const peerDep of peerDeps) { + devDependencies.add(peerDep); + } + return; + } + + if (dep === currentPackage.name) { + selfImports.add(filePath); + return; + } + dependencies.add(dep); + + for (const peerDep of peerDeps) { + dependencies.add(peerDep); + } + } + } + + currentPackage.sideEffects = currentPackage.sideEffects || []; + + const sideEffects = ['src/**/*.css', 'src/**/*.scss', 'public/**/*']; + + for (const sideEffect of sideEffects) { + if (!currentPackage.sideEffects.includes(sideEffect)) { + currentPackage.sideEffects.push(sideEffect); + } + } + + if (selfImports.size > 0) { + packageLogger.log('error', false, `Self import found in:`, Array.from(selfImports)); + } + + const newDependencies = [...dependencies].sort(sortDependencies); + const newAllDependencies = [...newDependencies, ...devDependencies].sort(sortDependencies); + + logUnmetAndExtraDependencies('dependencies', newDependencies, currentPackage.dependencies || {}, newAllDependencies); + + currentPackage.dependencies = sortObjectKeys( + newDependencies.reduce( + (acc, dep) => ({ + ...acc, + [dep]: getVersion(dep, acc?.[dep]), + }), + currentPackage.dependencies || {}, + ), + ); + + const newDevDependencies = [...devDependencies].sort(sortDependencies); + + logUnmetAndExtraDependencies('dev dependencies', newDevDependencies, currentPackage.devDependencies || {}, newAllDependencies); + + currentPackage.devDependencies = sortObjectKeys( + [...devDependencies].sort(sortDependencies).reduce( + (acc, dep) => ({ + ...acc, + [dep]: getVersion(dep, acc?.[dep]), + }), + currentPackage.devDependencies || {}, + ), + ); + + if (isSuccess) { + packageLogger.log('success', true, 'Dependencies validated successfully'); + } + + if (Object.keys(currentPackage.devDependencies).length === 0) { + delete currentPackage.devDependencies; + } + if (Object.keys(currentPackage.dependencies).length === 0) { + delete currentPackage.dependencies; + } + + // Write the updated `package.json` + fs.writeFileSync(currentPackagePath, JSON.stringify(currentPackage, null, 2) + '\n', 'utf8'); + + function getVersion(dependency: string, current?: string) { + if (dependency.startsWith('@cloudbeaver') || dependency.startsWith('@dbeaver')) { + return 'workspace:*'; + } + + if (current) { + return current; + } + + try { + if (fs.existsSync(path.join(import.meta.resolve(dependency), 'package.json')) === false) { + packageLogger.log('error', false, `Dependency ${dependency} not found`); + return '-1'; + } + } catch { + try { + if (fs.existsSync(path.join('@types', import.meta.resolve(dependency), 'package.json')) === false) { + packageLogger.log('error', false, `Dependency ${dependency} not found`); + return '-1'; + } else { + return '^' + require(path.join('@types', import.meta.resolve(dependency), 'package.json')).version; + } + } catch { + packageLogger.log('error', false, `Dependency ${dependency} not found`); + return '-1'; + } + } + + try { + return '^' + require(path.join(dependency, 'package.json')).version; + } catch { + packageLogger.log('error', false, `Dependency ${dependency} not found`); + return '-1'; + } + } + + function logUnmetAndExtraDependencies(key: string, newDependencies: string[], current: Record, allDependencies: string[] = []) { + const unmetDependencies = newDependencies.filter(dep => !current?.[dep]); + const extraDependencies = Object.keys(current || {}).filter(dep => { + if (IGNORED_DEPENDENCIES.includes(dep)) { + return false; + } + + if (newDependencies.includes(dep)) { + return false; + } + + if (dep.startsWith('@types/') && allDependencies.includes(dep.replace('@types/', ''))) { + return false; + } + + return true; + }); + + if (unmetDependencies.length > 0) { + packageLogger.log('warn', false, `Unmet ${key} added:`, unmetDependencies); + isSuccess = false; + } + + if (extraDependencies.length > 0) { + packageLogger.log('error', false, `Extra ${key} found:`, extraDependencies); + isSuccess = false; + } + } + + return isSuccess; +} diff --git a/webapp/packages/core-cli/utils/printMessage.js b/webapp/packages/core-cli/src/utils/printMessage.ts similarity index 61% rename from webapp/packages/core-cli/utils/printMessage.js rename to webapp/packages/core-cli/src/utils/printMessage.ts index 0df28545ae..fd73a72f62 100644 --- a/webapp/packages/core-cli/utils/printMessage.js +++ b/webapp/packages/core-cli/src/utils/printMessage.ts @@ -5,20 +5,24 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ -const util = require('util'); +/// +import util from 'node:util'; -function printMessage(message, replace, ...args) { +let replaceLastMessage = false; + +export function printMessage(message: string, replace: boolean, ...args: string[]) { const formattedMessage = util.format(message, ...args); - if (replace) { - process.stdout.clearLine(); + if (replaceLastMessage) { + process.stdout.clearLine(0); process.stdout.cursorTo(0); + } + + if (replace) { process.stdout.write(formattedMessage); } else { process.stdout.write(formattedMessage + '\n'); } -} -module.exports = { - printMessage, -}; + replaceLastMessage = replace; +} diff --git a/webapp/packages/core-cli/src/utils/sortObjectKeys.ts b/webapp/packages/core-cli/src/utils/sortObjectKeys.ts new file mode 100644 index 0000000000..9db8184389 --- /dev/null +++ b/webapp/packages/core-cli/src/utils/sortObjectKeys.ts @@ -0,0 +1,18 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ +export function sortObjectKeys(object: Record) { + return Object.keys(object) + .sort() + .reduce( + (obj, key) => { + obj[key as any] = object[key]; + return obj; + }, + {} as Record, + ); +} diff --git a/webapp/packages/core-cli/tsconfig.json b/webapp/packages/core-cli/tsconfig.json new file mode 100644 index 0000000000..70f13c0ee6 --- /dev/null +++ b/webapp/packages/core-cli/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "@cloudbeaver/tsconfig/tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true + }, + "include": [ + "__custom_mocks__/**/*", + "src/**/*", + "src/**/*.json", + "src/**/*.css", + "src/**/*.scss" + ], + "exclude": [ + "**/node_modules", + "lib/**/*", + "dist/**/*" + ] +} diff --git a/webapp/packages/core-cli/utils/HtmlInjectWebpackPlugin.js b/webapp/packages/core-cli/utils/HtmlInjectWebpackPlugin.js deleted file mode 100644 index 5cf1857ff8..0000000000 --- a/webapp/packages/core-cli/utils/HtmlInjectWebpackPlugin.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ - -const HtmlWebpackPlugin = require('html-webpack-plugin'); - -class HtmlInjectWebpackPlugin { - constructor(options) { - this.options = options; - } - apply(compiler) { - compiler.hooks.compilation.tap('HtmlInjectWebpackPlugin', compilation => { - HtmlWebpackPlugin.getHooks(compilation).afterTemplateExecution.tapAsync( - 'HtmlInjectWebpackPlugin', - (data, cb) => { - if (this.options.head) { - data.headTags.push(...this.options.head); - } - if (this.options.body) { - data.bodyTags.push(...this.options.body); - } - cb(null, data); - } - ); - }); - } -} - -module.exports = HtmlInjectWebpackPlugin; \ No newline at end of file diff --git a/webapp/packages/core-cli/utils/IgnoreNotFoundExportPlugin.js b/webapp/packages/core-cli/utils/IgnoreNotFoundExportPlugin.js deleted file mode 100644 index a8c2ecb962..0000000000 --- a/webapp/packages/core-cli/utils/IgnoreNotFoundExportPlugin.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -const ModuleDependencyWarning = require('webpack/lib/ModuleDependencyWarning'); - -class IgnoreNotFoundExportPlugin { - apply(compiler) { - const messageRegExp = /export '.*'( \(imported as '.*'\))? was not found in/; - function doneHook(stats) { - stats.compilation.warnings = stats.compilation.warnings.filter(warn => { - if (warn instanceof ModuleDependencyWarning && messageRegExp.test(warn.message)) { - return false; - } - return true; - }); - } - if (compiler.hooks) { - compiler.hooks.done.tap('IgnoreNotFoundExportPlugin', doneHook); - } else { - compiler.plugin('done', doneHook); - } - } -} - -module.exports = { - IgnoreNotFoundExportPlugin, -}; diff --git a/webapp/packages/core-cli/utils/SourceAssetsResolver.js b/webapp/packages/core-cli/utils/SourceAssetsResolver.js deleted file mode 100644 index d5d3909bf2..0000000000 --- a/webapp/packages/core-cli/utils/SourceAssetsResolver.js +++ /dev/null @@ -1,73 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ - -class SourceAssetsResolver { - // https://github.com/webpack/enhanced-resolve/ - constructor(extensions) { - this.source = 'after-normal-resolve'; - this.target = 'relative'; - this.extensions = extensions; - } - - apply(resolver) { - const target = resolver.ensureHook(this.target); - resolver.getHook(this.source).tapAsync('SourceAssetsResolver', (request, resolveContext, callback) => { - const descriptionFileRoot = /** @type {string} */ (request.descriptionFileRoot); - let relativePath = /** @type {string} */ (request.relativePath); - const requestRequest = /** @type {string | undefined} */ (request.request); - - if (relativePath?.startsWith('./dist') && this.extensions.some(ext => requestRequest?.endsWith(ext))) { - relativePath = './' + resolver.join(relativePath.replace('./dist', './src'), requestRequest); - const path = resolver.join(descriptionFileRoot, relativePath); - const obj = { - ...request, - path, - relativePath, - fullySpecified: false, - request: undefined, - }; - resolver.doResolve(target, obj, null, resolveContext, callback); - } else { - callback(); - } - }); - } -} - -module.exports = { - SourceAssetsResolver, -}; - -// class CSSSourceResolver { -// // https://github.com/webpack/enhanced-resolve/ -// constructor(supportedStyles) { -// this.source = 'describedRelative'; -// this.target = 'file'; -// this.supportedStyles = supportedStyles; -// } - -// apply(resolver) { -// const target = resolver.ensureHook(this.target); -// resolver.getHook(this.source).tapAsync('CSSSourceResolver', (request, resolveContext, callback) => { -// const requestRelativePath = request.request ?? request.relativePath; -// if (requestRelativePath.startsWith('./') && this.supportedStyles.test(requestRelativePath)) { -// const srcRelativePath = join(request.descriptionFileRoot, 'src', relative('./dist', requestRelativePath)); -// var obj = { -// path: srcRelativePath, -// request: request.request, -// query: request.query, -// directory: request.directory, -// context: request.context, -// }; -// resolver.doResolve(target, obj, 'resolve css source: ' + srcRelativePath, resolveContext, callback); -// } else { -// callback(); -// } -// }); -// } -// } diff --git a/webapp/packages/core-cli/utils/validateDependencies.js b/webapp/packages/core-cli/utils/validateDependencies.js deleted file mode 100644 index 0f8e3a7e86..0000000000 --- a/webapp/packages/core-cli/utils/validateDependencies.js +++ /dev/null @@ -1,218 +0,0 @@ -/* - * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0. - * you may not use this file except in compliance with the License. - */ -const glob = require('glob'); -const fs = require('fs'); -const path = require('path'); -const { printMessage } = require('./printMessage'); - -function validateDependencies(currentPackageRoot) { - const currentPackagePath = path.join(currentPackageRoot, 'package.json'); - const currentPackageSrcPath = path.join(currentPackageRoot, 'src'); - const currentPackage = JSON.parse(fs.readFileSync(currentPackagePath, 'utf8')); - - const dependencies = new Set(); - const devDependencies = new Set(); - let isSuccess = true; - - const sourceFilesIterator = glob.globIterateSync('**/*.{ts,tsx,scss,css}', { cwd: currentPackageSrcPath }); - const importRegex = /(import|export) ((type |)([\w,\s*]*?)(\{[\w\s\n,]*?\}|) from |)['"]((@[\w-]*\/[\w-]*)|([^\\.].*?))(\/.*)*['"]/g; - const testFileRegex = /((__custom_mocks__|__tests__).*|\.test)\.tsx?$/i; - const tsFileRegex = /\.ts$/i; - const tsxFileRegex = /\.tsx$/i; - const styleFileRegex = /\.s?css$/i; - const cssModuleFileRegex = /\.(m|module)\.s?css$/i; - - for (const file of sourceFilesIterator) { - const isCSSModuleFileRegex = cssModuleFileRegex.test(file); - const isTSFileRegex = tsFileRegex.test(file); - const isStyleFileRegex = styleFileRegex.test(file); - const isTSXFileRegex = tsxFileRegex.test(file); - const isTestFile = testFileRegex.test(file); - - if (isTSFileRegex) { - devDependencies.add('typescript'); - } - - if (isCSSModuleFileRegex) { - devDependencies.add('typescript-plugin-css-modules'); - } - - if (isTestFile) { - devDependencies.add('@types/jest'); - } - - if (isTSXFileRegex) { - if (isTestFile) { - devDependencies.add('react'); - } else { - dependencies.add('react'); - } - devDependencies.add('@types/react'); - } - - const fileContent = fs.readFileSync(path.join(currentPackageSrcPath, file), 'utf8'); - const matches = fileContent.matchAll(importRegex); - for (const match of matches) { - const dep = match[6]; - - if (isStyleFileRegex || isTestFile) { - devDependencies.add(dep); - continue; - } - - dependencies.add(dep); - } - } - - currentPackage.sideEffects = currentPackage.sideEffects || []; - - const sideEffects = ['src/**/*.css', 'src/**/*.scss', 'public/**/*']; - - for (const sideEffect of sideEffects) { - if (!currentPackage.sideEffects.includes(sideEffect)) { - currentPackage.sideEffects.push(sideEffect); - } - } - - printMessage('Analyzing dependencies...', true); - let isNeedToReplace = true; - let isPackageJsonPathPrinted = false; - - function log(type, message, ...args) { - if (type !== 'success' && !isPackageJsonPathPrinted) { - isPackageJsonPathPrinted = true; - log('info', 'Package: ' + currentPackagePath); - } - - let color = '\x1b[34m%s\x1b[0m'; - if (type === 'warn') { - color = '\x1b[33m%s\x1b[0m'; - } else if (type === 'error') { - color = '\x1b[31m%s\x1b[0m'; - } else if (type === 'success') { - color = '\x1b[32m%s\x1b[0m'; - } - - printMessage(color, isNeedToReplace, message, ...args); - if (isNeedToReplace) { - printMessage('', false); - isNeedToReplace = false; - } - } - - const newDependencies = [...dependencies].sort(sortDependencies); - const newAllDependencies = [...newDependencies, ...devDependencies].sort(sortDependencies); - - logUnmetAndExtraDependencies('dependencies', newDependencies, currentPackage.dependencies, newAllDependencies); - - currentPackage.dependencies = sortObjectKeys( - newDependencies.reduce( - (acc, dep) => ({ - ...acc, - [dep]: getVersion(dep, acc?.[dep]), - }), - currentPackage.dependencies, - ), - ); - - const newDevDependencies = [...devDependencies].sort(sortDependencies); - - logUnmetAndExtraDependencies('dev dependencies', newDevDependencies, currentPackage.devDependencies, newAllDependencies); - - currentPackage.devDependencies = sortObjectKeys( - [...devDependencies].sort(sortDependencies).reduce( - (acc, dep) => ({ - ...acc, - [dep]: getVersion(dep, acc?.[dep]), - }), - currentPackage.devDependencies, - ), - ); - - if (isSuccess) { - log('success', 'All dependencies are valid'); - } - - // Write the updated `package.json` - fs.writeFileSync(currentPackagePath, JSON.stringify(currentPackage, null, 2) + '\n', 'utf8'); - - function getVersion(dependency, current) { - if (dependency.startsWith('@cloudbeaver')) { - return '^0'; - } - - if (current) { - return current; - } - - try { - if (fs.existsSync(path.join(require.resolve(dependency), 'package.json')) === false) { - log('error', `Dependency ${dependency} not found`); - return '*'; - } - } catch { - try { - if (fs.existsSync(path.join('@types', require.resolve(dependency), 'package.json')) === false) { - log('error', `Dependency ${dependency} not found`); - return '*'; - } else { - return '^' + require(path.join('@types', require.resolve(dependency), 'package.json')).version; - } - } catch { - log('error', `Dependency ${dependency} not found`); - return '*'; - } - } - - return '^' + require(path.join(dependency, 'package.json')).version; - } - - function sortDependencies(a, b) { - return a.localeCompare(b); - } - - function logUnmetAndExtraDependencies(key, newDependencies, current, allDependencies = []) { - const unmetDependencies = newDependencies.filter(dep => !current?.[dep]); - const extraDependencies = Object.keys(current || {}).filter(dep => { - if (newDependencies.includes(dep)) { - return false; - } - - if (dep.startsWith('@types/') && allDependencies.includes(dep.replace('@types/', ''))) { - return false; - } - - return true; - }); - - if (unmetDependencies.length > 0) { - log('warn', `Unmet ${key} added:`, unmetDependencies); - isSuccess = false; - } - - if (extraDependencies.length > 0) { - log('error', `Extra ${key} found:`, extraDependencies); - isSuccess = false; - } - } - - function sortObjectKeys(object) { - return Object.keys(object) - .sort() - .reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); - } - - return isSuccess; -} - -module.exports = { - validateDependencies, -}; diff --git a/webapp/packages/core-client-activity/package.json b/webapp/packages/core-client-activity/package.json index 18e03f5bf5..6c94b0bbd2 100644 --- a/webapp/packages/core-client-activity/package.json +++ b/webapp/packages/core-client-activity/package.json @@ -9,22 +9,25 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references", "test": "core-cli-test" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-client-activity/tsconfig.json b/webapp/packages/core-client-activity/tsconfig.json index df9dba157c..7eac136bbd 100644 --- a/webapp/packages/core-client-activity/tsconfig.json +++ b/webapp/packages/core-client-activity/tsconfig.json @@ -1,16 +1,20 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-executor" } ], "include": [ diff --git a/webapp/packages/core-connections/package.json b/webapp/packages/core-connections/package.json index 07cb8090e8..fa3a77a343 100644 --- a/webapp/packages/core-connections/package.json +++ b/webapp/packages/core-connections/package.json @@ -9,36 +9,40 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-extensions": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-navigation-tree": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-extensions": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-navigation-tree": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "mobx": "^6", - "react": "^18" + "react": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", + "@types/react": "^18", "typescript": "^5" } } diff --git a/webapp/packages/core-connections/src/ConnectionDialectResource.ts b/webapp/packages/core-connections/src/ConnectionDialectResource.ts index 1551a34353..0bb8bb8359 100644 --- a/webapp/packages/core-connections/src/ConnectionDialectResource.ts +++ b/webapp/packages/core-connections/src/ConnectionDialectResource.ts @@ -26,7 +26,7 @@ export type ConnectionDialect = SqlDialectInfo; export class ConnectionDialectResource extends CachedMapResource { constructor( private readonly graphQLService: GraphQLService, - private readonly projectsService: ProjectsService, + projectsService: ProjectsService, connectionInfoResource: ConnectionInfoResource, ) { super(); diff --git a/webapp/packages/core-connections/src/ConnectionsSettingsService.ts b/webapp/packages/core-connections/src/ConnectionsSettingsService.ts index 8c583b6332..3f5b069d75 100644 --- a/webapp/packages/core-connections/src/ConnectionsSettingsService.ts +++ b/webapp/packages/core-connections/src/ConnectionsSettingsService.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ import { Dependency, injectable } from '@cloudbeaver/core-di'; -import { SettingsManagerService, SettingsProvider, SettingsProviderService } from '@cloudbeaver/core-settings'; +import { SettingsProvider, SettingsProviderService } from '@cloudbeaver/core-settings'; import { schema, schemaExtra } from '@cloudbeaver/core-utils'; const settingsSchema = schema.object({ @@ -22,10 +22,7 @@ export class ConnectionsSettingsService extends Dependency { } readonly settings: SettingsProvider; - constructor( - private readonly settingsProviderService: SettingsProviderService, - private readonly settingsManagerService: SettingsManagerService, - ) { + constructor(private readonly settingsProviderService: SettingsProviderService) { super(); this.settings = this.settingsProviderService.createSettings(settingsSchema); this.registerSettings(); diff --git a/webapp/packages/core-connections/src/NavTree/getConnectionFolderIdFromNodeId.ts b/webapp/packages/core-connections/src/NavTree/getConnectionFolderIdFromNodeId.ts index eed9c2e647..44bac4e666 100644 --- a/webapp/packages/core-connections/src/NavTree/getConnectionFolderIdFromNodeId.ts +++ b/webapp/packages/core-connections/src/NavTree/getConnectionFolderIdFromNodeId.ts @@ -12,7 +12,7 @@ export function getConnectionFolderIdFromNodeId(nodeId: string): IConnectionFold const data = /^folder:\/\/(.*?)\/(.*)$/gi.exec(nodeId); if (data) { - const [t, projectId, folderId] = data; + const [, projectId, folderId] = data; return createConnectionFolderParam(projectId!, folderId!); } diff --git a/webapp/packages/core-connections/tsconfig.json b/webapp/packages/core-connections/tsconfig.json index 3dde8d23ce..7cb58dbd69 100644 --- a/webapp/packages/core-connections/tsconfig.json +++ b/webapp/packages/core-connections/tsconfig.json @@ -1,58 +1,62 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-dialogs" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-extensions/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-extensions" }, { - "path": "../core-navigation-tree/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-navigation-tree" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-projects" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-settings" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-data-context/package.json b/webapp/packages/core-data-context/package.json index 5b8b330e5e..bca0c99cda 100644 --- a/webapp/packages/core-data-context/package.json +++ b/webapp/packages/core-data-context/package.json @@ -9,22 +9,26 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "mobx": "^6", - "react": "^18" + "react": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", + "@types/react": "^18", "typescript": "^5" } } diff --git a/webapp/packages/core-data-context/tsconfig.json b/webapp/packages/core-data-context/tsconfig.json index 3330e215c0..272300ffa1 100644 --- a/webapp/packages/core-data-context/tsconfig.json +++ b/webapp/packages/core-data-context/tsconfig.json @@ -1,16 +1,20 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-di/package.json b/webapp/packages/core-di/package.json index 8ec6bba0dd..5f849e3df8 100644 --- a/webapp/packages/core-di/package.json +++ b/webapp/packages/core-di/package.json @@ -9,23 +9,27 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-executor": "^0", + "@cloudbeaver/core-executor": "workspace:*", "inversify": "^6", "mobx": "^6", - "react": "^18" + "react": "^18", + "reflect-metadata": "^0", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "@types/react": "^18", diff --git a/webapp/packages/core-di/src/DIContainer.ts b/webapp/packages/core-di/src/DIContainer.ts index 024858d3fd..17278ef6b6 100644 --- a/webapp/packages/core-di/src/DIContainer.ts +++ b/webapp/packages/core-di/src/DIContainer.ts @@ -14,6 +14,7 @@ function logger(planAndResolve: interfaces.Next): interfaces.Next { try { return planAndResolve(args); } catch (exception: any) { + // @ts-ignore let metadata: Array<() => void> = Reflect.getMetadata('design:paramtypes', args.serviceIdentifier) || []; const matchIndex = /argument\s(\d+)/.exec((exception as Error).message); const matchDependency = /(serviceIdentifier:|class)\s([\w]+)/.exec((exception as Error).message); @@ -32,6 +33,7 @@ function logger(planAndResolve: interfaces.Next): interfaces.Next { let notFoundElement = dep; if (index !== -1) { + // @ts-ignore metadata = Reflect.getMetadata('design:paramtypes', dep) || []; serviceName = dep.name; notFoundElement = metadata[index]!; diff --git a/webapp/packages/core-di/tsconfig.json b/webapp/packages/core-di/tsconfig.json index c1062804b4..74e5989adc 100644 --- a/webapp/packages/core-di/tsconfig.json +++ b/webapp/packages/core-di/tsconfig.json @@ -1,13 +1,17 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-executor/tsconfig.json" + "path": "../core-cli" + }, + { + "path": "../core-executor" } ], "include": [ diff --git a/webapp/packages/core-dialogs/package.json b/webapp/packages/core-dialogs/package.json index 67dc3c893c..ed2dcf887d 100644 --- a/webapp/packages/core-dialogs/package.json +++ b/webapp/packages/core-dialogs/package.json @@ -9,21 +9,24 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-dialogs/src/CommonDialog/CommonDialogService.ts b/webapp/packages/core-dialogs/src/CommonDialog/CommonDialogService.ts index a8f99d3219..00b0e087c1 100644 --- a/webapp/packages/core-dialogs/src/CommonDialog/CommonDialogService.ts +++ b/webapp/packages/core-dialogs/src/CommonDialog/CommonDialogService.ts @@ -50,11 +50,9 @@ export class CommonDialogService { options?: DialogOptions, ): Promise { let _resolve: (value: TResult | DialogueStateResult) => void; - let _reject: (reason?: any) => void; - const promise = new Promise((resolve, reject) => { + const promise = new Promise(resolve => { _resolve = resolve; - _reject = reject; }); const dialogInternal: DialogInternal = { diff --git a/webapp/packages/core-dialogs/tsconfig.json b/webapp/packages/core-dialogs/tsconfig.json index 3330e215c0..272300ffa1 100644 --- a/webapp/packages/core-dialogs/tsconfig.json +++ b/webapp/packages/core-dialogs/tsconfig.json @@ -1,16 +1,20 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-events/package.json b/webapp/packages/core-events/package.json index 14e5c64400..931c9996db 100644 --- a/webapp/packages/core-events/package.json +++ b/webapp/packages/core-events/package.json @@ -9,32 +9,35 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-events/src/EventsSettingsService.test.ts b/webapp/packages/core-events/src/EventsSettingsService.test.ts index 84c3f1b694..4233030f3e 100644 --- a/webapp/packages/core-events/src/EventsSettingsService.test.ts +++ b/webapp/packages/core-events/src/EventsSettingsService.test.ts @@ -10,17 +10,17 @@ import { expect, test } from '@jest/globals'; import { coreClientActivityManifest } from '@cloudbeaver/core-client-activity'; import { coreLocalizationManifest } from '@cloudbeaver/core-localization'; import { coreRootManifest, ServerConfigResource } from '@cloudbeaver/core-root'; -import { createGQLEndpoint } from '@cloudbeaver/core-root/dist/__custom_mocks__/createGQLEndpoint.js'; -import '@cloudbeaver/core-root/dist/__custom_mocks__/expectWebsocketClosedMessage.js'; -import { mockAppInit } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockAppInit.js'; -import { mockGraphQL } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockGraphQL.js'; -import { mockServerConfig } from '@cloudbeaver/core-root/dist/__custom_mocks__/resolvers/mockServerConfig.js'; +import { createGQLEndpoint } from '@cloudbeaver/core-root/__custom_mocks__/createGQLEndpoint.js'; +import '@cloudbeaver/core-root/__custom_mocks__/expectWebsocketClosedMessage.js'; +import { mockAppInit } from '@cloudbeaver/core-root/__custom_mocks__/mockAppInit.js'; +import { mockGraphQL } from '@cloudbeaver/core-root/__custom_mocks__/mockGraphQL.js'; +import { mockServerConfig } from '@cloudbeaver/core-root/__custom_mocks__/resolvers/mockServerConfig.js'; import { coreSDKManifest } from '@cloudbeaver/core-sdk'; import { coreSettingsManifest } from '@cloudbeaver/core-settings'; import { expectDeprecatedSettingMessage, expectNoDeprecatedSettingMessage, -} from '@cloudbeaver/core-settings/dist/__custom_mocks__/expectDeprecatedSettingMessage.js'; +} from '@cloudbeaver/core-settings/__custom_mocks__/expectDeprecatedSettingMessage.js'; import { createApp } from '@cloudbeaver/tests-runner'; import { EventsSettingsService } from './EventsSettingsService.js'; diff --git a/webapp/packages/core-events/tsconfig.json b/webapp/packages/core-events/tsconfig.json index 639e649425..15fb0cf22d 100644 --- a/webapp/packages/core-events/tsconfig.json +++ b/webapp/packages/core-events/tsconfig.json @@ -1,46 +1,41 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-executor/package.json b/webapp/packages/core-executor/package.json index 4fe3554360..78328cf342 100644 --- a/webapp/packages/core-executor/package.json +++ b/webapp/packages/core-executor/package.json @@ -9,20 +9,23 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "mobx": "^6" + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-executor/src/whileTask.ts b/webapp/packages/core-executor/src/whileTask.ts index 11ae940fe3..cf4da021b2 100644 --- a/webapp/packages/core-executor/src/whileTask.ts +++ b/webapp/packages/core-executor/src/whileTask.ts @@ -22,8 +22,8 @@ export function whileTask( let reject: (reason?: any) => void; let fulfilled = false; - let intervalTimeoutId: NodeJS.Timeout | null = null; - let timeoutId: NodeJS.Timeout | null = null; + let intervalTimeoutId: ReturnType | null = null; + let timeoutId: ReturnType | null = null; let activeTask: Promise | null = null; let stopped = false; diff --git a/webapp/packages/core-executor/tsconfig.json b/webapp/packages/core-executor/tsconfig.json index a308441eeb..9a62b60153 100644 --- a/webapp/packages/core-executor/tsconfig.json +++ b/webapp/packages/core-executor/tsconfig.json @@ -1,11 +1,16 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, - "references": [], + "references": [ + { + "path": "../core-cli" + } + ], "include": [ "__custom_mocks__/**/*", "src/**/*", diff --git a/webapp/packages/core-extensions/package.json b/webapp/packages/core-extensions/package.json index 8cb577519e..85618fc0ca 100644 --- a/webapp/packages/core-extensions/package.json +++ b/webapp/packages/core-extensions/package.json @@ -9,17 +9,21 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" + }, + "dependencies": { + "tslib": "^2" }, - "dependencies": {}, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-extensions/tsconfig.json b/webapp/packages/core-extensions/tsconfig.json index a308441eeb..9a62b60153 100644 --- a/webapp/packages/core-extensions/tsconfig.json +++ b/webapp/packages/core-extensions/tsconfig.json @@ -1,11 +1,16 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, - "references": [], + "references": [ + { + "path": "../core-cli" + } + ], "include": [ "__custom_mocks__/**/*", "src/**/*", diff --git a/webapp/packages/core-links/package.json b/webapp/packages/core-links/package.json index d8f649cb0f..39c0b48750 100644 --- a/webapp/packages/core-links/package.json +++ b/webapp/packages/core-links/package.json @@ -9,20 +9,23 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0" + "@cloudbeaver/core-di": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-links/tsconfig.json b/webapp/packages/core-links/tsconfig.json index 4a48d52a9c..dd9fb34ea9 100644 --- a/webapp/packages/core-links/tsconfig.json +++ b/webapp/packages/core-links/tsconfig.json @@ -1,13 +1,17 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" + }, + { + "path": "../core-di" } ], "include": [ diff --git a/webapp/packages/core-localization/package.json b/webapp/packages/core-localization/package.json index 3ee4e322fb..8fdc0a84e7 100644 --- a/webapp/packages/core-localization/package.json +++ b/webapp/packages/core-localization/package.json @@ -9,22 +9,25 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-localization/tsconfig.json b/webapp/packages/core-localization/tsconfig.json index df9dba157c..7eac136bbd 100644 --- a/webapp/packages/core-localization/tsconfig.json +++ b/webapp/packages/core-localization/tsconfig.json @@ -1,16 +1,20 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-executor" } ], "include": [ diff --git a/webapp/packages/core-navigation-tree/package.json b/webapp/packages/core-navigation-tree/package.json index d0724af0bd..86d2512f61 100644 --- a/webapp/packages/core-navigation-tree/package.json +++ b/webapp/packages/core-navigation-tree/package.json @@ -9,47 +9,50 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-extensions": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-extensions": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-browser": "^0", - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-storage": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-view": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-browser": "workspace:*", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-storage": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-view": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.test.ts b/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.test.ts index 8dc499cb19..d26321f033 100644 --- a/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.test.ts +++ b/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.test.ts @@ -8,25 +8,25 @@ import { expect, test } from '@jest/globals'; import { coreAuthenticationManifest } from '@cloudbeaver/core-authentication'; -import { mockAuthentication } from '@cloudbeaver/core-authentication/dist/__custom_mocks__/mockAuthentication.js'; +import { mockAuthentication } from '@cloudbeaver/core-authentication/__custom_mocks__/mockAuthentication.js'; import { coreBrowserManifest } from '@cloudbeaver/core-browser'; import { coreClientActivityManifest } from '@cloudbeaver/core-client-activity'; import { coreEventsManifest } from '@cloudbeaver/core-events'; import { coreLocalizationManifest } from '@cloudbeaver/core-localization'; import { coreProjectsManifest } from '@cloudbeaver/core-projects'; import { coreRootManifest, ServerConfigResource } from '@cloudbeaver/core-root'; -import { createGQLEndpoint } from '@cloudbeaver/core-root/dist/__custom_mocks__/createGQLEndpoint.js'; -import '@cloudbeaver/core-root/dist/__custom_mocks__/expectWebsocketClosedMessage.js'; -import { mockAppInit } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockAppInit.js'; -import { mockGraphQL } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockGraphQL.js'; -import { mockServerConfig } from '@cloudbeaver/core-root/dist/__custom_mocks__/resolvers/mockServerConfig.js'; +import { createGQLEndpoint } from '@cloudbeaver/core-root/__custom_mocks__/createGQLEndpoint.js'; +import '@cloudbeaver/core-root/__custom_mocks__/expectWebsocketClosedMessage.js'; +import { mockAppInit } from '@cloudbeaver/core-root/__custom_mocks__/mockAppInit.js'; +import { mockGraphQL } from '@cloudbeaver/core-root/__custom_mocks__/mockGraphQL.js'; +import { mockServerConfig } from '@cloudbeaver/core-root/__custom_mocks__/resolvers/mockServerConfig.js'; import { coreRoutingManifest } from '@cloudbeaver/core-routing'; import { coreSDKManifest } from '@cloudbeaver/core-sdk'; import { coreSettingsManifest } from '@cloudbeaver/core-settings'; import { expectDeprecatedSettingMessage, expectNoDeprecatedSettingMessage, -} from '@cloudbeaver/core-settings/dist/__custom_mocks__/expectDeprecatedSettingMessage.js'; +} from '@cloudbeaver/core-settings/__custom_mocks__/expectDeprecatedSettingMessage.js'; import { coreStorageManifest } from '@cloudbeaver/core-storage'; import { coreUIManifest } from '@cloudbeaver/core-ui'; import { coreViewManifest } from '@cloudbeaver/core-view'; diff --git a/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.ts b/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.ts index 33b3096d6f..bffa18f88a 100644 --- a/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.ts +++ b/webapp/packages/core-navigation-tree/src/NavTreeSettingsService.ts @@ -9,7 +9,6 @@ import { Dependency, injectable } from '@cloudbeaver/core-di'; import { createSettingsAliasResolver, ROOT_SETTINGS_LAYER, - SettingsManagerService, SettingsProvider, SettingsProviderService, SettingsResolverService, @@ -39,7 +38,6 @@ export class NavTreeSettingsService extends Dependency { constructor( private readonly settingsProviderService: SettingsProviderService, - private readonly settingsManagerService: SettingsManagerService, private readonly settingsResolverService: SettingsResolverService, ) { super(); diff --git a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts index 3f96e93972..b6a8441dcb 100644 --- a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts +++ b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts @@ -469,7 +469,7 @@ export class NavTreeResource extends CachedMapResource `"${parent}"`).join('\n')}`); - const error = new ResourceError(this, key, undefined, 'Entity not found', { cause }); + const error = new ResourceError(this, key, 'Entity not found', { cause }); ExecutorInterrupter.interrupt(contexts); throw this.markError(error, key); } diff --git a/webapp/packages/core-navigation-tree/tsconfig.json b/webapp/packages/core-navigation-tree/tsconfig.json index 9e4011c201..382f0bb8df 100644 --- a/webapp/packages/core-navigation-tree/tsconfig.json +++ b/webapp/packages/core-navigation-tree/tsconfig.json @@ -1,91 +1,74 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-authentication/tsconfig.json" + "path": "../core-browser" }, { - "path": "../core-browser/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-extensions/tsconfig.json" + "path": "../core-extensions" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-projects" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-storage" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-ui" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-view" }, { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-storage/tsconfig.json" - }, - { - "path": "../core-ui/tsconfig.json" - }, - { - "path": "../core-ui/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../core-view/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-notifications/package.json b/webapp/packages/core-notifications/package.json index eacf1ca0b4..88a6d0f333 100644 --- a/webapp/packages/core-notifications/package.json +++ b/webapp/packages/core-notifications/package.json @@ -9,24 +9,29 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-events": "^0", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "mobx": "^6", "mobx-react-lite": "^4", "react": "^18", - "reakit": "^1" + "react-dom": "^18", + "reakit": "^1", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/core-notifications/tsconfig.json b/webapp/packages/core-notifications/tsconfig.json index 6344f58a9c..701523ede2 100644 --- a/webapp/packages/core-notifications/tsconfig.json +++ b/webapp/packages/core-notifications/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-events" } ], "include": [ diff --git a/webapp/packages/core-product/package.json b/webapp/packages/core-product/package.json index ea92e686c9..720dedeb8d 100644 --- a/webapp/packages/core-product/package.json +++ b/webapp/packages/core-product/package.json @@ -9,21 +9,24 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-settings": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-product/tsconfig.json b/webapp/packages/core-product/tsconfig.json index cd5a98bfe0..c1db601a9a 100644 --- a/webapp/packages/core-product/tsconfig.json +++ b/webapp/packages/core-product/tsconfig.json @@ -1,16 +1,20 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-settings" } ], "include": [ diff --git a/webapp/packages/core-projects/package.json b/webapp/packages/core-projects/package.json index f9dc536024..86d0824445 100644 --- a/webapp/packages/core-projects/package.json +++ b/webapp/packages/core-projects/package.json @@ -9,29 +9,32 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-extensions": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-extensions": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-projects/tsconfig.json b/webapp/packages/core-projects/tsconfig.json index 55d6c1fe3d..a62650261c 100644 --- a/webapp/packages/core-projects/tsconfig.json +++ b/webapp/packages/core-projects/tsconfig.json @@ -1,40 +1,44 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-extensions/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-extensions" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-ui/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-ui" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-resource-manager/package.json b/webapp/packages/core-resource-manager/package.json index e7fae57d77..00190f8af2 100644 --- a/webapp/packages/core-resource-manager/package.json +++ b/webapp/packages/core-resource-manager/package.json @@ -9,30 +9,32 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-administration": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-navigation-tree": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-administration": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-navigation-tree": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-resource-manager/tsconfig.json b/webapp/packages/core-resource-manager/tsconfig.json index 0bbb290f03..0b6cce7c9e 100644 --- a/webapp/packages/core-resource-manager/tsconfig.json +++ b/webapp/packages/core-resource-manager/tsconfig.json @@ -1,43 +1,44 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-administration/tsconfig.json" + "path": "../core-administration" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-navigation-tree/tsconfig.json" + "path": "../core-navigation-tree" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-projects" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-resource/package.json b/webapp/packages/core-resource/package.json index 40519062f6..e45ae1e80a 100644 --- a/webapp/packages/core-resource/package.json +++ b/webapp/packages/core-resource/package.json @@ -9,26 +9,29 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "mobx": "^6", "typescript": "^5" - }, - "peerDependencies": {} + } } diff --git a/webapp/packages/core-resource/src/Resource/CachedResource.ts b/webapp/packages/core-resource/src/Resource/CachedResource.ts index 3c5d151279..b6b6949bbe 100644 --- a/webapp/packages/core-resource/src/Resource/CachedResource.ts +++ b/webapp/packages/core-resource/src/Resource/CachedResource.ts @@ -69,9 +69,6 @@ export abstract class CachedResource< protected outdateWaitList: ResourceKey[]; protected readonly scheduler: TaskScheduler>; - /** Need to infer value type */ - private readonly typescriptHack: TValue; - constructor(defaultKey: ResourceKey, defaultValue: () => TData, defaultIncludes: TInclude = [] as any) { super(defaultValue, defaultIncludes); @@ -79,7 +76,6 @@ export abstract class CachedResource< this.loadingTask = this.loadingTask.bind(this); - this.typescriptHack = null as any; this.outdateWaitList = []; this.scheduler = new TaskScheduler(this.isIntersect); this.beforeLoad = new Executor(null, this.isIntersect); @@ -389,7 +385,7 @@ export abstract class CachedResource< } markError(exception: Error, key: ResourceKey, include?: TInclude): ResourceError { - exception = new ResourceError(this, key, include, exception.message, { cause: exception }); + exception = new ResourceError(this, key, exception.message, { cause: exception }); const pageKey = this.aliases.isAlias(key, CachedResourceOffsetPageKey) || this.aliases.isAlias(key, CachedResourceOffsetPageListKey); this.metadata.update(key, metadata => { metadata.exception = exception; diff --git a/webapp/packages/core-resource/src/Resource/ResourceAlias.ts b/webapp/packages/core-resource/src/Resource/ResourceAlias.ts index 23e74dc4a8..eb594e1a35 100644 --- a/webapp/packages/core-resource/src/Resource/ResourceAlias.ts +++ b/webapp/packages/core-resource/src/Resource/ResourceAlias.ts @@ -18,11 +18,9 @@ export abstract class ResourceAlias readonly id: string; readonly options: TOptions; parent?: ResourceAlias; - private readonly typescriptHack: TKey; abstract readonly name: string; constructor(id: string, options: TOptions, parent?: ResourceAlias) { - this.typescriptHack = null as any; this.id = id; this.options = options; this.parent = parent; @@ -72,7 +70,7 @@ export abstract class ResourceAlias return this.toString(); } - private get [Symbol.toStringTag]() { + get [Symbol.toStringTag]() { return this.toString(); } diff --git a/webapp/packages/core-resource/src/Resource/ResourceError.ts b/webapp/packages/core-resource/src/Resource/ResourceError.ts index 3234dfda92..99495abd2f 100644 --- a/webapp/packages/core-resource/src/Resource/ResourceError.ts +++ b/webapp/packages/core-resource/src/Resource/ResourceError.ts @@ -15,7 +15,6 @@ export class ResourceError extends LoadingError { constructor( private readonly resource: CachedResource, private readonly key: any, - private readonly context: any, message?: string, options?: ErrorOptions, ) { diff --git a/webapp/packages/core-resource/tsconfig.json b/webapp/packages/core-resource/tsconfig.json index ce6eb18de5..c1bde30897 100644 --- a/webapp/packages/core-resource/tsconfig.json +++ b/webapp/packages/core-resource/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-executor" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-root/package.json b/webapp/packages/core-root/package.json index 376174e6b6..4c5e7d0257 100644 --- a/webapp/packages/core-root/package.json +++ b/webapp/packages/core-root/package.json @@ -9,32 +9,36 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-product": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-product": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "mobx": "^6", - "rxjs": "^7" + "rxjs": "^7", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-links": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-links": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "msw": "^2", diff --git a/webapp/packages/core-root/src/DefaultNavigatorSettingsResource.ts b/webapp/packages/core-root/src/DefaultNavigatorSettingsResource.ts index cfe6b6753f..b1bd50e1b1 100644 --- a/webapp/packages/core-root/src/DefaultNavigatorSettingsResource.ts +++ b/webapp/packages/core-root/src/DefaultNavigatorSettingsResource.ts @@ -9,7 +9,6 @@ import { injectable } from '@cloudbeaver/core-di'; import { CachedDataResource } from '@cloudbeaver/core-resource'; import { type DefaultNavigatorSettingsFragment, GraphQLService, type NavigatorSettingsInput } from '@cloudbeaver/core-sdk'; -import { isNavigatorViewSettingsEqual } from './ConnectionNavigatorViewSettings.js'; import { ServerConfigResource } from './ServerConfigResource.js'; export type DefaultNavigatorSettings = DefaultNavigatorSettingsFragment['defaultNavigatorSettings']; diff --git a/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts b/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts index 0b264835a8..ecc8615c0f 100644 --- a/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts +++ b/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts @@ -34,7 +34,7 @@ export abstract class TopicEventHandler< private readonly serverSubject?: Observable; private readonly subject: Subject; constructor( - private readonly topic: string, + topic: string, private readonly emitter: IServerEventEmitter, ) { this.onInit = new SyncExecutor(); diff --git a/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockOpenSession.ts b/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockOpenSession.ts index 52b1d0844f..bc419a1c26 100644 --- a/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockOpenSession.ts +++ b/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockOpenSession.ts @@ -5,14 +5,12 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ -import { type GraphQLResolverExtras, type GraphQLResponseBody, HttpResponse, type ResponseResolver } from 'msw'; +import { HttpResponse, type GraphQLResponseResolver } from 'msw'; import type { OpenSessionMutation, OpenSessionMutationVariables } from '@cloudbeaver/core-sdk'; -export const mockOpenSession: ResponseResolver< - GraphQLResolverExtras, - null, - GraphQLResponseBody +export const mockOpenSession: GraphQLResponseResolver< +OpenSessionMutation, OpenSessionMutationVariables > = function mockOpenSession(info) { const date = new Date().toISOString(); diff --git a/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockServerConfig.ts b/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockServerConfig.ts index f99089ab19..bb5f09eb3b 100644 --- a/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockServerConfig.ts +++ b/webapp/packages/core-root/src/__custom_mocks__/resolvers/mockServerConfig.ts @@ -5,7 +5,7 @@ * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ -import { type GraphQLResolverExtras, type GraphQLResponseBody, HttpResponse, type ResponseResolver } from 'msw'; +import { HttpResponse, type GraphQLResponseResolver } from 'msw'; import type { ServerConfigQuery, ServerConfigQueryVariables } from '@cloudbeaver/core-sdk'; @@ -13,7 +13,7 @@ import { defaultServerConfig } from '../data/defaultServerConfig.js'; export function mockServerConfig( productConfiguration?: Record, -): ResponseResolver, null, GraphQLResponseBody> { +): GraphQLResponseResolver { return function mockServerConfig() { return HttpResponse.json({ data: defaultServerConfig(productConfiguration) }); }; diff --git a/webapp/packages/core-root/tsconfig.json b/webapp/packages/core-root/tsconfig.json index 68b810a9f4..1da241fa32 100644 --- a/webapp/packages/core-root/tsconfig.json +++ b/webapp/packages/core-root/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "exclude": [ "**/node_modules", "lib/**/*", @@ -8,44 +8,45 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-links/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-links" }, { - "path": "../core-product/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-product" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-utils" }, { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-routing/package.json b/webapp/packages/core-routing/package.json index fee0c0c82d..be4bd7f67b 100644 --- a/webapp/packages/core-routing/package.json +++ b/webapp/packages/core-routing/package.json @@ -9,24 +9,27 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "mobx": "^6", "router5": "^8", - "router5-plugin-browser": "^8" + "router5-plugin-browser": "^8", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-routing/tsconfig.json b/webapp/packages/core-routing/tsconfig.json index ce6eb18de5..c1bde30897 100644 --- a/webapp/packages/core-routing/tsconfig.json +++ b/webapp/packages/core-routing/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-executor" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-sdk/package.json b/webapp/packages/core-sdk/package.json index c432350b34..d0498028a6 100644 --- a/webapp/packages/core-sdk/package.json +++ b/webapp/packages/core-sdk/package.json @@ -9,7 +9,9 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "clean": "rimraf node_modules", "build": "yarn run gql:gen && tsc -b", @@ -17,19 +19,20 @@ "gql:gen:dev": "yarn run clean && graphql-codegen --watch", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "axios": "^1", "graphql": "^16", "graphql-request": "^6", - "mobx": "^6" + "mobx": "^6", + "tslib": "^2" }, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@graphql-codegen/add": "^5", "@graphql-codegen/cli": "^5", "@graphql-codegen/near-operation-file-preset": "^3", @@ -41,6 +44,5 @@ "graphql": "^16", "graphql-tag": "^2", "typescript": "^5" - }, - "peerDependencies": {} + } } diff --git a/webapp/packages/core-sdk/src/CustomGraphQLClient.ts b/webapp/packages/core-sdk/src/CustomGraphQLClient.ts index 0778c919b4..67cbea98cb 100644 --- a/webapp/packages/core-sdk/src/CustomGraphQLClient.ts +++ b/webapp/packages/core-sdk/src/CustomGraphQLClient.ts @@ -22,11 +22,11 @@ import { ServerInternalError } from './ServerInternalError.js'; export type UploadProgressEvent = AxiosProgressEvent; -type GqlResponse = - | { data: object; errors: undefined }[] - | { data: object; errors: undefined } - | { data: undefined; errors: object } - | { data: undefined; errors: object[] }; +// type GqlResponse = +// | { data: object; errors: undefined }[] +// | { data: object; errors: undefined } +// | { data: undefined; errors: object } +// | { data: undefined; errors: object[] }; export class CustomGraphQLClient extends GraphQLClient { get blockReason(): Error | string | null { diff --git a/webapp/packages/core-sdk/tsconfig.json b/webapp/packages/core-sdk/tsconfig.json index 0a3ad3827d..35bf17f4e2 100644 --- a/webapp/packages/core-sdk/tsconfig.json +++ b/webapp/packages/core-sdk/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "exclude": [ "**/node_modules", "lib/**/*", @@ -8,17 +8,18 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-server-localization/package.json b/webapp/packages/core-server-localization/package.json index 95e75f9656..66d0c7290a 100644 --- a/webapp/packages/core-server-localization/package.json +++ b/webapp/packages/core-server-localization/package.json @@ -9,22 +9,25 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-server-localization/tsconfig.json b/webapp/packages/core-server-localization/tsconfig.json index 8207a55404..3fa88de384 100644 --- a/webapp/packages/core-server-localization/tsconfig.json +++ b/webapp/packages/core-server-localization/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-localization" + }, + { + "path": "../core-root" } ], "include": [ diff --git a/webapp/packages/core-session-localization/package.json b/webapp/packages/core-session-localization/package.json index 71a824731f..d1cd4625e4 100644 --- a/webapp/packages/core-session-localization/package.json +++ b/webapp/packages/core-session-localization/package.json @@ -9,23 +9,26 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-settings-localization": "^0" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-settings-localization": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-session-localization/tsconfig.json b/webapp/packages/core-session-localization/tsconfig.json index f2537f7ca5..380bdeeb31 100644 --- a/webapp/packages/core-session-localization/tsconfig.json +++ b/webapp/packages/core-session-localization/tsconfig.json @@ -1,22 +1,26 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-settings-localization/tsconfig.json" + "path": "../core-root" + }, + { + "path": "../core-settings-localization" } ], "include": [ diff --git a/webapp/packages/core-settings-localization/package.json b/webapp/packages/core-settings-localization/package.json index d7a985444e..f44f3f2b21 100644 --- a/webapp/packages/core-settings-localization/package.json +++ b/webapp/packages/core-settings-localization/package.json @@ -9,30 +9,33 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-settings-localization/src/SettingsLocalizationService.test.ts b/webapp/packages/core-settings-localization/src/SettingsLocalizationService.test.ts index f75b9b3de0..37119bfa64 100644 --- a/webapp/packages/core-settings-localization/src/SettingsLocalizationService.test.ts +++ b/webapp/packages/core-settings-localization/src/SettingsLocalizationService.test.ts @@ -10,17 +10,17 @@ import { expect, test } from '@jest/globals'; import { coreClientActivityManifest } from '@cloudbeaver/core-client-activity'; import { coreLocalizationManifest } from '@cloudbeaver/core-localization'; import { coreRootManifest, ServerConfigResource } from '@cloudbeaver/core-root'; -import { createGQLEndpoint } from '@cloudbeaver/core-root/dist/__custom_mocks__/createGQLEndpoint.js'; -import '@cloudbeaver/core-root/dist/__custom_mocks__/expectWebsocketClosedMessage.js'; -import { mockAppInit } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockAppInit.js'; -import { mockGraphQL } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockGraphQL.js'; -import { mockServerConfig } from '@cloudbeaver/core-root/dist/__custom_mocks__/resolvers/mockServerConfig.js'; +import { createGQLEndpoint } from '@cloudbeaver/core-root/__custom_mocks__/createGQLEndpoint.js'; +import '@cloudbeaver/core-root/__custom_mocks__/expectWebsocketClosedMessage.js'; +import { mockAppInit } from '@cloudbeaver/core-root/__custom_mocks__/mockAppInit.js'; +import { mockGraphQL } from '@cloudbeaver/core-root/__custom_mocks__/mockGraphQL.js'; +import { mockServerConfig } from '@cloudbeaver/core-root/__custom_mocks__/resolvers/mockServerConfig.js'; import { coreSDKManifest } from '@cloudbeaver/core-sdk'; import { coreSettingsManifest } from '@cloudbeaver/core-settings'; import { expectDeprecatedSettingMessage, expectNoDeprecatedSettingMessage, -} from '@cloudbeaver/core-settings/dist/__custom_mocks__/expectDeprecatedSettingMessage.js'; +} from '@cloudbeaver/core-settings/__custom_mocks__/expectDeprecatedSettingMessage.js'; import { createApp } from '@cloudbeaver/tests-runner'; import { coreSettingsLocalizationManifest } from './manifest.js'; diff --git a/webapp/packages/core-settings-localization/tsconfig.json b/webapp/packages/core-settings-localization/tsconfig.json index b0d5cdab62..26e11e559a 100644 --- a/webapp/packages/core-settings-localization/tsconfig.json +++ b/webapp/packages/core-settings-localization/tsconfig.json @@ -1,40 +1,38 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-settings-user/package.json b/webapp/packages/core-settings-user/package.json index 1af97c87eb..9b963387d0 100644 --- a/webapp/packages/core-settings-user/package.json +++ b/webapp/packages/core-settings-user/package.json @@ -9,27 +9,30 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-storage": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-storage": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-settings-user/tsconfig.json b/webapp/packages/core-settings-user/tsconfig.json index 5c044419c0..f92ccb81db 100644 --- a/webapp/packages/core-settings-user/tsconfig.json +++ b/webapp/packages/core-settings-user/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "exclude": [ "**/node_modules", "lib/**/*", @@ -8,29 +8,33 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-storage/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-storage" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-settings/package.json b/webapp/packages/core-settings/package.json index 56b414d111..3e9363a240 100644 --- a/webapp/packages/core-settings/package.json +++ b/webapp/packages/core-settings/package.json @@ -9,26 +9,30 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "typescript": "^5" diff --git a/webapp/packages/core-settings/tsconfig.json b/webapp/packages/core-settings/tsconfig.json index e153e2d403..fcbdacee9a 100644 --- a/webapp/packages/core-settings/tsconfig.json +++ b/webapp/packages/core-settings/tsconfig.json @@ -1,28 +1,29 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-utils" }, { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-storage/package.json b/webapp/packages/core-storage/package.json index c6408520ce..a175f9edce 100644 --- a/webapp/packages/core-storage/package.json +++ b/webapp/packages/core-storage/package.json @@ -9,21 +9,24 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-browser": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0" + "@cloudbeaver/core-browser": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-storage/tsconfig.json b/webapp/packages/core-storage/tsconfig.json index 3ce1bf6725..2efb7ed085 100644 --- a/webapp/packages/core-storage/tsconfig.json +++ b/webapp/packages/core-storage/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-browser/tsconfig.json" + "path": "../core-browser" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" + }, + { + "path": "../core-executor" } ], "include": [ diff --git a/webapp/packages/core-task-manager/package.json b/webapp/packages/core-task-manager/package.json index 27f4abd4d1..18a495b20c 100644 --- a/webapp/packages/core-task-manager/package.json +++ b/webapp/packages/core-task-manager/package.json @@ -9,22 +9,25 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/core-task-manager/tsconfig.json b/webapp/packages/core-task-manager/tsconfig.json index b293de0862..077afabca1 100644 --- a/webapp/packages/core-task-manager/tsconfig.json +++ b/webapp/packages/core-task-manager/tsconfig.json @@ -1,19 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-executor" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-theming/package.json b/webapp/packages/core-theming/package.json index ac1f2f0656..fc70ff562d 100644 --- a/webapp/packages/core-theming/package.json +++ b/webapp/packages/core-theming/package.json @@ -9,33 +9,36 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./*": "./*" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/core-utils": "^0", - "mobx": "^6" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "mobx": "^6", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { - "@cloudbeaver/core-client-activity": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-settings": "^0", - "@cloudbeaver/tests-runner": "^0", + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/core-client-activity": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/tests-runner": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@fontsource/roboto": "^5", "@jest/globals": "^29", "@material/button": "^4", diff --git a/webapp/packages/core-theming/src/ThemeSettingsService.test.ts b/webapp/packages/core-theming/src/ThemeSettingsService.test.ts index 323ee0892a..c1ab207693 100644 --- a/webapp/packages/core-theming/src/ThemeSettingsService.test.ts +++ b/webapp/packages/core-theming/src/ThemeSettingsService.test.ts @@ -10,17 +10,17 @@ import { expect, test } from '@jest/globals'; import { coreClientActivityManifest } from '@cloudbeaver/core-client-activity'; import { coreLocalizationManifest } from '@cloudbeaver/core-localization'; import { coreRootManifest, ServerConfigResource } from '@cloudbeaver/core-root'; -import { createGQLEndpoint } from '@cloudbeaver/core-root/dist/__custom_mocks__/createGQLEndpoint.js'; -import '@cloudbeaver/core-root/dist/__custom_mocks__/expectWebsocketClosedMessage.js'; -import { mockAppInit } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockAppInit.js'; -import { mockGraphQL } from '@cloudbeaver/core-root/dist/__custom_mocks__/mockGraphQL.js'; -import { mockServerConfig } from '@cloudbeaver/core-root/dist/__custom_mocks__/resolvers/mockServerConfig.js'; +import { createGQLEndpoint } from '@cloudbeaver/core-root/__custom_mocks__/createGQLEndpoint.js'; +import '@cloudbeaver/core-root/__custom_mocks__/expectWebsocketClosedMessage.js'; +import { mockAppInit } from '@cloudbeaver/core-root/__custom_mocks__/mockAppInit.js'; +import { mockGraphQL } from '@cloudbeaver/core-root/__custom_mocks__/mockGraphQL.js'; +import { mockServerConfig } from '@cloudbeaver/core-root/__custom_mocks__/resolvers/mockServerConfig.js'; import { coreSDKManifest } from '@cloudbeaver/core-sdk'; import { coreSettingsManifest } from '@cloudbeaver/core-settings'; import { expectDeprecatedSettingMessage, expectNoDeprecatedSettingMessage, -} from '@cloudbeaver/core-settings/dist/__custom_mocks__/expectDeprecatedSettingMessage.js'; +} from '@cloudbeaver/core-settings/__custom_mocks__/expectDeprecatedSettingMessage.js'; import { createApp } from '@cloudbeaver/tests-runner'; import { coreThemingManifest } from './manifest.js'; diff --git a/webapp/packages/core-theming/tsconfig.json b/webapp/packages/core-theming/tsconfig.json index e1c1723121..dfe23c7cdd 100644 --- a/webapp/packages/core-theming/tsconfig.json +++ b/webapp/packages/core-theming/tsconfig.json @@ -1,49 +1,44 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-client-activity/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-client-activity" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-settings" }, { - "path": "../core-settings/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-settings/tsconfig.json" - }, - { - "path": "../core-utils/tsconfig.json" - }, - { - "path": "../tests-runner/tsconfig.json" + "path": "../tests-runner" } ], "include": [ diff --git a/webapp/packages/core-ui/package.json b/webapp/packages/core-ui/package.json index a424b70103..d929c7b4f6 100644 --- a/webapp/packages/core-ui/package.json +++ b/webapp/packages/core-ui/package.json @@ -9,35 +9,38 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-utils": "^0", - "@cloudbeaver/core-view": "^0", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "@cloudbeaver/core-view": "workspace:*", "mobx": "^6", "mobx-react-lite": "^4", "react": "^18", "react-dnd": "^16", "react-dnd-html5-backend": "^16", - "reakit": "^1" + "react-dom": "^18", + "reakit": "^1", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/core-ui/src/Tabs/TabsState.tsx b/webapp/packages/core-ui/src/Tabs/TabsState.tsx index 3bfc23f414..d1f1816f43 100644 --- a/webapp/packages/core-ui/src/Tabs/TabsState.tsx +++ b/webapp/packages/core-ui/src/Tabs/TabsState.tsx @@ -251,30 +251,30 @@ export const TabsState = observer(function TabsState>({ }, ); + let currentTabInfo: ITabInfo | undefined; if (container) { - let currentTabInfo: ITabInfo | undefined; - if (state.selectedId) { currentTabInfo = value.getTabInfo(state.selectedId); } - - useAutoLoad( - TabsState, - container - .getDisplayed(props) - .map(tab => tab.getLoader?.(context, props)) - .filter(isDefined) - .flat(), - ); - - useAutoLoad( - TabsState, - [currentTabInfo?.getLoader?.(context, props) || []].flat().filter(loader => loader.lazy), - true, - true, - ); } + useAutoLoad( + TabsState, + container + ?.getDisplayed(props) + .map(tab => tab.getLoader?.(context, props)) + .filter(isDefined) + .flat() || [], + !!container, + ); + + useAutoLoad( + TabsState, + [currentTabInfo?.getLoader?.(context, props) || []].flat().filter(loader => loader.lazy), + !!container, + true, + ); + return ( {children} diff --git a/webapp/packages/core-ui/src/index.ts b/webapp/packages/core-ui/src/index.ts index 5a4d2b9ca0..f00d8836f7 100644 --- a/webapp/packages/core-ui/src/index.ts +++ b/webapp/packages/core-ui/src/index.ts @@ -88,8 +88,6 @@ export * from './SideBarPanel/LeftBarPanelService.js'; export * from './SideBarPanel/SideBarPanelLoader.js'; export * from './SideBarPanel/SideBarPanelService.js'; -export * from './AuthenticationProviderLoader.js'; -export * from './useAuthenticationAction.js'; export * from './Screens/AppScreen/BaseOptionsPanelService.js'; export { manifest as coreUIManifest } from './manifest.js'; diff --git a/webapp/packages/core-ui/tsconfig.json b/webapp/packages/core-ui/tsconfig.json index 86876fa3fa..447d3f9040 100644 --- a/webapp/packages/core-ui/tsconfig.json +++ b/webapp/packages/core-ui/tsconfig.json @@ -1,43 +1,44 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-authentication/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-blocks/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-dialogs" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-utils" }, { - "path": "../core-view/tsconfig.json" + "path": "../core-view" } ], "include": [ @@ -45,7 +46,10 @@ "src/**/*", "src/**/*.json", "src/**/*.css", - "src/**/*.scss" + "src/**/*.scss", + "../core-blocks/src/AuthenticationProvider.tsx", + "../core-blocks/src/useAuthenticationAction.ts", + "../core-blocks/src/AuthenticationProviderLoader.ts" ], "exclude": [ "**/node_modules", diff --git a/webapp/packages/core-utils/package.json b/webapp/packages/core-utils/package.json index f8df78ff98..eb79960d62 100644 --- a/webapp/packages/core-utils/package.json +++ b/webapp/packages/core-utils/package.json @@ -9,14 +9,15 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", "test": "core-cli-test", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { "@timohausmann/quadtree-ts": "^2", @@ -25,6 +26,7 @@ "i18next": "^24", "md5": "^2", "mobx": "^6", + "tslib": "^2", "underscore": "^1", "uuid": "^11", "whatwg-mimetype": "^4", @@ -32,8 +34,9 @@ "zod-i18n-map": "^2", "zod-validation-error": "^3" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@jest/globals": "^29", "@types/jest": "^29", "@types/md5": "^2", diff --git a/webapp/packages/core-utils/src/MetadataMap.ts b/webapp/packages/core-utils/src/MetadataMap.ts index f401f6358f..798f4e39bc 100644 --- a/webapp/packages/core-utils/src/MetadataMap.ts +++ b/webapp/packages/core-utils/src/MetadataMap.ts @@ -34,7 +34,7 @@ export class MetadataMap implements Map { }); } - [Symbol.iterator](): IterableIterator<[TKey, TValue]> { + [Symbol.iterator](): ArrayIterator<[TKey, TValue]> { return this.temp[Symbol.iterator](); } @@ -63,15 +63,15 @@ export class MetadataMap implements Map { this.temp.forEach(callbackfn, thisArg); } - entries(): IterableIterator<[TKey, TValue]> { + entries(): ArrayIterator<[TKey, TValue]> { return this.temp.entries(); } - keys(): IterableIterator { + keys(): ArrayIterator { return this.temp.keys(); } - values(): IterableIterator { + values(): ArrayIterator { return this.temp.values(); } diff --git a/webapp/packages/core-utils/src/TempMap.ts b/webapp/packages/core-utils/src/TempMap.ts index a2cb2544f9..2a392c0acf 100644 --- a/webapp/packages/core-utils/src/TempMap.ts +++ b/webapp/packages/core-utils/src/TempMap.ts @@ -15,7 +15,7 @@ export class TempMap implements Map { return Array.from(this.keys()).length; } - [Symbol.iterator](): IterableIterator<[TKey, TValue]> { + [Symbol.iterator](): ArrayIterator<[TKey, TValue]> { return this.entries(); } @@ -114,17 +114,17 @@ export class TempMap implements Map { return this; } - entries(): IterableIterator<[TKey, TValue]> { + entries(): ArrayIterator<[TKey, TValue]> { return this.entriesTemp.value(() => Array.from(this.keys()).map<[TKey, TValue]>(key => [key, this.get(key)!])).values(); } - keys(): IterableIterator { + keys(): ArrayIterator { return this.keysTemp .value(() => Array.from(new Set(combineITerableIterators(this.target.keys(), this.temp.keys()))).filter(key => !this.isDeleted(key))) .values(); } - values(): IterableIterator { + values(): ArrayIterator { return this.valuesTemp.value(() => Array.from(this.keys()).map(key => this.get(key)!)).values(); } diff --git a/webapp/packages/core-utils/tsconfig.json b/webapp/packages/core-utils/tsconfig.json index a308441eeb..9a62b60153 100644 --- a/webapp/packages/core-utils/tsconfig.json +++ b/webapp/packages/core-utils/tsconfig.json @@ -1,11 +1,16 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, - "references": [], + "references": [ + { + "path": "../core-cli" + } + ], "include": [ "__custom_mocks__/**/*", "src/**/*", diff --git a/webapp/packages/core-version-update/package.json b/webapp/packages/core-version-update/package.json index d0a3e3b89b..98d016600d 100644 --- a/webapp/packages/core-version-update/package.json +++ b/webapp/packages/core-version-update/package.json @@ -9,25 +9,27 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-version": "^0", - "@cloudbeaver/core-version-update": "^0", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-version": "workspace:*", "mobx": "^6", - "react": "^18" + "react": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5" } diff --git a/webapp/packages/core-version-update/tsconfig.json b/webapp/packages/core-version-update/tsconfig.json index 69c2c27b9f..d7a7be2cf9 100644 --- a/webapp/packages/core-version-update/tsconfig.json +++ b/webapp/packages/core-version-update/tsconfig.json @@ -1,22 +1,26 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-version/tsconfig.json" + "path": "../core-localization" + }, + { + "path": "../core-version" } ], "include": [ diff --git a/webapp/packages/core-version/package.json b/webapp/packages/core-version/package.json index d49c8266dc..7d2e1783b8 100644 --- a/webapp/packages/core-version/package.json +++ b/webapp/packages/core-version/package.json @@ -9,26 +9,29 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "mobx": "^6", "react": "^18", - "semver": "^7" + "semver": "^7", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "@types/semver": "^7", "typescript": "^5" diff --git a/webapp/packages/core-version/tsconfig.json b/webapp/packages/core-version/tsconfig.json index a50b5f3b6d..2153ea8510 100644 --- a/webapp/packages/core-version/tsconfig.json +++ b/webapp/packages/core-version/tsconfig.json @@ -1,25 +1,29 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-root" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/core-view/package.json b/webapp/packages/core-view/package.json index ba234d189a..5610f8676f 100644 --- a/webapp/packages/core-view/package.json +++ b/webapp/packages/core-view/package.json @@ -9,28 +9,32 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-extensions": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-utils": "^0", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-extensions": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "mobx": "^6", "mobx-react-lite": "^4", "react": "^18", - "react-hotkeys-hook": "^4" + "react-dom": "^18", + "react-hotkeys-hook": "^4", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/core-view/tsconfig.json b/webapp/packages/core-view/tsconfig.json index f8024a3578..246afd0ac8 100644 --- a/webapp/packages/core-view/tsconfig.json +++ b/webapp/packages/core-view/tsconfig.json @@ -1,28 +1,32 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-extensions/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-extensions" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-localization" + }, + { + "path": "../core-utils" } ], "include": [ diff --git a/webapp/packages/eslint-config/eslint-config.json b/webapp/packages/eslint-config/eslint-config.json index e34a3ed0d2..26b30b0bb5 100644 --- a/webapp/packages/eslint-config/eslint-config.json +++ b/webapp/packages/eslint-config/eslint-config.json @@ -21,7 +21,7 @@ "react": { "createClass": "createReactClass", "pragma": "React", - "version": "detect" + "version": "18" } }, "rules": { diff --git a/webapp/packages/eslint-config/package.json b/webapp/packages/eslint-config/package.json index 52741fb2c6..f1efaddc66 100644 --- a/webapp/packages/eslint-config/package.json +++ b/webapp/packages/eslint-config/package.json @@ -1,6 +1,10 @@ { "name": "@cloudbeaver/eslint-config", - "sideEffects": [], + "sideEffects": [ + "src/**/*.css", + "src/**/*.scss", + "public/**/*" + ], "version": "0.1.0", "main": "index.js", "description": "ESLint for CloudBeaver", @@ -12,17 +16,11 @@ ], "type": "commonjs", "devDependencies": { + "@cloudbeaver/eslint-plugin": "workspace:*", "@typescript-eslint/eslint-plugin": "^6", "@typescript-eslint/parser": "^6", "eslint": "^8", - "eslint-config-airbnb-base": "^15", - "eslint-config-airbnb-typescript": "^17", "eslint-config-prettier": "^9", - "eslint-plugin-import": "^2", - "eslint-plugin-jest": "^27", - "eslint-plugin-jsx-a11y": "^6", - "eslint-plugin-node": "^11", - "eslint-plugin-promise": "^6", "eslint-plugin-react": "^7", "eslint-plugin-react-hooks": "^4" } diff --git a/webapp/packages/eslint-plugin/package.json b/webapp/packages/eslint-plugin/package.json index 84e2513cd1..d41085cf3f 100644 --- a/webapp/packages/eslint-plugin/package.json +++ b/webapp/packages/eslint-plugin/package.json @@ -1,12 +1,15 @@ { "name": "@cloudbeaver/eslint-plugin", - "sideEffects": false, + "sideEffects": [ + "src/**/*.css", + "src/**/*.scss", + "public/**/*" + ], "version": "1.0.0", "main": "customRules.cjs", "description": "ESLint custom rules for CloudBeaver", "license": "Apache-2.0", "type": "commonjs", - "dependencies": {}, "keywords": [ "eslint", "eslintplugin", diff --git a/webapp/packages/plugin-administration/package.json b/webapp/packages/plugin-administration/package.json index bc3d449104..9d29c4c176 100644 --- a/webapp/packages/plugin-administration/package.json +++ b/webapp/packages/plugin-administration/package.json @@ -9,40 +9,44 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-administration": "^0", - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-connections": "^0", - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-utils": "^0", - "@cloudbeaver/core-view": "^0", - "@cloudbeaver/plugin-settings-menu": "^0", - "@cloudbeaver/plugin-top-app-bar": "^0", + "@cloudbeaver/core-administration": "workspace:*", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-connections": "workspace:*", + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "@cloudbeaver/core-view": "workspace:*", + "@cloudbeaver/plugin-settings-menu": "workspace:*", + "@cloudbeaver/plugin-top-app-bar": "workspace:*", "mobx": "^6", "mobx-react-lite": "^4", - "react": "^18" + "react": "^18", + "react-dom": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/plugin-administration/tsconfig.json b/webapp/packages/plugin-administration/tsconfig.json index 2d7dde8c35..d52d224533 100644 --- a/webapp/packages/plugin-administration/tsconfig.json +++ b/webapp/packages/plugin-administration/tsconfig.json @@ -1,67 +1,71 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-administration/tsconfig.json" + "path": "../core-administration" }, { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-connections/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-connections" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-dialogs" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-ui/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-ui" }, { - "path": "../core-view/tsconfig.json" + "path": "../core-utils" }, { - "path": "../plugin-settings-menu/tsconfig.json" + "path": "../core-view" }, { - "path": "../plugin-top-app-bar/tsconfig.json" + "path": "../plugin-settings-menu" + }, + { + "path": "../plugin-top-app-bar" } ], "include": [ diff --git a/webapp/packages/plugin-app-logo-administration/package.json b/webapp/packages/plugin-app-logo-administration/package.json index eb52434dff..f677696b70 100644 --- a/webapp/packages/plugin-app-logo-administration/package.json +++ b/webapp/packages/plugin-app-logo-administration/package.json @@ -9,22 +9,24 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/plugin-administration": "^0", - "@cloudbeaver/plugin-app-logo": "^0" + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/plugin-administration": "workspace:*", + "@cloudbeaver/plugin-app-logo": "workspace:*", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "typescript": "^5" } } diff --git a/webapp/packages/plugin-app-logo-administration/tsconfig.json b/webapp/packages/plugin-app-logo-administration/tsconfig.json index c5fef33116..da19d123f9 100644 --- a/webapp/packages/plugin-app-logo-administration/tsconfig.json +++ b/webapp/packages/plugin-app-logo-administration/tsconfig.json @@ -1,22 +1,23 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-blocks/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-di" }, { - "path": "../plugin-administration/tsconfig.json" + "path": "../plugin-administration" }, { - "path": "../plugin-app-logo/tsconfig.json" + "path": "../plugin-app-logo" } ], "include": [ diff --git a/webapp/packages/plugin-app-logo/package.json b/webapp/packages/plugin-app-logo/package.json index 7584d0db5b..78f70b23a6 100644 --- a/webapp/packages/plugin-app-logo/package.json +++ b/webapp/packages/plugin-app-logo/package.json @@ -9,31 +9,33 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-version": "^0", - "@cloudbeaver/core-view": "^0", - "@cloudbeaver/plugin-holidays": "^0", - "@cloudbeaver/plugin-top-app-bar": "^0", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-version": "workspace:*", + "@cloudbeaver/plugin-holidays": "workspace:*", + "@cloudbeaver/plugin-top-app-bar": "workspace:*", "mobx": "^6", "mobx-react-lite": "^4", - "react": "^18" + "react": "^18", + "react-dom": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", - "typescript": "^5", - "typescript-plugin-css-modules": "^5" + "typescript": "^5" } } diff --git a/webapp/packages/plugin-app-logo/tsconfig.json b/webapp/packages/plugin-app-logo/tsconfig.json index b029441ec8..71a7c53321 100644 --- a/webapp/packages/plugin-app-logo/tsconfig.json +++ b/webapp/packages/plugin-app-logo/tsconfig.json @@ -1,34 +1,35 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-routing/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-version/tsconfig.json" + "path": "../core-routing" }, { - "path": "../core-view/tsconfig.json" + "path": "../core-version" }, { - "path": "../plugin-holidays/tsconfig.json" + "path": "../plugin-holidays" }, { - "path": "../plugin-top-app-bar/tsconfig.json" + "path": "../plugin-top-app-bar" } ], "include": [ diff --git a/webapp/packages/plugin-authentication-administration/package.json b/webapp/packages/plugin-authentication-administration/package.json index 8d7f0c8c6e..7ad384d0e9 100644 --- a/webapp/packages/plugin-authentication-administration/package.json +++ b/webapp/packages/plugin-authentication-administration/package.json @@ -9,41 +9,45 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-administration": "^0", - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-connections": "^0", - "@cloudbeaver/core-data-context": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-projects": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-utils": "^0", - "@cloudbeaver/core-view": "^0", - "@cloudbeaver/plugin-administration": "^0", - "@cloudbeaver/plugin-authentication": "^0", + "@cloudbeaver/core-administration": "workspace:*", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-connections": "workspace:*", + "@cloudbeaver/core-data-context": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-projects": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "@cloudbeaver/core-view": "workspace:*", + "@cloudbeaver/plugin-administration": "workspace:*", + "@cloudbeaver/plugin-authentication": "workspace:*", "mobx": "^6", "mobx-react-lite": "^4", "react": "^18", - "reakit": "^1" + "react-dom": "^18", + "reakit": "^1", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/useUsersTable.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/useUsersTable.tsx index 0f6db48a0e..2ecbc53551 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/useUsersTable.tsx +++ b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/useUsersTable.tsx @@ -7,7 +7,7 @@ */ import { action, computed, observable } from 'mobx'; -import { type AdminUser, compareUsers, UsersResource, UsersResourceFilterKey, UsersResourceNewUsers } from '@cloudbeaver/core-authentication'; +import { type AdminUser, compareUsers, UsersResource, UsersResourceFilterKey } from '@cloudbeaver/core-authentication'; import { ConfirmationDialogDelete, TableState, useObservableRef, useOffsetPagination, useResource, useTranslate } from '@cloudbeaver/core-blocks'; import { useService } from '@cloudbeaver/core-di'; import { CommonDialogService, DialogueStateResult } from '@cloudbeaver/core-dialogs'; diff --git a/webapp/packages/plugin-authentication-administration/tsconfig.json b/webapp/packages/plugin-authentication-administration/tsconfig.json index e2b442d62d..f5984d660e 100644 --- a/webapp/packages/plugin-authentication-administration/tsconfig.json +++ b/webapp/packages/plugin-authentication-administration/tsconfig.json @@ -1,67 +1,71 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@cloudbeaver/tsconfig/tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist", - "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" + "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", + "composite": true }, "references": [ { - "path": "../core-administration/tsconfig.json" + "path": "../core-administration" }, { - "path": "../core-authentication/tsconfig.json" + "path": "../core-authentication" }, { - "path": "../core-blocks/tsconfig.json" + "path": "../core-blocks" }, { - "path": "../core-connections/tsconfig.json" + "path": "../core-cli" }, { - "path": "../core-data-context/tsconfig.json" + "path": "../core-connections" }, { - "path": "../core-di/tsconfig.json" + "path": "../core-data-context" }, { - "path": "../core-dialogs/tsconfig.json" + "path": "../core-di" }, { - "path": "../core-events/tsconfig.json" + "path": "../core-dialogs" }, { - "path": "../core-executor/tsconfig.json" + "path": "../core-events" }, { - "path": "../core-localization/tsconfig.json" + "path": "../core-executor" }, { - "path": "../core-projects/tsconfig.json" + "path": "../core-localization" }, { - "path": "../core-resource/tsconfig.json" + "path": "../core-projects" }, { - "path": "../core-root/tsconfig.json" + "path": "../core-resource" }, { - "path": "../core-sdk/tsconfig.json" + "path": "../core-root" }, { - "path": "../core-ui/tsconfig.json" + "path": "../core-sdk" }, { - "path": "../core-utils/tsconfig.json" + "path": "../core-ui" }, { - "path": "../core-view/tsconfig.json" + "path": "../core-utils" }, { - "path": "../plugin-administration/tsconfig.json" + "path": "../core-view" }, { - "path": "../plugin-authentication/tsconfig.json" + "path": "../plugin-administration" + }, + { + "path": "../plugin-authentication" } ], "include": [ diff --git a/webapp/packages/plugin-authentication/package.json b/webapp/packages/plugin-authentication/package.json index 62a8375991..d37b1212ca 100644 --- a/webapp/packages/plugin-authentication/package.json +++ b/webapp/packages/plugin-authentication/package.json @@ -9,38 +9,41 @@ "version": "0.1.0", "description": "", "license": "Apache-2.0", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js" + }, "scripts": { "build": "tsc -b", "clean": "rimraf --glob dist", "lint": "eslint ./src/ --ext .ts,.tsx", - "validate-dependencies": "core-cli-validate-dependencies", - "update-ts-references": "yarn run clean && typescript-resolve-references" + "validate-dependencies": "core-cli-validate-dependencies" }, "dependencies": { - "@cloudbeaver/core-administration": "^0", - "@cloudbeaver/core-authentication": "^0", - "@cloudbeaver/core-blocks": "^0", - "@cloudbeaver/core-di": "^0", - "@cloudbeaver/core-dialogs": "^0", - "@cloudbeaver/core-events": "^0", - "@cloudbeaver/core-executor": "^0", - "@cloudbeaver/core-localization": "^0", - "@cloudbeaver/core-resource": "^0", - "@cloudbeaver/core-root": "^0", - "@cloudbeaver/core-routing": "^0", - "@cloudbeaver/core-sdk": "^0", - "@cloudbeaver/core-ui": "^0", - "@cloudbeaver/core-utils": "^0", - "@cloudbeaver/core-view": "^0", - "@cloudbeaver/plugin-administration": "^0", - "@cloudbeaver/plugin-settings-menu": "^0", + "@cloudbeaver/core-administration": "workspace:*", + "@cloudbeaver/core-authentication": "workspace:*", + "@cloudbeaver/core-blocks": "workspace:*", + "@cloudbeaver/core-di": "workspace:*", + "@cloudbeaver/core-dialogs": "workspace:*", + "@cloudbeaver/core-events": "workspace:*", + "@cloudbeaver/core-executor": "workspace:*", + "@cloudbeaver/core-localization": "workspace:*", + "@cloudbeaver/core-resource": "workspace:*", + "@cloudbeaver/core-root": "workspace:*", + "@cloudbeaver/core-routing": "workspace:*", + "@cloudbeaver/core-sdk": "workspace:*", + "@cloudbeaver/core-ui": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", + "@cloudbeaver/core-view": "workspace:*", + "@cloudbeaver/plugin-settings-menu": "workspace:*", "mobx": "^6", "mobx-react-lite": "^4", - "react": "^18" + "react": "^18", + "react-dom": "^18", + "tslib": "^2" }, - "peerDependencies": {}, "devDependencies": { + "@cloudbeaver/core-cli": "workspace:*", + "@cloudbeaver/tsconfig": "workspace:*", "@types/react": "^18", "typescript": "^5", "typescript-plugin-css-modules": "^5" diff --git a/webapp/packages/plugin-authentication/src/AuthenticationService.ts b/webapp/packages/plugin-authentication/src/AuthenticationService.ts index 1c9e723787..517d3e1d43 100644 --- a/webapp/packages/plugin-authentication/src/AuthenticationService.ts +++ b/webapp/packages/plugin-authentication/src/AuthenticationService.ts @@ -11,7 +11,6 @@ import { AdministrationScreenService } from '@cloudbeaver/core-administration'; import { AppAuthService, AUTH_PROVIDER_LOCAL_ID, - AuthInfoService, AuthProviderContext, AuthProviderService, AuthProvidersResource, @@ -50,7 +49,6 @@ export class AuthenticationService extends Bootstrap { private readonly appAuthService: AppAuthService, private readonly authDialogService: AuthDialogService, private readonly userInfoResource: UserInfoResource, - private readonly authInfoService: AuthInfoService, private readonly notificationService: NotificationService, private readonly administrationScreenService: AdministrationScreenService, private readonly authProviderService: AuthProviderService, diff --git a/webapp/packages/plugin-authentication/src/Dialog/AuthProviderForm/ConfigurationsList.tsx b/webapp/packages/plugin-authentication/src/Dialog/AuthProviderForm/ConfigurationsList.tsx index bcdc9740da..f700fab69b 100644 --- a/webapp/packages/plugin-authentication/src/Dialog/AuthProviderForm/ConfigurationsList.tsx +++ b/webapp/packages/plugin-authentication/src/Dialog/AuthProviderForm/ConfigurationsList.tsx @@ -34,7 +34,6 @@ import { import { useService } from '@cloudbeaver/core-di'; import type { ITask } from '@cloudbeaver/core-executor'; import type { UserInfo } from '@cloudbeaver/core-sdk'; -import { ServerConfigurationAdministrationNavService } from '@cloudbeaver/plugin-administration'; import { AuthenticationService } from '../../AuthenticationService.js'; import styles from './ConfigurationsList.module.css'; @@ -63,7 +62,6 @@ export const ConfigurationsList = observer(function ConfigurationsList({ onClose, className, }) { - const serverConfigurationAdministrationNavService = useService(ServerConfigurationAdministrationNavService); const authenticationService = useService(AuthenticationService); const translate = useTranslate(); const style = useS(styles); @@ -93,11 +91,6 @@ export const ConfigurationsList = observer(function ConfigurationsList({ return target.toUpperCase().includes(search.toUpperCase()); }); - function navToSettings() { - onClose?.(); - serverConfigurationAdministrationNavService.navToSettings(); - } - function navToIdentityProvidersSettings() { onClose?.(); authenticationService.configureIdentityProvider?.(); @@ -118,10 +111,7 @@ export const ConfigurationsList = observer(function ConfigurationsList({ {providerDisabled ? ( - - {translate('plugin_authentication_authentication_method_disabled')} - {authenticationService.configureIdentityProvider && {translate('ui_configure')}} - + {translate('plugin_authentication_authentication_method_disabled')} ) : (