diff --git a/.gitignore b/.gitignore
index bfd2f1c..ee6eb2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,31 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
node_modules/
+dist
dist/
-.superpowers/
-.DS_Store
+dist-ssr
*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# Project-specific
+.superpowers/
*.tsbuildinfo
GITEA_API.md
diff --git a/.secrets.baseline b/.secrets.baseline
new file mode 100644
index 0000000..3dbe0da
--- /dev/null
+++ b/.secrets.baseline
@@ -0,0 +1,865 @@
+{
+ "version": "1.5.0",
+ "plugins_used": [
+ {
+ "name": "ArtifactoryDetector"
+ },
+ {
+ "name": "AWSKeyDetector"
+ },
+ {
+ "name": "AzureStorageKeyDetector"
+ },
+ {
+ "name": "Base64HighEntropyString",
+ "limit": 4.5
+ },
+ {
+ "name": "BasicAuthDetector"
+ },
+ {
+ "name": "CloudantDetector"
+ },
+ {
+ "name": "DiscordBotTokenDetector"
+ },
+ {
+ "name": "GitHubTokenDetector"
+ },
+ {
+ "name": "GitLabTokenDetector"
+ },
+ {
+ "name": "HexHighEntropyString",
+ "limit": 3.0
+ },
+ {
+ "name": "IbmCloudIamDetector"
+ },
+ {
+ "name": "IbmCosHmacDetector"
+ },
+ {
+ "name": "IPPublicDetector"
+ },
+ {
+ "name": "JwtTokenDetector"
+ },
+ {
+ "name": "KeywordDetector",
+ "keyword_exclude": ""
+ },
+ {
+ "name": "MailchimpDetector"
+ },
+ {
+ "name": "NpmDetector"
+ },
+ {
+ "name": "OpenAIDetector"
+ },
+ {
+ "name": "PrivateKeyDetector"
+ },
+ {
+ "name": "PypiTokenDetector"
+ },
+ {
+ "name": "SendGridDetector"
+ },
+ {
+ "name": "SlackDetector"
+ },
+ {
+ "name": "SoftlayerDetector"
+ },
+ {
+ "name": "SquareOAuthDetector"
+ },
+ {
+ "name": "StripeDetector"
+ },
+ {
+ "name": "TelegramBotTokenDetector"
+ },
+ {
+ "name": "TwilioKeyDetector"
+ }
+ ],
+ "filters_used": [
+ {
+ "path": "detect_secrets.filters.allowlist.is_line_allowlisted"
+ },
+ {
+ "path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
+ "min_level": 2
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_indirect_reference"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_likely_id_string"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_lock_file"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_potential_uuid"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_sequential_string"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_swagger_file"
+ },
+ {
+ "path": "detect_secrets.filters.heuristic.is_templated_secret"
+ }
+ ],
+ "results": {
+ "pnpm-lock.yaml": [
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "88dcf5e48940431d207eb6beeda3f28b52b9dcd6",
+ "is_verified": false,
+ "line_number": 43
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "9b1aeb3238bb5411805279e20afb4fb96fa7490d",
+ "is_verified": false,
+ "line_number": 46
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "e8cc5935afdfd3788eae945e3db3f42e2c3acee6",
+ "is_verified": false,
+ "line_number": 49
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "8733ba82d33885a92ca3009eb6ba61e505a1ee9a",
+ "is_verified": false,
+ "line_number": 52
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "3e3522c83d724aa4133ee6bb6d627e4390be31a5",
+ "is_verified": false,
+ "line_number": 55
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "9d1b9dbec9f048e048f4dd38591947ca7deff5dd",
+ "is_verified": false,
+ "line_number": 58
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "f60c00cacddf514ad090fbde7005d8721adc0b89",
+ "is_verified": false,
+ "line_number": 62
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b0e9cbf320ebe74507bcdaae3f0b40740459a092",
+ "is_verified": false,
+ "line_number": 65
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "f274e993f5da6ef04f9ab21f5152b7f16f86fc45",
+ "is_verified": false,
+ "line_number": 68
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "63ec2819c4e19e52c1d683e5e3e2e6ce0b6cac93",
+ "is_verified": false,
+ "line_number": 74
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "907c22434e5fe282d088f338a9e6155fb51ce241",
+ "is_verified": false,
+ "line_number": 77
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "e694aeb21a36497b6eb9bc56f884bd4c69ac5add",
+ "is_verified": false,
+ "line_number": 83
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "4d2585f3339105214d7685879b53a916f5aea9fa",
+ "is_verified": false,
+ "line_number": 89
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "f1833f6e7490c05a1a76205a4bdafb80e88e04e6",
+ "is_verified": false,
+ "line_number": 95
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "cacf9ecad80e93e92e88556952a24dedeae071ae",
+ "is_verified": false,
+ "line_number": 101
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "525571cc69c07ea83a7f575ab13f8174a1279317",
+ "is_verified": false,
+ "line_number": 107
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "be823e3374be22151f74deb53ad9b52ba62e1794",
+ "is_verified": false,
+ "line_number": 114
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "f057529a66a11ba122564fc9c36ccefe29df6f1a",
+ "is_verified": false,
+ "line_number": 121
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2e065f3f711d422e5ef5abdcd9c255dea44113f7",
+ "is_verified": false,
+ "line_number": 128
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "04eddfeea8ec2c47eac1fdc1f6033f88d175e4cf",
+ "is_verified": false,
+ "line_number": 135
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "de1fe5a83dde4beebb24a15f2ebf259aa1adb023",
+ "is_verified": false,
+ "line_number": 142
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "aaa92f5d670cc00ba757939cebeda4c34436c037",
+ "is_verified": false,
+ "line_number": 149
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2cd4187cd1381a5ff2776451a79449d69a7790ec",
+ "is_verified": false,
+ "line_number": 155
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "a427b668faefb136b19160d59226685364b3a9e5",
+ "is_verified": false,
+ "line_number": 160
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "007e6990046ea7fce8af0547e80941651f78eb17",
+ "is_verified": false,
+ "line_number": 166
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b0da61692236cf0f51dfca9bea5b058e6db2a173",
+ "is_verified": false,
+ "line_number": 172
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "1e9ff9fee5ad181d3f63618e0267e8ad42826e83",
+ "is_verified": false,
+ "line_number": 175
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "0e08e31e43853476fc57d10643d8c871082c08b3",
+ "is_verified": false,
+ "line_number": 178
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "de37fe98add6f4734b9251d9b8c3e9d0772f2a7a",
+ "is_verified": false,
+ "line_number": 183
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "ae55501077a6c44a2607882f75ee062a47bc2a6a",
+ "is_verified": false,
+ "line_number": 190
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2a99232e74af9898db82959893e9c64814b15714",
+ "is_verified": false,
+ "line_number": 193
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "7739c7a36e8b5c9759887d54c3d3a252d017cb71",
+ "is_verified": false,
+ "line_number": 196
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "d4dda0583372eb865e22ea00ae160ceb315aa0df",
+ "is_verified": false,
+ "line_number": 199
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "fa52615bd39e56c7366b834e0c9b496bbb96f043",
+ "is_verified": false,
+ "line_number": 202
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2ff8e8e4076d74fa172588e8f030832fc1d1577f",
+ "is_verified": false,
+ "line_number": 205
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "5f411c7e6073b67aca1c9043e3e952322dc21d46",
+ "is_verified": false,
+ "line_number": 208
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "4ea248d159b60f6d7fef97d151e4684cb2bd1b7c",
+ "is_verified": false,
+ "line_number": 211
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "40efaa4408aa7a51f20a5dafc886853a090bdf7f",
+ "is_verified": false,
+ "line_number": 214
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "bbd4d55c127ca96a683a41840e2cf89a50b2d879",
+ "is_verified": false,
+ "line_number": 225
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "ca76999d735911c431e5bdd1fea97ba4933bc187",
+ "is_verified": false,
+ "line_number": 228
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "902751d36d478d198a9171b2692aea0bcee1d728",
+ "is_verified": false,
+ "line_number": 231
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "f9e756c256be01a72d3b154b30203f0e3bd4c554",
+ "is_verified": false,
+ "line_number": 234
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b510709833d6f2ff1ea90f5cfa4b514c6c56b2ce",
+ "is_verified": false,
+ "line_number": 237
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b2c03df0ed8f8caded3abab58c3b2e3b645dbb28",
+ "is_verified": false,
+ "line_number": 240
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "5bb90e7e3d7847438b155c9fb564dfd279383855",
+ "is_verified": false,
+ "line_number": 245
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "1c504c77e2b9f1ea0e1770e65673fd7f8b3f4c8f",
+ "is_verified": false,
+ "line_number": 249
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "4a6acdb47bbd22c85e10baf5921ddbb3c09a787b",
+ "is_verified": false,
+ "line_number": 253
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "bc23715592b7602434c2776230d19f43fc479898",
+ "is_verified": false,
+ "line_number": 257
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "8095985919187b5be33de4b775c7a5e7562aafee",
+ "is_verified": false,
+ "line_number": 261
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "8ff61e34bccd3c9f85c8a24db9723d984fd74314",
+ "is_verified": false,
+ "line_number": 264
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "5974b42acc3c558a08c734a45a10785534b5d382",
+ "is_verified": false,
+ "line_number": 268
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "08c8ee0987f57add8cd4071488caef8ec431336a",
+ "is_verified": false,
+ "line_number": 272
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "c0c7aeed5e5a888b2aa3cdb739955fd27d25335e",
+ "is_verified": false,
+ "line_number": 275
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "bef68af5091abf3bd912b28fd2f8b438426dd79d",
+ "is_verified": false,
+ "line_number": 279
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "deb1c562595f81e98efdd28daf90161dc8ab8013",
+ "is_verified": false,
+ "line_number": 283
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "d3bc9e85ef73bc81be3c9767f7c26c7600f357c0",
+ "is_verified": false,
+ "line_number": 286
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "4a1a266072e5f401e1aa928a9bf6d94bfeab4806",
+ "is_verified": false,
+ "line_number": 289
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "5522dfea7968ce0fbca87245aaf099a6211d7e23",
+ "is_verified": false,
+ "line_number": 292
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "763f4272f5426f2cb52dd90f1f6a490a4ce61418",
+ "is_verified": false,
+ "line_number": 300
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "16d0c877fca994fd1c43bd7f131be967bf4f87b6",
+ "is_verified": false,
+ "line_number": 303
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "16fa3bfaeef78e32910c87baf9060e51490d09ad",
+ "is_verified": false,
+ "line_number": 307
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "d950cd8ef510429f57fb282e4a437321ca86158c",
+ "is_verified": false,
+ "line_number": 316
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "aea3a2f0dd7f8e8655ed2e6cf823ce09d0d537a4",
+ "is_verified": false,
+ "line_number": 321
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "ecca8c8ee1920fbd6387220767bdecf3635a3741",
+ "is_verified": false,
+ "line_number": 324
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b48b7cde42a2442c78c359b776b516d8127006c6",
+ "is_verified": false,
+ "line_number": 330
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2fb4be4f309d24f5064ac5496b8c7f59df0bf966",
+ "is_verified": false,
+ "line_number": 336
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b6acf38d09475b54b197ff0574abc4a7e86c3543",
+ "is_verified": false,
+ "line_number": 342
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "405ac79c3832190ec6bd61bce50e9390a026af72",
+ "is_verified": false,
+ "line_number": 348
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "5f3d1367a38ac4e76290f44b6dc26d3555bbabf5",
+ "is_verified": false,
+ "line_number": 354
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "d86912fe91c497e31a4344f459a68586ce096966",
+ "is_verified": false,
+ "line_number": 361
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "1509ab36ebf61526ec42f40016db32b0925e96bc",
+ "is_verified": false,
+ "line_number": 368
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2139b734b30d5642cf104ea814b455bf3f08ca4c",
+ "is_verified": false,
+ "line_number": 375
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "ef73b9a0b786d2e003921cc9967a0a7cd6ae1913",
+ "is_verified": false,
+ "line_number": 382
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2ffc317e2ecc11d98e3e05bf565c6575c4cbfd51",
+ "is_verified": false,
+ "line_number": 388
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "432730c731e24c084f98525d5e133e358dc47b2f",
+ "is_verified": false,
+ "line_number": 394
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "3e2f7beb6f6a2204eb1ca56ae8ca7e9602ad13f3",
+ "is_verified": false,
+ "line_number": 398
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "1e2228f0d8e0fc2bc3b8740a8ff3d287006b9a38",
+ "is_verified": false,
+ "line_number": 401
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "1229dc2178fd4b24f6dcb957dbdc4dd4f592e26f",
+ "is_verified": false,
+ "line_number": 404
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "5b6b494f771ff69c35ad46e17ec1f7da6eb8696e",
+ "is_verified": false,
+ "line_number": 408
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "fd987a3583a86961bbb3db9e742c93a837cd5bf6",
+ "is_verified": false,
+ "line_number": 413
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "9235bcf425e49c5749d9f52ed67b13717efda795",
+ "is_verified": false,
+ "line_number": 416
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "4439cc784aca22e5cdf33ed6656f5b8b99eaa44d",
+ "is_verified": false,
+ "line_number": 419
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "84cbfec871cf2b178ab90fcc1f442fa369e99a02",
+ "is_verified": false,
+ "line_number": 422
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "84a22bebcaaf61d613e397ca696c152d80aedf67",
+ "is_verified": false,
+ "line_number": 426
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "36149fc78b01f35bca00b832a55a4ea4f21995ae",
+ "is_verified": false,
+ "line_number": 430
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "ea0a3fae2d1694876f309429bfe231935a1e70f4",
+ "is_verified": false,
+ "line_number": 434
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "7e42e0804bd25c31e53b2f0871fa2b3551dc66d9",
+ "is_verified": false,
+ "line_number": 439
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "33e224ae0061fa6dc855702e88cad5e948136009",
+ "is_verified": false,
+ "line_number": 443
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "336d02c1e7195c5237197b5884304099ab15c6ba",
+ "is_verified": false,
+ "line_number": 446
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "b015b77432bd6d255596af7b2f552d8e8c91a7f7",
+ "is_verified": false,
+ "line_number": 450
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "c8fac131170b7bd907b0771e52111a64e940b2a5",
+ "is_verified": false,
+ "line_number": 453
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "befe96270355093c9f7fb4836d62f862ced86d2a",
+ "is_verified": false,
+ "line_number": 456
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "31277df63022917906a65ae6542742dc60d23b54",
+ "is_verified": false,
+ "line_number": 464
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2fbe8ab30e5355ea9d7538aec4d6c869562a0ed8",
+ "is_verified": false,
+ "line_number": 468
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "03816f8548cdb479aadd0ed1610f90e001fef53f",
+ "is_verified": false,
+ "line_number": 471
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "bcc923e3a3bbb5c5c7c2f2b5e17bda91f8076652",
+ "is_verified": false,
+ "line_number": 475
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "f0661775df2ce05e6c49ee07d6003c0e831cda30",
+ "is_verified": false,
+ "line_number": 479
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "9bf200e3147a1d837839d6bf5b649716c1537cbb",
+ "is_verified": false,
+ "line_number": 483
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "4e65da49f5fe5560a904f41bd2519c712c48c151",
+ "is_verified": false,
+ "line_number": 486
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "2cf79101947343f62524a7ab71f313b66d694198",
+ "is_verified": false,
+ "line_number": 491
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "7bedcb999f1cafb154755766dcf512cbc27a2833",
+ "is_verified": false,
+ "line_number": 494
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "8ac9d9448e688e8f94e810f2c49fd9b728bd2041",
+ "is_verified": false,
+ "line_number": 537
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "05b85c0e6305e0bae00683ce171f23f02837787e",
+ "is_verified": false,
+ "line_number": 545
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "95b02c02e7cb902e9603042bf77d2ce3b47d7dd1",
+ "is_verified": false,
+ "line_number": 586
+ },
+ {
+ "type": "Base64 High Entropy String",
+ "filename": "pnpm-lock.yaml",
+ "hashed_secret": "9b0596f2945cdeab0d6fb2407275942153f87d9c",
+ "is_verified": false,
+ "line_number": 591
+ }
+ ]
+ },
+ "generated_at": "2026-05-19T04:40:00Z"
+}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..bdef820
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["svelte.svelte-vscode"]
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e6cd94f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,47 @@
+# Svelte + TS + Vite
+
+This template should help get you started developing with Svelte and TypeScript in Vite.
+
+## Recommended IDE Setup
+
+[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
+
+## Need an official Svelte framework?
+
+Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
+
+## Technical considerations
+
+**Why use this over SvelteKit?**
+
+- It brings its own routing solution which might not be preferable for some users.
+- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
+
+This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
+
+Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
+
+**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
+
+Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.
+
+**Why include `.vscode/extensions.json`?**
+
+Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
+
+**Why enable `allowJs` in the TS template?**
+
+While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.
+
+**Why is HMR not preserving my local component state?**
+
+HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr).
+
+If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
+
+```ts
+// store.ts
+// An extremely simple external store
+import { writable } from 'svelte/store'
+export default writable(0)
+```
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..0664ca2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ vite-tmp
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c192052
--- /dev/null
+++ b/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "duplicate-chess",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview",
+ "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json",
+ "test": "vitest run --passWithNoTests",
+ "test:watch": "vitest"
+ },
+ "devDependencies": {
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
+ "@tsconfig/svelte": "^5.0.8",
+ "@types/node": "^24.12.3",
+ "svelte": "^5.55.5",
+ "svelte-check": "^4.4.8",
+ "typescript": "~6.0.2",
+ "vite": "^8.0.12",
+ "vitest": "^4.1.6"
+ },
+ "dependencies": {
+ "chess.js": "^1.4.0"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..274f837
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,1025 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ chess.js:
+ specifier: ^1.4.0
+ version: 1.4.0
+ devDependencies:
+ '@sveltejs/vite-plugin-svelte':
+ specifier: ^7.1.2
+ version: 7.1.2(svelte@5.55.8)(vite@8.0.13(@types/node@24.12.4))
+ '@tsconfig/svelte':
+ specifier: ^5.0.8
+ version: 5.0.8
+ '@types/node':
+ specifier: ^24.12.3
+ version: 24.12.4
+ svelte:
+ specifier: ^5.55.5
+ version: 5.55.8
+ svelte-check:
+ specifier: ^4.4.8
+ version: 4.4.8(picomatch@4.0.4)(svelte@5.55.8)(typescript@6.0.3)
+ typescript:
+ specifier: ~6.0.2
+ version: 6.0.3
+ vite:
+ specifier: ^8.0.12
+ version: 8.0.13(@types/node@24.12.4)
+ vitest:
+ specifier: ^4.1.6
+ version: 4.1.6(@types/node@24.12.4)(vite@8.0.13(@types/node@24.12.4))
+
+packages:
+
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
+
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+
+ '@emnapi/wasi-threads@1.2.1':
+ resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@napi-rs/wasm-runtime@1.1.4':
+ resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
+ peerDependencies:
+ '@emnapi/core': ^1.7.1
+ '@emnapi/runtime': ^1.7.1
+
+ '@oxc-project/types@0.130.0':
+ resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==}
+
+ '@rolldown/binding-android-arm64@1.0.1':
+ resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.1':
+ resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.0.1':
+ resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.0.1':
+ resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.1':
+ resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.1':
+ resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-musl@1.0.1':
+ resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.1':
+ resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.1':
+ resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.0.1':
+ resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-musl@1.0.1':
+ resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-openharmony-arm64@1.0.1':
+ resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.0.1':
+ resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.1':
+ resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.0.1':
+ resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.1':
+ resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+
+ '@standard-schema/spec@1.1.0':
+ resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+
+ '@sveltejs/acorn-typescript@1.0.9':
+ resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==}
+ peerDependencies:
+ acorn: ^8.9.0
+
+ '@sveltejs/vite-plugin-svelte@7.1.2':
+ resolution: {integrity: sha512-DrUBA2UXRfDmUX/ZTiEopd3X40yavsJF1FX2RygcuIScHL7o5YX1fMvoYnDhjeJQC4weCOklirpNWlcb2NiSeA==}
+ engines: {node: ^20.19 || ^22.12 || >=24}
+ peerDependencies:
+ svelte: ^5.46.4
+ vite: ^8.0.0-beta.7 || ^8.0.0
+
+ '@tsconfig/svelte@5.0.8':
+ resolution: {integrity: sha512-UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==}
+
+ '@tybys/wasm-util@0.10.2':
+ resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
+
+ '@types/chai@5.2.3':
+ resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
+
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/node@24.12.4':
+ resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==}
+
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
+ '@vitest/expect@4.1.6':
+ resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==}
+
+ '@vitest/mocker@4.1.6':
+ resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
+ '@vitest/pretty-format@4.1.6':
+ resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==}
+
+ '@vitest/runner@4.1.6':
+ resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==}
+
+ '@vitest/snapshot@4.1.6':
+ resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==}
+
+ '@vitest/spy@4.1.6':
+ resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==}
+
+ '@vitest/utils@4.1.6':
+ resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==}
+
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ aria-query@5.3.1:
+ resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==}
+ engines: {node: '>= 0.4'}
+
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
+
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
+
+ chai@6.2.2:
+ resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
+ engines: {node: '>=18'}
+
+ chess.js@1.4.0:
+ resolution: {integrity: sha512-BBJgrrtKQOzFLonR0l+k64A98NLemPwNsCskwb+29bRwobUa4iTm51E1kwGPbWXAcfdDa18nad6vpPPKPWarqw==}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ devalue@5.8.1:
+ resolution: {integrity: sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==}
+
+ es-module-lexer@2.1.0:
+ resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
+
+ esm-env@1.2.2:
+ resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
+
+ esrap@2.2.9:
+ resolution: {integrity: sha512-4KijP+NxCWthMCUC3qHbE6n4vCjqgJS1uAYKhuT/GWfFTf1Qyive2TgOjep+gzbSzRfnNyaN/UU9YmdOt8Eg0A==}
+ peerDependencies:
+ '@typescript-eslint/types': ^8.2.0
+ peerDependenciesMeta:
+ '@typescript-eslint/types':
+ optional: true
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ expect-type@1.3.0:
+ resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
+ engines: {node: '>=12.0.0'}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ is-reference@3.0.3:
+ resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
+ locate-character@3.0.0:
+ resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
+ nanoid@3.3.12:
+ resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@4.0.4:
+ resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
+ engines: {node: '>=12'}
+
+ postcss@8.5.14:
+ resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ readdirp@4.1.2:
+ resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+ engines: {node: '>= 14.18.0'}
+
+ rolldown@1.0.1:
+ resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
+ sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+ std-env@4.1.0:
+ resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
+
+ svelte-check@4.4.8:
+ resolution: {integrity: sha512-67adfgBox5eNSNIvIIwgFizKGdcRrGpiMoNO2obHcYuLz7iTa8Xgm/NGU3ntMFnNm8K1grFOIG6HhMLX/vcN8w==}
+ engines: {node: '>= 18.0.0'}
+ hasBin: true
+ peerDependencies:
+ svelte: ^4.0.0 || ^5.0.0-next.0
+ typescript: '>=5.0.0'
+
+ svelte@5.55.8:
+ resolution: {integrity: sha512-4D6lyrMHmDaZalQOEBMCWCCidyZjSnec14/oPn0k627G6goxcck9xqMwz1tFLlQz+ZFvtTTHfFOlUayuAz0z6Q==}
+ engines: {node: '>=18'}
+
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
+ tinyexec@1.1.2:
+ resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==}
+ engines: {node: '>=18'}
+
+ tinyglobby@0.2.16:
+ resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
+ engines: {node: '>=12.0.0'}
+
+ tinyrainbow@3.1.0:
+ resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
+ engines: {node: '>=14.0.0'}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ typescript@6.0.3:
+ resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+
+ vite@8.0.13:
+ resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.1.18
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vitefu@1.1.3:
+ resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vitest@4.1.6:
+ resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==}
+ engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@opentelemetry/api': ^1.9.0
+ '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
+ '@vitest/browser-playwright': 4.1.6
+ '@vitest/browser-preview': 4.1.6
+ '@vitest/browser-webdriverio': 4.1.6
+ '@vitest/coverage-istanbul': 4.1.6
+ '@vitest/coverage-v8': 4.1.6
+ '@vitest/ui': 4.1.6
+ happy-dom: '*'
+ jsdom: '*'
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser-playwright':
+ optional: true
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
+ optional: true
+ '@vitest/coverage-istanbul':
+ optional: true
+ '@vitest/coverage-v8':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ zimmerframe@1.1.4:
+ resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
+
+snapshots:
+
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.2
+ optional: true
+
+ '@oxc-project/types@0.130.0': {}
+
+ '@rolldown/binding-android-arm64@1.0.1':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.0.1':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.0.1':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.0.1':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.0.1':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.0.1':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.0.1':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.1':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.0.1':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.1': {}
+
+ '@standard-schema/spec@1.1.0': {}
+
+ '@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)':
+ dependencies:
+ acorn: 8.16.0
+
+ '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.8)(vite@8.0.13(@types/node@24.12.4))':
+ dependencies:
+ deepmerge: 4.3.1
+ magic-string: 0.30.21
+ obug: 2.1.1
+ svelte: 5.55.8
+ vite: 8.0.13(@types/node@24.12.4)
+ vitefu: 1.1.3(vite@8.0.13(@types/node@24.12.4))
+
+ '@tsconfig/svelte@5.0.8': {}
+
+ '@tybys/wasm-util@0.10.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@types/chai@5.2.3':
+ dependencies:
+ '@types/deep-eql': 4.0.2
+ assertion-error: 2.0.1
+
+ '@types/deep-eql@4.0.2': {}
+
+ '@types/estree@1.0.9': {}
+
+ '@types/node@24.12.4':
+ dependencies:
+ undici-types: 7.16.0
+
+ '@types/trusted-types@2.0.7': {}
+
+ '@vitest/expect@4.1.6':
+ dependencies:
+ '@standard-schema/spec': 1.1.0
+ '@types/chai': 5.2.3
+ '@vitest/spy': 4.1.6
+ '@vitest/utils': 4.1.6
+ chai: 6.2.2
+ tinyrainbow: 3.1.0
+
+ '@vitest/mocker@4.1.6(vite@8.0.13(@types/node@24.12.4))':
+ dependencies:
+ '@vitest/spy': 4.1.6
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ vite: 8.0.13(@types/node@24.12.4)
+
+ '@vitest/pretty-format@4.1.6':
+ dependencies:
+ tinyrainbow: 3.1.0
+
+ '@vitest/runner@4.1.6':
+ dependencies:
+ '@vitest/utils': 4.1.6
+ pathe: 2.0.3
+
+ '@vitest/snapshot@4.1.6':
+ dependencies:
+ '@vitest/pretty-format': 4.1.6
+ '@vitest/utils': 4.1.6
+ magic-string: 0.30.21
+ pathe: 2.0.3
+
+ '@vitest/spy@4.1.6': {}
+
+ '@vitest/utils@4.1.6':
+ dependencies:
+ '@vitest/pretty-format': 4.1.6
+ convert-source-map: 2.0.0
+ tinyrainbow: 3.1.0
+
+ acorn@8.16.0: {}
+
+ aria-query@5.3.1: {}
+
+ assertion-error@2.0.1: {}
+
+ axobject-query@4.1.0: {}
+
+ chai@6.2.2: {}
+
+ chess.js@1.4.0: {}
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+
+ clsx@2.1.1: {}
+
+ convert-source-map@2.0.0: {}
+
+ deepmerge@4.3.1: {}
+
+ detect-libc@2.1.2: {}
+
+ devalue@5.8.1: {}
+
+ es-module-lexer@2.1.0: {}
+
+ esm-env@1.2.2: {}
+
+ esrap@2.2.9:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.9
+
+ expect-type@1.3.0: {}
+
+ fdir@6.5.0(picomatch@4.0.4):
+ optionalDependencies:
+ picomatch: 4.0.4
+
+ fsevents@2.3.3:
+ optional: true
+
+ is-reference@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.9
+
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
+ locate-character@3.0.0: {}
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ mri@1.2.0: {}
+
+ nanoid@3.3.12: {}
+
+ obug@2.1.1: {}
+
+ pathe@2.0.3: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@4.0.4: {}
+
+ postcss@8.5.14:
+ dependencies:
+ nanoid: 3.3.12
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ readdirp@4.1.2: {}
+
+ rolldown@1.0.1:
+ dependencies:
+ '@oxc-project/types': 0.130.0
+ '@rolldown/pluginutils': 1.0.1
+ optionalDependencies:
+ '@rolldown/binding-android-arm64': 1.0.1
+ '@rolldown/binding-darwin-arm64': 1.0.1
+ '@rolldown/binding-darwin-x64': 1.0.1
+ '@rolldown/binding-freebsd-x64': 1.0.1
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.1
+ '@rolldown/binding-linux-arm64-gnu': 1.0.1
+ '@rolldown/binding-linux-arm64-musl': 1.0.1
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.1
+ '@rolldown/binding-linux-s390x-gnu': 1.0.1
+ '@rolldown/binding-linux-x64-gnu': 1.0.1
+ '@rolldown/binding-linux-x64-musl': 1.0.1
+ '@rolldown/binding-openharmony-arm64': 1.0.1
+ '@rolldown/binding-wasm32-wasi': 1.0.1
+ '@rolldown/binding-win32-arm64-msvc': 1.0.1
+ '@rolldown/binding-win32-x64-msvc': 1.0.1
+
+ sade@1.8.1:
+ dependencies:
+ mri: 1.2.0
+
+ siginfo@2.0.0: {}
+
+ source-map-js@1.2.1: {}
+
+ stackback@0.0.2: {}
+
+ std-env@4.1.0: {}
+
+ svelte-check@4.4.8(picomatch@4.0.4)(svelte@5.55.8)(typescript@6.0.3):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ chokidar: 4.0.3
+ fdir: 6.5.0(picomatch@4.0.4)
+ picocolors: 1.1.1
+ sade: 1.8.1
+ svelte: 5.55.8
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - picomatch
+
+ svelte@5.55.8:
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
+ '@types/estree': 1.0.9
+ '@types/trusted-types': 2.0.7
+ acorn: 8.16.0
+ aria-query: 5.3.1
+ axobject-query: 4.1.0
+ clsx: 2.1.1
+ devalue: 5.8.1
+ esm-env: 1.2.2
+ esrap: 2.2.9
+ is-reference: 3.0.3
+ locate-character: 3.0.0
+ magic-string: 0.30.21
+ zimmerframe: 1.1.4
+ transitivePeerDependencies:
+ - '@typescript-eslint/types'
+
+ tinybench@2.9.0: {}
+
+ tinyexec@1.1.2: {}
+
+ tinyglobby@0.2.16:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
+
+ tinyrainbow@3.1.0: {}
+
+ tslib@2.8.1:
+ optional: true
+
+ typescript@6.0.3: {}
+
+ undici-types@7.16.0: {}
+
+ vite@8.0.13(@types/node@24.12.4):
+ dependencies:
+ lightningcss: 1.32.0
+ picomatch: 4.0.4
+ postcss: 8.5.14
+ rolldown: 1.0.1
+ tinyglobby: 0.2.16
+ optionalDependencies:
+ '@types/node': 24.12.4
+ fsevents: 2.3.3
+
+ vitefu@1.1.3(vite@8.0.13(@types/node@24.12.4)):
+ optionalDependencies:
+ vite: 8.0.13(@types/node@24.12.4)
+
+ vitest@4.1.6(@types/node@24.12.4)(vite@8.0.13(@types/node@24.12.4)):
+ dependencies:
+ '@vitest/expect': 4.1.6
+ '@vitest/mocker': 4.1.6(vite@8.0.13(@types/node@24.12.4))
+ '@vitest/pretty-format': 4.1.6
+ '@vitest/runner': 4.1.6
+ '@vitest/snapshot': 4.1.6
+ '@vitest/spy': 4.1.6
+ '@vitest/utils': 4.1.6
+ es-module-lexer: 2.1.0
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ obug: 2.1.1
+ pathe: 2.0.3
+ picomatch: 4.0.4
+ std-env: 4.1.0
+ tinybench: 2.9.0
+ tinyexec: 1.1.2
+ tinyglobby: 0.2.16
+ tinyrainbow: 3.1.0
+ vite: 8.0.13(@types/node@24.12.4)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 24.12.4
+ transitivePeerDependencies:
+ - msw
+
+ why-is-node-running@2.3.0:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
+ zimmerframe@1.1.4: {}
diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 0000000..6893eb1
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icons.svg b/public/icons.svg
new file mode 100644
index 0000000..e952219
--- /dev/null
+++ b/public/icons.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/App.svelte b/src/App.svelte
new file mode 100644
index 0000000..69a0cac
--- /dev/null
+++ b/src/App.svelte
@@ -0,0 +1,4 @@
+
+ Duplicate Chess
+ Sandbox under construction.
+
diff --git a/src/app.css b/src/app.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..664a057
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,9 @@
+import { mount } from 'svelte'
+import './app.css'
+import App from './App.svelte'
+
+const app = mount(App, {
+ target: document.getElementById('app')!,
+})
+
+export default app
diff --git a/svelte.config.js b/svelte.config.js
new file mode 100644
index 0000000..0cf7db3
--- /dev/null
+++ b/svelte.config.js
@@ -0,0 +1,2 @@
+/** @type {import("@sveltejs/vite-plugin-svelte").SvelteConfig} */
+export default {}
diff --git a/tsconfig.app.json b/tsconfig.app.json
new file mode 100644
index 0000000..d774b20
--- /dev/null
+++ b/tsconfig.app.json
@@ -0,0 +1,20 @@
+{
+ "extends": "@tsconfig/svelte/tsconfig.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "es2023",
+ "module": "esnext",
+ "types": ["svelte", "vite/client"],
+ "noEmit": true,
+ /**
+ * Typecheck JS in `.svelte` and `.js` files by default.
+ * Disable checkJs if you'd like to use dynamic types in JS.
+ * Note that setting allowJs false does not prevent the use
+ * of JS in `.svelte` files.
+ */
+ "allowJs": true,
+ "checkJs": true,
+ "moduleDetection": "force"
+ },
+ "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"]
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..1ffef60
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "files": [],
+ "references": [
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" }
+ ]
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 0000000..d3c52ea
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "es2023",
+ "lib": ["ES2023"],
+ "module": "esnext",
+ "types": ["node"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..d32eba1
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import { svelte } from '@sveltejs/vite-plugin-svelte'
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [svelte()],
+})
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 0000000..41f954b
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,5 @@
+import { defineConfig } from 'vitest/config';
+
+export default defineConfig({
+ test: { environment: 'node', include: ['src/**/*.test.ts'] },
+});