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 -->