sourcegraph/client/shared/BUILD.bazel
Felix Kling aa0be2e68e
chore(svelte): Cleanup dependencies (#63691)
We have introduced a dependency on wildcard again, which should not be
an issue in production but will slow down the initial page load during
dev builds.

I also took the time clean up other transitive depdencies on modules
using React (based on file extension). Turns out that some tsx files
should actually be ts files because they don't use React.

## Test plan

The build system should catch any issues with moved exports.
2024-07-08 17:54:44 +02:00

547 lines
21 KiB
Python

load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
load("@aspect_rules_ts//ts:defs.bzl", "ts_config")
load("@npm//:defs.bzl", "npm_link_all_packages")
load("//client/shared/dev:generate_graphql_operations.bzl", "generate_graphql_operations")
load("//client/shared/dev:generate_schema.bzl", "generate_schema")
load("//client/shared/dev:tools.bzl", "module_style_typings")
load("//dev:defs.bzl", "npm_package", "sass", "ts_project", "vitest_test")
load("//dev:eslint.bzl", "eslint_config_and_lint_root")
# gazelle:js_resolve **/*.module.scss :module_style_typings
# gazelle:js_resolve ../graphql-operations //client/shared:graphql_operations
# gazelle:js_ignore_imports **/*.worker.ts
npm_link_all_packages(name = "node_modules")
eslint_config_and_lint_root()
ts_config(
name = "tsconfig",
src = "tsconfig.json",
visibility = ["//client:__subpackages__"],
deps = [
"//:tsconfig",
"//client/build-config:tsconfig",
"//client/client-api:tsconfig",
"//client/codeintellify:tsconfig",
"//client/common:tsconfig",
"//client/extension-api:tsconfig",
"//client/extension-api-types:tsconfig",
"//client/http-client:tsconfig",
"//client/template-parser:tsconfig",
"//client/testing:tsconfig",
"//client/wildcard:tsconfig",
],
)
module_style_typings(
name = "module_style_typings",
)
sass(
name = "module_styles",
srcs = glob(["src/**/*.module.scss"]),
)
generate_graphql_operations(
name = "graphql_operations_ts",
srcs = [
":graphql_operations_files",
"//client/shared/src/api/integration-test:graphql_operations_files",
"//client/shared/src/testing:graphql_operations_files",
],
out = "src/graphql-operations.ts",
interface_name = "SharedGraphQlOperations",
visibility = ["//client/shared:__pkg__"],
)
ts_project(
name = "graphql_operations",
srcs = ["src/graphql-operations.ts"],
tsconfig = ":tsconfig",
deps = [
"//:node_modules/@apollo/client",
],
)
copy_to_bin(
name = "graphql_operations_files",
# Keep in sync with glob in client/shared/dev/generateGraphQlOperations.js
srcs = glob(
[
"src/**/*.ts",
"src/**/*.tsx",
],
[
"src/testing/**/*.*",
# TODO: Ignore legacy build generated file as it conflicts with the Bazel
# build. This can be removed after the migration.
"src/graphql-operations.ts",
"src/**/*.module.scss.d.ts",
],
),
visibility = ["//client/shared:__pkg__"],
)
generate_schema(
name = "json-schema-draft-07",
out = "src/schema/json-schema-draft-07.schema.d.ts",
)
generate_schema(
name = "site",
out = "src/schema/site.schema.d.ts",
)
generate_schema(
name = "settings",
out = "src/schema/settings.schema.d.ts",
)
generate_schema(
name = "batch_spec",
out = "src/schema/batch_spec.schema.d.ts",
)
generate_schema(
name = "opencodegraph",
out = "src/schema/opencodegraph.schema.d.ts",
)
ts_project(
name = "shared_lib",
srcs = [
"src/actions/ActionItem.tsx",
"src/actions/ActionsNavItems.tsx",
"src/actions/SimpleActionItem.tsx",
"src/api/client/api/api.ts",
"src/api/client/api/common.ts",
"src/api/client/connection.ts",
"src/api/client/mainthread-api.ts",
"src/api/client/services/settings.ts",
"src/api/client/types/textDocument.ts",
"src/api/contract.ts",
"src/api/extension/activation.ts",
"src/api/extension/api/api.ts",
"src/api/extension/api/codeEditor.ts",
"src/api/extension/api/common.ts",
"src/api/extension/api/context/context.ts",
"src/api/extension/api/contribution.ts",
"src/api/extension/api/directoryViewer.ts",
"src/api/extension/api/documentHighlights.ts",
"src/api/extension/api/logging.ts",
"src/api/extension/api/textDocument.ts",
"src/api/extension/api/types.ts",
"src/api/extension/api/utils/prefixSumComputer.ts",
"src/api/extension/api/utils/wordHelpers.ts",
"src/api/extension/api/workspaceRoot.ts",
"src/api/extension/extensionApi.ts",
"src/api/extension/extensionHost.ts",
"src/api/extension/extensionHostApi.ts",
"src/api/extension/extensionHostState.ts",
"src/api/extension/test/test-helpers.ts",
"src/api/extension/util.ts",
"src/api/extension/utils/ReferenceCounter.ts",
"src/api/extension/worker.ts",
"src/api/sharedEventLogger.ts",
"src/api/textDocumentTypes.ts",
"src/api/util.ts",
"src/api/viewerTypes.ts",
"src/auth.ts",
"src/backend/apolloCache.ts",
"src/backend/errors.ts",
"src/backend/file.ts",
"src/backend/repo.ts",
"src/backend/settings.ts",
"src/codeintel/api.ts",
"src/codeintel/legacy-extensions/api.ts",
"src/codeintel/legacy-extensions/indicators.ts",
"src/codeintel/legacy-extensions/language-specs/comments.ts",
"src/codeintel/legacy-extensions/language-specs/cpp.ts",
"src/codeintel/legacy-extensions/language-specs/go.ts",
"src/codeintel/legacy-extensions/language-specs/identifiers.ts",
"src/codeintel/legacy-extensions/language-specs/java.ts",
"src/codeintel/legacy-extensions/language-specs/language-spec.ts",
"src/codeintel/legacy-extensions/language-specs/languages.ts",
"src/codeintel/legacy-extensions/language-specs/python.ts",
"src/codeintel/legacy-extensions/language-specs/typescript.ts",
"src/codeintel/legacy-extensions/language-specs/util.ts",
"src/codeintel/legacy-extensions/logging.ts",
"src/codeintel/legacy-extensions/lsif/api.ts",
"src/codeintel/legacy-extensions/lsif/definition-hover.ts",
"src/codeintel/legacy-extensions/lsif/highlights.ts",
"src/codeintel/legacy-extensions/lsif/implementations.ts",
"src/codeintel/legacy-extensions/lsif/locations.ts",
"src/codeintel/legacy-extensions/lsif/providers.ts",
"src/codeintel/legacy-extensions/lsif/ranges.ts",
"src/codeintel/legacy-extensions/lsif/references.ts",
"src/codeintel/legacy-extensions/lsif/stencil.ts",
"src/codeintel/legacy-extensions/providers.ts",
"src/codeintel/legacy-extensions/search/config.ts",
"src/codeintel/legacy-extensions/search/conversion.ts",
"src/codeintel/legacy-extensions/search/docstrings.ts",
"src/codeintel/legacy-extensions/search/markdown.ts",
"src/codeintel/legacy-extensions/search/providers.ts",
"src/codeintel/legacy-extensions/search/queries.ts",
"src/codeintel/legacy-extensions/search/settings.ts",
"src/codeintel/legacy-extensions/search/squirrel.ts",
"src/codeintel/legacy-extensions/search/tokens.ts",
"src/codeintel/legacy-extensions/telemetry.ts",
"src/codeintel/legacy-extensions/util.ts",
"src/codeintel/legacy-extensions/util/api.ts",
"src/codeintel/legacy-extensions/util/graphql.ts",
"src/codeintel/legacy-extensions/util/helpers.ts",
"src/codeintel/legacy-extensions/util/ix.ts",
"src/codeintel/legacy-extensions/util/promise.ts",
"src/codeintel/legacy-extensions/util/uri.ts",
"src/codeintel/scip.ts",
"src/commands/commands.ts",
"src/components/CodeMirrorEditor.tsx",
"src/components/HighlightedMatches.tsx",
"src/components/MonacoEditor.tsx",
"src/components/NoMonacoEditor.tsx",
"src/components/Path.tsx",
"src/components/PrefetchableFile.tsx",
"src/components/RepoLink.tsx",
"src/components/TeamAvatar.tsx",
"src/components/UserAvatar.tsx",
"src/components/VirtualList.tsx",
"src/components/codemirror/utils.ts",
"src/components/icons.tsx",
"src/components/languageIcons.tsx",
"src/components/ranking/PerFileResultRanking.ts",
"src/components/utils/size.ts",
"src/contributions/contributions.ts",
"src/deprecated-theme-utils.ts",
"src/extensions/controller.ts",
"src/extensions/createSyncLoadedController.ts",
"src/extensions/extension.ts",
"src/extensions/extensionManifest.ts",
"src/extensions/extensions.ts",
"src/globals.d.ts",
"src/hover/CopyLinkIcon.tsx",
"src/hover/HoverOverlay.fixtures.ts",
"src/hover/HoverOverlay.tsx",
"src/hover/HoverOverlay.types.ts",
"src/hover/HoverOverlayContents/HoverOverlayContent/HoverOverlayContent.tsx",
"src/hover/HoverOverlayContents/HoverOverlayContent/index.ts",
"src/hover/HoverOverlayContents/HoverOverlayContents.tsx",
"src/hover/HoverOverlayContents/index.ts",
"src/hover/HoverOverlayLogo/HoverOverlayLogo.tsx",
"src/hover/HoverOverlayLogo/index.ts",
"src/hover/actions.ts",
"src/hover/helpers.ts",
"src/hover/useLogTelemetryEvent.ts",
"src/keyboardShortcuts.ts",
"src/keyboardShortcuts/keyboardShortcuts.ts",
"src/keyboardShortcuts/useKeyboardShortcut.ts",
"src/languages.ts",
"src/platform/context.ts",
"src/polyfills/configure-core-js.ts",
"src/polyfills/index.ts",
"src/polyfills/polyfill.ts",
"src/polyfills/vendor/eventSource.d.ts",
"src/react-shortcuts/Shortcut.tsx",
"src/react-shortcuts/ShortcutManager.tsx",
"src/react-shortcuts/ShortcutProvider.tsx",
"src/react-shortcuts/index.ts",
"src/react-shortcuts/keys.ts",
"src/schema/extensionSchema.ts",
# TODO(bazel): #keep can be removed after https://github.com/aspect-build/aspect-cli/issues/479 is fixed
"src/schema/settings.schema.d.ts", #keep
"src/search/backend.ts",
"src/search/helpers.ts",
"src/search/helpers/queryExample.ts",
"src/search/helpers/searchContext.ts",
"src/search/index.ts",
"src/search/integration/streaming-search-mocks.ts",
"src/search/query/analyze.ts",
"src/search/query/completion-utils.ts",
"src/search/query/decoratedToken.ts",
"src/search/query/diagnostics.ts",
"src/search/query/filters.ts",
"src/search/query/hover.ts",
"src/search/query/languageFilter.ts",
"src/search/query/metrics.ts",
"src/search/query/parser.ts",
"src/search/query/patternMatcher.ts",
"src/search/query/predicates.ts",
"src/search/query/printer.ts",
"src/search/query/providers-utils.ts",
"src/search/query/query.ts",
"src/search/query/scanner.ts",
"src/search/query/selectFilter.ts",
"src/search/query/token.ts",
"src/search/query/transformer.ts",
"src/search/query/utils.ts",
"src/search/query/validate.ts",
"src/search/searchQueryState.tsx",
"src/search/stream.ts",
"src/search/suggestions/index.ts",
"src/search/types.ts",
"src/settings/edit.ts",
"src/settings/settings.tsx",
"src/settings/temporary/TemporarySettings.ts",
"src/settings/temporary/TemporarySettingsProvider.tsx",
"src/settings/temporary/TemporarySettingsStorage.ts",
"src/settings/temporary/diffMode.ts",
"src/settings/temporary/index.ts",
"src/settings/temporary/localOverride.ts",
"src/settings/temporary/migrateLocalStorageToTemporarySettings.ts",
"src/settings/temporary/recentSearches.ts",
"src/settings/temporary/searchSidebar.ts",
"src/settings/temporary/testUtils.tsx",
"src/settings/temporary/tourState.ts",
"src/settings/temporary/useTemporarySetting.ts",
"src/stories/MockedStoryProvider.tsx",
"src/stories/index.ts",
"src/symbols/SymbolIcon.tsx",
"src/symbols/SymbolKind.tsx",
"src/symbols/SymbolTag.tsx",
"src/symbols/symbolIcons.ts",
"src/telemetry/event-names.ts",
"src/telemetry/index.ts",
"src/telemetry/telemetryService.ts",
"src/telemetry/web/backend.ts",
"src/telemetry/web/cookies.ts",
"src/telemetry/web/dom.ts",
"src/telemetry/web/eventLogger.ts",
"src/telemetry/web/sessionTracker.ts",
"src/telemetry/web/userTracker.ts",
"src/telemetry/web/util.ts",
"src/theme.ts",
"src/theme-types.ts",
"src/tracking/event-log-creators.ts",
"src/tracking/utm.ts",
"src/types/core-js/configurator.d.ts",
"src/util/dom.ts",
"src/util/lazyComponent.tsx",
"src/util/url.ts",
"src/util/useInputValidation.ts",
],
tsconfig = ":tsconfig",
deps = [
":graphql_operations",
":module_style_typings",
":node_modules/@sourcegraph/client-api",
":node_modules/@sourcegraph/codeintellify",
":node_modules/@sourcegraph/common",
":node_modules/@sourcegraph/extension-api-types",
":node_modules/@sourcegraph/http-client",
":node_modules/@sourcegraph/telemetry",
":node_modules/@sourcegraph/template-parser",
":node_modules/@sourcegraph/wildcard",
":node_modules/sourcegraph",
"//:node_modules/@apollo/client",
"//:node_modules/@codemirror/language",
"//:node_modules/@codemirror/state",
"//:node_modules/@codemirror/view",
"//:node_modules/@lezer/highlight",
"//:node_modules/@mdi/js",
"//:node_modules/@microsoft/fetch-event-source",
"//:node_modules/@sourcegraph/extension-api-classes",
"//:node_modules/@types/classnames",
"//:node_modules/@types/history",
"//:node_modules/@types/js-cookie",
"//:node_modules/@types/lodash",
"//:node_modules/@types/lru-cache",
"//:node_modules/@types/minimatch",
"//:node_modules/@types/node",
"//:node_modules/@types/react",
"//:node_modules/@types/uuid",
"//:node_modules/@types/whatwg-url",
"//:node_modules/classnames",
"//:node_modules/comlink",
"//:node_modules/core-js",
"//:node_modules/date-fns",
"//:node_modules/fast-json-stable-stringify",
"//:node_modules/history",
"//:node_modules/js-base64",
"//:node_modules/js-cookie",
"//:node_modules/lodash",
"//:node_modules/lru-cache",
"//:node_modules/mdi-react",
"//:node_modules/minimatch",
"//:node_modules/monaco-editor",
"//:node_modules/react",
"//:node_modules/react-visibility-sensor",
"//:node_modules/regexpp",
"//:node_modules/rxjs",
"//:node_modules/tagged-template-noop",
"//:node_modules/use-deep-compare-effect",
"//:node_modules/util",
"//:node_modules/utility-types",
"//:node_modules/uuid",
"//:node_modules/whatwg-url",
"//:node_modules/zustand",
"//schema:settings", #keep
],
)
ts_project(
name = "shared_tests",
testonly = True,
srcs = [
"src/actions/ActionItem.test.tsx",
"src/actions/ActionsNavItems.test.tsx",
"src/api/client/mainthread-api.test.ts",
"src/api/client/types/textDocument.test.ts",
"src/api/extension/api/context/context.test.ts",
"src/api/extension/api/contribution.test.ts",
"src/api/extension/api/textDocument.test.ts",
"src/api/extension/api/utils/prefixSumComputer.test.ts",
"src/api/extension/api/utils/wordHelpers.test.ts",
"src/api/extension/test/activation.test.ts",
"src/api/extension/test/extensionHost.configuration.test.ts",
"src/api/extension/test/extensionHost.documentHighlights.test.ts",
"src/api/extension/test/extensionHost.hover.test.ts",
"src/api/extension/test/extensionHost.logging.test.ts",
"src/api/extension/test/extensionHost.providers.test.ts",
"src/api/util.test.ts",
"src/backend/errors.test.ts",
"src/codeintel/legacy-extensions/init.test.ts",
"src/codeintel/legacy-extensions/language-specs/cpp.test.ts",
"src/codeintel/legacy-extensions/language-specs/go.test.ts",
"src/codeintel/legacy-extensions/language-specs/java.test.ts",
"src/codeintel/legacy-extensions/language-specs/python.test.ts",
"src/codeintel/legacy-extensions/language-specs/spec.test.ts",
"src/codeintel/legacy-extensions/language-specs/typescript.test.ts",
"src/codeintel/legacy-extensions/lsif/definition-hover.test.ts",
"src/codeintel/legacy-extensions/lsif/highlights.test.ts",
"src/codeintel/legacy-extensions/lsif/locations.test.ts",
"src/codeintel/legacy-extensions/lsif/providers.test.ts",
"src/codeintel/legacy-extensions/lsif/ranges.test.ts",
"src/codeintel/legacy-extensions/lsif/references.test.ts",
"src/codeintel/legacy-extensions/lsif/stencil.test.ts",
"src/codeintel/legacy-extensions/lsif/util.test.ts",
"src/codeintel/legacy-extensions/providers.test.ts",
"src/codeintel/legacy-extensions/search/conversion.test.ts",
"src/codeintel/legacy-extensions/search/docstrings.test.ts",
"src/codeintel/legacy-extensions/search/markdown.test.ts",
"src/codeintel/legacy-extensions/search/providers.test.ts",
"src/codeintel/legacy-extensions/search/queries.test.ts",
"src/codeintel/legacy-extensions/search/tokens.test.ts",
"src/codeintel/legacy-extensions/util/ix.test.ts",
"src/codeintel/legacy-extensions/util/uri.test.ts",
"src/commands/commands.test.ts",
"src/components/HighlightedMatches.test.tsx",
"src/components/Path.test.tsx",
"src/components/RepoLink.test.tsx",
"src/components/UserAvatar.test.tsx",
"src/contributions/contributions.test.ts",
"src/extensions/extension.test.ts",
"src/hover/HoverOverlay.test.tsx",
"src/hover/actions.test.ts",
"src/keyboardShortcuts/useKeyboardShortcut.test.tsx",
"src/languages.test.ts",
"src/react-shortcuts/ShortcutManager.test.tsx",
"src/search/helpers/queryExample.test.ts",
"src/search/query/analyze.test.ts",
"src/search/query/decoratedToken.test.ts",
"src/search/query/diagnostics.test.ts",
"src/search/query/filters.test.ts",
"src/search/query/languageFilter.test.ts",
"src/search/query/metrics.test.ts",
"src/search/query/parser.test.ts",
"src/search/query/patternMatcher.test.ts",
"src/search/query/predicates.test.ts",
"src/search/query/printer.test.ts",
"src/search/query/providers-utils.test.ts",
"src/search/query/scanner.test.ts",
"src/search/query/selectFilter.test.ts",
"src/search/query/transformer.test.ts",
"src/search/query/validate.test.ts",
"src/settings/settings.test.ts",
"src/settings/temporary/useTemporarySetting.test.tsx",
"src/telemetry/web/userTracker.test.ts",
"src/telemetry/web/util.test.ts",
"src/testSetup.test.ts",
"src/tracking/utm.test.ts",
"src/util/dom.test.ts",
"src/util/url.test.ts",
"src/util/useInputValidation.test.ts",
],
tsconfig = ":tsconfig",
deps = [
":graphql_operations",
":node_modules/@sourcegraph/client-api",
":node_modules/@sourcegraph/codeintellify",
":node_modules/@sourcegraph/common",
":node_modules/@sourcegraph/extension-api-types",
":node_modules/@sourcegraph/http-client",
":node_modules/@sourcegraph/template-parser",
":node_modules/@sourcegraph/testing",
":node_modules/@sourcegraph/wildcard",
":node_modules/sourcegraph",
":shared_lib",
"//:node_modules/@apollo/client",
"//:node_modules/@sourcegraph/extension-api-classes",
"//:node_modules/@sourcegraph/extension-api-stubs",
"//:node_modules/@testing-library/jest-dom", #keep
"//:node_modules/@testing-library/react",
"//:node_modules/@testing-library/user-event",
"//:node_modules/@types/history",
"//:node_modules/@types/lodash",
"//:node_modules/@types/mock-require",
"//:node_modules/@types/node",
"//:node_modules/@types/react",
"//:node_modules/@types/sinon",
"//:node_modules/comlink",
"//:node_modules/history",
"//:node_modules/lodash",
"//:node_modules/mock-require",
"//:node_modules/p-timeout",
"//:node_modules/react",
"//:node_modules/rxjs",
"//:node_modules/sinon",
"//:node_modules/vitest",
"//client/shared/src/testing",
],
)
npm_package(
name = "shared_pkg",
srcs = [
"package.json",
":batch_spec", #keep
":module_styles", #keep
":settings", #keep
":shared_lib",
":site", #keep
"//client/shared/src/testing", #keep
],
)
filegroup(
name = "snapshots",
srcs = glob(["src/**/__snapshots__/*"]),
)
vitest_test(
name = "test",
data = [
":module_styles",
":shared_tests",
":snapshots",
],
)
ts_project(
name = "stories",
srcs = [
"src/actions/ActionItem.story.tsx",
"src/symbols/SymbolTag.story.tsx",
],
tsconfig = ":tsconfig",
deps = [
":graphql_operations",
":node_modules/@sourcegraph/common",
":node_modules/@sourcegraph/wildcard",
":shared_lib",
"//:node_modules/@storybook/addon-actions",
"//:node_modules/@storybook/react",
"//:node_modules/@types/history",
"//:node_modules/history",
],
)