377ba1471e
Switching to lodash-es caused Jest to fail. The standard Jest workflow would be to transpile things with Bazel, but we can do it faster by bundling with esbuild. the log in lib.test.ts has revealed numbers are being set as Long instead of JS numbers, and the published workaround for it is not working :-(
135 lines
2.6 KiB
Python
135 lines
2.6 KiB
Python
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", "svelte_check")
|
|
load("//ts:esbuild.bzl", "esbuild")
|
|
load("//ts:vendor.bzl", "copy_bootstrap_icons")
|
|
load("//ts:compile_sass.bzl", "compile_sass")
|
|
load("//ts:jest.bzl", "jest_test")
|
|
|
|
compile_sass(
|
|
srcs = ["deckconfig-base.scss"],
|
|
group = "base_css",
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"//ts/sass:base_lib",
|
|
"//ts/sass:scrollbar_lib",
|
|
"//ts/sass/bootstrap",
|
|
],
|
|
)
|
|
|
|
svelte_files = glob(["*.svelte"])
|
|
|
|
svelte_names = [f.replace(".svelte", "") for f in svelte_files]
|
|
|
|
compile_svelte(
|
|
name = "svelte",
|
|
srcs = svelte_files,
|
|
deps = [
|
|
"@npm//@types/bootstrap",
|
|
],
|
|
)
|
|
|
|
copy_bootstrap_icons(
|
|
name = "bootstrap-icons",
|
|
icons = [
|
|
"arrow-counterclockwise.svg",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "index",
|
|
srcs = ["index.ts"],
|
|
deps = [
|
|
"DeckConfigPage",
|
|
"lib",
|
|
"//ts/lib",
|
|
"@npm//svelte2tsx",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "lib",
|
|
srcs = [
|
|
"icons.ts",
|
|
"lib.ts",
|
|
"steps.ts",
|
|
"textInputModal.ts",
|
|
],
|
|
module_name = "deckconfig",
|
|
deps = [
|
|
"TextInputModal",
|
|
"//ts:image_module_support",
|
|
"//ts/lib",
|
|
"//ts/lib:backend_proto",
|
|
"@npm//lodash-es",
|
|
"@npm//svelte",
|
|
],
|
|
)
|
|
|
|
esbuild(
|
|
name = "deckconfig",
|
|
srcs = [
|
|
"//ts:protobuf-shim.js",
|
|
],
|
|
args = [
|
|
"--global-name=anki",
|
|
"--inject:$(location //ts:protobuf-shim.js)",
|
|
"--resolve-extensions=.mjs,.js",
|
|
"--log-level=warning",
|
|
"--loader:.svg=text",
|
|
],
|
|
entry_point = "index.ts",
|
|
external = [
|
|
"protobufjs/light",
|
|
],
|
|
output_css = "deckconfig.css",
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"index",
|
|
"//ts/lib",
|
|
"//ts/lib:backend_proto",
|
|
":bootstrap-icons",
|
|
"@npm//bootstrap",
|
|
":base_css",
|
|
] + svelte_names,
|
|
)
|
|
|
|
exports_files(["deckconfig.html"])
|
|
|
|
# Tests
|
|
################
|
|
|
|
prettier_test(
|
|
name = "format_check",
|
|
srcs = glob([
|
|
"*.ts",
|
|
"*.svelte",
|
|
]),
|
|
)
|
|
|
|
eslint_test(
|
|
name = "eslint",
|
|
srcs = glob([
|
|
"*.ts",
|
|
]),
|
|
)
|
|
|
|
svelte_check(
|
|
name = "svelte_check",
|
|
srcs = glob([
|
|
"*.ts",
|
|
"*.svelte",
|
|
]) + [
|
|
"@npm//@types/bootstrap",
|
|
],
|
|
)
|
|
|
|
jest_test(
|
|
deps = [
|
|
":lib",
|
|
"//ts/lib:backend_proto",
|
|
"@npm//protobufjs",
|
|
],
|
|
)
|