From a3d9f90af54ebc1e6b9b11f0dd58797d64d3f204 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Thu, 30 Sep 2021 22:16:29 +1000 Subject: [PATCH] update to latest rules_nodejs & switch to ts_project ts_library() is deprecated and will presumably be dropped from a future rules_nodejs, and it wasn't working with the jest tests after updating, so we switch over to ts_project(). There are some downsides: - It's a bit slower, as the worker mode doesn't appear to function at the moment. - Getting it working with a mix of source files and generated files was quite tricky, especially as things behave differently on Windows, and differently when editing with VS Code. Solved with a small patch to the rules, and a wrapper script that copies everything into the bin folder first. To keep VS Code working correctly as well, the built files are symlinked into the source folder. - TS libraries are not implicitly linked to node_modules, so they can't be imported with an absolute name like "lib/proto" - we need to use relative paths like "../lib/proto" instead. Adjusting "paths" in tsconfig.json makes it work for TS compilation, but then it fails at the esbuild stage. We could resolve it by wrapping the TS libraries in a subsequent js_library() call, but that has the downside of losing the transient dependencies, meaning they need to be listed again. Alternatively we might be able to solve it in the future by adjusting esbuild, but for now the paths have been made relative to keep things simple. Upsides: - Along with updates to the Svelte tooling, Svelte typing has improved. All exports made in a Svelte file are now visible to other files that import them, and we no longer rebuild the Svelte files when TS files are updated, as the Svelte files do no type checking themselves, and are just a simple transpilation. Svelte-check now works on Windows again, and there should be no errors when editing in VS Code after you've built the project. The only downside seems to be that cmd+clicking on a Svelte imports jumps to the .d.ts file instead of the original now; presumably they'll fix that in a future plugin update. - Each subfolder now has its own tsconfig.json, and tsc can be called directly for testing purposes (but beware it will place build products in the source tree): ts/node_modules/.bin/tsc -b ts - We can drop the custom esbuild_toolchain, as it's included in the latest rules_nodejs. Other changes: - "image_module_support" is moved into lib/, and imported with - Images are now imported directly from their npm package; the extra copy step has been removed. Windows users may need to use "bazel clean" before building this, due to old files lying around in the build folder. --- BUILD.bazel | 6 - defs.bzl | 3 - late_deps.bzl | 2 + qt/aqt/data/web/js/BUILD.bazel | 3 +- repos.bzl | 23 +- ts/.eslintrc.js | 1 + ts/.prettierignore | 2 + ts/BUILD.bazel | 25 +- ts/change-notetype/BUILD.bazel | 81 +- ts/change-notetype/ChangeNotetypePage.svelte | 2 +- ts/change-notetype/Mapper.svelte | 2 +- ts/change-notetype/NotetypeSelector.svelte | 14 +- ts/change-notetype/SaveButton.svelte | 12 +- ts/change-notetype/index.ts | 6 +- ts/change-notetype/lib.test.ts | 2 +- ts/change-notetype/lib.ts | 4 +- ts/change-notetype/tsconfig.json | 12 + ts/components/BUILD.bazel | 52 +- ts/components/WithShortcut.svelte | 2 +- ts/components/tsconfig.json | 5 + ts/congrats/BUILD.bazel | 43 +- ts/congrats/CongratsPage.svelte | 6 +- ts/congrats/CongratsPage.svelte.d.ts | 1 + ts/congrats/index.ts | 4 +- ts/congrats/lib.ts | 8 +- ts/congrats/tsconfig.json | 5 + ts/deck-options/Addons.svelte.d.ts | 1 + ts/deck-options/AdvancedOptions.svelte | 4 +- ts/deck-options/AdvancedOptions.svelte.d.ts | 1 + ts/deck-options/AudioOptions.svelte | 4 +- ts/deck-options/AudioOptions.svelte.d.ts | 1 + ts/deck-options/BUILD.bazel | 99 +-- ts/deck-options/BuryOptions.svelte | 4 +- ts/deck-options/BuryOptions.svelte.d.ts | 1 + ts/deck-options/CardStateCustomizer.svelte | 2 +- .../CardStateCustomizer.svelte.d.ts | 1 + ts/deck-options/CheckBox.svelte.d.ts | 1 + ts/deck-options/CheckBoxRow.svelte.d.ts | 1 + ts/deck-options/Col.svelte.d.ts | 1 + ts/deck-options/ConfigSelector.svelte | 18 +- ts/deck-options/ConfigSelector.svelte.d.ts | 1 + ts/deck-options/DailyLimits.svelte | 4 +- ts/deck-options/DailyLimits.svelte.d.ts | 1 + ts/deck-options/DeckOptionsPage.svelte | 6 +- ts/deck-options/DeckOptionsPage.svelte.d.ts | 1 + ts/deck-options/DisplayOrder.svelte | 4 +- ts/deck-options/DisplayOrder.svelte.d.ts | 1 + ts/deck-options/EnumSelector.svelte | 2 +- ts/deck-options/EnumSelector.svelte.d.ts | 1 + ts/deck-options/EnumSelectorRow.svelte.d.ts | 1 + ts/deck-options/HtmlAddon.svelte.d.ts | 1 + ts/deck-options/Label.svelte.d.ts | 1 + ts/deck-options/LapseOptions.svelte | 4 +- ts/deck-options/LapseOptions.svelte.d.ts | 1 + ts/deck-options/NewOptions.svelte | 4 +- ts/deck-options/NewOptions.svelte.d.ts | 1 + ts/deck-options/RevertButton.svelte | 12 +- ts/deck-options/RevertButton.svelte.d.ts | 1 + ts/deck-options/Row.svelte.d.ts | 1 + ts/deck-options/SaveButton.svelte | 20 +- ts/deck-options/SaveButton.svelte.d.ts | 1 + ts/deck-options/SpinBox.svelte | 2 +- ts/deck-options/SpinBox.svelte.d.ts | 1 + ts/deck-options/SpinBoxFloat.svelte | 2 +- ts/deck-options/SpinBoxFloat.svelte.d.ts | 1 + ts/deck-options/SpinBoxFloatRow.svelte.d.ts | 1 + ts/deck-options/SpinBoxRow.svelte.d.ts | 1 + ts/deck-options/StepsInput.svelte | 2 +- ts/deck-options/StepsInput.svelte.d.ts | 1 + ts/deck-options/StepsInputRow.svelte.d.ts | 1 + ts/deck-options/Switch.svelte | 2 +- ts/deck-options/Switch.svelte.d.ts | 1 + ts/deck-options/SwitchRow.svelte.d.ts | 1 + ts/deck-options/TextInputModal.svelte | 2 +- ts/deck-options/TextInputModal.svelte.d.ts | 1 + ts/deck-options/TimerOptions.svelte | 4 +- ts/deck-options/TimerOptions.svelte.d.ts | 1 + ts/deck-options/TitledContainer.svelte | 2 +- ts/deck-options/TitledContainer.svelte.d.ts | 1 + ts/deck-options/TooltipLabel.svelte | 4 +- ts/deck-options/TooltipLabel.svelte.d.ts | 1 + ts/deck-options/Warning.svelte.d.ts | 1 + ts/deck-options/icons.ts | 9 +- ts/deck-options/index.ts | 8 +- ts/deck-options/lib.test.ts | 2 +- ts/deck-options/lib.ts | 8 +- ts/deck-options/steps.ts | 2 +- ts/deck-options/strings.ts | 2 +- ts/deck-options/tsconfig.json | 12 + ts/editable/BUILD.bazel | 79 +- ts/editable/Mathjax.svelte | 2 +- ts/editable/Mathjax.svelte.d.ts | 1 + ts/editable/editable.ts | 8 +- ts/editable/icons.ts | 4 +- ts/editable/mathjax-component.ts | 4 +- ts/editable/tsconfig.json | 9 + ts/editor/AddTagBadge.svelte | 6 +- ts/editor/AddTagBadge.svelte.d.ts | 1 + ts/editor/AddonButtons.svelte | 4 +- ts/editor/AddonButtons.svelte.d.ts | 1 + ts/editor/AutocompleteItem.svelte | 2 +- ts/editor/AutocompleteItem.svelte.d.ts | 1 + ts/editor/BUILD.bazel | 153 +--- ts/editor/ClozeButton.svelte | 8 +- ts/editor/ClozeButton.svelte.d.ts | 1 + ts/editor/ColorButtons.svelte | 16 +- ts/editor/ColorButtons.svelte.d.ts | 1 + ts/editor/CommandIconButton.svelte | 8 +- ts/editor/CommandIconButton.svelte.d.ts | 1 + ts/editor/Components.svelte | 12 +- ts/editor/Components.svelte.d.ts | 1 + ts/editor/EditorToolbar.svelte | 11 +- ts/editor/EditorToolbar.svelte.d.ts | 1 + ts/editor/FormatBlockButtons.svelte | 16 +- ts/editor/FormatBlockButtons.svelte.d.ts | 1 + ts/editor/FormatInlineButtons.svelte | 6 +- ts/editor/FormatInlineButtons.svelte.d.ts | 1 + ts/editor/HandleBackground.svelte.d.ts | 1 + ts/editor/HandleControl.svelte | 2 +- ts/editor/HandleControl.svelte.d.ts | 1 + ts/editor/HandleLabel.svelte.d.ts | 1 + ts/editor/HandleSelection.svelte.d.ts | 1 + ts/editor/ImageHandle.svelte | 6 +- ts/editor/ImageHandle.svelte.d.ts | 1 + ts/editor/ImageHandleFloatButtons.svelte | 8 +- ts/editor/ImageHandleFloatButtons.svelte.d.ts | 1 + ts/editor/ImageHandleSizeSelect.svelte | 8 +- ts/editor/ImageHandleSizeSelect.svelte.d.ts | 1 + ts/editor/MathjaxHandle.svelte | 8 +- ts/editor/MathjaxHandle.svelte.d.ts | 1 + ts/editor/MathjaxHandleEditor.svelte.d.ts | 1 + ts/editor/MathjaxHandleInlineBlock.svelte | 8 +- .../MathjaxHandleInlineBlock.svelte.d.ts | 1 + ts/editor/NoteTypeButtons.svelte | 14 +- ts/editor/NoteTypeButtons.svelte.d.ts | 1 + ts/editor/OnlyEditable.svelte | 2 +- ts/editor/OnlyEditable.svelte.d.ts | 1 + ts/editor/PreviewButton.svelte | 10 +- ts/editor/PreviewButton.svelte.d.ts | 1 + ts/editor/SelectedTagBadge.svelte | 12 +- ts/editor/SelectedTagBadge.svelte.d.ts | 1 + ts/editor/Tag.svelte | 2 +- ts/editor/Tag.svelte.d.ts | 1 + ts/editor/TagDeleteBadge.svelte | 2 +- ts/editor/TagDeleteBadge.svelte.d.ts | 1 + ts/editor/TagEditMode.svelte.d.ts | 1 + ts/editor/TagEditor.svelte | 12 +- ts/editor/TagEditor.svelte.d.ts | 1 + ts/editor/TagInput.svelte.d.ts | 1 + ts/editor/TagOptionsBadge.svelte.d.ts | 1 + ts/editor/TagWithTooltip.svelte | 6 +- ts/editor/TagWithTooltip.svelte.d.ts | 1 + ts/editor/TemplateButtons.svelte | 22 +- ts/editor/TemplateButtons.svelte.d.ts | 1 + ts/editor/WithAutocomplete.svelte | 4 +- ts/editor/WithAutocomplete.svelte.d.ts | 1 + ts/editor/WithColorHelper.svelte.d.ts | 1 + ts/editor/WithImageConstrained.svelte | 2 +- ts/editor/WithImageConstrained.svelte.d.ts | 1 + ts/editor/editing-area.ts | 10 +- ts/editor/icons.ts | 72 +- ts/editor/index.ts | 20 +- ts/editor/input-handlers.ts | 4 +- ts/editor/label-container.ts | 6 +- ts/editor/tag-editor.ts | 2 +- ts/editor/toolbar.ts | 2 +- ts/editor/tsconfig.json | 11 + ts/editor/wrap.ts | 2 +- ts/esbuild.bzl | 12 +- ts/eslint.bzl | 6 +- ts/graphs/AddedGraph.svelte | 6 +- ts/graphs/AddedGraph.svelte.d.ts | 1 + ts/graphs/AxisTicks.svelte.d.ts | 1 + ts/graphs/BUILD.bazel | 68 +- ts/graphs/ButtonsGraph.svelte | 4 +- ts/graphs/ButtonsGraph.svelte.d.ts | 1 + ts/graphs/CalendarGraph.svelte | 6 +- ts/graphs/CalendarGraph.svelte.d.ts | 1 + ts/graphs/CardCounts.svelte | 6 +- ts/graphs/CardCounts.svelte.d.ts | 1 + ts/graphs/CumulativeOverlay.svelte.d.ts | 1 + ts/graphs/EaseGraph.svelte | 6 +- ts/graphs/EaseGraph.svelte.d.ts | 1 + ts/graphs/FutureDue.svelte | 6 +- ts/graphs/FutureDue.svelte.d.ts | 1 + ts/graphs/Graph.svelte.d.ts | 1 + ts/graphs/GraphRangeRadios.svelte | 4 +- ts/graphs/GraphRangeRadios.svelte.d.ts | 1 + ts/graphs/GraphsPage.svelte | 2 +- ts/graphs/GraphsPage.svelte.d.ts | 1 + ts/graphs/HistogramGraph.svelte.d.ts | 1 + ts/graphs/HourGraph.svelte | 4 +- ts/graphs/HourGraph.svelte.d.ts | 1 + ts/graphs/HoverColumns.svelte.d.ts | 1 + ts/graphs/InputBox.svelte.d.ts | 1 + ts/graphs/IntervalsGraph.svelte | 8 +- ts/graphs/IntervalsGraph.svelte.d.ts | 1 + ts/graphs/NoDataOverlay.svelte | 2 +- ts/graphs/NoDataOverlay.svelte.d.ts | 1 + ts/graphs/RangeBox.svelte | 2 +- ts/graphs/RangeBox.svelte.d.ts | 1 + ts/graphs/ReviewsGraph.svelte | 4 +- ts/graphs/ReviewsGraph.svelte.d.ts | 1 + ts/graphs/TableData.svelte | 2 +- ts/graphs/TableData.svelte.d.ts | 1 + ts/graphs/TodayStats.svelte | 2 +- ts/graphs/TodayStats.svelte.d.ts | 1 + ts/graphs/Tooltip.svelte.d.ts | 1 + ts/graphs/WithGraphData.svelte | 12 +- ts/graphs/WithGraphData.svelte.d.ts | 1 + ts/graphs/added.ts | 6 +- ts/graphs/buttons.ts | 4 +- ts/graphs/calendar.ts | 6 +- ts/graphs/card-counts.ts | 6 +- ts/graphs/ease.ts | 6 +- ts/graphs/future-due.ts | 8 +- ts/graphs/graph-helpers.ts | 2 +- ts/graphs/hours.ts | 4 +- ts/graphs/index.ts | 4 +- ts/graphs/intervals.ts | 8 +- ts/graphs/reviews.ts | 6 +- ts/graphs/today.ts | 6 +- ts/graphs/tsconfig.json | 5 + ts/html-filter/BUILD.bazel | 42 +- ts/html-filter/tsconfig.json | 8 + ts/jest.bzl | 43 +- ts/jest.config.js | 1 + ts/lib/BUILD.bazel | 48 +- ts/lib/backend_proto.d.ts | 1 + ts/lib/i18n.ts | 1 + ts/{images.d.ts => lib/image-import.d.ts} | 0 ts/lib/proto.ts | 1 + ts/lib/tsconfig.json | 8 + ts/licenses.json | 8 +- ts/package.json | 5 +- ts/patches/@bazel+typescript+4.3.0.patch | 25 + ts/prettier.bzl | 9 +- ts/{lib => }/proto.bzl | 0 ts/reviewer/BUILD.bazel | 37 +- ts/reviewer/answering.ts | 4 +- ts/reviewer/index.ts | 2 +- ts/reviewer/reviewer_extras.ts | 2 +- ts/reviewer/tsconfig.json | 5 + ts/sql_format.bzl | 1 + ts/svelte/BUILD.bazel | 1 + ts/svelte/svelte.bzl | 33 +- ts/svelte/svelte.ts | 12 +- ts/sveltelib/BUILD.bazel | 19 +- ts/sveltelib/export-runtime.ts | 2 +- ts/sveltelib/tsconfig.json | 5 + ts/tsconfig.json | 30 +- ts/typescript.bzl | 43 ++ ts/yarn.lock | 715 +++++++++--------- 253 files changed, 1244 insertions(+), 1374 deletions(-) create mode 100644 ts/change-notetype/tsconfig.json create mode 100644 ts/components/tsconfig.json create mode 120000 ts/congrats/CongratsPage.svelte.d.ts create mode 100644 ts/congrats/tsconfig.json create mode 120000 ts/deck-options/Addons.svelte.d.ts create mode 120000 ts/deck-options/AdvancedOptions.svelte.d.ts create mode 120000 ts/deck-options/AudioOptions.svelte.d.ts create mode 120000 ts/deck-options/BuryOptions.svelte.d.ts create mode 120000 ts/deck-options/CardStateCustomizer.svelte.d.ts create mode 120000 ts/deck-options/CheckBox.svelte.d.ts create mode 120000 ts/deck-options/CheckBoxRow.svelte.d.ts create mode 120000 ts/deck-options/Col.svelte.d.ts create mode 120000 ts/deck-options/ConfigSelector.svelte.d.ts create mode 120000 ts/deck-options/DailyLimits.svelte.d.ts create mode 120000 ts/deck-options/DeckOptionsPage.svelte.d.ts create mode 120000 ts/deck-options/DisplayOrder.svelte.d.ts create mode 120000 ts/deck-options/EnumSelector.svelte.d.ts create mode 120000 ts/deck-options/EnumSelectorRow.svelte.d.ts create mode 120000 ts/deck-options/HtmlAddon.svelte.d.ts create mode 120000 ts/deck-options/Label.svelte.d.ts create mode 120000 ts/deck-options/LapseOptions.svelte.d.ts create mode 120000 ts/deck-options/NewOptions.svelte.d.ts create mode 120000 ts/deck-options/RevertButton.svelte.d.ts create mode 120000 ts/deck-options/Row.svelte.d.ts create mode 120000 ts/deck-options/SaveButton.svelte.d.ts create mode 120000 ts/deck-options/SpinBox.svelte.d.ts create mode 120000 ts/deck-options/SpinBoxFloat.svelte.d.ts create mode 120000 ts/deck-options/SpinBoxFloatRow.svelte.d.ts create mode 120000 ts/deck-options/SpinBoxRow.svelte.d.ts create mode 120000 ts/deck-options/StepsInput.svelte.d.ts create mode 120000 ts/deck-options/StepsInputRow.svelte.d.ts create mode 120000 ts/deck-options/Switch.svelte.d.ts create mode 120000 ts/deck-options/SwitchRow.svelte.d.ts create mode 120000 ts/deck-options/TextInputModal.svelte.d.ts create mode 120000 ts/deck-options/TimerOptions.svelte.d.ts create mode 120000 ts/deck-options/TitledContainer.svelte.d.ts create mode 120000 ts/deck-options/TooltipLabel.svelte.d.ts create mode 120000 ts/deck-options/Warning.svelte.d.ts create mode 100644 ts/deck-options/tsconfig.json create mode 120000 ts/editable/Mathjax.svelte.d.ts create mode 100644 ts/editable/tsconfig.json create mode 120000 ts/editor/AddTagBadge.svelte.d.ts create mode 120000 ts/editor/AddonButtons.svelte.d.ts create mode 120000 ts/editor/AutocompleteItem.svelte.d.ts create mode 120000 ts/editor/ClozeButton.svelte.d.ts create mode 120000 ts/editor/ColorButtons.svelte.d.ts create mode 120000 ts/editor/CommandIconButton.svelte.d.ts create mode 120000 ts/editor/Components.svelte.d.ts create mode 120000 ts/editor/EditorToolbar.svelte.d.ts create mode 120000 ts/editor/FormatBlockButtons.svelte.d.ts create mode 120000 ts/editor/FormatInlineButtons.svelte.d.ts create mode 120000 ts/editor/HandleBackground.svelte.d.ts create mode 120000 ts/editor/HandleControl.svelte.d.ts create mode 120000 ts/editor/HandleLabel.svelte.d.ts create mode 120000 ts/editor/HandleSelection.svelte.d.ts create mode 120000 ts/editor/ImageHandle.svelte.d.ts create mode 120000 ts/editor/ImageHandleFloatButtons.svelte.d.ts create mode 120000 ts/editor/ImageHandleSizeSelect.svelte.d.ts create mode 120000 ts/editor/MathjaxHandle.svelte.d.ts create mode 120000 ts/editor/MathjaxHandleEditor.svelte.d.ts create mode 120000 ts/editor/MathjaxHandleInlineBlock.svelte.d.ts create mode 120000 ts/editor/NoteTypeButtons.svelte.d.ts create mode 120000 ts/editor/OnlyEditable.svelte.d.ts create mode 120000 ts/editor/PreviewButton.svelte.d.ts create mode 120000 ts/editor/SelectedTagBadge.svelte.d.ts create mode 120000 ts/editor/Tag.svelte.d.ts create mode 120000 ts/editor/TagDeleteBadge.svelte.d.ts create mode 120000 ts/editor/TagEditMode.svelte.d.ts create mode 120000 ts/editor/TagEditor.svelte.d.ts create mode 120000 ts/editor/TagInput.svelte.d.ts create mode 120000 ts/editor/TagOptionsBadge.svelte.d.ts create mode 120000 ts/editor/TagWithTooltip.svelte.d.ts create mode 120000 ts/editor/TemplateButtons.svelte.d.ts create mode 120000 ts/editor/WithAutocomplete.svelte.d.ts create mode 120000 ts/editor/WithColorHelper.svelte.d.ts create mode 120000 ts/editor/WithImageConstrained.svelte.d.ts create mode 100644 ts/editor/tsconfig.json create mode 120000 ts/graphs/AddedGraph.svelte.d.ts create mode 120000 ts/graphs/AxisTicks.svelte.d.ts create mode 120000 ts/graphs/ButtonsGraph.svelte.d.ts create mode 120000 ts/graphs/CalendarGraph.svelte.d.ts create mode 120000 ts/graphs/CardCounts.svelte.d.ts create mode 120000 ts/graphs/CumulativeOverlay.svelte.d.ts create mode 120000 ts/graphs/EaseGraph.svelte.d.ts create mode 120000 ts/graphs/FutureDue.svelte.d.ts create mode 120000 ts/graphs/Graph.svelte.d.ts create mode 120000 ts/graphs/GraphRangeRadios.svelte.d.ts create mode 120000 ts/graphs/GraphsPage.svelte.d.ts create mode 120000 ts/graphs/HistogramGraph.svelte.d.ts create mode 120000 ts/graphs/HourGraph.svelte.d.ts create mode 120000 ts/graphs/HoverColumns.svelte.d.ts create mode 120000 ts/graphs/InputBox.svelte.d.ts create mode 120000 ts/graphs/IntervalsGraph.svelte.d.ts create mode 120000 ts/graphs/NoDataOverlay.svelte.d.ts create mode 120000 ts/graphs/RangeBox.svelte.d.ts create mode 120000 ts/graphs/ReviewsGraph.svelte.d.ts create mode 120000 ts/graphs/TableData.svelte.d.ts create mode 120000 ts/graphs/TodayStats.svelte.d.ts create mode 120000 ts/graphs/Tooltip.svelte.d.ts create mode 120000 ts/graphs/WithGraphData.svelte.d.ts create mode 100644 ts/graphs/tsconfig.json create mode 100644 ts/html-filter/tsconfig.json create mode 120000 ts/lib/backend_proto.d.ts create mode 120000 ts/lib/i18n.ts rename ts/{images.d.ts => lib/image-import.d.ts} (100%) create mode 100644 ts/lib/tsconfig.json create mode 100644 ts/patches/@bazel+typescript+4.3.0.patch rename ts/{lib => }/proto.bzl (100%) create mode 100644 ts/reviewer/tsconfig.json create mode 100644 ts/sveltelib/tsconfig.json create mode 100644 ts/typescript.bzl diff --git a/BUILD.bazel b/BUILD.bazel index f97f95162..f7c42abad 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -22,12 +22,6 @@ genrule( visibility = ["//visibility:public"], ) -alias( - name = "tsconfig.json", - actual = "//ts:tsconfig.json", - visibility = ["//visibility:public"], -) - pkg_tar( name = "dist", srcs = [ diff --git a/defs.bzl b/defs.bzl index 6e743ec15..d165051eb 100644 --- a/defs.bzl +++ b/defs.bzl @@ -9,7 +9,6 @@ load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install load("@io_bazel_rules_sass//:defs.bzl", "sass_repositories") load("@com_github_ali5h_rules_pip//:defs.bzl", "pip_import") load("//pip/pyqt5:defs.bzl", "install_pyqt5") -load("@esbuild_toolchain//:esbuild_repo.bzl", "esbuild_dependencies") anki_version = "2.1.49" @@ -53,5 +52,3 @@ def setup_deps(): ) sass_repositories() - - esbuild_dependencies() diff --git a/late_deps.bzl b/late_deps.bzl index 50d275af5..cee5563f3 100644 --- a/late_deps.bzl +++ b/late_deps.bzl @@ -2,7 +2,9 @@ load("@py_deps//:requirements.bzl", "pip_install") load("@rules_rust//tools/rust_analyzer/raze:crates.bzl", "rules_rust_tools_rust_analyzer_fetch_remote_crates") +load("@build_bazel_rules_nodejs//toolchains/esbuild:esbuild_repositories.bzl", "esbuild_repositories") def setup_late_deps(): pip_install() rules_rust_tools_rust_analyzer_fetch_remote_crates() + esbuild_repositories() diff --git a/qt/aqt/data/web/js/BUILD.bazel b/qt/aqt/data/web/js/BUILD.bazel index c46de6f84..4b3ca41a7 100644 --- a/qt/aqt/data/web/js/BUILD.bazel +++ b/qt/aqt/data/web/js/BUILD.bazel @@ -6,6 +6,7 @@ load("//ts:eslint.bzl", "eslint_test") ts_library( name = "pycmd", srcs = ["pycmd.d.ts"], + tsconfig = "tsconfig.json", visibility = ["//qt/aqt/data/web/js:__subpackages__"], ) @@ -50,8 +51,8 @@ filegroup( srcs = [ "aqt_es5", "editor", - "reviewer", "mathjax.js", + "reviewer", "//qt/aqt/data/web/js/vendor", ], visibility = ["//qt:__subpackages__"], diff --git a/repos.bzl b/repos.bzl index 8966f31b4..6489d3cb5 100644 --- a/repos.bzl +++ b/repos.bzl @@ -89,21 +89,8 @@ def register_repos(): maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "4a5d654a4ccd4a4c24eca5d319d85a88a650edf119601550c95bf400c8cc897e", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.5.1/rules_nodejs-3.5.1.tar.gz"], - ) - - # native.local_repository( - # name = "esbuild_toolchain", - # path = "../esbuild_toolchain", - # ) - - maybe( - http_archive, - name = "esbuild_toolchain", - sha256 = "7385dfb2acce6517fcfdb16480cf18d1959bafb83d8cddc0c1e95779609f762c", - urls = ["https://github.com/ankitects/esbuild_toolchain/archive/refs/tags/anki-2021-06-01.tar.gz"], - strip_prefix = "esbuild_toolchain-anki-2021-06-01", + sha256 = "3635797a96c7bfcd0d265dacd722a07335e64d6ded9834af8d3f1b7ba5a25bba", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.3.0/rules_nodejs-4.3.0.tar.gz"], ) # sass @@ -117,11 +104,11 @@ def register_repos(): maybe( http_archive, name = "io_bazel_rules_sass", - strip_prefix = "rules_sass-anki-2020-12-23", + strip_prefix = "rules_sass-d0cda2205a6e9706ded30f7dd7d30c82b1301fbe", urls = [ - "https://github.com/ankitects/rules_sass/archive/anki-2020-12-23.tar.gz", + "https://github.com/bazelbuild/rules_sass/archive/d0cda2205a6e9706ded30f7dd7d30c82b1301fbe.zip", ], - sha256 = "224ae14b8d2166b3ab4c5fa9b2ae1828f30620ac628dc152e6c0859c7853bb97", + sha256 = "640ad20f878a6656968e35f35343359446db91a773224ddf52ae110f1e48bb20", ) # translations diff --git a/ts/.eslintrc.js b/ts/.eslintrc.js index dd3dc4c4b..8106cbae6 100644 --- a/ts/.eslintrc.js +++ b/ts/.eslintrc.js @@ -16,4 +16,5 @@ module.exports = { ], }, env: { browser: true }, + ignorePatterns: ["backend_proto.d.ts", "*.svelte.d.ts"], }; diff --git a/ts/.prettierignore b/ts/.prettierignore index 3fd69af96..ac995e48b 100644 --- a/ts/.prettierignore +++ b/ts/.prettierignore @@ -1,2 +1,4 @@ licenses.json vendor +*.svelte.d.ts +backend_proto.d.ts diff --git a/ts/BUILD.bazel b/ts/BUILD.bazel index 3ca8c216b..283d64bbe 100644 --- a/ts/BUILD.bazel +++ b/ts/BUILD.bazel @@ -1,30 +1,17 @@ load("//ts:prettier.bzl", "prettier", "prettier_test") load("//ts:sql_format.bzl", "sql_format_setup") -load("@npm//@bazel/typescript:index.bzl", "ts_library") +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") prettier() -prettier_test( - name = "format_check", - srcs = glob([ - "*.ts", - "*.js", - ]), -) +prettier_test() sql_format_setup() -ts_library( - name = "image_module_support", - srcs = ["images.d.ts"], - visibility = ["//visibility:public"], -) - # Exported files ################# exports_files([ - "tsconfig.json", ".prettierrc", ".eslintrc.js", "licenses.json", @@ -34,6 +21,14 @@ exports_files([ "protobuf-no-long.js", ]) +# a copy needs to be placed in bazel-bin for libs with +# generated files +copy_to_bin( + name = "tsconfig_bin", + srcs = ["tsconfig.json"], + visibility = ["//visibility:public"], +) + alias( name = "yarn", actual = "@nodejs//:yarn", diff --git a/ts/change-notetype/BUILD.bazel b/ts/change-notetype/BUILD.bazel index 017d5c46e..dbea78a03 100644 --- a/ts/change-notetype/BUILD.bazel +++ b/ts/change-notetype/BUILD.bazel @@ -1,9 +1,9 @@ -load("@npm//@bazel/typescript:index.bzl", "ts_library") load("//ts:prettier.bzl", "prettier_test") load("//ts:eslint.bzl", "eslint_test") load("//ts/svelte:svelte.bzl", "compile_svelte", "svelte_check") load("//ts:esbuild.bzl", "esbuild") load("//ts:compile_sass.bzl", "compile_sass") +load("//ts:typescript.bzl", "typescript") load("//ts:jest.bzl", "jest_test") compile_sass( @@ -17,69 +17,44 @@ compile_sass( ], ) -svelte_files = glob(["*.svelte"]) +compile_svelte() -svelte_names = [f.replace(".svelte", "") for f in svelte_files] - -compile_svelte( - name = "svelte", - srcs = svelte_files, - deps = [ - "//ts/components", - "//ts/sveltelib", - "@npm//@types/bootstrap", - ], -) - -ts_library( +typescript( name = "index", - srcs = ["index.ts"], - deps = [ - "ChangeNotetypePage", - "lib", - "//ts/components", - "//ts/lib", - "@npm//svelte2tsx", - ], -) - -ts_library( - name = "lib", - srcs = [ - "lib.ts", - ], - module_name = "change-notetype", + srcs = glob(["*.ts"]), deps = [ + ":svelte", "//ts/components", "//ts/lib", "//ts/sveltelib", + "@npm//@fluent", + "@npm//@types/jest", "@npm//lodash-es", "@npm//svelte", + "@npm//svelte2tsx", ], ) esbuild( name = "change-notetype", - args = [ - "--global-name=anki", - "--resolve-extensions=.mjs,.js", - "--log-level=warning", - "--loader:.svg=text", - ], + args = { + "globalName": "anki", + "loader": {".svg": "text"}, + }, entry_point = "index.ts", output_css = "change-notetype.css", visibility = ["//visibility:public"], deps = [ - "index", ":base_css", - "@npm//bootstrap", - "@npm//marked", + ":index", + ":svelte", + "//ts/components", "//ts/lib", "//ts/sveltelib", - "//ts/components", - "//ts/components:svelte_components", + "@npm//bootstrap", + "@npm//marked", "@npm//protobufjs", - ] + svelte_names, + ], ) exports_files(["change-notetype.html"]) @@ -87,20 +62,9 @@ exports_files(["change-notetype.html"]) # Tests ################ -prettier_test( - name = "format_check", - srcs = glob([ - "*.ts", - "*.svelte", - ]), -) +prettier_test() -eslint_test( - name = "eslint", - srcs = glob([ - "*.ts", - ]), -) +eslint_test() svelte_check( name = "svelte_check", @@ -120,9 +84,6 @@ svelte_check( jest_test( protobuf = True, deps = [ - ":lib", - "//ts/lib", - "@npm//protobufjs", - "@npm//svelte", + ":index", ], ) diff --git a/ts/change-notetype/ChangeNotetypePage.svelte b/ts/change-notetype/ChangeNotetypePage.svelte index 09ab80a84..878114145 100644 --- a/ts/change-notetype/ChangeNotetypePage.svelte +++ b/ts/change-notetype/ChangeNotetypePage.svelte @@ -3,7 +3,7 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> diff --git a/ts/editor/AddonButtons.svelte.d.ts b/ts/editor/AddonButtons.svelte.d.ts new file mode 120000 index 000000000..481d4ffd2 --- /dev/null +++ b/ts/editor/AddonButtons.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/editor/AddonButtons.svelte.d.ts \ No newline at end of file diff --git a/ts/editor/AutocompleteItem.svelte b/ts/editor/AutocompleteItem.svelte index 271447325..8e44b1b2c 100644 --- a/ts/editor/AutocompleteItem.svelte +++ b/ts/editor/AutocompleteItem.svelte @@ -4,7 +4,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> diff --git a/ts/editor/NoteTypeButtons.svelte.d.ts b/ts/editor/NoteTypeButtons.svelte.d.ts new file mode 120000 index 000000000..6e46f0f8e --- /dev/null +++ b/ts/editor/NoteTypeButtons.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/editor/NoteTypeButtons.svelte.d.ts \ No newline at end of file diff --git a/ts/editor/OnlyEditable.svelte b/ts/editor/OnlyEditable.svelte index 25d08beb7..f4d6024e1 100644 --- a/ts/editor/OnlyEditable.svelte +++ b/ts/editor/OnlyEditable.svelte @@ -3,7 +3,7 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> diff --git a/ts/editor/OnlyEditable.svelte.d.ts b/ts/editor/OnlyEditable.svelte.d.ts new file mode 120000 index 000000000..40521853e --- /dev/null +++ b/ts/editor/OnlyEditable.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/editor/OnlyEditable.svelte.d.ts \ No newline at end of file diff --git a/ts/editor/PreviewButton.svelte b/ts/editor/PreviewButton.svelte index ee3504817..443802722 100644 --- a/ts/editor/PreviewButton.svelte +++ b/ts/editor/PreviewButton.svelte @@ -3,12 +3,12 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> diff --git a/ts/editor/PreviewButton.svelte.d.ts b/ts/editor/PreviewButton.svelte.d.ts new file mode 120000 index 000000000..221fdff22 --- /dev/null +++ b/ts/editor/PreviewButton.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/editor/PreviewButton.svelte.d.ts \ No newline at end of file diff --git a/ts/editor/SelectedTagBadge.svelte b/ts/editor/SelectedTagBadge.svelte index cd989cd29..24bdbeb99 100644 --- a/ts/editor/SelectedTagBadge.svelte +++ b/ts/editor/SelectedTagBadge.svelte @@ -5,13 +5,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html diff --git a/ts/graphs/NoDataOverlay.svelte.d.ts b/ts/graphs/NoDataOverlay.svelte.d.ts new file mode 120000 index 000000000..ec8464501 --- /dev/null +++ b/ts/graphs/NoDataOverlay.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/graphs/NoDataOverlay.svelte.d.ts \ No newline at end of file diff --git a/ts/graphs/RangeBox.svelte b/ts/graphs/RangeBox.svelte index 934fe0a44..b4285beb5 100644 --- a/ts/graphs/RangeBox.svelte +++ b/ts/graphs/RangeBox.svelte @@ -7,7 +7,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import InputBox from "./InputBox.svelte"; - import * as tr from "lib/i18n"; + import * as tr from "../lib/i18n"; import { RevlogRange, daysToRevlogRange } from "./graph-helpers"; enum SearchRange { diff --git a/ts/graphs/RangeBox.svelte.d.ts b/ts/graphs/RangeBox.svelte.d.ts new file mode 120000 index 000000000..ec95a1a6b --- /dev/null +++ b/ts/graphs/RangeBox.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/graphs/RangeBox.svelte.d.ts \ No newline at end of file diff --git a/ts/graphs/ReviewsGraph.svelte b/ts/graphs/ReviewsGraph.svelte index 8d64fbec5..7c024e23f 100644 --- a/ts/graphs/ReviewsGraph.svelte +++ b/ts/graphs/ReviewsGraph.svelte @@ -3,7 +3,7 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> diff --git a/ts/graphs/TableData.svelte.d.ts b/ts/graphs/TableData.svelte.d.ts new file mode 120000 index 000000000..656f78a87 --- /dev/null +++ b/ts/graphs/TableData.svelte.d.ts @@ -0,0 +1 @@ +../../bazel-bin/ts/graphs/TableData.svelte.d.ts \ No newline at end of file diff --git a/ts/graphs/TodayStats.svelte b/ts/graphs/TodayStats.svelte index 44c7a6f36..79798e34e 100644 --- a/ts/graphs/TodayStats.svelte +++ b/ts/graphs/TodayStats.svelte @@ -3,7 +3,7 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -->