diff --git a/.gitignore b/.gitignore index 1328c60..f465461 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ node_modules dist dist-ssr *.local -_release_assets \ No newline at end of file +_release_assets +*/**/*.temp.* +*.temp.* \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 415d317..b11c161 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,9 +26,10 @@ "@types/gif.js": "^0.2.2", "@types/hammerjs": "^2.0.41", "@types/howler": "^2.2.6", - "@types/node": "^17.0.8", + "@types/node": "^17.0.30", "@types/ua-parser-js": "^0.7.36", "@vitejs/plugin-legacy": "^1.8.1", + "canvas": "^2.9.1", "mime": "^3.0.0", "npm": "^8.8.0", "typescript": "^4.4.4", @@ -522,6 +523,41 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@types/chess.js": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/@types/chess.js/-/chess.js-0.11.2.tgz", @@ -553,9 +589,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.27.tgz", - "integrity": "sha512-4/Ke7bbWOasuT3kceBZFGakP1dYN2XFd8v2l9bqF2LNWrmeU07JLpp56aEeG6+Q3olqO5TvXpW0yaiYnZJ5CXg==", + "version": "17.0.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.30.tgz", + "integrity": "sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw==", "dev": true }, "node_modules/@types/ua-parser-js": { @@ -583,6 +619,33 @@ "vite": "^2.8.0" } }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -595,6 +658,25 @@ "node": ">=4" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/babel-plugin-jsx-dom-expressions": { "version": "0.32.17", "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.32.17.tgz", @@ -628,6 +710,22 @@ "babel-plugin-jsx-dom-expressions": "^0.32.17" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/browserslist": { "version": "4.20.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", @@ -673,6 +771,21 @@ } ] }, + "node_modules/canvas": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz", + "integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.15.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -692,6 +805,15 @@ "resolved": "https://registry.npmjs.org/chess.js/-/chess.js-0.12.1.tgz", "integrity": "sha512-95PsuUCtoxPyQNB+29k54OWGeEEpuWXu+d+oWL/fcko5T5NhDuGxaYmoXcZ6KUnFKyUYxdLjwqRqCWZonRuoJQ==" }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -707,6 +829,15 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", @@ -715,6 +846,18 @@ "node": ">=4.0.0" } }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -752,12 +895,45 @@ } } }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.119", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.119.tgz", "integrity": "sha512-HPEmKy+d0xK8oCfEHc5t6wDsSAi1WmE3Ld08QrBjAPxaAzfuKP66VJ77lcTqxTt7GJmSE279s75mhW64Xh+4kw==", "dev": true }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/esbuild": { "version": "0.14.38", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", @@ -1131,6 +1307,24 @@ "node": ">=0.8.0" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -1151,6 +1345,26 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1165,6 +1379,26 @@ "resolved": "https://registry.npmjs.org/gif.js/-/gif.js-0.2.0.tgz", "integrity": "sha1-YV5uN4iFDNOiDIX+nwlTnnhJA+g=" }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -1208,6 +1442,12 @@ "node": ">=4" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "node_modules/howler": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", @@ -1219,6 +1459,35 @@ "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "node_modules/is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", @@ -1231,6 +1500,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-mobile": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-3.1.1.tgz", @@ -1278,6 +1556,18 @@ "node": ">=6" } }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/magic-string": { "version": "0.26.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", @@ -1290,6 +1580,21 @@ "node": ">=12" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-anything": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.0.2.tgz", @@ -1318,12 +1623,79 @@ "node": ">=10.0.0" } }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -1336,12 +1708,47 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-releases": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "dev": true }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/npm": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/npm/-/npm-8.8.0.tgz", @@ -3779,6 +4186,45 @@ "inBundle": true, "license": "ISC" }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3815,6 +4261,20 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -3838,6 +4298,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rollup": { "version": "2.70.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", @@ -3868,6 +4343,49 @@ "semver": "bin/semver.js" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/solid-js": { "version": "1.3.17", "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.3.17.tgz", @@ -3912,6 +4430,61 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -3942,6 +4515,23 @@ "integrity": "sha512-hqTN6kW+pN6/qro6G9OZ7ceDQOcYno020zBQKpZQLsJhYTDMCMNfXi/Y8duF5iW+4WWZr42ry0MMkcRGpbwG2A==", "dev": true }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -3951,6 +4541,12 @@ "node": ">=4" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, "node_modules/ts-toolbelt": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", @@ -3988,6 +4584,12 @@ "node": "*" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "node_modules/vite": { "version": "2.9.5", "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", @@ -4040,10 +4642,47 @@ "vite": "^2.8.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, "node_modules/webm-writer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/webm-writer/-/webm-writer-1.0.0.tgz", "integrity": "sha512-xafP4mzUqht03HBXP0Ov2YGsxfD08uncad9fQeshYwQXrcP6Z/4uxd1IUaGKqKigFPAgaD9xb6JEKA8SXLQMLA==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } }, "dependencies": { @@ -4409,6 +5048,34 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "@types/chess.js": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/@types/chess.js/-/chess.js-0.11.2.tgz", @@ -4440,9 +5107,9 @@ "dev": true }, "@types/node": { - "version": "17.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.27.tgz", - "integrity": "sha512-4/Ke7bbWOasuT3kceBZFGakP1dYN2XFd8v2l9bqF2LNWrmeU07JLpp56aEeG6+Q3olqO5TvXpW0yaiYnZJ5CXg==", + "version": "17.0.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.30.tgz", + "integrity": "sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw==", "dev": true }, "@types/ua-parser-js": { @@ -4464,6 +5131,27 @@ "systemjs": "^6.12.1" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4473,6 +5161,22 @@ "color-convert": "^1.9.0" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "babel-plugin-jsx-dom-expressions": { "version": "0.32.17", "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.32.17.tgz", @@ -4505,6 +5209,22 @@ "babel-plugin-jsx-dom-expressions": "^0.32.17" } }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "browserslist": { "version": "4.20.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", @@ -4524,6 +5244,17 @@ "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true }, + "canvas": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz", + "integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==", + "dev": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.15.0", + "simple-get": "^3.0.3" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4540,6 +5271,12 @@ "resolved": "https://registry.npmjs.org/chess.js/-/chess.js-0.12.1.tgz", "integrity": "sha512-95PsuUCtoxPyQNB+29k54OWGeEEpuWXu+d+oWL/fcko5T5NhDuGxaYmoXcZ6KUnFKyUYxdLjwqRqCWZonRuoJQ==" }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -4555,11 +5292,29 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -4584,12 +5339,39 @@ "ms": "2.1.2" } }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true + }, "electron-to-chromium": { "version": "1.4.119", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.119.tgz", "integrity": "sha512-HPEmKy+d0xK8oCfEHc5t6wDsSAi1WmE3Ld08QrBjAPxaAzfuKP66VJ77lcTqxTt7GJmSE279s75mhW64Xh+4kw==", "dev": true }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "esbuild": { "version": "0.14.38", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", @@ -4770,6 +5552,21 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -4783,6 +5580,23 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4794,6 +5608,20 @@ "resolved": "https://registry.npmjs.org/gif.js/-/gif.js-0.2.0.tgz", "integrity": "sha1-YV5uN4iFDNOiDIX+nwlTnnhJA+g=" }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -4825,6 +5653,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "howler": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", @@ -4836,6 +5670,32 @@ "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", @@ -4845,6 +5705,12 @@ "has": "^1.0.3" } }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-mobile": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-3.1.1.tgz", @@ -4874,6 +5740,15 @@ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "magic-string": { "version": "0.26.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", @@ -4883,6 +5758,15 @@ "sourcemap-codec": "^1.4.8" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, "merge-anything": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.0.2.tgz", @@ -4899,24 +5783,88 @@ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, "nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, "node-releases": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "dev": true }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "npm": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/npm/-/npm-8.8.0.tgz", @@ -6620,6 +7568,39 @@ } } }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -6643,6 +7624,17 @@ "source-map-js": "^1.0.2" } }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -6660,6 +7652,15 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "rollup": { "version": "2.70.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", @@ -6681,6 +7682,35 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "solid-js": { "version": "1.3.17", "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.3.17.tgz", @@ -6716,6 +7746,43 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6737,12 +7804,32 @@ "integrity": "sha512-hqTN6kW+pN6/qro6G9OZ7ceDQOcYno020zBQKpZQLsJhYTDMCMNfXi/Y8duF5iW+4WWZr42ry0MMkcRGpbwG2A==", "dev": true }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, "ts-toolbelt": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", @@ -6760,6 +7847,12 @@ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==" }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "vite": { "version": "2.9.5", "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.5.tgz", @@ -6788,10 +7881,47 @@ "vite": "^2.8.0" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, "webm-writer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/webm-writer/-/webm-writer-1.0.0.tgz", "integrity": "sha512-xafP4mzUqht03HBXP0Ov2YGsxfD08uncad9fQeshYwQXrcP6Z/4uxd1IUaGKqKigFPAgaD9xb6JEKA8SXLQMLA==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } } diff --git a/package.json b/package.json index b775de0..8a51e18 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,10 @@ "@types/gif.js": "^0.2.2", "@types/hammerjs": "^2.0.41", "@types/howler": "^2.2.6", - "@types/node": "^17.0.8", + "@types/node": "^17.0.30", "@types/ua-parser-js": "^0.7.36", "@vitejs/plugin-legacy": "^1.8.1", + "canvas": "^2.9.1", "mime": "^3.0.0", "npm": "^8.8.0", "typescript": "^4.4.4", diff --git a/public/boards/avocado.png b/public/boards/avocado.png new file mode 100644 index 0000000..16da6cd Binary files /dev/null and b/public/boards/avocado.png differ diff --git a/public/boards/azure.png b/public/boards/azure.png new file mode 100644 index 0000000..1acefc1 Binary files /dev/null and b/public/boards/azure.png differ diff --git a/public/boards/botez.png b/public/boards/botez.png new file mode 100644 index 0000000..30ccba7 Binary files /dev/null and b/public/boards/botez.png differ diff --git a/public/boards/clay.png b/public/boards/clay.png new file mode 100644 index 0000000..db29e0b Binary files /dev/null and b/public/boards/clay.png differ diff --git a/public/boards/contrast_a.png b/public/boards/contrast_a.png new file mode 100644 index 0000000..71ce24e Binary files /dev/null and b/public/boards/contrast_a.png differ diff --git a/public/boards/contrast_b.png b/public/boards/contrast_b.png new file mode 100644 index 0000000..d4e6b95 Binary files /dev/null and b/public/boards/contrast_b.png differ diff --git a/public/boards/contrast_c.png b/public/boards/contrast_c.png new file mode 100644 index 0000000..682849a Binary files /dev/null and b/public/boards/contrast_c.png differ diff --git a/public/boards/contrast_d.png b/public/boards/contrast_d.png new file mode 100644 index 0000000..c56c939 Binary files /dev/null and b/public/boards/contrast_d.png differ diff --git a/public/boards/danny.png b/public/boards/danny.png new file mode 100644 index 0000000..d91b150 Binary files /dev/null and b/public/boards/danny.png differ diff --git a/public/boards/danny_blue.png b/public/boards/danny_blue.png new file mode 100644 index 0000000..c9fdf80 Binary files /dev/null and b/public/boards/danny_blue.png differ diff --git a/public/boards/danny_cyan.png b/public/boards/danny_cyan.png new file mode 100644 index 0000000..ce5ea35 Binary files /dev/null and b/public/boards/danny_cyan.png differ diff --git a/public/boards/danny_green.png b/public/boards/danny_green.png new file mode 100644 index 0000000..37418af Binary files /dev/null and b/public/boards/danny_green.png differ diff --git a/public/boards/danny_pink.png b/public/boards/danny_pink.png new file mode 100644 index 0000000..fa27c02 Binary files /dev/null and b/public/boards/danny_pink.png differ diff --git a/public/boards/danny_purple.png b/public/boards/danny_purple.png new file mode 100644 index 0000000..b68c93d Binary files /dev/null and b/public/boards/danny_purple.png differ diff --git a/public/boards/danny_red.png b/public/boards/danny_red.png new file mode 100644 index 0000000..a3d44bb Binary files /dev/null and b/public/boards/danny_red.png differ diff --git a/public/boards/danny_yellow.png b/public/boards/danny_yellow.png new file mode 100644 index 0000000..d5db3df Binary files /dev/null and b/public/boards/danny_yellow.png differ diff --git a/public/boards/danya.png b/public/boards/danya.png new file mode 100644 index 0000000..20d506e Binary files /dev/null and b/public/boards/danya.png differ diff --git a/public/boards/leko.png b/public/boards/leko.png new file mode 100644 index 0000000..c52c5ac Binary files /dev/null and b/public/boards/leko.png differ diff --git a/public/boards/lichess.png b/public/boards/lichess.png new file mode 100644 index 0000000..fd558fc Binary files /dev/null and b/public/boards/lichess.png differ diff --git a/public/boards/lila.png b/public/boards/lila.png new file mode 100644 index 0000000..6e1129a Binary files /dev/null and b/public/boards/lila.png differ diff --git a/public/boards/lines_alabaster.png b/public/boards/lines_alabaster.png new file mode 100644 index 0000000..88f1742 Binary files /dev/null and b/public/boards/lines_alabaster.png differ diff --git a/public/boards/lines_cardboard.png b/public/boards/lines_cardboard.png new file mode 100644 index 0000000..ac24e11 Binary files /dev/null and b/public/boards/lines_cardboard.png differ diff --git a/public/boards/lines_paper.png b/public/boards/lines_paper.png new file mode 100644 index 0000000..28bc619 Binary files /dev/null and b/public/boards/lines_paper.png differ diff --git a/public/boards/lines_parchment.png b/public/boards/lines_parchment.png new file mode 100644 index 0000000..30901ea Binary files /dev/null and b/public/boards/lines_parchment.png differ diff --git a/public/boards/mono_blue.png b/public/boards/mono_blue.png new file mode 100644 index 0000000..008e1fd Binary files /dev/null and b/public/boards/mono_blue.png differ diff --git a/public/boards/mono_chico.png b/public/boards/mono_chico.png new file mode 100644 index 0000000..34543a8 Binary files /dev/null and b/public/boards/mono_chico.png differ diff --git a/public/boards/mono_contessa.png b/public/boards/mono_contessa.png new file mode 100644 index 0000000..9456aa2 Binary files /dev/null and b/public/boards/mono_contessa.png differ diff --git a/public/boards/mono_coper.png b/public/boards/mono_coper.png new file mode 100644 index 0000000..28067be Binary files /dev/null and b/public/boards/mono_coper.png differ diff --git a/public/boards/mono_coral.png b/public/boards/mono_coral.png new file mode 100644 index 0000000..8619761 Binary files /dev/null and b/public/boards/mono_coral.png differ diff --git a/public/boards/mono_cornflower.png b/public/boards/mono_cornflower.png new file mode 100644 index 0000000..1dcc4b7 Binary files /dev/null and b/public/boards/mono_cornflower.png differ diff --git a/public/boards/mono_dodger.png b/public/boards/mono_dodger.png new file mode 100644 index 0000000..b1b8246 Binary files /dev/null and b/public/boards/mono_dodger.png differ diff --git a/public/boards/mono_flamingo.png b/public/boards/mono_flamingo.png new file mode 100644 index 0000000..e7a872e Binary files /dev/null and b/public/boards/mono_flamingo.png differ diff --git a/public/boards/mono_goblin.png b/public/boards/mono_goblin.png new file mode 100644 index 0000000..a5c026a Binary files /dev/null and b/public/boards/mono_goblin.png differ diff --git a/public/boards/mono_harvest.png b/public/boards/mono_harvest.png new file mode 100644 index 0000000..aab544e Binary files /dev/null and b/public/boards/mono_harvest.png differ diff --git a/public/boards/mono_heliotrope.png b/public/boards/mono_heliotrope.png new file mode 100644 index 0000000..14e4a08 Binary files /dev/null and b/public/boards/mono_heliotrope.png differ diff --git a/public/boards/mono_mahogany.png b/public/boards/mono_mahogany.png new file mode 100644 index 0000000..c1d9f42 Binary files /dev/null and b/public/boards/mono_mahogany.png differ diff --git a/public/boards/mono_mantis.png b/public/boards/mono_mantis.png new file mode 100644 index 0000000..28b32bb Binary files /dev/null and b/public/boards/mono_mantis.png differ diff --git a/public/boards/mono_meadow.png b/public/boards/mono_meadow.png new file mode 100644 index 0000000..dc670df Binary files /dev/null and b/public/boards/mono_meadow.png differ diff --git a/public/boards/mono_mojo.png b/public/boards/mono_mojo.png new file mode 100644 index 0000000..dd6e18b Binary files /dev/null and b/public/boards/mono_mojo.png differ diff --git a/public/boards/mono_mulberry.png b/public/boards/mono_mulberry.png new file mode 100644 index 0000000..0026363 Binary files /dev/null and b/public/boards/mono_mulberry.png differ diff --git a/public/boards/mono_rose.png b/public/boards/mono_rose.png new file mode 100644 index 0000000..2fe16b3 Binary files /dev/null and b/public/boards/mono_rose.png differ diff --git a/public/boards/mono_sycamore.png b/public/boards/mono_sycamore.png new file mode 100644 index 0000000..909ea8e Binary files /dev/null and b/public/boards/mono_sycamore.png differ diff --git a/public/boards/mono_teal.png b/public/boards/mono_teal.png new file mode 100644 index 0000000..b1c4bfb Binary files /dev/null and b/public/boards/mono_teal.png differ diff --git a/public/boards/mono_terracotta.png b/public/boards/mono_terracotta.png new file mode 100644 index 0000000..f42d1c9 Binary files /dev/null and b/public/boards/mono_terracotta.png differ diff --git a/public/boards/mud.png b/public/boards/mud.png new file mode 100644 index 0000000..3dc0551 Binary files /dev/null and b/public/boards/mud.png differ diff --git a/public/boards/patina.png b/public/boards/patina.png new file mode 100644 index 0000000..214afe3 Binary files /dev/null and b/public/boards/patina.png differ diff --git a/public/boards/peach.png b/public/boards/peach.png new file mode 100644 index 0000000..e82af2e Binary files /dev/null and b/public/boards/peach.png differ diff --git a/public/boards/rock.png b/public/boards/rock.png new file mode 100644 index 0000000..a00836b Binary files /dev/null and b/public/boards/rock.png differ diff --git a/public/boards/rose.png b/public/boards/rose.png new file mode 100644 index 0000000..8132658 Binary files /dev/null and b/public/boards/rose.png differ diff --git a/public/boards/smooth_forest.png b/public/boards/smooth_forest.png new file mode 100644 index 0000000..7988c1d Binary files /dev/null and b/public/boards/smooth_forest.png differ diff --git a/public/boards/smooth_laguna.png b/public/boards/smooth_laguna.png new file mode 100644 index 0000000..4377448 Binary files /dev/null and b/public/boards/smooth_laguna.png differ diff --git a/public/boards/smooth_mono.png b/public/boards/smooth_mono.png new file mode 100644 index 0000000..40da5cb Binary files /dev/null and b/public/boards/smooth_mono.png differ diff --git a/public/boards/smooth_sea.png b/public/boards/smooth_sea.png new file mode 100644 index 0000000..9e3f2ad Binary files /dev/null and b/public/boards/smooth_sea.png differ diff --git a/public/boards/smooth_spring.png b/public/boards/smooth_spring.png new file mode 100644 index 0000000..6cd395f Binary files /dev/null and b/public/boards/smooth_spring.png differ diff --git a/public/boards/smooth_summer.png b/public/boards/smooth_summer.png new file mode 100644 index 0000000..016e903 Binary files /dev/null and b/public/boards/smooth_summer.png differ diff --git a/public/boards/smooth_sunset.png b/public/boards/smooth_sunset.png new file mode 100644 index 0000000..d6a49a3 Binary files /dev/null and b/public/boards/smooth_sunset.png differ diff --git a/public/boards/smooth_violet.png b/public/boards/smooth_violet.png new file mode 100644 index 0000000..f406baf Binary files /dev/null and b/public/boards/smooth_violet.png differ diff --git a/public/boards/spring.png b/public/boards/spring.png new file mode 100644 index 0000000..8c73405 Binary files /dev/null and b/public/boards/spring.png differ diff --git a/public/boards/standard.png b/public/boards/standard.png new file mode 100644 index 0000000..86a6749 Binary files /dev/null and b/public/boards/standard.png differ diff --git a/public/boards/violet.png b/public/boards/violet.png new file mode 100644 index 0000000..591060a Binary files /dev/null and b/public/boards/violet.png differ diff --git a/public/boards/wood1.png b/public/boards/wood1.png new file mode 100644 index 0000000..01b35c3 Binary files /dev/null and b/public/boards/wood1.png differ diff --git a/public/boards/wood2.png b/public/boards/wood2.png new file mode 100644 index 0000000..7dd0252 Binary files /dev/null and b/public/boards/wood2.png differ diff --git a/public/boards/wood3.png b/public/boards/wood3.png new file mode 100644 index 0000000..f584a69 Binary files /dev/null and b/public/boards/wood3.png differ diff --git a/public/boards/wood4.png b/public/boards/wood4.png new file mode 100644 index 0000000..54ff3a4 Binary files /dev/null and b/public/boards/wood4.png differ diff --git a/public/boards/wood5.png b/public/boards/wood5.png new file mode 100644 index 0000000..fbe2a1b Binary files /dev/null and b/public/boards/wood5.png differ diff --git a/public/boards/wood6.png b/public/boards/wood6.png new file mode 100644 index 0000000..be3d043 Binary files /dev/null and b/public/boards/wood6.png differ diff --git a/public/boards/wood7.png b/public/boards/wood7.png new file mode 100644 index 0000000..520351c Binary files /dev/null and b/public/boards/wood7.png differ diff --git a/public/boards/wood8.png b/public/boards/wood8.png new file mode 100644 index 0000000..c37dbfb Binary files /dev/null and b/public/boards/wood8.png differ diff --git a/public/pieces/checkers/bb.svg b/public/pieces/checkers/bb.svg new file mode 100644 index 0000000..696a872 --- /dev/null +++ b/public/pieces/checkers/bb.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/bw.svg b/public/pieces/checkers/bw.svg new file mode 100644 index 0000000..915bb2a --- /dev/null +++ b/public/pieces/checkers/bw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/kb.svg b/public/pieces/checkers/kb.svg new file mode 100644 index 0000000..696a872 --- /dev/null +++ b/public/pieces/checkers/kb.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/kw.svg b/public/pieces/checkers/kw.svg new file mode 100644 index 0000000..915bb2a --- /dev/null +++ b/public/pieces/checkers/kw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/nb.svg b/public/pieces/checkers/nb.svg new file mode 100644 index 0000000..696a872 --- /dev/null +++ b/public/pieces/checkers/nb.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/nw.svg b/public/pieces/checkers/nw.svg new file mode 100644 index 0000000..915bb2a --- /dev/null +++ b/public/pieces/checkers/nw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/pb.svg b/public/pieces/checkers/pb.svg new file mode 100644 index 0000000..696a872 --- /dev/null +++ b/public/pieces/checkers/pb.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/pw.svg b/public/pieces/checkers/pw.svg new file mode 100644 index 0000000..915bb2a --- /dev/null +++ b/public/pieces/checkers/pw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/qb.svg b/public/pieces/checkers/qb.svg new file mode 100644 index 0000000..696a872 --- /dev/null +++ b/public/pieces/checkers/qb.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/qw.svg b/public/pieces/checkers/qw.svg new file mode 100644 index 0000000..915bb2a --- /dev/null +++ b/public/pieces/checkers/qw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/rb.svg b/public/pieces/checkers/rb.svg new file mode 100644 index 0000000..696a872 --- /dev/null +++ b/public/pieces/checkers/rb.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/pieces/checkers/rw.svg b/public/pieces/checkers/rw.svg new file mode 100644 index 0000000..915bb2a --- /dev/null +++ b/public/pieces/checkers/rw.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/stylus/chesscom/checkers.user.css b/public/stylus/chesscom/checkers.user.css new file mode 100644 index 0000000..c911c7a --- /dev/null +++ b/public/stylus/chesscom/checkers.user.css @@ -0,0 +1,24 @@ + + /* ==UserStyle== + @name Checkers chess set + @namespace chess.com + @version 1.0.0 + @description Chess set for chess.com + @author sharechess.github.io + ==/UserStyle== */ + + @-moz-document domain("chess.com") { + .piece.bb, .promotion-piece.bb {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.piece.wb, .promotion-piece.wb {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.piece.bk, .promotion-piece.bk {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.piece.wk, .promotion-piece.wk {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.piece.bn, .promotion-piece.bn {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.piece.wn, .promotion-piece.wn {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.piece.bp, .promotion-piece.bp {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.piece.wp, .promotion-piece.wp {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.piece.bq, .promotion-piece.bq {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.piece.wq, .promotion-piece.wq {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.piece.br, .promotion-piece.br {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.piece.wr, .promotion-piece.wr {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} + } + \ No newline at end of file diff --git a/public/stylus/lichess/checkers.user.css b/public/stylus/lichess/checkers.user.css new file mode 100644 index 0000000..07fe118 --- /dev/null +++ b/public/stylus/lichess/checkers.user.css @@ -0,0 +1,24 @@ + + /* ==UserStyle== + @name Checkers chess set + @namespace lichess.org + @version 1.0.0 + @description Chess set for lichess.org + @author sharechess.github.io + ==/UserStyle== */ + + @-moz-document domain("lichess.org") { + .is2d .bishop.black {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.is2d .bishop.white {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.is2d .king.black {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.is2d .king.white {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.is2d .knight.black {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.is2d .knight.white {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.is2d .pawn.black {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.is2d .pawn.white {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.is2d .queen.black {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.is2d .queen.white {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} +.is2d .rook.black {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiMxMTExMTEiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiM2NjY2NjYiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K') !important} +.is2d .rook.white {background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDQzOUMzMTEuOTQyIDQzOSAzNjMuMTE5IDQyMy41NTUgNDAwLjY0NyAzOTcuOTU5QzQzOC4xMTUgMzcyLjQwNCA0NjMgMzM1Ljg2IDQ2MyAyOTRWMjE4QzQ2MyAxNzYuMTQgNDM4LjExNSAxMzkuNTk2IDQwMC42NDcgMTE0LjA0MUMzNjMuMTE5IDg4LjQ0NDggMzExLjk0MiA3MyAyNTYgNzNDMjAwLjA1OCA3MyAxNDguODgxIDg4LjQ0NDggMTExLjM1MyAxMTQuMDQxQzczLjg4NDggMTM5LjU5NiA0OSAxNzYuMTQgNDkgMjE4VjI5NEM0OSAzMzUuODYgNzMuODg0OCAzNzIuNDA0IDExMS4zNTMgMzk3Ljk1OUMxNDguODgxIDQyMy41NTUgMjAwLjA1OCA0MzkgMjU2IDQzOVoiIGZpbGw9IiM1NTU1NTUiLz4KPHBhdGggZD0iTTI1NiAzNTFDMzYzLjY5NiAzNTEgNDUxIDI5MS40NTQgNDUxIDIxOEM0NTEgMTQ0LjU0NiAzNjMuNjk2IDg1IDI1NiA4NUMxNDguMzA0IDg1IDYxIDE0NC41NDYgNjEgMjE4QzYxIDI5MS40NTQgMTQ4LjMwNCAzNTEgMjU2IDM1MVoiIGZpbGw9IiNFRUVFRUUiLz4KPHBhdGggZD0iTTI1NiA0MjdDMzYzLjY5NiA0MjcgNDUxIDM2Ny40NTQgNDUxIDI5NFYyMThDNDUxIDI5MS40NTQgMzYzLjY5NiAzNTEgMjU2IDM1MUMxNDguMzA0IDM1MSA2MSAyOTEuNDU0IDYxIDIxOFYyOTRDNjEgMzY3LjQ1NCAxNDguMzA0IDQyNyAyNTYgNDI3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K') !important} + } + \ No newline at end of file diff --git a/scripts/createBoardsStylesheets.ts b/scripts/createBoardsStylesheets.ts new file mode 100644 index 0000000..85d9264 --- /dev/null +++ b/scripts/createBoardsStylesheets.ts @@ -0,0 +1,42 @@ +import { BoardStyle } from "./../src/types"; +import { loadImage, createCanvas } from "canvas"; +import Board from "../src/board/Board"; +import { CreateCanvas, LoadImage } from "../src/types"; +import boardStyles from "../src/board/styles-board/boardStyles"; +import fs from "fs"; + +const size = 1024; +const OUT_DIR = "public/boards"; + +const main = async () => { + const create = () => createCanvas(size, size); + const load = (src: string) => loadImage(`public${src}`); + + for (const boardStyle of Object.keys(boardStyles)) { + console.log(`Generating image for board ${boardStyle}...`); + + const board = new Board( + { + size, + tiles: 8, + showBorder: false, + showExtraInfo: false, + boardStyle: boardStyle as BoardStyle, + }, + load as unknown as LoadImage, + create as unknown as CreateCanvas + ); + + await board.renderStatic(); + // @ts-ignore + const image = board.canvas.toBuffer(); + + if (!fs.existsSync(OUT_DIR)) { + fs.mkdirSync(OUT_DIR, { recursive: true }); + } + + fs.writeFileSync(`${OUT_DIR}/${boardStyle}.png`, image); + } +}; + +main(); diff --git a/src/board/Board.ts b/src/board/Board.ts index ce8b1b5..a47cd5f 100644 --- a/src/board/Board.ts +++ b/src/board/Board.ts @@ -1,5 +1,13 @@ -import { BoardConfig, Header, Position } from "./../types"; -import { Style, BoardStyle } from "../types"; +import { + BoardConfig, + CreateCanvas, + Header, + LoadImage, + Position, + Style, + BoardStyle, +} from "./../types"; +// @ts-ignore import drawRectangle from "./layers/drawRectangle"; import drawCoords from "./layers/drawCoords"; import drawMoveIndicators from "./layers/drawMoveIndicators"; @@ -9,6 +17,7 @@ import drawExtraInfo from "./layers/drawExtraInfo"; import boards from "./styles-board/boardStyles"; import isLink from "../utils/isLink"; import { PiecesStyle } from "./styles-pieces/piecesStyles"; +import loadImageBrowser from "./loaders/loadImage"; const defaultConfig: BoardConfig = { size: 720, @@ -62,13 +71,19 @@ class Board { private ctx: CanvasRenderingContext2D; private tempCtx: CanvasRenderingContext2D; - private tempCanvas: HTMLCanvasElement = document.createElement("canvas"); - public canvas: HTMLCanvasElement = document.createElement("canvas"); + private tempCanvas: HTMLCanvasElement; + public canvas: HTMLCanvasElement; + + constructor( + config: Partial = {}, + private loadImage: LoadImage = loadImageBrowser, + private createCanvas: CreateCanvas = () => document.createElement("canvas") + ) { + this.canvas = this.createCanvas(); + this.tempCanvas = this.createCanvas(); - constructor(config: Partial = {}) { const ctx = this.canvas.getContext("2d"); const tempCtx = this.tempCanvas.getContext("2d"); - this.canvas.classList.add("board"); if (ctx === null || tempCtx === null) { throw new Error("Cannot create canvas 2D context"); @@ -94,7 +109,7 @@ class Board { this.cfg = cfg; this.setSize(cfg.size); - this.setStyle(cfg.boardStyle); + this.setStyle(cfg.boardStyle, refresh); if (refresh) { await this.refresh(); @@ -151,10 +166,12 @@ class Board { this.borderScale = scale; } - setStyle(style: BoardStyle) { + setStyle(style: BoardStyle, refresh: boolean = true) { this.style = boards[style]; this.cfg.boardStyle = style; - this.refresh(); + if (refresh) { + this.refresh(); + } return this; } @@ -252,12 +269,13 @@ class Board { this.scale, this.margin, this.style, - this.getFinalHeader() + this.getFinalHeader(), + this.loadImage ); } async renderBackground() { - const canvas = document.createElement("canvas"); + const canvas = this.createCanvas(); const ctx = canvas.getContext("2d") as CanvasRenderingContext2D; canvas.width = this.size; @@ -265,7 +283,19 @@ class Board { const { background, dark, light, border, coords } = this.style; - await drawRectangle(ctx, this.width, this.height, 0, 0, border); + ctx.clearRect(0, 0, this.size, this.size); + ctx.fillStyle = "#FF0000"; + ctx.fillRect(0, 0, this.size, this.size); + + await drawRectangle( + ctx, + this.width, + this.height, + 0, + 0, + border, + this.loadImage + ); await drawRectangle( ctx, @@ -274,6 +304,7 @@ class Board { this.cfg.showBorder ? this.borderWidth : 0, (this.cfg.showBorder ? this.borderWidth : 0) + this.margin, background, + this.loadImage, this.cfg.tiles ); @@ -288,7 +319,15 @@ class Board { const x = file * this.squareSize + this.borderWidth; const y = rank * this.squareSize + this.borderWidth + this.margin; - await drawRectangle(ctx, this.squareSize, this.squareSize, x, y, style); + await drawRectangle( + ctx, + this.squareSize, + this.squareSize, + x, + y, + style, + this.loadImage + ); } } @@ -306,6 +345,7 @@ class Board { ); } + console.log("Background rendered!"); this.background = canvas; } @@ -331,7 +371,8 @@ class Board { this.borderWidth, this.cfg.tiles, this.cfg.flipped, - this.margin + this.margin, + this.loadImage ); } @@ -361,7 +402,8 @@ class Board { this.cfg.flipped, this.margin, this.cfg.piecesStyle, - this.cfg.showShadows + this.cfg.showShadows, + this.loadImage ); if (this.cfg.showExtraInfo && header) { @@ -384,6 +426,55 @@ class Board { this.ctx.drawImage(this.tempCanvas, 0, 0); } + async renderStatic() { + this.ctx.clearRect(0, 0, this.size, this.size); + const { background, dark, light, border } = this.style; + + drawRectangle( + this.ctx, + this.width, + this.height, + 0, + 0, + border, + this.loadImage + ); + + drawRectangle( + this.ctx, + this.innerSize, + this.innerSize, + this.cfg.showBorder ? this.borderWidth : 0, + (this.cfg.showBorder ? this.borderWidth : 0) + this.margin, + background, + this.loadImage, + this.cfg.tiles + ); + + for (let rank = 0; rank < this.cfg.tiles; rank++) { + for (let file = 0; file < this.cfg.tiles; file++) { + const style = + (file % 2 === 0 && rank % 2 === 0) || + (file % 2 !== 0 && rank % 2 !== 0) + ? light + : dark; + + const x = file * this.squareSize + this.borderWidth; + const y = rank * this.squareSize + this.borderWidth + this.margin; + + drawRectangle( + this.ctx, + this.squareSize, + this.squareSize, + x, + y, + style, + this.loadImage + ); + } + } + } + toImgUrl() { return this.canvas.toDataURL(); } diff --git a/src/board/layers/drawHeader.ts b/src/board/layers/drawHeader.ts index 5cda030..81e46c8 100644 --- a/src/board/layers/drawHeader.ts +++ b/src/board/layers/drawHeader.ts @@ -1,7 +1,6 @@ -import { Header, Style } from "../../types"; +import { Header, LoadImage, Style } from "../../types"; import drawRectangle from "./drawRectangle"; import drawText from "./drawText"; -import loadImage from "../loaders/loadImage"; const drawHeader = async ( ctx: CanvasRenderingContext2D, @@ -9,10 +8,19 @@ const drawHeader = async ( scale: number, margin: number, style: Style, - data: Header + data: Header, + loadImage: LoadImage ) => { ctx.clearRect(0, 0, size, size); - await drawRectangle(ctx, size, size + margin * 2, 0, 0, style.border); + await drawRectangle( + ctx, + size, + size + margin * 2, + 0, + 0, + style.border, + loadImage + ); const font = "Ubuntu"; diff --git a/src/board/layers/drawMoveIndicators.ts b/src/board/layers/drawMoveIndicators.ts index 8c3115e..a18b81b 100644 --- a/src/board/layers/drawMoveIndicators.ts +++ b/src/board/layers/drawMoveIndicators.ts @@ -1,4 +1,4 @@ -import { Solid } from "./../../types"; +import { Solid, LoadImage } from "./../../types"; import { Move } from "chess.js"; import { Style, SquareStyle } from "../../types"; import drawRectangle from "./drawRectangle"; @@ -21,7 +21,8 @@ const drawMoveIndicators = async ( borderWidth: number, tiles: number, flipped: boolean, - margin: number + margin: number, + loadImage: LoadImage ) => { const [x0, y0] = notationToXY(move.from, flipped, tiles); const [x1, y1] = notationToXY(move.to, flipped, tiles); @@ -62,8 +63,24 @@ const drawMoveIndicators = async ( toStyle = fromStyle; } - drawRectangle(ctx, squareSize, squareSize, fromX, fromY + margin, fromStyle); - drawRectangle(ctx, squareSize, squareSize, toX, toY + margin, toStyle); + drawRectangle( + ctx, + squareSize, + squareSize, + fromX, + fromY + margin, + fromStyle, + loadImage + ); + drawRectangle( + ctx, + squareSize, + squareSize, + toX, + toY + margin, + toStyle, + loadImage + ); }; export default drawMoveIndicators; diff --git a/src/board/layers/drawPieces.ts b/src/board/layers/drawPieces.ts index 7a86203..4a302fb 100644 --- a/src/board/layers/drawPieces.ts +++ b/src/board/layers/drawPieces.ts @@ -1,6 +1,5 @@ -import { state } from "../../state"; -import { Position } from "../../types"; -import ImagesCache from "../loaders/PiecesCache"; +import { LoadImage, Position } from "../../types"; +import PiecesCache from "../loaders/PiecesCache"; import { PiecesStyle } from "../styles-pieces/piecesStyles"; const drawPieces = async ( @@ -11,7 +10,8 @@ const drawPieces = async ( flipped: boolean, margin: number, piecesStyle: PiecesStyle, - shadow: boolean = true + shadow: boolean = true, + loadImage: LoadImage ) => { const { placement, check, mate, turn } = position; ctx.shadowColor = "rgba(0, 0, 0, 0)"; @@ -20,7 +20,7 @@ const drawPieces = async ( ctx.shadowOffsetY = 0; for (const { x, y, type, color } of placement) { - const img = await ImagesCache.get(piecesStyle, type, color); + const img = await PiecesCache.get(piecesStyle, type, color, loadImage); const rank = flipped ? 8 - 1 - y : y; const file = flipped ? 8 - 1 - x : x; @@ -28,7 +28,7 @@ const drawPieces = async ( const hex = mate ? "#ff002f" : "#ffa600"; ctx.shadowColor = hex; - ctx.shadowBlur = squareSize * (state.mobile ? 0.15 : 0.15); + ctx.shadowBlur = squareSize * 0.15; ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 0; ctx.drawImage( diff --git a/src/board/layers/drawRectangle.ts b/src/board/layers/drawRectangle.ts index dadc200..3e89e8f 100644 --- a/src/board/layers/drawRectangle.ts +++ b/src/board/layers/drawRectangle.ts @@ -1,6 +1,5 @@ -import { SquareStyle } from "../../types"; +import { LoadImage, SquareStyle } from "../../types"; import createGradient from "../fill/createGradient"; -import loadImage from "../loaders/loadImage"; const drawRectangle = async ( ctx: CanvasRenderingContext2D, @@ -9,6 +8,7 @@ const drawRectangle = async ( x: number, y: number, squareStyle: SquareStyle, + loadImage: LoadImage, tiles: number = 8 ) => { if (squareStyle.type === "image") { diff --git a/src/board/loaders/PiecesCache.ts b/src/board/loaders/PiecesCache.ts index 48baf47..42ea984 100644 --- a/src/board/loaders/PiecesCache.ts +++ b/src/board/loaders/PiecesCache.ts @@ -1,16 +1,15 @@ -import { PieceType, PieceColor } from "../../types"; +import { PieceType, PieceColor, LoadImage } from "../../types"; import { PiecesStyle, pieceNames, PieceName, } from "../styles-pieces/piecesStyles"; -import loadImage from "./loadImage"; let style: PiecesStyle | null = null; let piecesImages: Map = new Map(); const PiecesCache = { - async load(piecesSetName: PiecesStyle) { + async load(piecesSetName: PiecesStyle, loadImage: LoadImage) { await Promise.all( pieceNames.map((key) => { const src = `/pieces/${piecesSetName}/${key}.svg`; @@ -24,10 +23,11 @@ const PiecesCache = { async get( piecesSetName: PiecesStyle, pieceName: PieceType, - pieceColor: PieceColor + pieceColor: PieceColor, + loadImage: LoadImage ) { if (style !== piecesSetName) { - await this.load(piecesSetName); + await this.load(piecesSetName, loadImage); style = piecesSetName; } @@ -35,23 +35,6 @@ const PiecesCache = { return piecesImages.get(piece) as HTMLImageElement; }, - - async getDataURLs() { - return Promise.all( - [...piecesImages.entries()].map( - async ([key, img]: [string, HTMLImageElement]) => { - let blob = await fetch(img.src).then((r) => r.blob()); - let dataUrl = await new Promise((resolve) => { - let reader = new FileReader(); - reader.onload = () => resolve(reader.result); - reader.readAsDataURL(blob); - }); - - return [key, dataUrl]; - } - ) - ); - }, }; export default PiecesCache; diff --git a/src/board/styles-pieces/piecesStyles.ts b/src/board/styles-pieces/piecesStyles.ts index 8ec90a5..0a101ba 100644 --- a/src/board/styles-pieces/piecesStyles.ts +++ b/src/board/styles-pieces/piecesStyles.ts @@ -11,6 +11,7 @@ const piecesStyles = [ "cardinal", "cases", "cburnett", + "checkers", "chess7", "chessnut", "companion", diff --git a/src/player/Player.ts b/src/player/Player.ts index 3fdf65b..608b646 100644 --- a/src/player/Player.ts +++ b/src/player/Player.ts @@ -210,7 +210,7 @@ class Player { } if (this.ply > 0 && state.siteConfig.sounds) { - state.boardConfig.piecesStyle.includes("anarc") + state.boardConfig.piecesStyle.includes("anarchy") ? this.playAnarchySFX(position) : this.playSFX(position); } diff --git a/src/types.ts b/src/types.ts index d86ffd8..be5ef9d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -205,3 +205,7 @@ export type Header = { Site: string | null; Result: string | null; }; + +export type LoadImage = (src: string) => Promise; + +export type CreateCanvas = () => HTMLCanvasElement; diff --git a/tsconfig.json b/tsconfig.json index 0df4c5b..ca260ab 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,7 +15,7 @@ "noImplicitReturns": true, "jsx": "preserve", "jsxImportSource": "solid-js", - "types": ["vite/client"] + "types": ["vite/client", "node"] }, "include": ["./src", "public/gif.worker.js", "public/gif.worker.js"] } diff --git a/tsconfig.scripts.json b/tsconfig.scripts.json new file mode 100644 index 0000000..3289514 --- /dev/null +++ b/tsconfig.scripts.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "CommonJS", + "lib": ["ESNext", "DOM"], + "moduleResolution": "Node", + "strict": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "types": ["vite/client", "node"] + }, + "include": ["./src", "public/gif.worker.js", "public/gif.worker.js"] +}