remove @types/web and @types/serviceworker from monorepo

This commit is contained in:
Jonathan Gamble
2025-10-20 08:45:52 -05:00
parent 19e77d961a
commit a942b1d166
17 changed files with 449 additions and 536 deletions
+7 -11
View File
@@ -31,18 +31,17 @@
"@lichess-org/chessground": "9.8.3",
"@lichess-org/pgn-viewer": "2.5.2",
"@types/lichess": "workspace:*",
"@types/web": "^0.0.216",
"@typescript-eslint/eslint-plugin": "^8.39.1",
"@typescript-eslint/parser": "^8.39.1",
"@typescript-eslint/eslint-plugin": "^8.46.1",
"@typescript-eslint/parser": "^8.46.1",
"ab": "github:lichess-org/ab-stub",
"chessops": "^0.14.2",
"eslint": "^9.33.0",
"chessops": "^0.15",
"eslint": "^9.38.0",
"eslint-plugin-compat": "^6.0.2",
"lint-staged": "^15.5.2",
"lint-staged": "^16.2.4",
"onchange": "^7.1.0",
"prettier": "^3.6.2",
"snabbdom": "3.5.1",
"typescript": "^5.9.2",
"typescript": "^5.9.3",
"vitest": "^3.2.4"
},
"//": [
@@ -72,8 +71,5 @@
"Edge >= 98",
"Opera >= 84",
"Safari >= 15.6"
],
"devDependencies": {
"jsdom": "^26.1.0"
}
]
}
+231 -318
View File
File diff suppressed because it is too large Load Diff
+10 -10
View File
@@ -6,24 +6,24 @@
"license": "AGPL-3.0-or-later",
"type": "module",
"optionalDependencies": {
"sass-embedded-darwin-arm64": "1.90.0",
"sass-embedded-darwin-x64": "1.90.0",
"sass-embedded-linux-arm64": "1.90.0",
"sass-embedded-linux-x64": "1.90.0",
"sass-embedded-win32-arm64": "1.90.0",
"sass-embedded-win32-x64": "1.90.0"
"sass-embedded-darwin-arm64": "1.93.2",
"sass-embedded-darwin-x64": "1.93.2",
"sass-embedded-linux-arm64": "1.93.2",
"sass-embedded-linux-x64": "1.93.2",
"sass-embedded-win32-arm64": "1.93.2",
"sass-embedded-win32-x64": "1.93.2"
},
"dependencies": {
"@types/micromatch": "4.0.9",
"@types/node": "24.2.1",
"@types/node": "24.8.1",
"@types/tinycolor2": "1.4.6",
"esbuild": "0.25.9",
"esbuild": "0.25.11",
"fast-glob": "3.3.3",
"fast-xml-parser": "5.2.5",
"fast-xml-parser": "5.3.0",
"json-stringify-pretty-compact": "4.0.0",
"micromatch": "4.0.8",
"tinycolor2": "1.6.0",
"typescript": "5.9.2"
"typescript": "5.9.3"
},
"scripts": {
"dev": "node --experimental-strip-types --no-warnings src/main.ts $@"
+158 -158
View File
@@ -12,20 +12,20 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
specifier: 24.2.1
version: 24.2.1
specifier: 24.8.1
version: 24.8.1
'@types/tinycolor2':
specifier: 1.4.6
version: 1.4.6
esbuild:
specifier: 0.25.9
version: 0.25.9
specifier: 0.25.11
version: 0.25.11
fast-glob:
specifier: 3.3.3
version: 3.3.3
fast-xml-parser:
specifier: 5.2.5
version: 5.2.5
specifier: 5.3.0
version: 5.3.0
json-stringify-pretty-compact:
specifier: 4.0.0
version: 4.0.0
@@ -36,182 +36,182 @@ importers:
specifier: 1.6.0
version: 1.6.0
typescript:
specifier: 5.9.2
version: 5.9.2
specifier: 5.9.3
version: 5.9.3
optionalDependencies:
sass-embedded-darwin-arm64:
specifier: 1.90.0
version: 1.90.0
specifier: 1.93.2
version: 1.93.2
sass-embedded-darwin-x64:
specifier: 1.90.0
version: 1.90.0
specifier: 1.93.2
version: 1.93.2
sass-embedded-linux-arm64:
specifier: 1.90.0
version: 1.90.0
specifier: 1.93.2
version: 1.93.2
sass-embedded-linux-x64:
specifier: 1.90.0
version: 1.90.0
specifier: 1.93.2
version: 1.93.2
sass-embedded-win32-arm64:
specifier: 1.90.0
version: 1.90.0
specifier: 1.93.2
version: 1.93.2
sass-embedded-win32-x64:
specifier: 1.90.0
version: 1.90.0
specifier: 1.93.2
version: 1.93.2
packages:
'@esbuild/aix-ppc64@0.25.9':
resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==}
'@esbuild/aix-ppc64@0.25.11':
resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.25.9':
resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==}
'@esbuild/android-arm64@0.25.11':
resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.25.9':
resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==}
'@esbuild/android-arm@0.25.11':
resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.25.9':
resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==}
'@esbuild/android-x64@0.25.11':
resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.25.9':
resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==}
'@esbuild/darwin-arm64@0.25.11':
resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.25.9':
resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==}
'@esbuild/darwin-x64@0.25.11':
resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.25.9':
resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==}
'@esbuild/freebsd-arm64@0.25.11':
resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.25.9':
resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==}
'@esbuild/freebsd-x64@0.25.11':
resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.25.9':
resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==}
'@esbuild/linux-arm64@0.25.11':
resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.25.9':
resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==}
'@esbuild/linux-arm@0.25.11':
resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.25.9':
resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==}
'@esbuild/linux-ia32@0.25.11':
resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.25.9':
resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==}
'@esbuild/linux-loong64@0.25.11':
resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.25.9':
resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==}
'@esbuild/linux-mips64el@0.25.11':
resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.25.9':
resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==}
'@esbuild/linux-ppc64@0.25.11':
resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.25.9':
resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==}
'@esbuild/linux-riscv64@0.25.11':
resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.25.9':
resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==}
'@esbuild/linux-s390x@0.25.11':
resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.25.9':
resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==}
'@esbuild/linux-x64@0.25.11':
resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-arm64@0.25.9':
resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==}
'@esbuild/netbsd-arm64@0.25.11':
resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.25.9':
resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==}
'@esbuild/netbsd-x64@0.25.11':
resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.25.9':
resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==}
'@esbuild/openbsd-arm64@0.25.11':
resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.25.9':
resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==}
'@esbuild/openbsd-x64@0.25.11':
resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/openharmony-arm64@0.25.9':
resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==}
'@esbuild/openharmony-arm64@0.25.11':
resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
'@esbuild/sunos-x64@0.25.9':
resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==}
'@esbuild/sunos-x64@0.25.11':
resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.25.9':
resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==}
'@esbuild/win32-arm64@0.25.11':
resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.25.9':
resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==}
'@esbuild/win32-ia32@0.25.11':
resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.25.9':
resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==}
'@esbuild/win32-x64@0.25.11':
resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -234,8 +234,8 @@ packages:
'@types/micromatch@4.0.9':
resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==}
'@types/node@24.2.1':
resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==}
'@types/node@24.8.1':
resolution: {integrity: sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==}
'@types/tinycolor2@1.4.6':
resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
@@ -244,8 +244,8 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
esbuild@0.25.9:
resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==}
esbuild@0.25.11:
resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
engines: {node: '>=18'}
hasBin: true
@@ -253,8 +253,8 @@ packages:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
fast-xml-parser@5.2.5:
resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==}
fast-xml-parser@5.3.0:
resolution: {integrity: sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==}
hasBin: true
fastq@1.19.0:
@@ -305,38 +305,38 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
sass-embedded-darwin-arm64@1.90.0:
resolution: {integrity: sha512-qr4KBMJfBA+lzXiWnP00qzpLzHQzGd1OSK3VHcUFjZ8l7VOYf2R7Tc3fcTLhpaNPMJtTK0jrk8rFqBvsiZExnA==}
sass-embedded-darwin-arm64@1.93.2:
resolution: {integrity: sha512-qI1X16qKNeBJp+M/5BNW7v/JHCDYWr1/mdoJ7+UMHmP0b5AVudIZtimtK0hnjrLnBECURifd6IkulybR+h+4UA==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [darwin]
sass-embedded-darwin-x64@1.90.0:
resolution: {integrity: sha512-z2nr1nNqtWDLVRwTbHtL7zriK90U7O/Gb15UaCSMYeAz9Y+wog5s/sDEKm0+GsVdzzkaCaMZRWGN4jTilnUwmQ==}
sass-embedded-darwin-x64@1.93.2:
resolution: {integrity: sha512-4KeAvlkQ0m0enKUnDGQJZwpovYw99iiMb8CTZRSsQm8Eh7halbJZVmx67f4heFY/zISgVOCcxNg19GrM5NTwtA==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [darwin]
sass-embedded-linux-arm64@1.90.0:
resolution: {integrity: sha512-SPMcGZuP71Fj8btCGtlBnv8h8DAbJn8EQfLzXs9oo6NGFFLVjNGiFpqGfgtUV6DLWCuaRyEFeViO7wZow/vKGQ==}
sass-embedded-linux-arm64@1.93.2:
resolution: {integrity: sha512-9ftX6nd5CsShJqJ2WRg+ptaYvUW+spqZfJ88FbcKQBNFQm6L87luj3UI1rB6cP5EWrLwHA754OKxRJyzWiaN6g==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
sass-embedded-linux-x64@1.90.0:
resolution: {integrity: sha512-Cc061gBfMPwH9rN7neQaH36cvOQC+dFMSGIeX5qUOhrEL4Ng51iqBV6aI4RIB1jCFGth6eDydVRN1VdV9qom8A==}
sass-embedded-linux-x64@1.93.2:
resolution: {integrity: sha512-U3EIUZQL11DU0xDDHXexd4PYPHQaSQa2hzc4EzmhHqrAj+TyfYO94htjWOd+DdTPtSwmLp+9cTWwPZBODzC96w==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
sass-embedded-win32-arm64@1.90.0:
resolution: {integrity: sha512-c3/vL/CATnaW3x/6kcNbCROEOUU7zvJpIURp7M9664GJj08/gLPRWKNruw0OkAPQ3C5TTQz7+/fQWEpRA6qmvA==}
sass-embedded-win32-arm64@1.93.2:
resolution: {integrity: sha512-Y90DZDbQvtv4Bt0GTXKlcT9pn4pz8AObEjFF8eyul+/boXwyptPZ/A1EyziAeNaIEIfxyy87z78PUgCeGHsx3Q==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [win32]
sass-embedded-win32-x64@1.90.0:
resolution: {integrity: sha512-PFwdW7AYtCkwi3NfWFeexvIZEJ0nuShp8Bjjc3px756+18yYwBWa78F4TGdIQmJfpYKBhgkVjFOctwq+NCHntA==}
sass-embedded-win32-x64@1.93.2:
resolution: {integrity: sha512-BbSucRP6PVRZGIwlEBkp+6VQl2GWdkWFMN+9EuOTPrLxCJZoq+yhzmbjspd3PeM8+7WJ7AdFu/uRYdO8tor1iQ==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [win32]
@@ -351,92 +351,92 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
typescript@5.9.2:
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
hasBin: true
undici-types@7.10.0:
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
undici-types@7.14.0:
resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==}
snapshots:
'@esbuild/aix-ppc64@0.25.9':
'@esbuild/aix-ppc64@0.25.11':
optional: true
'@esbuild/android-arm64@0.25.9':
'@esbuild/android-arm64@0.25.11':
optional: true
'@esbuild/android-arm@0.25.9':
'@esbuild/android-arm@0.25.11':
optional: true
'@esbuild/android-x64@0.25.9':
'@esbuild/android-x64@0.25.11':
optional: true
'@esbuild/darwin-arm64@0.25.9':
'@esbuild/darwin-arm64@0.25.11':
optional: true
'@esbuild/darwin-x64@0.25.9':
'@esbuild/darwin-x64@0.25.11':
optional: true
'@esbuild/freebsd-arm64@0.25.9':
'@esbuild/freebsd-arm64@0.25.11':
optional: true
'@esbuild/freebsd-x64@0.25.9':
'@esbuild/freebsd-x64@0.25.11':
optional: true
'@esbuild/linux-arm64@0.25.9':
'@esbuild/linux-arm64@0.25.11':
optional: true
'@esbuild/linux-arm@0.25.9':
'@esbuild/linux-arm@0.25.11':
optional: true
'@esbuild/linux-ia32@0.25.9':
'@esbuild/linux-ia32@0.25.11':
optional: true
'@esbuild/linux-loong64@0.25.9':
'@esbuild/linux-loong64@0.25.11':
optional: true
'@esbuild/linux-mips64el@0.25.9':
'@esbuild/linux-mips64el@0.25.11':
optional: true
'@esbuild/linux-ppc64@0.25.9':
'@esbuild/linux-ppc64@0.25.11':
optional: true
'@esbuild/linux-riscv64@0.25.9':
'@esbuild/linux-riscv64@0.25.11':
optional: true
'@esbuild/linux-s390x@0.25.9':
'@esbuild/linux-s390x@0.25.11':
optional: true
'@esbuild/linux-x64@0.25.9':
'@esbuild/linux-x64@0.25.11':
optional: true
'@esbuild/netbsd-arm64@0.25.9':
'@esbuild/netbsd-arm64@0.25.11':
optional: true
'@esbuild/netbsd-x64@0.25.9':
'@esbuild/netbsd-x64@0.25.11':
optional: true
'@esbuild/openbsd-arm64@0.25.9':
'@esbuild/openbsd-arm64@0.25.11':
optional: true
'@esbuild/openbsd-x64@0.25.9':
'@esbuild/openbsd-x64@0.25.11':
optional: true
'@esbuild/openharmony-arm64@0.25.9':
'@esbuild/openharmony-arm64@0.25.11':
optional: true
'@esbuild/sunos-x64@0.25.9':
'@esbuild/sunos-x64@0.25.11':
optional: true
'@esbuild/win32-arm64@0.25.9':
'@esbuild/win32-arm64@0.25.11':
optional: true
'@esbuild/win32-ia32@0.25.9':
'@esbuild/win32-ia32@0.25.11':
optional: true
'@esbuild/win32-x64@0.25.9':
'@esbuild/win32-x64@0.25.11':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -457,9 +457,9 @@ snapshots:
dependencies:
'@types/braces': 3.0.5
'@types/node@24.2.1':
'@types/node@24.8.1':
dependencies:
undici-types: 7.10.0
undici-types: 7.14.0
'@types/tinycolor2@1.4.6': {}
@@ -467,34 +467,34 @@ snapshots:
dependencies:
fill-range: 7.1.1
esbuild@0.25.9:
esbuild@0.25.11:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.9
'@esbuild/android-arm': 0.25.9
'@esbuild/android-arm64': 0.25.9
'@esbuild/android-x64': 0.25.9
'@esbuild/darwin-arm64': 0.25.9
'@esbuild/darwin-x64': 0.25.9
'@esbuild/freebsd-arm64': 0.25.9
'@esbuild/freebsd-x64': 0.25.9
'@esbuild/linux-arm': 0.25.9
'@esbuild/linux-arm64': 0.25.9
'@esbuild/linux-ia32': 0.25.9
'@esbuild/linux-loong64': 0.25.9
'@esbuild/linux-mips64el': 0.25.9
'@esbuild/linux-ppc64': 0.25.9
'@esbuild/linux-riscv64': 0.25.9
'@esbuild/linux-s390x': 0.25.9
'@esbuild/linux-x64': 0.25.9
'@esbuild/netbsd-arm64': 0.25.9
'@esbuild/netbsd-x64': 0.25.9
'@esbuild/openbsd-arm64': 0.25.9
'@esbuild/openbsd-x64': 0.25.9
'@esbuild/openharmony-arm64': 0.25.9
'@esbuild/sunos-x64': 0.25.9
'@esbuild/win32-arm64': 0.25.9
'@esbuild/win32-ia32': 0.25.9
'@esbuild/win32-x64': 0.25.9
'@esbuild/aix-ppc64': 0.25.11
'@esbuild/android-arm': 0.25.11
'@esbuild/android-arm64': 0.25.11
'@esbuild/android-x64': 0.25.11
'@esbuild/darwin-arm64': 0.25.11
'@esbuild/darwin-x64': 0.25.11
'@esbuild/freebsd-arm64': 0.25.11
'@esbuild/freebsd-x64': 0.25.11
'@esbuild/linux-arm': 0.25.11
'@esbuild/linux-arm64': 0.25.11
'@esbuild/linux-ia32': 0.25.11
'@esbuild/linux-loong64': 0.25.11
'@esbuild/linux-mips64el': 0.25.11
'@esbuild/linux-ppc64': 0.25.11
'@esbuild/linux-riscv64': 0.25.11
'@esbuild/linux-s390x': 0.25.11
'@esbuild/linux-x64': 0.25.11
'@esbuild/netbsd-arm64': 0.25.11
'@esbuild/netbsd-x64': 0.25.11
'@esbuild/openbsd-arm64': 0.25.11
'@esbuild/openbsd-x64': 0.25.11
'@esbuild/openharmony-arm64': 0.25.11
'@esbuild/sunos-x64': 0.25.11
'@esbuild/win32-arm64': 0.25.11
'@esbuild/win32-ia32': 0.25.11
'@esbuild/win32-x64': 0.25.11
fast-glob@3.3.3:
dependencies:
@@ -504,7 +504,7 @@ snapshots:
merge2: 1.4.1
micromatch: 4.0.8
fast-xml-parser@5.2.5:
fast-xml-parser@5.3.0:
dependencies:
strnum: 2.1.1
@@ -547,22 +547,22 @@ snapshots:
dependencies:
queue-microtask: 1.2.3
sass-embedded-darwin-arm64@1.90.0:
sass-embedded-darwin-arm64@1.93.2:
optional: true
sass-embedded-darwin-x64@1.90.0:
sass-embedded-darwin-x64@1.93.2:
optional: true
sass-embedded-linux-arm64@1.90.0:
sass-embedded-linux-arm64@1.93.2:
optional: true
sass-embedded-linux-x64@1.90.0:
sass-embedded-linux-x64@1.93.2:
optional: true
sass-embedded-win32-arm64@1.90.0:
sass-embedded-win32-arm64@1.93.2:
optional: true
sass-embedded-win32-x64@1.90.0:
sass-embedded-win32-x64@1.93.2:
optional: true
strnum@2.1.1: {}
@@ -573,6 +573,6 @@ snapshots:
dependencies:
is-number: 7.0.0
typescript@5.9.2: {}
typescript@5.9.3: {}
undici-types@7.10.0: {}
undici-types@7.14.0: {}
+1 -1
View File
@@ -120,7 +120,7 @@ async function splitConfig(cfgPath: string): Promise<SplitConfig[]> {
co.noImplicitReturns = false;
co.noUnusedParameters = false;
}
co.lib = co.lib?.map((lib: string) => (lib.startsWith('lib.') ? lib.split('.')[1] : lib));
co.lib = co.lib?.map((lib: string) => lib.match(/lib\.(.+)\.d\.ts/)?.[1] ?? lib);
co.pathsBasePath = undefined;
co.incremental = true;
+1 -1
View File
@@ -6,7 +6,7 @@
"author": "Thibault Duplessis",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@badrap/result": "^0.2.13",
"@badrap/result": "^0.3.1",
"@types/debounce-promise": "^3.1.9",
"@types/sortablejs": "^1.15.8",
"@types/yaireo__tagify": "4.27.0",
+1 -1
View File
@@ -29,7 +29,7 @@
"@types/zxcvbn": "^4.4.5",
"@yaireo/tagify": "4.17.9",
"canvas-confetti": "^1.9.3",
"cropperjs": "^1.6.2",
"cropperjs": "1.6.2",
"debounce-promise": "^3.1.2",
"emoji-mart": "^5.6.0",
"flatpickr": "^4.6.13",
+4
View File
@@ -137,7 +137,11 @@ type Composition = { boards: number; squares: Map<number, Map<Color, Map<co.Role
async function makeCover(polyglotBook: OpeningBook, boardSize: number, numMoves?: number): Promise<Blob> {
const squareSize = boardSize / 8;
if (typeof OffscreenCanvas !== 'function') throw 'no OffscreenCanvas support';
// eslint-disable-next-line compat/compat
const canvas = new OffscreenCanvas(boardSize, boardSize);
const ctx = canvas.getContext('2d')!;
const composition: Composition = { boards: 1, squares: new Map() };
+1 -1
View File
@@ -4,5 +4,5 @@
"skipLibCheck": true,
"noImplicitReturns": false
},
"references": [{ "path": "../lib/tsconfig.json" }, { "path": "../voice/tsconfig.json" }]
"references": [{ "path": "../lib/tsconfig.json" }]
}
-1
View File
@@ -18,7 +18,6 @@
"@lichess-org/zerofish": "^0.0.40",
"bits": "workspace:*",
"chart.js": "4.4.3",
"chessops": "^0.14.0",
"editor": "workspace:*",
"fast-diff": "^1.3.0",
"json-stringify-pretty-compact": "4.0.0",
+3
View File
@@ -22,6 +22,9 @@ export const highlightSearchTerm = (search: string, selector: string): void => {
}
if (ranges.length === 0) return;
// create a CSS highlight that can be styled with the ::highlight(search) pseudo-element
if (typeof Highlight !== 'function') throw 'no Highlight support';
// eslint-disable-next-line compat/compat
const highlight = new Highlight(...ranges);
CSS.highlights.set(highlightName, highlight);
};
+9 -8
View File
@@ -18,14 +18,15 @@ function primer() {
}
function acquire() {
navigator.wakeLock
?.request('screen')
.then(sentinel => {
wakeLock = sentinel;
primerEvents.forEach(e => window.removeEventListener(e, primer, { capture: true }));
primerEvents = [];
})
.catch(() => (wakeLock = null));
if ('wakeLock' in navigator)
navigator.wakeLock
?.request('screen')
.then(sentinel => {
wakeLock = sentinel;
primerEvents.forEach(e => window.removeEventListener(e, primer, { capture: true }));
primerEvents = [];
})
.catch(() => (wakeLock = null));
}
// safari will only grant wakeLock on a user interaction, and without that initial grant
-3
View File
@@ -5,9 +5,6 @@
"description": "lichess.org service worker",
"author": "Thibault Duplessis",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@types/serviceworker": "^0.0.122"
},
"build": {
"bundle": "src/serviceWorker.ts"
}
+17 -16
View File
@@ -1,21 +1,22 @@
const searchParams = new URL(self.location.href).searchParams;
const assetBase = new URL(searchParams.get('asset-url')!, self.location.href).href;
const sw = self as unknown as ServiceWorkerGlobalScope;
const searchParams = new URL(sw.location.href).searchParams;
const assetBase = new URL(searchParams.get('asset-url')!, sw.location.href).href;
//let hasLocalCache = caches.has('local');
function assetUrl(path: string): string {
return `${assetBase}assets/${path}`;
}
self.addEventListener('install', () => self.skipWaiting());
sw.addEventListener('install', () => sw.skipWaiting());
self.addEventListener('activate', (e: ExtendableEvent) => {
e.waitUntil(clients.claim());
sw.addEventListener('activate', (e: ExtendableEvent) => {
e.waitUntil(sw.clients.claim());
});
self.addEventListener('push', (event: PushEvent) => {
sw.addEventListener('push', (event: PushEvent) => {
const data = event.data!.json();
return event.waitUntil(
self.registration.showNotification(data.title, {
sw.registration.showNotification(data.title, {
badge: assetUrl('logo/lichess-mono-128.png'),
icon: assetUrl('logo/lichess-favicon-192.png'),
body: data.body,
@@ -27,10 +28,10 @@ self.addEventListener('push', (event: PushEvent) => {
});
async function handleNotificationClick(e: NotificationEvent) {
const notifications = await self.registration.getNotifications();
const notifications = await sw.registration.getNotifications();
notifications.forEach(notification => notification.close());
const windowClients = (await self.clients.matchAll({
const windowClients = (await sw.clients.matchAll({
type: 'window',
includeUncontrolled: true,
})) as ReadonlyArray<WindowClient>;
@@ -47,25 +48,25 @@ async function handleNotificationClick(e: NotificationEvent) {
// focus open window with same url
for (const client of windowClients) {
const clientUrl = new URL(client.url, self.location.href);
const clientUrl = new URL(client.url, sw.location.href);
if (clientUrl.pathname === url && 'focus' in client) return await client.focus();
}
// navigate from open homepage to url
for (const client of windowClients) {
const clientUrl = new URL(client.url, self.location.href);
const clientUrl = new URL(client.url, sw.location.href);
if (clientUrl.pathname === '/') return await client.navigate(url);
}
// open new window
return await self.clients.openWindow(url);
return await sw.clients.openWindow(url);
}
self.addEventListener('notificationclick', (e: NotificationEvent) => e.waitUntil(handleNotificationClick(e)));
sw.addEventListener('notificationclick', (e: NotificationEvent) => e.waitUntil(handleNotificationClick(e)));
// experimental stuff below
// self.addEventListener('message', async (e: ExtendableMessageEvent) => {
// sw.addEventListener('message', async (e: ExtendableMessageEvent) => {
// if (e.data && e.data.type !== 'cache') return;
// if (e.data.value) {
// const cache = await caches.open('local');
@@ -77,7 +78,7 @@ self.addEventListener('notificationclick', (e: NotificationEvent) => e.waitUntil
// }
// });
// self.addEventListener('fetch', (e: FetchEvent) => {
// sw.addEventListener('fetch', (e: FetchEvent) => {
// if (e.request.method !== 'GET') return;
// const path = new URL(e.request.url).pathname.match(
// /^\/local(?:[/?#]?.*)?$|^\/assets\/lifat\/bots\/.+$|\/assets\/npm\/zerofish.+$/,
@@ -90,7 +91,7 @@ self.addEventListener('notificationclick', (e: NotificationEvent) => e.waitUntil
// const cache = await caches.open('local');
// try {
// if (!self.navigator.onLine) throw new Response('offline', { status: 503 });
// if (!sw.navigator.onLine) throw new Response('offline', { status: 503 });
// if (path.startsWith('/assets')) {
// const rsp = await cache.match(e.request);
// if (rsp) return rsp;
+2 -3
View File
@@ -4,8 +4,7 @@
"noEmit": true,
"module": "esnext",
"target": "es2020",
"lib": ["es2020"],
"types": ["serviceworker"],
"typeRoots": ["node_modules/@types"]
"lib": ["es2020", "WebWorker"],
"types": []
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": { "noEmit": true, "isolatedDeclarations": false },
"references": [{ "path": "../lib/tsconfig.json" }, { "path": "../voice/tsconfig.json" }]
"references": [{ "path": "../lib/tsconfig.json" }]
}
+3 -3
View File
@@ -19,9 +19,9 @@
"libReplacement": false,
"moduleResolution": "Node",
"module": "ESNext",
"target": "ES2020",
"lib": ["ES2020"],
"types": ["lichess", "web"],
"target": "ES2021",
"lib": ["ES2021", "DOM", "DOM.Iterable"],
"types": ["lichess"],
"paths": {
"@/*": ["${configDir}/src/*"]
},