Adapt local features and dependency locks for SvelteKit 3 and local12

This commit is contained in:
Codex
2026-10-27 23:17:33 +03:00
parent d15be0dd83
commit 54881128d6
76 changed files with 703 additions and 667 deletions
+78 -117
View File
@@ -1,29 +1,22 @@
# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html
lockfile_version = 3
[[tools."github:extism/cli"]]
version = "1.6.3"
backend = "github:extism/cli"
specifiers = ["1.6.3"]
[tools."github:extism/cli"."platforms.linux-arm64"]
checksum = "sha256:d92f830c9be39637569feacb04e9750c28848df6d9a219db94152a9b4eb9452b"
url = "https://github.com/extism/cli/releases/download/v1.6.3/extism-v1.6.3-linux-arm64.tar.gz"
url_api = "https://api.github.com/repos/extism/cli/releases/assets/275694030"
[tools."github:extism/cli"."platforms.linux-arm64-musl"]
checksum = "sha256:d92f830c9be39637569feacb04e9750c28848df6d9a219db94152a9b4eb9452b"
url = "https://github.com/extism/cli/releases/download/v1.6.3/extism-v1.6.3-linux-arm64.tar.gz"
url_api = "https://api.github.com/repos/extism/cli/releases/assets/275694030"
[tools."github:extism/cli"."platforms.linux-x64"]
checksum = "sha256:34e7ae9bfded6e2c32dee83f70a4e50d34f9d3e80d1762b09625fe82e214d02d"
url = "https://github.com/extism/cli/releases/download/v1.6.3/extism-v1.6.3-linux-amd64.tar.gz"
url_api = "https://api.github.com/repos/extism/cli/releases/assets/275694025"
[tools."github:extism/cli"."platforms.linux-x64-musl"]
checksum = "sha256:34e7ae9bfded6e2c32dee83f70a4e50d34f9d3e80d1762b09625fe82e214d02d"
url = "https://github.com/extism/cli/releases/download/v1.6.3/extism-v1.6.3-linux-amd64.tar.gz"
url_api = "https://api.github.com/repos/extism/cli/releases/assets/275694025"
[tools."github:extism/cli"."platforms.macos-arm64"]
checksum = "sha256:b4ddbc575b5ac000115247f781723f9b9f284ed87b29c600539d72161b5b29fc"
url = "https://github.com/extism/cli/releases/download/v1.6.3/extism-v1.6.3-darwin-arm64.tar.gz"
@@ -42,27 +35,18 @@ url_api = "https://api.github.com/repos/extism/cli/releases/assets/275694035"
[[tools."github:extism/js-pdk"]]
version = "1.7.0"
backend = "github:extism/js-pdk"
specifiers = ["v1.7.0"]
[tools."github:extism/js-pdk"."platforms.linux-arm64"]
checksum = "sha256:025f4050b199d68413c159bde1187271ae270021a9f7171e7beb509922821f2a"
url = "https://github.com/extism/js-pdk/releases/download/v1.7.0/extism-js-aarch64-linux-v1.7.0.gz"
url_api = "https://api.github.com/repos/extism/js-pdk/releases/assets/518632503"
[tools."github:extism/js-pdk"."platforms.linux-arm64-musl"]
checksum = "sha256:025f4050b199d68413c159bde1187271ae270021a9f7171e7beb509922821f2a"
url = "https://github.com/extism/js-pdk/releases/download/v1.7.0/extism-js-aarch64-linux-v1.7.0.gz"
url_api = "https://api.github.com/repos/extism/js-pdk/releases/assets/518632503"
[tools."github:extism/js-pdk"."platforms.linux-x64"]
checksum = "sha256:63b72da2f5e88655522dc21477de549f238a2f40546a69ce4e0fce7e78654035"
url = "https://github.com/extism/js-pdk/releases/download/v1.7.0/extism-js-x86_64-linux-v1.7.0.gz"
url_api = "https://api.github.com/repos/extism/js-pdk/releases/assets/518632991"
[tools."github:extism/js-pdk"."platforms.linux-x64-musl"]
checksum = "sha256:63b72da2f5e88655522dc21477de549f238a2f40546a69ce4e0fce7e78654035"
url = "https://github.com/extism/js-pdk/releases/download/v1.7.0/extism-js-x86_64-linux-v1.7.0.gz"
url_api = "https://api.github.com/repos/extism/js-pdk/releases/assets/518632991"
[tools."github:extism/js-pdk"."platforms.macos-arm64"]
checksum = "sha256:12c01c2bb2240a6a05a4f8babe680c793c397d84e6a1497a7ca1312e78a475c3"
url = "https://github.com/extism/js-pdk/releases/download/v1.7.0/extism-js-aarch64-macos-v1.7.0.gz"
@@ -81,6 +65,7 @@ url_api = "https://api.github.com/repos/extism/js-pdk/releases/assets/518636347"
[[tools."github:jellyfin/jellyfin-ffmpeg"]]
version = "7.1.3-6"
backend = "github:jellyfin/jellyfin-ffmpeg"
specifiers = ["7.1.3-6"]
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.windows-x64"]
checksum = "sha256:7b7168149689610296f3a187c717056ce0786cc125a31caf28056737e9ba1cc1"
@@ -90,18 +75,33 @@ url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets
[[tools."github:jellyfin/jellyfin-ffmpeg"]]
version = "7.1.3-6"
backend = "github:jellyfin/jellyfin-ffmpeg"
specifiers = ["7.1.3-6"]
[tools."github:jellyfin/jellyfin-ffmpeg".options]
asset_pattern = "jellyfin-ffmpeg_*_portable_macarm64-gpl.tar.xz"
asset_pattern = "jellyfin-ffmpeg_*_portable_linux64-gpl.tar.xz"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.macos-arm64"]
checksum = "sha256:e024d5e78d5414e75f0181036cd21373fafb9270c72894dfd7dbda2572439820"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_macarm64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/408995838"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.linux-x64"]
checksum = "sha256:39e99a7927468a6abec5f65d00f55010e8ff2ae3c2605294f179c94f6ae21af2"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_linux64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/409048879"
[[tools."github:jellyfin/jellyfin-ffmpeg"]]
version = "7.1.3-6"
backend = "github:jellyfin/jellyfin-ffmpeg"
specifiers = ["7.1.3-6"]
[tools."github:jellyfin/jellyfin-ffmpeg".options]
asset_pattern = "jellyfin-ffmpeg_*_portable_linuxarm64-gpl.tar.xz"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.linux-arm64"]
checksum = "sha256:bea03c670e8cc5bfe9edc0c5d624d4735421610cef5e808db93e7d8596952886"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_linuxarm64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/409048876"
[[tools."github:jellyfin/jellyfin-ffmpeg"]]
version = "7.1.3-6"
backend = "github:jellyfin/jellyfin-ffmpeg"
specifiers = ["7.1.3-6"]
[tools."github:jellyfin/jellyfin-ffmpeg".options]
asset_pattern = "jellyfin-ffmpeg_*_portable_mac64-gpl.tar.xz"
@@ -114,61 +114,31 @@ url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets
[[tools."github:jellyfin/jellyfin-ffmpeg"]]
version = "7.1.3-6"
backend = "github:jellyfin/jellyfin-ffmpeg"
specifiers = ["7.1.3-6"]
[tools."github:jellyfin/jellyfin-ffmpeg".options]
asset_pattern = "jellyfin-ffmpeg_*_portable_linuxarm64-gpl.tar.xz"
asset_pattern = "jellyfin-ffmpeg_*_portable_macarm64-gpl.tar.xz"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.linux-arm64"]
checksum = "sha256:bea03c670e8cc5bfe9edc0c5d624d4735421610cef5e808db93e7d8596952886"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_linuxarm64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/409048876"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.linux-arm64-musl"]
checksum = "sha256:bea03c670e8cc5bfe9edc0c5d624d4735421610cef5e808db93e7d8596952886"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_linuxarm64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/409048876"
[[tools."github:jellyfin/jellyfin-ffmpeg"]]
version = "7.1.3-6"
backend = "github:jellyfin/jellyfin-ffmpeg"
[tools."github:jellyfin/jellyfin-ffmpeg".options]
asset_pattern = "jellyfin-ffmpeg_*_portable_linux64-gpl.tar.xz"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.linux-x64"]
checksum = "sha256:39e99a7927468a6abec5f65d00f55010e8ff2ae3c2605294f179c94f6ae21af2"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_linux64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/409048879"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.linux-x64-musl"]
checksum = "sha256:39e99a7927468a6abec5f65d00f55010e8ff2ae3c2605294f179c94f6ae21af2"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_linux64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/409048879"
[tools."github:jellyfin/jellyfin-ffmpeg"."platforms.macos-arm64"]
checksum = "sha256:e024d5e78d5414e75f0181036cd21373fafb9270c72894dfd7dbda2572439820"
url = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.3-6/jellyfin-ffmpeg_7.1.3-6_portable_macarm64-gpl.tar.xz"
url_api = "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/assets/408995838"
[[tools."github:webassembly/binaryen"]]
version = "version_124"
backend = "github:webassembly/binaryen"
specifiers = ["version_124"]
[tools."github:webassembly/binaryen"."platforms.linux-arm64"]
checksum = "sha256:6291bd9a57d8e046f3bc099a4db386c147433a87f71c783a901c5b1792e38de3"
url = "https://github.com/WebAssembly/binaryen/releases/download/version_124/binaryen-version_124-aarch64-linux.tar.gz"
url_api = "https://api.github.com/repos/WebAssembly/binaryen/releases/assets/288927659"
[tools."github:webassembly/binaryen"."platforms.linux-arm64-musl"]
checksum = "sha256:6291bd9a57d8e046f3bc099a4db386c147433a87f71c783a901c5b1792e38de3"
url = "https://github.com/WebAssembly/binaryen/releases/download/version_124/binaryen-version_124-aarch64-linux.tar.gz"
url_api = "https://api.github.com/repos/WebAssembly/binaryen/releases/assets/288927659"
[tools."github:webassembly/binaryen"."platforms.linux-x64"]
checksum = "sha256:0290c3779fedf592b8da0ded3032ff55c41a2b7bfa2d6bf7b7bac6f0e6e28963"
url = "https://github.com/WebAssembly/binaryen/releases/download/version_124/binaryen-version_124-x86_64-linux.tar.gz"
url_api = "https://api.github.com/repos/WebAssembly/binaryen/releases/assets/288926769"
[tools."github:webassembly/binaryen"."platforms.linux-x64-musl"]
checksum = "sha256:0290c3779fedf592b8da0ded3032ff55c41a2b7bfa2d6bf7b7bac6f0e6e28963"
url = "https://github.com/WebAssembly/binaryen/releases/download/version_124/binaryen-version_124-x86_64-linux.tar.gz"
url_api = "https://api.github.com/repos/WebAssembly/binaryen/releases/assets/288926769"
[tools."github:webassembly/binaryen"."platforms.macos-arm64"]
checksum = "sha256:86a2c960ff62c6d2ea6009d1f89745c22c70100d394a095eab45eb941bdaa24c"
url = "https://github.com/WebAssembly/binaryen/releases/download/version_124/binaryen-version_124-arm64-macos.tar.gz"
@@ -187,9 +157,10 @@ url_api = "https://api.github.com/repos/WebAssembly/binaryen/releases/assets/288
[[tools.java]]
version = "21.0.2"
backend = "core:java"
specifiers = ["21.0.2"]
[tools.java.options]
shorthand_vendor = "openjdk"
shorthand_vendor = "temurin"
[tools.java."platforms.linux-arm64"]
checksum = "sha256:08db1392a48d4eb5ea5315cf8f18b89dbaf36cda663ba882cf03c704c9257ec2"
@@ -245,12 +216,16 @@ checksum = "sha256:d2046d28c2c3dcd211ac5145c0bf30e2047ef9dfb306693c8c6e2eccd8b95
url = "https://nodejs.org/dist/v24.22.1/node-v24.22.1-win-x64.zip"
[[tools."npm:@openapitools/openapi-generator-cli"]]
version = "2.41.0"
version = "2.42.0"
aube = { path = ".mise/locks/npm-openapitools-openapi-generator-cli/2.42.0", digest = "sha256:ef9f5cf15f958d31297bb706ee83d1347633603f3079431938665c7bc4136856" }
backend = "npm:@openapitools/openapi-generator-cli"
specifiers = ["2.42.0"]
[[tools."npm:oazapfts"]]
version = "7.5.0"
aube = { path = ".mise/locks/npm-oazapfts/7.5.0", digest = "sha256:74214614b0338eaa2baee026d615afde514311c5c76e274f420f8de8b1f0e017" }
backend = "npm:oazapfts"
specifiers = ["7.5.0"]
[[tools.opentofu]]
version = "1.13.2"
@@ -263,22 +238,12 @@ checksum_source = "mise-versions"
url = "https://github.com/opentofu/opentofu/releases/download/v1.13.2/tofu_1.13.2_linux_arm64.tar.gz"
url_api = "https://api.github.com/repos/opentofu/opentofu/releases/assets/662742799"
[tools.opentofu."platforms.linux-arm64-musl"]
checksum = "sha256:9bd0228a81bcd0c88f7045c74378f45a815779f19897191dff7d9efba9976b9e"
url = "https://github.com/opentofu/opentofu/releases/download/v1.12.6/tofu_1.12.6_linux_arm64.tar.gz"
url_api = "https://api.github.com/repos/opentofu/opentofu/releases/assets/520762688"
[tools.opentofu."platforms.linux-x64"]
checksum = "sha256:ac05d9952662c7db28dd57e93f0a68018837bfdf9342384ec0987977c16a9645"
checksum_source = "mise-versions"
url = "https://github.com/opentofu/opentofu/releases/download/v1.13.2/tofu_1.13.2_linux_amd64.tar.gz"
url_api = "https://api.github.com/repos/opentofu/opentofu/releases/assets/662742636"
[tools.opentofu."platforms.linux-x64-musl"]
checksum = "sha256:50a6106fa4de523d09c87af85f3db1dd47535fc005727fdca6852146476b88ec"
url = "https://github.com/opentofu/opentofu/releases/download/v1.12.6/tofu_1.12.6_linux_amd64.tar.gz"
url_api = "https://api.github.com/repos/opentofu/opentofu/releases/assets/520762723"
[tools.opentofu."platforms.macos-arm64"]
checksum = "sha256:0d1cdc85f38992055b48e7fb161304a2ddfe2e5ee0ff68ffec9d0349c8bd1b59"
checksum_source = "mise-versions"
@@ -298,75 +263,71 @@ url = "https://github.com/opentofu/opentofu/releases/download/v1.13.2/tofu_1.13.
url_api = "https://api.github.com/repos/opentofu/opentofu/releases/assets/662742635"
[[tools.pnpm]]
version = "12.14.0"
version = "12.15.0"
backend = "aqua:pnpm/pnpm"
specifiers = ["12.14.0"]
specifiers = ["12.15.0"]
[tools.pnpm."platforms.linux-arm64"]
checksum = "sha256:cfc780b9e690549e6633e1045fb1fb6ef84e390711e2099e6ccbae91c32456ea"
url = "https://github.com/pnpm/pnpm/releases/download/v12.14.0/pnpm-linux-arm64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/643957409"
checksum = "sha256:d7ce93a2c7d847d3a34bd3f559b60c14f578b1320c17cc352a2c5c5fdf956117"
url = "https://github.com/pnpm/pnpm/releases/download/v12.15.0/pnpm-linux-arm64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/662173352"
provenance = "github-attestations"
[tools.pnpm."platforms.linux-x64"]
checksum = "sha256:3910c3852136bed5bc1511b9137a45fd4357ed6b3970d9d08893641e9005867e"
url = "https://github.com/pnpm/pnpm/releases/download/v12.14.0/pnpm-linux-x64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/643957410"
checksum = "sha256:55b5ed0092bd11176c1669598e231ae52e7cedac59de6efd0d415730f37d0598"
url = "https://github.com/pnpm/pnpm/releases/download/v12.15.0/pnpm-linux-x64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/662173360"
provenance = "github-attestations"
[tools.pnpm."platforms.macos-arm64"]
checksum = "sha256:50f48e0e17508952790a3fbf58fcf14f3b82efa5f594ca04ad904e29aaf854b0"
url = "https://github.com/pnpm/pnpm/releases/download/v12.14.0/pnpm-darwin-arm64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/643957413"
checksum = "sha256:6a41a2877773e97f19832067187cc6fc82e186d8a2cf91fec4b4c1a5fbd6ef27"
url = "https://github.com/pnpm/pnpm/releases/download/v12.15.0/pnpm-darwin-arm64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/662173343"
provenance = "github-attestations"
[tools.pnpm."platforms.macos-x64"]
checksum = "sha256:2c412e07382049b4edb04fa6da78f3d4ef7810b75853c80544dcfb7c0ed79880"
url = "https://github.com/pnpm/pnpm/releases/download/v12.14.0/pnpm-darwin-x64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/643957411"
checksum = "sha256:2d7b336884574aee8a765bee48591212e9caf4fcf985fb3279588c1fb73fb47f"
url = "https://github.com/pnpm/pnpm/releases/download/v12.15.0/pnpm-darwin-x64.tar.gz"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/662173347"
provenance = "github-attestations"
[tools.pnpm."platforms.windows-x64"]
checksum = "sha256:6f0f38e917c8ce76ef31db528c357e2bfa354a1bcb16464e3cdec39e6530d784"
url = "https://github.com/pnpm/pnpm/releases/download/v12.14.0/pnpm-win32-x64.zip"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/643957404"
checksum = "sha256:84cf69db1be19e95bb4e5bef329291a046f2821b390d87e00f5690809d8a2ed7"
url = "https://github.com/pnpm/pnpm/releases/download/v12.15.0/pnpm-win32-x64.zip"
url_api = "https://api.github.com/repos/pnpm/pnpm/releases/assets/662173351"
provenance = "github-attestations"
[[tools.terragrunt]]
version = "1.1.1"
version = "1.2.0"
backend = "aqua:gruntwork-io/terragrunt"
specifiers = ["1.2.0"]
[tools.terragrunt."platforms.linux-arm64"]
checksum = "sha256:a374a7993ff3d99665a7e014007d3647ec7f0465c9d55c85e9f94c932e73cea2"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_linux_arm64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476786148"
[tools.terragrunt."platforms.linux-arm64-musl"]
checksum = "sha256:a374a7993ff3d99665a7e014007d3647ec7f0465c9d55c85e9f94c932e73cea2"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_linux_arm64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476786148"
checksum = "sha256:1e13b7f0646fa7962bc6c5bfba14a30d6a589325b82561e21b66be5981d86395"
checksum_source = "mise-versions"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.2.0/terragrunt_linux_arm64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/662437526"
[tools.terragrunt."platforms.linux-x64"]
checksum = "sha256:ce90077ac31ef17a2ba10d11d45f36c6501997a8f4f79d703bb7daba37032f53"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_linux_amd64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476785968"
[tools.terragrunt."platforms.linux-x64-musl"]
checksum = "sha256:ce90077ac31ef17a2ba10d11d45f36c6501997a8f4f79d703bb7daba37032f53"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_linux_amd64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476785968"
checksum = "sha256:23b5f2f9203d34919f7fd270a4b635b721b4903beca9762a1e4853b159bc9be8"
checksum_source = "mise-versions"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.2.0/terragrunt_linux_amd64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/662437263"
[tools.terragrunt."platforms.macos-arm64"]
checksum = "sha256:9ec8f678b9ae6c81d5d9d77b94cbf6349ce639d5938694b4adc9dea73e416794"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_darwin_arm64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476785628"
checksum = "sha256:79790d841ce71fe94c689fb6f5034afd31ad53d5904937c7a10934cca9d9734b"
checksum_source = "mise-versions"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.2.0/terragrunt_darwin_arm64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/662436516"
[tools.terragrunt."platforms.macos-x64"]
checksum = "sha256:73e768a69fa44a60f9d9174f54aaf179327e08706f633c9c79d5f5c9622c91c2"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_darwin_amd64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476785520"
checksum = "sha256:0b0e63e80509eb1ffb4f89b892bc6fbf7728f27f0a73974400f1bd82a80b8627"
checksum_source = "mise-versions"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.2.0/terragrunt_darwin_amd64.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/662436142"
[tools.terragrunt."platforms.windows-x64"]
checksum = "sha256:dd50a324691e072a3ac879e9ec43d6310e2936c929fda658eb2811fefcc75115"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.1.1/terragrunt_windows_amd64.exe.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/476786421"
checksum = "sha256:c9a146b9aad456a289614023ad5778123d819af3cf9efd1c6130f196cfcb1999"
checksum_source = "mise-versions"
url = "https://github.com/gruntwork-io/terragrunt/releases/download/v1.2.0/terragrunt_windows_amd64.exe.tar.gz"
url_api = "https://api.github.com/repos/gruntwork-io/terragrunt/releases/assets/662438255"
+1 -1
View File
@@ -2,7 +2,7 @@ name: immich_mobile
description: Immich - selfhosted backup media file on mobile phone
publish_to: 'none'
version: 3.3.5-local.11+3030503
version: 3.3.5-local.12+3030504
environment:
sdk: '>=3.12.0 <4.0.0'
+441 -362
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2,7 +2,7 @@ import Image from '#lib/components/Image.svelte';
import { cancelImageUrl } from '#lib/utils/sw-messaging.ts';
import { fireEvent, render } from '@testing-library/svelte';
vi.mock('#lib/utils/sw-messaging.js', () => ({
vi.mock('#lib/utils/sw-messaging.ts', () => ({
cancelImageUrl: vi.fn(),
}));
@@ -1,4 +1,4 @@
import { renderWithTooltips } from '#tests/helpers';
import { renderWithTooltips } from '#tests/helpers.ts';
import userEvent from '@testing-library/user-event';
import SharedLinkFormFields from './SharedLinkFormFields.svelte';
@@ -2,7 +2,7 @@ import { sdkMock } from '#lib/__mocks__/sdk.mock.ts';
import '@testing-library/jest-dom';
import { render, waitFor, type RenderResult } from '@testing-library/svelte';
import { init, register, waitLocale } from 'svelte-i18n';
import { albumFactory } from '#test-data/factories/album-factory';
import { albumFactory } from '#test-data/factories/album-factory.ts';
import AlbumCard from '../AlbumCard.svelte';
describe('AlbumCard component', () => {
@@ -1,9 +1,9 @@
import AlbumCover from '#lib/components/album-page/AlbumCover.svelte';
import { getAssetMediaUrl } from '#lib/utils.ts';
import { render } from '@testing-library/svelte';
import { albumFactory } from '#test-data/factories/album-factory';
import { albumFactory } from '#test-data/factories/album-factory.ts';
vi.mock('#lib/utils.js');
vi.mock('#lib/utils.ts');
describe('AlbumCover component', () => {
it('renders an image when the album has a thumbnail', () => {
@@ -2,10 +2,10 @@ import '@testing-library/jest-dom';
import { render, screen } from '@testing-library/svelte';
import { init, register, waitLocale } from 'svelte-i18n';
import { writable } from 'svelte/store';
import { albumFactory } from '#test-data/factories/album-factory';
import { albumFactory } from '#test-data/factories/album-factory.ts';
import AlbumSummary from '../AlbumSummary.svelte';
vitest.mock('#lib/stores/preferences.store.js', () => ({
vitest.mock('#lib/stores/preferences.store.ts', () => ({
locale: writable('en'),
}));
@@ -2,15 +2,15 @@ import { getAnimateMock } from '#lib/__mocks__/animate.mock.ts';
import { getResizeObserverMock } from '#lib/__mocks__/resize-observer.mock.ts';
import { authManager } from '#lib/managers/auth-manager.svelte.ts';
import { SlideshowState, slideshowStore } from '#lib/stores/slideshow.store.ts';
import { renderWithTooltips } from '#tests/helpers';
import { renderWithTooltips } from '#tests/helpers.ts';
import { updateAsset } from '@immich/sdk';
import { fireEvent, waitFor } from '@testing-library/svelte';
import { assetFactory } from '#test-data/factories/asset-factory';
import { preferencesFactory } from '#test-data/factories/preferences-factory';
import { userAdminFactory } from '#test-data/factories/user-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import { preferencesFactory } from '#test-data/factories/preferences-factory.ts';
import { userAdminFactory } from '#test-data/factories/user-factory.ts';
import AssetViewer from './AssetViewer.svelte';
vi.mock('#lib/managers/feature-flags-manager.svelte.js', () => ({
vi.mock('#lib/managers/feature-flags-manager.svelte.ts', () => ({
featureFlagsManager: {
init: vi.fn(),
loadFeatureFlags: vi.fn(),
@@ -18,7 +18,7 @@ vi.mock('#lib/managers/feature-flags-manager.svelte.js', () => ({
} as never,
}));
vi.mock('#lib/stores/ocr.svelte.js', () => ({
vi.mock('#lib/stores/ocr.svelte.ts', () => ({
ocrManager: {
clear: vi.fn(),
getAssetOcr: vi.fn(),
@@ -2,15 +2,15 @@ import { getResizeObserverMock } from '#lib/__mocks__/resize-observer.mock.ts';
import { authManager } from '#lib/managers/auth-manager.svelte.ts';
import { queryClient } from '#lib/queries/client.ts';
import { getUserConfigQuery } from '#lib/queries/config-user.query.ts';
import { renderWithTooltips } from '#tests/helpers';
import { renderWithTooltips } from '#tests/helpers.ts';
import type { UserConfigDto } from '@immich/sdk';
import '@testing-library/jest-dom';
import { assetFactory } from '#test-data/factories/asset-factory';
import { preferencesFactory } from '#test-data/factories/preferences-factory';
import { userAdminFactory } from '#test-data/factories/user-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import { preferencesFactory } from '#test-data/factories/preferences-factory.ts';
import { userAdminFactory } from '#test-data/factories/user-factory.ts';
import AssetViewerNavBar from './AssetViewerNavBar.svelte';
vi.mock(import('#lib/managers/feature-flags-manager.svelte.js'), function () {
vi.mock(import('#lib/managers/feature-flags-manager.svelte.ts'), function () {
return {
featureFlagsManager: {
init: vi.fn(),
@@ -1,7 +1,7 @@
import '@testing-library/jest-dom';
import { render, screen } from '@testing-library/svelte';
import userEvent from '@testing-library/user-event';
import { assetFactory } from '#test-data/factories/asset-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import DetailPanelDescription from './DetailPanelDescription.svelte';
describe('DetailPanelDescription', () => {
@@ -43,7 +43,7 @@
import { useSwipe, type SwipeCustomEvent } from 'svelte-gestures';
import { t } from 'svelte-i18n';
import { fade } from 'svelte/transition';
import './immich-time-range';
import './immich-time-range.ts';
import { createPreloadedQuery } from '#lib/queries/client.ts';
import { getPublicConfigQuery } from '#lib/queries/config-public.query.ts';
@@ -1,10 +1,10 @@
import { renderWithTooltips } from '#tests/helpers';
import { renderWithTooltips } from '#tests/helpers.ts';
import type { AssetResponseDto } from '@immich/sdk';
import '@testing-library/jest-dom';
import { assetFactory } from '#test-data/factories/asset-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import DeleteAction from './DeleteAction.svelte';
vi.mock(import('#lib/managers/feature-flags-manager.svelte.js'), () => {
vi.mock(import('#lib/managers/feature-flags-manager.svelte.ts'), () => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return { featureFlagsManager: { init: vi.fn(), loadFeatureFlags: vi.fn(), value: { trash: true } } as any };
});
@@ -11,7 +11,7 @@
import { IconButton, modalManager, toastManager } from '@immich/ui';
import { mdiDeleteForeverOutline, mdiDeleteOutline } from '@mdi/js';
import { t } from 'svelte-i18n';
import type { OnAction, PreAction } from './action';
import type { OnAction, PreAction } from './action.ts';
interface Props {
asset: AssetResponseDto;
@@ -7,7 +7,7 @@
import { toastManager } from '@immich/ui';
import { mdiHistory } from '@mdi/js';
import { t } from 'svelte-i18n';
import type { OnAction } from './action';
import type { OnAction } from './action.ts';
interface Props {
asset: AssetResponseDto;
@@ -7,7 +7,7 @@
import { modalManager } from '@immich/ui';
import { mdiLockOpenVariantOutline, mdiLockOutline } from '@mdi/js';
import { t } from 'svelte-i18n';
import type { OnAction, PreAction } from './action';
import type { OnAction, PreAction } from './action.ts';
interface Props {
asset: TimelineAsset;
@@ -1,7 +1,7 @@
import ImageThumbnail from '#lib/components/assets/thumbnail/ImageThumbnail.svelte';
import { fireEvent, render } from '@testing-library/svelte';
vi.mock('#lib/utils/sw-messaging.js', () => ({
vi.mock('#lib/utils/sw-messaging.ts', () => ({
cancelImageUrl: vi.fn(),
}));
@@ -2,9 +2,9 @@ import { getIntersectionObserverMock } from '#lib/__mocks__/intersection-observe
import Thumbnail from '#lib/components/assets/thumbnail/Thumbnail.svelte';
import { getTabbable } from '#lib/utils/focus-util.ts';
import { render } from '@testing-library/svelte';
import { assetFactory } from '#test-data/factories/asset-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
vi.mock('#lib/utils/navigation.js', () => ({
vi.mock('#lib/utils/navigation.ts', () => ({
currentUrlReplaceAssetId: vi.fn(),
isSharedLinkRoute: vi.fn().mockReturnValue(false),
}));
@@ -1,11 +1,11 @@
import { locale } from '#lib/stores/preferences.store.ts';
import { renderWithTooltips } from '#tests/helpers';
import { renderWithTooltips } from '#tests/helpers.ts';
import { screen } from '@testing-library/svelte';
import { DateTime } from 'luxon';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import MaintenanceBackupEntry from './MaintenanceBackupEntry.svelte';
vi.mock('#lib/services/database-backups.service.js', () => ({
vi.mock('#lib/services/database-backups.service.ts', () => ({
getDatabaseBackupActions: () => ({
Download: { type: 'command', title: 'Download', onAction: vi.fn() },
Delete: { type: 'command', title: 'Delete', onAction: vi.fn() },
@@ -1,7 +1,7 @@
import { MemoryType, type MemoryResponseDto } from '@immich/sdk';
import { cleanup, fireEvent, render } from '@testing-library/svelte';
import { tick } from 'svelte';
import { assetFactory } from '@test-data/factories/asset-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import MemoriesLane from './__test__/MemoriesLaneHarness.svelte';
const date = '2026-10-18';
@@ -1,9 +1,9 @@
<script lang="ts">
import MemoryCard from '$lib/components/memories/MemoryCard.svelte';
import { Route } from '$lib/route';
import { getAssetMediaUrl, memoryLaneTitle } from '$lib/utils';
import { getAltText } from '$lib/utils/thumbnail-util';
import { toTimelineAsset } from '$lib/utils/timeline-util';
import MemoryCard from '#lib/components/memories/MemoryCard.svelte';
import { Route } from '#lib/route.ts';
import { getAssetMediaUrl, memoryLaneTitle } from '#lib/utils.ts';
import { getAltText } from '#lib/utils/thumbnail-util.ts';
import { toTimelineAsset } from '#lib/utils/timeline-util.ts';
import { MemoryType, type MemoryResponseDto } from '@immich/sdk';
import { IconButton } from '@immich/ui';
import { mdiChevronLeft, mdiChevronRight, mdiPause, mdiPlay } from '@mdi/js';
@@ -1,5 +1,5 @@
<script lang="ts">
import MemoriesLane from '$lib/components/memories/MemoriesLane.svelte';
import MemoriesLane from '#lib/components/memories/MemoriesLane.svelte';
import { TooltipProvider } from '@immich/ui';
import type { ComponentProps } from 'svelte';
@@ -5,7 +5,7 @@ import {
} from '#lib/components/shared-components/album-selection/album-selection-utils.ts';
import { AlbumSortBy, SortOrder } from '#lib/stores/preferences.store.ts';
import type { AlbumResponseDto } from '@immich/sdk';
import { albumFactory } from '#test-data/factories/album-factory';
import { albumFactory } from '#test-data/factories/album-factory.ts';
// Some helper functions to make tests below more readable
const createNewAlbumRow = (selected: boolean) => ({
@@ -46,7 +46,7 @@
Popup,
ScaleControl,
} from 'svelte-maplibre';
import type { SelectionBBox } from './types';
import type { SelectionBBox } from './types.ts';
import { createPreloadedQuery } from '#lib/queries/client.ts';
import { getPublicConfigQuery } from '#lib/queries/config-public.query.ts';
@@ -10,7 +10,7 @@
import { t } from 'svelte-i18n';
import SearchFilters from './SearchFilters.svelte';
import { searchManager } from '#lib/managers/search-manager.svelte.ts';
import { getSearchTypePlaceholder, isPopoverContent } from './search-bar-utils';
import { getSearchTypePlaceholder, isPopoverContent } from './search-bar-utils.ts';
type Props = {
grayTheme: boolean;
@@ -1,5 +1,5 @@
<script lang="ts">
import { getSearchDatePreset, SearchDatePreset } from './search-bar-utils';
import { getSearchDatePreset, SearchDatePreset } from './search-bar-utils.ts';
import { DatePicker, Text } from '@immich/ui';
import { DateTime } from 'luxon';
import { t } from 'svelte-i18n';
@@ -34,7 +34,7 @@
getSearchPlacesTitle,
getSearchTagsTitle,
getSearchTypeTitle,
} from './search-bar-utils';
} from './search-bar-utils.ts';
import { onMount } from 'svelte';
import { searchManager } from '#lib/managers/search-manager.svelte.ts';
import SearchButton from './SearchButton.svelte';
@@ -1,6 +1,6 @@
<script lang="ts">
import ImageThumbnail from '#lib/components/assets/thumbnail/ImageThumbnail.svelte';
import { getPeople, getSearchPeopleTitle } from './search-bar-utils';
import { getPeople, getSearchPeopleTitle } from './search-bar-utils.ts';
import SingleGridRow from '#lib/components/shared-components/SingleGridRow.svelte';
import SearchBar from '#lib/elements/SearchBar.svelte';
import { getPeopleThumbnailUrl } from '#lib/utils.ts';
@@ -7,8 +7,8 @@ import type { TagResponseDto } from '@immich/sdk';
import '@testing-library/jest-dom';
import { render, screen } from '@testing-library/svelte';
import userEvent from '@testing-library/user-event';
import { preferencesFactory } from '#test-data/factories/preferences-factory';
import { userAdminFactory } from '#test-data/factories/user-factory';
import { preferencesFactory } from '#test-data/factories/preferences-factory.ts';
import { userAdminFactory } from '#test-data/factories/user-factory.ts';
const tag = (id: string, value: string): TagResponseDto => ({
id,
@@ -8,7 +8,7 @@
import { SvelteSet } from 'svelte/reactivity';
import { mdiClose } from '@mdi/js';
import SearchButton from './SearchButton.svelte';
import { getSearchTagsTitle } from './search-bar-utils';
import { getSearchTagsTitle } from './search-bar-utils.ts';
import { searchManager } from '#lib/managers/search-manager.svelte.ts';
interface Props {
@@ -1,5 +1,5 @@
<script lang="ts">
import { getSearchTypeTitle } from './search-bar-utils';
import { getSearchTypeTitle } from './search-bar-utils.ts';
import SearchButton from './SearchButton.svelte';
import { searchManager } from '#lib/managers/search-manager.svelte.ts';
import { Text } from '@immich/ui';
@@ -1,7 +1,7 @@
import { sdkMock } from '#lib/__mocks__/sdk.mock.ts';
import RecentAlbums from '#lib/components/shared-components/side-bar/RecentAlbums.svelte';
import { render, screen } from '@testing-library/svelte';
import { albumFactory } from '#test-data/factories/album-factory';
import { albumFactory } from '#test-data/factories/album-factory.ts';
describe('RecentAlbums component', () => {
it('sorts albums by most recently updated', async () => {
@@ -1,5 +1,5 @@
import SideBarSection from '#lib/components/sidebar/Sidebar.svelte';
import { sidebarStore } from '#lib/stores/sidebar.svelte.js';
import { sidebarStore } from '#lib/stores/sidebar.svelte.ts';
import { fireEvent, render, screen } from '@testing-library/svelte';
import { vi } from 'vitest';
@@ -11,11 +11,11 @@ const mocks = vi.hoisted(() => {
};
});
vi.mock('#lib/stores/media-query-manager.svelte.js', () => ({
vi.mock('#lib/stores/media-query-manager.svelte.ts', () => ({
mediaQueryManager: mocks.mediaQueryManager,
}));
vi.mock('#lib/stores/sidebar.svelte.js', () => ({
vi.mock('#lib/stores/sidebar.svelte.ts', () => ({
sidebarStore: {
isOpen: false,
reset: vi.fn(),
@@ -1,9 +1,9 @@
import { AssetMultiSelectManager } from '#lib/managers/asset-multi-select-manager.svelte.ts';
import { authManager } from '#lib/managers/auth-manager.svelte.ts';
import { AssetVisibility } from '@immich/sdk';
import { timelineAssetFactory } from '#test-data/factories/asset-factory';
import { preferencesFactory } from '#test-data/factories/preferences-factory';
import { userAdminFactory } from '#test-data/factories/user-factory';
import { timelineAssetFactory } from '#test-data/factories/asset-factory.ts';
import { preferencesFactory } from '#test-data/factories/preferences-factory.ts';
import { userAdminFactory } from '#test-data/factories/user-factory.ts';
describe('AssetMultiSelectManager', () => {
let sut: AssetMultiSelectManager;
@@ -1,8 +1,8 @@
import { setDifference, type TimelineDate } from '#lib/utils/timeline-util.ts';
import { AssetOrder } from '@immich/sdk';
import type { TimelineDay } from './timeline-day.svelte';
import type { TimelineMonth } from './timeline-month.svelte';
import type { TimelineAsset } from './types';
import type { TimelineDay } from './timeline-day.svelte.ts';
import type { TimelineMonth } from './timeline-month.svelte.ts';
import type { TimelineAsset } from './types.ts';
export class GroupInsertionCache {
#lookupCache: {
@@ -1,6 +1,6 @@
import { TUNABLES } from '#lib/utils/tunables.ts';
import { TimelineManager } from '../timeline-manager.svelte';
import type { TimelineMonth } from '../timeline-month.svelte';
import { TimelineManager } from '../timeline-manager.svelte.ts';
import type { TimelineMonth } from '../timeline-month.svelte.ts';
const {
TIMELINE: { INTERSECTION_EXPAND_TOP, INTERSECTION_EXPAND_BOTTOM },
@@ -1,6 +1,6 @@
import { TimelineManager } from '../timeline-manager.svelte';
import type { TimelineMonth } from '../timeline-month.svelte';
import type { UpdateGeometryOptions } from '../types';
import { TimelineManager } from '../timeline-manager.svelte.ts';
import type { TimelineMonth } from '../timeline-month.svelte.ts';
import type { UpdateGeometryOptions } from '../types.ts';
export function updateGeometry(timelineManager: TimelineManager, month: TimelineMonth, options: UpdateGeometryOptions) {
const { invalidateHeight, noDefer = false } = options;
@@ -1,9 +1,9 @@
import { authManager } from '#lib/managers/auth-manager.svelte.ts';
import { toISOYearMonthUTC } from '#lib/utils/timeline-util.ts';
import { getTimeBucket } from '@immich/sdk';
import { TimelineManager } from '../timeline-manager.svelte';
import type { TimelineMonth } from '../timeline-month.svelte';
import type { TimelineManagerOptions } from '../types';
import { TimelineManager } from '../timeline-manager.svelte.ts';
import type { TimelineMonth } from '../timeline-month.svelte.ts';
import type { TimelineManagerOptions } from '../types.ts';
export async function loadFromTimeBuckets(
timelineManager: TimelineManager,
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest';
import type { TimelineMonth } from '../timeline-month.svelte';
import { findClosestTimelineMonthForDate } from './search-support.svelte';
import type { TimelineMonth } from '../timeline-month.svelte.ts';
import { findClosestTimelineMonthForDate } from './search-support.svelte.ts';
function createMockTimelineMonth(year: number, month: number): TimelineMonth {
return {
@@ -1,9 +1,9 @@
import { getOrderingDate, plainDateTimeCompare, type TimelineYearMonth } from '#lib/utils/timeline-util.ts';
import { AssetOrder, AssetOrderBy, type AssetResponseDto } from '@immich/sdk';
import { DateTime } from 'luxon';
import { TimelineManager } from '../timeline-manager.svelte';
import type { TimelineMonth } from '../timeline-month.svelte';
import type { AssetDescriptor, Direction, TimelineAsset } from '../types';
import { TimelineManager } from '../timeline-manager.svelte.ts';
import type { TimelineMonth } from '../timeline-month.svelte.ts';
import type { AssetDescriptor, Direction, TimelineAsset } from '../types.ts';
export async function getAssetWithOffset(
timelineManager: TimelineManager,
@@ -4,9 +4,9 @@ import { getOrderingDate, plainDateTimeCompare } from '#lib/utils/timeline-util.
import { TUNABLES } from '#lib/utils/tunables.ts';
import { AssetOrder, AssetOrderBy } from '@immich/sdk';
import { SvelteSet } from 'svelte/reactivity';
import type { TimelineMonth } from './timeline-month.svelte';
import type { Direction, MoveAsset, TimelineAsset } from './types';
import { ViewerAsset } from './viewer-asset.svelte';
import type { TimelineMonth } from './timeline-month.svelte.ts';
import type { Direction, MoveAsset, TimelineAsset } from './types.ts';
import { ViewerAsset } from './viewer-asset.svelte.ts';
const {
TIMELINE: { INTERSECTION_EXPAND_TOP, INTERSECTION_EXPAND_BOTTOM },
@@ -5,9 +5,9 @@ import { AbortError } from '#lib/utils.ts';
import { fromISODateTimeUTCToObject } from '#lib/utils/timeline-util.ts';
import { AssetOrderBy, AssetVisibility, type AssetResponseDto, type TimeBucketAssetResponseDto } from '@immich/sdk';
import { tick } from 'svelte';
import { assetFactory, timelineAssetFactory, toResponseDto } from '#test-data/factories/asset-factory';
import { TimelineManager } from './timeline-manager.svelte';
import type { TimelineAsset } from './types';
import { assetFactory, timelineAssetFactory, toResponseDto } from '#test-data/factories/asset-factory.ts';
import { TimelineManager } from './timeline-manager.svelte.ts';
import type { TimelineAsset } from './types.ts';
async function getAssets(timelineManager: TimelineManager) {
const assets = [];
@@ -35,9 +35,9 @@ import {
} from '@immich/sdk';
import { clamp, isEqual } from 'lodash-es';
import { SvelteDate, SvelteSet } from 'svelte/reactivity';
import { isMismatched, updateObject } from './internal/utils.svelte';
import { TimelineDay } from './timeline-day.svelte';
import { TimelineMonth } from './timeline-month.svelte';
import { isMismatched, updateObject } from './internal/utils.svelte.ts';
import { TimelineDay } from './timeline-day.svelte.ts';
import { TimelineMonth } from './timeline-month.svelte.ts';
import type {
AssetDescriptor,
Direction,
@@ -46,7 +46,7 @@ import type {
TimelineAsset,
TimelineManagerOptions,
Viewport,
} from './types';
} from './types.ts';
type ViewportTopMonthIntersection = {
month: TimelineMonth | undefined;
@@ -22,11 +22,11 @@ import { AssetOrder, AssetOrderBy, type TimeBucketAssetResponseDto } from '@immi
import { t } from 'svelte-i18n';
import { SvelteSet } from 'svelte/reactivity';
import { get } from 'svelte/store';
import { GroupInsertionCache } from './group-insertion-cache.svelte';
import { TimelineDay } from './timeline-day.svelte';
import type { TimelineManager } from './timeline-manager.svelte';
import type { AssetDescriptor, Direction, MoveAsset, TimelineAsset } from './types';
import { ViewerAsset } from './viewer-asset.svelte';
import { GroupInsertionCache } from './group-insertion-cache.svelte.ts';
import { TimelineDay } from './timeline-day.svelte.ts';
import type { TimelineManager } from './timeline-manager.svelte.ts';
import type { AssetDescriptor, Direction, MoveAsset, TimelineAsset } from './types.ts';
import { ViewerAsset } from './viewer-asset.svelte.ts';
export class TimelineMonth {
#viewportProximity: ViewportProximity = $state(ViewportProximity.FarFromViewport);
@@ -1,4 +1,4 @@
import type { TimelineAsset } from './types';
import type { TimelineAsset } from './types.ts';
export const assetsSnapshot = (assets: TimelineAsset[]) => assets.map((asset) => $state.snapshot(asset));
@@ -1,5 +1,5 @@
import type { CommonPosition } from '#lib/utils/layout-utils.ts';
import type { TimelineAsset } from './types';
import type { TimelineAsset } from './types.ts';
export class ViewerAsset {
position: CommonPosition | undefined = $state.raw();
@@ -7,7 +7,7 @@ import { calcNewDate } from '#lib/modals/timezone-utils.ts';
import { fireEvent, render, screen, waitFor } from '@testing-library/svelte';
import userEvent from '@testing-library/user-event';
import { DateTime } from 'luxon';
import { userAdminFactory } from '#test-data/factories/user-factory';
import { userAdminFactory } from '#test-data/factories/user-factory.ts';
import AssetSelectionChangeDateModal from './AssetSelectionChangeDateModal.svelte';
describe('DateSelectionModal component', () => {
@@ -7,7 +7,7 @@
SlideshowNavigation,
SlideshowState,
slideshowStore,
} from '../stores/slideshow.store';
} from '../stores/slideshow.store.ts';
const {
slideshowDelay,
@@ -7,22 +7,22 @@ import {
type AdminConfigDto,
type LibraryResponseDto,
} from '@immich/sdk';
import { eventManager } from '$lib/managers/event-manager.svelte';
import { executeMutation, queryClient } from '$lib/queries/client';
import { getAdminConfigQuery, updateAdminConfigMutation } from '$lib/queries/config-admin.query';
import { getPublicConfigQuery } from '$lib/queries/config-public.query';
import { eventManager } from '#lib/managers/event-manager.svelte.ts';
import { executeMutation, queryClient } from '#lib/queries/client.ts';
import { getAdminConfigQuery, updateAdminConfigMutation } from '#lib/queries/config-admin.query.ts';
import { getPublicConfigQuery } from '#lib/queries/config-public.query.ts';
import {
deleteLibraryMutation,
getAllLibrariesQuery,
getLibraryStatisticsQuery,
updateLibraryMutation,
} from '$lib/queries/library.query';
import { getServerConfigQuery, getStorageQuery } from '$lib/queries/server.query';
import { handleError } from '$lib/utils/handle-error';
} from '#lib/queries/library.query.ts';
import { getServerConfigQuery, getStorageQuery } from '#lib/queries/server-info.query.ts';
import { handleError } from '#lib/utils/handle-error.ts';
vi.mock('@immich/ui', () => ({ toastManager: { primary: vi.fn(), info: vi.fn() } }));
vi.mock('$lib/utils/handle-error', () => ({ handleError: vi.fn() }));
vi.mock('$lib/utils/i18n', () => ({ getFormatter: () => Promise.resolve((key: string) => key) }));
vi.mock('#lib/utils/handle-error.ts', () => ({ handleError: vi.fn() }));
vi.mock('#lib/utils/i18n.ts', () => ({ getFormatter: () => Promise.resolve((key: string) => key) }));
vi.mock('@immich/sdk', () => ({
createLibrary: vi.fn(),
deleteLibrary: vi.fn(),
+7 -7
View File
@@ -7,8 +7,8 @@ import {
type UserAdminResponseDto,
} from '@immich/sdk';
import { QueryObserver } from '@tanstack/svelte-query';
import { eventManager } from '$lib/managers/event-manager.svelte';
import { executeMutation, queryClient } from '$lib/queries/client';
import { eventManager } from '#lib/managers/event-manager.svelte.ts';
import { executeMutation, queryClient } from '#lib/queries/client.ts';
import {
createUserAdminMutation,
deleteUserAdminMutation,
@@ -16,13 +16,13 @@ import {
restoreUserAdminMutation,
searchUsersAdminQuery,
updateUserAdminMutation,
} from '$lib/queries/user-admin.query';
import { handleError } from '$lib/utils/handle-error';
} from '#lib/queries/user-admin.query.ts';
import { handleError } from '#lib/utils/handle-error.ts';
vi.mock('$lib', () => ({ getHeatmapRange: vi.fn() }));
vi.mock('#lib', () => ({ getHeatmapRange: vi.fn() }));
vi.mock('@immich/ui', () => ({ toastManager: { primary: vi.fn(), info: vi.fn() } }));
vi.mock('$lib/utils/handle-error', () => ({ handleError: vi.fn() }));
vi.mock('$lib/utils/i18n', () => ({ getFormatter: () => Promise.resolve((key: string) => key) }));
vi.mock('#lib/utils/handle-error.ts', () => ({ handleError: vi.fn() }));
vi.mock('#lib/utils/i18n.ts', () => ({ getFormatter: () => Promise.resolve((key: string) => key) }));
vi.mock('@immich/sdk', () => ({
CalendarHeatmapType: { Upload: 'upload' },
createUserAdmin: vi.fn(),
+7 -7
View File
@@ -7,10 +7,10 @@ import { getFormatter } from '#lib/utils/i18n.ts';
import { getAssetInfo, type UserConfigDto } from '@immich/sdk';
import { toastManager } from '@immich/ui';
import { vitest } from 'vitest';
import { assetFactory } from '#test-data/factories/asset-factory';
import { preferencesFactory } from '#test-data/factories/preferences-factory';
import { sharedLinkFactory } from '#test-data/factories/shared-link-factory';
import { userAdminFactory } from '#test-data/factories/user-factory';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import { preferencesFactory } from '#test-data/factories/preferences-factory.ts';
import { sharedLinkFactory } from '#test-data/factories/shared-link-factory.ts';
import { userAdminFactory } from '#test-data/factories/user-factory.ts';
vitest.mock('@immich/ui', () => ({
toastManager: {
@@ -18,15 +18,15 @@ vitest.mock('@immich/ui', () => ({
},
}));
vitest.mock('#lib/utils/i18n.js', () => ({
vitest.mock('#lib/utils/i18n.ts', () => ({
getFormatter: vitest.fn(),
getPreferredLocale: vitest.fn(),
}));
vitest.mock('@immich/sdk');
vitest.mock('#lib/utils.js', async () => {
const originalModule = await vitest.importActual('#lib/utils.js');
vitest.mock('#lib/utils.ts', async () => {
const originalModule = await vitest.importActual('#lib/utils.ts');
return {
...originalModule,
sleep: vitest.fn(),
@@ -1,7 +1,7 @@
import { asUrl } from '#lib/services/shared-link.service.ts';
import { sharedLinkFactory } from '#test-data/factories/shared-link-factory';
import { sharedLinkFactory } from '#test-data/factories/shared-link-factory.ts';
vi.mock(import('#lib/queries/client.js'), async (importOriginal) => ({
vi.mock(import('#lib/queries/client.ts'), async (importOriginal) => ({
...(await importOriginal()),
readPreloadedQuery: vi.fn().mockReturnValue({ server: { externalDomain: 'http://localhost:2283' } }),
}));
@@ -1,20 +1,20 @@
import { UserStatus, type UserAdminResponseDto } from '@immich/sdk';
import type { MessageFormatter } from 'svelte-i18n';
import { getUserAdminActions } from '$lib/services/user-admin.service';
import { getUserAdminActions } from '#lib/services/user-admin.service.ts';
vi.mock('$app/navigation', () => ({ goto: vi.fn() }));
vi.mock('@immich/ui', () => ({ modalManager: { show: vi.fn(), showDialog: vi.fn() } }));
vi.mock('$lib/managers/auth-manager.svelte', () => ({ authManager: { user: { id: 'self' } } }));
vi.mock('$lib/modals/PasswordResetSuccessModal.svelte', () => ({ default: {} }));
vi.mock('$lib/modals/UserDeleteConfirmModal.svelte', () => ({ default: {} }));
vi.mock('$lib/modals/UserRestoreConfirmModal.svelte', () => ({ default: {} }));
vi.mock('$lib/queries/client', () => ({
vi.mock('#lib/managers/auth-manager.svelte.ts', () => ({ authManager: { user: { id: 'self' } } }));
vi.mock('#lib/modals/PasswordResetSuccessModal.svelte', () => ({ default: {} }));
vi.mock('#lib/modals/UserDeleteConfirmModal.svelte', () => ({ default: {} }));
vi.mock('#lib/modals/UserRestoreConfirmModal.svelte', () => ({ default: {} }));
vi.mock('#lib/queries/client.ts', () => ({
executeMutation: vi.fn(),
readPreloadedQuery: () => ({ user: { deleteDelay: 7 } }),
}));
vi.mock('$lib/queries/user-admin.query', () => ({ updateUserAdminMutation: vi.fn() }));
vi.mock('$lib/route', () => ({ Route: { newUser: vi.fn(), viewUser: vi.fn(), editUser: vi.fn() } }));
vi.mock('$lib/utils/i18n', () => ({ getFormatter: vi.fn() }));
vi.mock('#lib/queries/user-admin.query.ts', () => ({ updateUserAdminMutation: vi.fn() }));
vi.mock('#lib/route.ts', () => ({ Route: { newUser: vi.fn(), viewUser: vi.fn(), editUser: vi.fn() } }));
vi.mock('#lib/utils/i18n.ts', () => ({ getFormatter: vi.fn() }));
describe('admin actions for active and deleted accounts', () => {
it('does not format a deletion date for an active account', () => {
@@ -1,5 +1,5 @@
<script lang="ts">
import { BaseEventManager } from '$lib/utils/base-event-manager.svelte';
import { BaseEventManager } from '#lib/utils/base-event-manager.svelte.ts';
import EventSubscriber from './EventSubscriber.svelte';
const manager = new BaseEventManager<{ update: [] }>();
@@ -1,6 +1,6 @@
<script lang="ts">
import { onDestroy } from 'svelte';
import type { BaseEventManager } from '$lib/utils/base-event-manager.svelte';
import type { BaseEventManager } from '#lib/utils/base-event-manager.svelte.ts';
const { manager }: { manager: BaseEventManager<{ update: [] }> } = $props();
let received = $state(0);
+1 -1
View File
@@ -4,7 +4,7 @@ import { AssetVisibility, deleteAssets as deleteBulk, restoreAssets, type StackR
import { toastManager } from '@immich/ui';
import { t } from 'svelte-i18n';
import { get } from 'svelte/store';
import { handleError } from './handle-error';
import { handleError } from './handle-error.ts';
export type OnDelete = (assetIds: string[]) => void;
export type OnUndoDelete = (assets: TimelineAsset[]) => void;
@@ -1,7 +1,7 @@
import { AdaptiveImageLoader, type QualityList } from '#lib/utils/adaptive-image-loader.svelte.ts';
import { cancelImageUrl } from '#lib/utils/sw-messaging.ts';
vi.mock('#lib/utils/sw-messaging.js', () => ({
vi.mock('#lib/utils/sw-messaging.ts', () => ({
cancelImageUrl: vi.fn(),
}));
+1 -1
View File
@@ -1,4 +1,4 @@
import { checkWebUpdate } from './app-update';
import { checkWebUpdate } from './app-update.ts';
describe('web update checking', () => {
it.each([
+1 -1
View File
@@ -1,5 +1,5 @@
import { AssetVisibility, updateAsset, type AssetResponseDto } from '@immich/sdk';
import { canCopyImageToClipboard, getAssetFilename, getFilenameExtension, toggleArchive } from './asset-utils';
import { canCopyImageToClipboard, getAssetFilename, getFilenameExtension, toggleArchive } from './asset-utils.ts';
vi.mock('@immich/sdk', async (importOriginal) => {
const actual = await importOriginal<typeof import('@immich/sdk')>();
+1 -1
View File
@@ -27,7 +27,7 @@ import { toastManager } from '@immich/ui';
import { DateTime } from 'luxon';
import { t } from 'svelte-i18n';
import { get } from 'svelte/store';
import { handleError } from './handle-error';
import { handleError } from './handle-error.ts';
export const removeTag = async ({
assetIds,
+2 -2
View File
@@ -1,7 +1,7 @@
import { locale } from '#lib/stores/preferences.store.ts';
import { getAlbumDateRange, getShortDateRange } from './date-time';
import { getAlbumDateRange, getShortDateRange } from './date-time.ts';
vitest.mock('#lib/stores/preferences.store.js', { spy: true });
vitest.mock('#lib/stores/preferences.store.ts', { spy: true });
describe('getShortDateRange', () => {
beforeEach(() => {
+2 -2
View File
@@ -6,8 +6,8 @@ import * as utils from '#lib/utils.ts';
import { AssetMediaStatus, type AssetMediaResponseDto, type UserAdminResponseDto } from '@immich/sdk';
import { get } from 'svelte/store';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { preferencesFactory } from '#test-data/factories/preferences-factory';
import { fileUploadHandler } from './file-uploader';
import { preferencesFactory } from '#test-data/factories/preferences-factory.ts';
import { fileUploadHandler } from './file-uploader.ts';
describe('fileUploader error handling', () => {
const mockFile = new File(['content'], 'test.jpg', { type: 'image/jpeg' });
+1 -1
View File
@@ -19,7 +19,7 @@ import { toastManager } from '@immich/ui';
import { tick } from 'svelte';
import { t } from 'svelte-i18n';
import { get } from 'svelte/store';
import { handleError } from './handle-error';
import { handleError } from './handle-error.ts';
export const uploadExecutionQueue = new ExecutorQueue({ concurrency: 2 });
+1 -1
View File
@@ -1,5 +1,5 @@
import type { PersonResponseDto } from '@immich/sdk';
import { searchNameLocal } from './person';
import { searchNameLocal } from './person.ts';
const makePerson = (overrides: Partial<PersonResponseDto> = {}): PersonResponseDto => ({
id: 'person-1',
+1 -1
View File
@@ -1,7 +1,7 @@
import type { PersonResponseDto } from '@immich/sdk';
import { t } from 'svelte-i18n';
import { derived } from 'svelte/store';
import { normalizeSearchString } from './string-utils';
import { normalizeSearchString } from './string-utils.ts';
export const searchNameLocal = (
name: string,
+1 -1
View File
@@ -1,4 +1,4 @@
import { ServiceWorkerMessenger } from './sw-messenger';
import { ServiceWorkerMessenger } from './sw-messenger.ts';
const hasServiceWorker = globalThis.isSecureContext && 'serviceWorker' in navigator;
const messenger = hasServiceWorker ? new ServiceWorkerMessenger(navigator.serviceWorker) : undefined;
+1 -1
View File
@@ -3,7 +3,7 @@ import { getAltText } from '#lib/utils/thumbnail-util.ts';
import { AssetVisibility } from '@immich/sdk';
import { init, register, waitLocale } from 'svelte-i18n';
import { get } from 'svelte/store';
import { locale } from '$lib/stores/preferences.store';
import { locale } from '#lib/stores/preferences.store.ts';
interface Person {
name: string;
+5 -5
View File
@@ -8,19 +8,19 @@ describe('hashFile', () => {
});
it('hashFileJs produces the correct SHA-1 hex digest', async () => {
const { hashFileJs } = await import('./hash-file');
const { hashFileJs } = await import('./hash-file.ts');
const file = new File([content], 'a.txt');
await expect(hashFileJs(file)).resolves.toBe(knownSha1Hex);
});
it('hashFileWasm produces the correct SHA-1 hex digest', async () => {
const { hashFileWasm } = await import('./hash-file');
const { hashFileWasm } = await import('./hash-file.ts');
const file = new File([content], 'a.txt');
await expect(hashFileWasm(file)).resolves.toBe(knownSha1Hex);
});
it('hashFileWasm and hashFileJs produce identical output for the same input', async () => {
const { hashFileWasm, hashFileJs } = await import('./hash-file');
const { hashFileWasm, hashFileJs } = await import('./hash-file.ts');
for (const size of [0, 1, 1024, 10_000]) {
const file = new File([new Uint8Array(size)], 'x.bin');
const [wasmHash, jsHash] = await Promise.all([hashFileWasm(file), hashFileJs(file)]);
@@ -34,13 +34,13 @@ describe('hashFile', () => {
}));
vi.resetModules();
const { hashFile } = await import('./hash-file');
const { hashFile } = await import('./hash-file.ts');
const file = new File([content], 'a.txt');
await expect(hashFile(file)).resolves.toBe(knownSha1Hex);
});
it('uses the WASM path when available and matches the JS output', async () => {
const { hashFile } = await import('./hash-file');
const { hashFile } = await import('./hash-file.ts');
const file = new File([content], 'a.txt');
await expect(hashFile(file)).resolves.toBe(knownSha1Hex);
});
@@ -3,11 +3,11 @@ import { render } from '@testing-library/svelte';
import userEvent from '@testing-library/user-event';
import type { ComponentProps } from 'svelte';
import { vi } from 'vitest';
import { personFactory } from '#test-data/factories/person-factory';
import { personFactory } from '#test-data/factories/person-factory.ts';
import ManagePeoplePage from './+page.svelte';
import ManagePeoplePageTestWrapper from './ManagePeopleVisibility.test-wrapper.svelte';
vi.mock(import('#lib/managers/feature-flags-manager.svelte.js'), function () {
vi.mock(import('#lib/managers/feature-flags-manager.svelte.ts'), function () {
return {
featureFlagsManager: { init: vi.fn(), loadFeatureFlags: vi.fn(), value: {} } as never,
};
@@ -1,31 +1,30 @@
<script lang="ts">
import ActionMenuItem from '$lib/components/ActionMenuItem.svelte';
import UserPageLayout from '$lib/components/layouts/UserPageLayout.svelte';
import MemoriesLane from '$lib/components/memories/MemoriesLane.svelte';
import ButtonContextMenu from '$lib/components/shared-components/context-menu/ButtonContextMenu.svelte';
import EmptyPlaceholder from '$lib/components/shared-components/EmptyPlaceholder.svelte';
import ArchiveAction from '$lib/components/timeline/actions/ArchiveAction.svelte';
import ChangeDate from '$lib/components/timeline/actions/ChangeDateAction.svelte';
import ChangeDescription from '$lib/components/timeline/actions/ChangeDescriptionAction.svelte';
import ChangeLocation from '$lib/components/timeline/actions/ChangeLocationAction.svelte';
import DeleteAssets from '$lib/components/timeline/actions/DeleteAssetsAction.svelte';
import DownloadAction from '$lib/components/timeline/actions/DownloadAction.svelte';
import FavoriteAction from '$lib/components/timeline/actions/FavoriteAction.svelte';
import LinkLivePhotoAction from '$lib/components/timeline/actions/LinkLivePhotoAction.svelte';
import SelectAllAssets from '$lib/components/timeline/actions/SelectAllAction.svelte';
import SetVisibilityAction from '$lib/components/timeline/actions/SetVisibilityAction.svelte';
import AssetSelectControlBar from '$lib/components/timeline/AssetSelectControlBar.svelte';
import Timeline from '$lib/components/timeline/Timeline.svelte';
import { AssetAction } from '$lib/constants';
import { assetMultiSelectManager } from '$lib/managers/asset-multi-select-manager.svelte';
import { assetViewerManager } from '$lib/managers/asset-viewer-manager.svelte';
import { authManager } from '$lib/managers/auth-manager.svelte';
import { memoryManager } from '$lib/managers/memory-manager.svelte';
import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte';
import { getAssetBulkActions } from '$lib/services/asset.service';
import { getStackBulkActions } from '$lib/services/stack.service';
import { type OnLink, type OnUnlink } from '$lib/utils/actions';
import { openFileUploadDialog } from '$lib/utils/file-uploader';
import ActionMenuItem from '#lib/components/ActionMenuItem.svelte';
import UserPageLayout from '#lib/components/layouts/UserPageLayout.svelte';
import MemoriesLane from '#lib/components/memories/MemoriesLane.svelte';
import ButtonContextMenu from '#lib/components/shared-components/context-menu/ButtonContextMenu.svelte';
import EmptyPlaceholder from '#lib/components/shared-components/EmptyPlaceholder.svelte';
import ChangeDate from '#lib/components/timeline/actions/ChangeDateAction.svelte';
import ChangeDescription from '#lib/components/timeline/actions/ChangeDescriptionAction.svelte';
import ChangeLocation from '#lib/components/timeline/actions/ChangeLocationAction.svelte';
import DeleteAssets from '#lib/components/timeline/actions/DeleteAssetsAction.svelte';
import DownloadAction from '#lib/components/timeline/actions/DownloadAction.svelte';
import FavoriteAction from '#lib/components/timeline/actions/FavoriteAction.svelte';
import LinkLivePhotoAction from '#lib/components/timeline/actions/LinkLivePhotoAction.svelte';
import SelectAllAssets from '#lib/components/timeline/actions/SelectAllAction.svelte';
import SetVisibilityAction from '#lib/components/timeline/actions/SetVisibilityAction.svelte';
import AssetSelectControlBar from '#lib/components/timeline/AssetSelectControlBar.svelte';
import Timeline from '#lib/components/timeline/Timeline.svelte';
import { AssetAction } from '#lib/constants.ts';
import { assetMultiSelectManager } from '#lib/managers/asset-multi-select-manager.svelte.ts';
import { assetViewerManager } from '#lib/managers/asset-viewer-manager.svelte.ts';
import { authManager } from '#lib/managers/auth-manager.svelte.ts';
import { memoryManager } from '#lib/managers/memory-manager.svelte.ts';
import { TimelineManager } from '#lib/managers/timeline-manager/timeline-manager.svelte.ts';
import { getAssetBulkActions } from '#lib/services/asset.service.ts';
import { getStackBulkActions } from '#lib/services/stack.service.ts';
import { type OnLink, type OnUnlink } from '#lib/utils/actions.ts';
import { openFileUploadDialog } from '#lib/utils/file-uploader.ts';
import { AssetVisibility } from '@immich/sdk';
import { ActionButton, CommandPaletteDefaultProvider } from '@immich/ui';
import { mdiDotsVertical } from '@mdi/js';
@@ -1,11 +1,11 @@
import { getAssetMediaUrl } from '#lib/utils.ts';
import { render, screen } from '@testing-library/svelte';
import { albumFactory } from '#test-data/factories/album-factory';
import { assetFactory } from '#test-data/factories/asset-factory';
import { sharedLinkFactory } from '#test-data/factories/shared-link-factory';
import { albumFactory } from '#test-data/factories/album-factory.ts';
import { assetFactory } from '#test-data/factories/asset-factory.ts';
import { sharedLinkFactory } from '#test-data/factories/shared-link-factory.ts';
import ShareCover from './ShareCover.svelte';
vi.mock('#lib/utils.js');
vi.mock('#lib/utils.ts');
describe('ShareCover component', () => {
it('renders an image when the shared link is an album', () => {
@@ -1,6 +1,6 @@
<script lang="ts">
import { version } from '$app/environment';
import { checkWebUpdate } from '$lib/utils/app-update';
import { version } from '$app/env';
import { checkWebUpdate } from '#lib/utils/app-update.ts';
import { Button } from '@immich/ui';
import { t } from 'svelte-i18n';
+2 -2
View File
@@ -1,5 +1,5 @@
import { installMessageListener } from './messaging';
import { handleFetch as handleAssetFetch } from './request';
import { installMessageListener } from './messaging.ts';
import { handleFetch as handleAssetFetch } from './request.ts';
const ASSET_REQUEST_REGEX = /^\/api\/assets\/[a-f0-9-]+\/(original|thumbnail)/;
+1 -1
View File
@@ -1,5 +1,5 @@
/* eslint-disable unicorn/no-unnecessary-global-this */
import { handleCancel } from './request';
import { handleCancel } from './request.ts';
const sw = globalThis as unknown as ServiceWorkerGlobalScope;
+1
View File
@@ -3,6 +3,7 @@
"module": "es2022",
"noImplicitOverride": true,
"paths": {
"chromecast-caf-sender": ["./node_modules/@types/chromecast-caf-sender/index.d.ts"],
"#i18n/*": ["../i18n/*"],
"#test-data/*": ["./src/test-data/*"],
"#tests/*": ["./src/../tests/*"]
-4
View File
@@ -107,10 +107,6 @@ export default defineConfig({
handler(warning);
},
// TODO remove as this way of doing it is deprecated
alias: {
'chromecast-caf-sender': './node_modules/@types/chromecast-caf-sender/index.d.ts',
},
}),
cspManifest(),