feat: pixelated image rendering
This commit is contained in:
parent
71ee4f384d
commit
bcc01d5bac
11
README.md
11
README.md
|
@ -19,9 +19,9 @@ Fork of Moe Counter for fast global access powered by Cloudflare Workers.
|
|||
|
||||
[![Moebooru](https://count.dsrkafuu.net/dsrkafuu:demo?theme=moebooru&length=auto&add=0)](https://count.dsrkafuu.net/dsrkafuu:demo?theme=moebooru&length=auto)
|
||||
|
||||
**Rule 34 (with `theme=rule34`)**
|
||||
**Rule 34 (with `theme=rule34&render=pixelated`)**
|
||||
|
||||
[![Rule 34](https://count.dsrkafuu.net/dsrkafuu:demo?theme=rule34&add=0)](https://count.dsrkafuu.net/dsrkafuu:demo?theme=rule34)
|
||||
[![Rule 34](https://count.dsrkafuu.net/dsrkafuu:demo?theme=rule34&render=pixelated&add=0)](https://count.dsrkafuu.net/dsrkafuu:demo?theme=rule34)
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -31,13 +31,16 @@ Fork of Moe Counter for fast global access powered by Cloudflare Workers.
|
|||
|
||||
```
|
||||
https://count.dsrkafuu.net/{id}
|
||||
https://count.dsrkafuu.net/{id}?theme={asoul,gelbooru,moebooru,rule34}&length={1-10,auto}&add={0,1}
|
||||
https://count.dsrkafuu.net/{id}?theme={asoul,gelbooru,moebooru,rule34}&render={auto,pixelated}&length={1-10,auto}&add={0,1}
|
||||
```
|
||||
|
||||
1. `{id}`: Any custom string between 1-256 chars (`a-zA-Z0-9:.@_-` allowed)
|
||||
2. `{&theme}`: `asoul`, `gelbooru`, `moebooru`, `rule34` and two other themes (default: `gelbooru`)
|
||||
3. `{&length}`: Number between `1-10` (default: `7`) or string `auto`
|
||||
4. `{&add}`: Controls whether make the counter count or not (default: `1`)
|
||||
4. `{&render}`: `auto` or `pixelated` (default: `auto`)
|
||||
5. `{&add}`: Controls whether make the counter count or not (default: `1`)
|
||||
|
||||
You can custmize the default bahaviors by [self-hosting the counter](#self-hosting).
|
||||
|
||||
Make a pull request to add your id in `settings.json` to use the free public counter. Recommend to use `user:usage` like string as ID for better management and potential issue tracking.
|
||||
|
||||
|
|
12
package.json
12
package.json
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "moe-counter-cf",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.0",
|
||||
"description": "Fork of Moe Counter for fast global access powered by Cloudflare Workers.",
|
||||
"author": "DSRKafuU <dsrkafuu@outlook.com> (https://dsrkafuu.net)",
|
||||
"license": "MIT",
|
||||
|
@ -14,14 +14,14 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"base64-arraybuffer": "~1.0.2",
|
||||
"itty-router": "~2.5.2"
|
||||
"itty-router": "~2.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@cloudflare/wrangler": "~1.19.8",
|
||||
"@cloudflare/wrangler": "~1.19.12",
|
||||
"clean-webpack-plugin": "~4.0.0",
|
||||
"eslint": "~8.10.0",
|
||||
"prettier": "~2.5.1",
|
||||
"webpack": "~5.70.0",
|
||||
"eslint": "~8.15.0",
|
||||
"prettier": "~2.6.2",
|
||||
"webpack": "~5.72.1",
|
||||
"webpack-cli": "~4.9.2"
|
||||
}
|
||||
}
|
||||
|
|
150
pnpm-lock.yaml
150
pnpm-lock.yaml
|
@ -1,31 +1,31 @@
|
|||
lockfileVersion: 5.3
|
||||
lockfileVersion: 5.4
|
||||
|
||||
specifiers:
|
||||
'@cloudflare/wrangler': ~1.19.8
|
||||
'@cloudflare/wrangler': ~1.19.12
|
||||
base64-arraybuffer: ~1.0.2
|
||||
clean-webpack-plugin: ~4.0.0
|
||||
eslint: ~8.10.0
|
||||
itty-router: ~2.5.2
|
||||
prettier: ~2.5.1
|
||||
webpack: ~5.70.0
|
||||
eslint: ~8.15.0
|
||||
itty-router: ~2.6.1
|
||||
prettier: ~2.6.2
|
||||
webpack: ~5.72.1
|
||||
webpack-cli: ~4.9.2
|
||||
|
||||
dependencies:
|
||||
base64-arraybuffer: 1.0.2
|
||||
itty-router: 2.5.2
|
||||
itty-router: 2.6.1
|
||||
|
||||
devDependencies:
|
||||
'@cloudflare/wrangler': 1.19.8
|
||||
clean-webpack-plugin: 4.0.0_webpack@5.70.0
|
||||
eslint: 8.10.0
|
||||
prettier: 2.5.1
|
||||
webpack: 5.70.0_webpack-cli@4.9.2
|
||||
webpack-cli: 4.9.2_webpack@5.70.0
|
||||
'@cloudflare/wrangler': 1.19.12
|
||||
clean-webpack-plugin: 4.0.0_webpack@5.72.1
|
||||
eslint: 8.15.0
|
||||
prettier: 2.6.2
|
||||
webpack: 5.72.1_webpack-cli@4.9.2
|
||||
webpack-cli: 4.9.2_webpack@5.72.1
|
||||
|
||||
packages:
|
||||
|
||||
/@cloudflare/wrangler/1.19.8:
|
||||
resolution: {integrity: sha512-bckvdgBT3ZkvJQtGhdWEwa7GKi3zWYlxBPQoaOa+Utqw4bzg3BkbzUouI8+7WmcvkOoLxQ2emgTTNfudHBcCqA==}
|
||||
/@cloudflare/wrangler/1.19.12:
|
||||
resolution: {integrity: sha512-ALuQDzJetYGqzNuIa3KY8S8X9rvZjIh5uEY3nK31jV/EmBamiiSJn4XIdPuSn65FaEmmZem78OJIWFyu80OIuA==}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
|
@ -41,13 +41,13 @@ packages:
|
|||
engines: {node: '>=10.0.0'}
|
||||
dev: true
|
||||
|
||||
/@eslint/eslintrc/1.2.1:
|
||||
resolution: {integrity: sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==}
|
||||
/@eslint/eslintrc/1.2.3:
|
||||
resolution: {integrity: sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
debug: 4.3.3
|
||||
espree: 9.3.1
|
||||
espree: 9.3.2
|
||||
globals: 13.12.1
|
||||
ignore: 5.2.0
|
||||
import-fresh: 3.3.0
|
||||
|
@ -216,14 +216,14 @@ packages:
|
|||
'@xtuc/long': 4.2.2
|
||||
dev: true
|
||||
|
||||
/@webpack-cli/configtest/1.1.1_webpack-cli@4.9.2+webpack@5.70.0:
|
||||
/@webpack-cli/configtest/1.1.1_smhu6mcfcg7aivfsuosc335k3u:
|
||||
resolution: {integrity: sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==}
|
||||
peerDependencies:
|
||||
webpack: 4.x.x || 5.x.x
|
||||
webpack-cli: 4.x.x
|
||||
dependencies:
|
||||
webpack: 5.70.0_webpack-cli@4.9.2
|
||||
webpack-cli: 4.9.2_webpack@5.70.0
|
||||
webpack: 5.72.1_webpack-cli@4.9.2
|
||||
webpack-cli: 4.9.2_webpack@5.72.1
|
||||
dev: true
|
||||
|
||||
/@webpack-cli/info/1.4.1_webpack-cli@4.9.2:
|
||||
|
@ -232,7 +232,7 @@ packages:
|
|||
webpack-cli: 4.x.x
|
||||
dependencies:
|
||||
envinfo: 7.8.1
|
||||
webpack-cli: 4.9.2_webpack@5.70.0
|
||||
webpack-cli: 4.9.2_webpack@5.72.1
|
||||
dev: true
|
||||
|
||||
/@webpack-cli/serve/1.6.1_webpack-cli@4.9.2:
|
||||
|
@ -244,7 +244,7 @@ packages:
|
|||
webpack-dev-server:
|
||||
optional: true
|
||||
dependencies:
|
||||
webpack-cli: 4.9.2_webpack@5.70.0
|
||||
webpack-cli: 4.9.2_webpack@5.72.1
|
||||
dev: true
|
||||
|
||||
/@xtuc/ieee754/1.2.0:
|
||||
|
@ -263,12 +263,12 @@ packages:
|
|||
acorn: 8.7.0
|
||||
dev: true
|
||||
|
||||
/acorn-jsx/5.3.2_acorn@8.7.0:
|
||||
/acorn-jsx/5.3.2_acorn@8.7.1:
|
||||
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
|
||||
peerDependencies:
|
||||
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
acorn: 8.7.0
|
||||
acorn: 8.7.1
|
||||
dev: true
|
||||
|
||||
/acorn/8.7.0:
|
||||
|
@ -277,6 +277,12 @@ packages:
|
|||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/acorn/8.7.1:
|
||||
resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/ajv-keywords/3.5.2_ajv@6.12.6:
|
||||
resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
|
||||
peerDependencies:
|
||||
|
@ -389,14 +395,14 @@ packages:
|
|||
engines: {node: '>=6.0'}
|
||||
dev: true
|
||||
|
||||
/clean-webpack-plugin/4.0.0_webpack@5.70.0:
|
||||
/clean-webpack-plugin/4.0.0_webpack@5.72.1:
|
||||
resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
peerDependencies:
|
||||
webpack: '>=4.0.0 <6.0.0'
|
||||
dependencies:
|
||||
del: 4.1.1
|
||||
webpack: 5.70.0_webpack-cli@4.9.2
|
||||
webpack: 5.72.1_webpack-cli@4.9.2
|
||||
dev: true
|
||||
|
||||
/clone-deep/4.0.1:
|
||||
|
@ -433,7 +439,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/concat-map/0.0.1:
|
||||
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
|
||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||
dev: true
|
||||
|
||||
/cross-spawn/7.0.3:
|
||||
|
@ -485,8 +491,8 @@ packages:
|
|||
resolution: {integrity: sha512-Ks+ANzLoIrFDUOJdjxYMH6CMKB8UQo5modAwvSZTxgF+vEs/U7G5IbWFUp6dS4klPkTDVdxbORuk8xAXXhMsWw==}
|
||||
dev: true
|
||||
|
||||
/enhanced-resolve/5.9.2:
|
||||
resolution: {integrity: sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==}
|
||||
/enhanced-resolve/5.9.3:
|
||||
resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
dependencies:
|
||||
graceful-fs: 4.2.9
|
||||
|
@ -529,13 +535,13 @@ packages:
|
|||
estraverse: 5.3.0
|
||||
dev: true
|
||||
|
||||
/eslint-utils/3.0.0_eslint@8.10.0:
|
||||
/eslint-utils/3.0.0_eslint@8.15.0:
|
||||
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
|
||||
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
|
||||
peerDependencies:
|
||||
eslint: '>=5'
|
||||
dependencies:
|
||||
eslint: 8.10.0
|
||||
eslint: 8.15.0
|
||||
eslint-visitor-keys: 2.1.0
|
||||
dev: true
|
||||
|
||||
|
@ -549,12 +555,12 @@ packages:
|
|||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/eslint/8.10.0:
|
||||
resolution: {integrity: sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==}
|
||||
/eslint/8.15.0:
|
||||
resolution: {integrity: sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@eslint/eslintrc': 1.2.1
|
||||
'@eslint/eslintrc': 1.2.3
|
||||
'@humanwhocodes/config-array': 0.9.5
|
||||
ajv: 6.12.6
|
||||
chalk: 4.1.2
|
||||
|
@ -563,9 +569,9 @@ packages:
|
|||
doctrine: 3.0.0
|
||||
escape-string-regexp: 4.0.0
|
||||
eslint-scope: 7.1.1
|
||||
eslint-utils: 3.0.0_eslint@8.10.0
|
||||
eslint-utils: 3.0.0_eslint@8.15.0
|
||||
eslint-visitor-keys: 3.3.0
|
||||
espree: 9.3.1
|
||||
espree: 9.3.2
|
||||
esquery: 1.4.0
|
||||
esutils: 2.0.3
|
||||
fast-deep-equal: 3.1.3
|
||||
|
@ -593,12 +599,12 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/espree/9.3.1:
|
||||
resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==}
|
||||
/espree/9.3.2:
|
||||
resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
acorn: 8.7.0
|
||||
acorn-jsx: 5.3.2_acorn@8.7.0
|
||||
acorn: 8.7.1
|
||||
acorn-jsx: 5.3.2_acorn@8.7.1
|
||||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
|
@ -660,7 +666,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/fast-levenshtein/2.0.6:
|
||||
resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=}
|
||||
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
|
||||
dev: true
|
||||
|
||||
/fastest-levenshtein/1.0.12:
|
||||
|
@ -712,7 +718,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/fs.realpath/1.0.0:
|
||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
||||
dev: true
|
||||
|
||||
/function-bind/1.1.1:
|
||||
|
@ -720,7 +726,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/functional-red-black-tree/1.0.1:
|
||||
resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=}
|
||||
resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
|
||||
dev: true
|
||||
|
||||
/get-stream/6.0.1:
|
||||
|
@ -812,12 +818,12 @@ packages:
|
|||
dev: true
|
||||
|
||||
/imurmurhash/0.1.4:
|
||||
resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=}
|
||||
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
|
||||
engines: {node: '>=0.8.19'}
|
||||
dev: true
|
||||
|
||||
/inflight/1.0.6:
|
||||
resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
|
||||
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
|
||||
dependencies:
|
||||
once: 1.4.0
|
||||
wrappy: 1.0.2
|
||||
|
@ -839,7 +845,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/is-extglob/2.1.1:
|
||||
resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
|
||||
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
|
@ -882,7 +888,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/isexe/2.0.0:
|
||||
resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
|
||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
dev: true
|
||||
|
||||
/isobject/3.0.1:
|
||||
|
@ -890,8 +896,8 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/itty-router/2.5.2:
|
||||
resolution: {integrity: sha512-igVdp/qoMe7aMnwB1eI9OCgV9HGyQlQ9LBDWPMSDkoYv7SpcxZp0t86noQcXKCSVK2B7y7z8d5SiaNbRMLUIyg==}
|
||||
/itty-router/2.6.1:
|
||||
resolution: {integrity: sha512-l9gxWe5TOLUESYnBn85Jxd6tIZLWdRX5YKkHIBfSgbNQ7UFPNUGuWihRV+LlEbfJJIzgLmhwAbaWRi5yWJm8kg==}
|
||||
dev: false
|
||||
|
||||
/jest-worker/27.5.1:
|
||||
|
@ -910,8 +916,8 @@ packages:
|
|||
argparse: 2.0.1
|
||||
dev: true
|
||||
|
||||
/json-parse-better-errors/1.0.2:
|
||||
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
|
||||
/json-parse-even-better-errors/2.3.1:
|
||||
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
|
||||
dev: true
|
||||
|
||||
/json-schema-traverse/0.4.1:
|
||||
|
@ -919,7 +925,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/json-stable-stringify-without-jsonify/1.0.1:
|
||||
resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=}
|
||||
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
||||
dev: true
|
||||
|
||||
/kind-of/6.0.3:
|
||||
|
@ -1004,7 +1010,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/natural-compare/1.4.0:
|
||||
resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
|
||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||
dev: true
|
||||
|
||||
/neo-async/2.6.2:
|
||||
|
@ -1028,7 +1034,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/once/1.4.0:
|
||||
resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
|
||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||
dependencies:
|
||||
wrappy: 1.0.2
|
||||
dev: true
|
||||
|
@ -1089,7 +1095,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/path-is-absolute/1.0.1:
|
||||
resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
|
||||
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
|
@ -1144,8 +1150,8 @@ packages:
|
|||
engines: {node: '>= 0.8.0'}
|
||||
dev: true
|
||||
|
||||
/prettier/2.5.1:
|
||||
resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==}
|
||||
/prettier/2.6.2:
|
||||
resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
@ -1325,7 +1331,7 @@ packages:
|
|||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/terser-webpack-plugin/5.3.1_webpack@5.70.0:
|
||||
/terser-webpack-plugin/5.3.1_webpack@5.72.1:
|
||||
resolution: {integrity: sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
peerDependencies:
|
||||
|
@ -1346,7 +1352,7 @@ packages:
|
|||
serialize-javascript: 6.0.0
|
||||
source-map: 0.6.1
|
||||
terser: 5.12.0
|
||||
webpack: 5.70.0_webpack-cli@4.9.2
|
||||
webpack: 5.72.1_webpack-cli@4.9.2
|
||||
dev: true
|
||||
|
||||
/terser/5.12.0:
|
||||
|
@ -1354,14 +1360,14 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
acorn: 8.7.0
|
||||
acorn: 8.7.1
|
||||
commander: 2.20.3
|
||||
source-map: 0.7.3
|
||||
source-map-support: 0.5.21
|
||||
dev: true
|
||||
|
||||
/text-table/0.2.0:
|
||||
resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
|
||||
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
|
||||
dev: true
|
||||
|
||||
/type-check/0.4.0:
|
||||
|
@ -1394,7 +1400,7 @@ packages:
|
|||
graceful-fs: 4.2.9
|
||||
dev: true
|
||||
|
||||
/webpack-cli/4.9.2_webpack@5.70.0:
|
||||
/webpack-cli/4.9.2_webpack@5.72.1:
|
||||
resolution: {integrity: sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
hasBin: true
|
||||
|
@ -1415,7 +1421,7 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@discoveryjs/json-ext': 0.5.7
|
||||
'@webpack-cli/configtest': 1.1.1_webpack-cli@4.9.2+webpack@5.70.0
|
||||
'@webpack-cli/configtest': 1.1.1_smhu6mcfcg7aivfsuosc335k3u
|
||||
'@webpack-cli/info': 1.4.1_webpack-cli@4.9.2
|
||||
'@webpack-cli/serve': 1.6.1_webpack-cli@4.9.2
|
||||
colorette: 2.0.16
|
||||
|
@ -1425,7 +1431,7 @@ packages:
|
|||
import-local: 3.1.0
|
||||
interpret: 2.2.0
|
||||
rechoir: 0.7.1
|
||||
webpack: 5.70.0_webpack-cli@4.9.2
|
||||
webpack: 5.72.1_webpack-cli@4.9.2
|
||||
webpack-merge: 5.8.0
|
||||
dev: true
|
||||
|
||||
|
@ -1442,8 +1448,8 @@ packages:
|
|||
engines: {node: '>=10.13.0'}
|
||||
dev: true
|
||||
|
||||
/webpack/5.70.0_webpack-cli@4.9.2:
|
||||
resolution: {integrity: sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==}
|
||||
/webpack/5.72.1_webpack-cli@4.9.2:
|
||||
resolution: {integrity: sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -1461,21 +1467,21 @@ packages:
|
|||
acorn-import-assertions: 1.8.0_acorn@8.7.0
|
||||
browserslist: 4.20.0
|
||||
chrome-trace-event: 1.0.3
|
||||
enhanced-resolve: 5.9.2
|
||||
enhanced-resolve: 5.9.3
|
||||
es-module-lexer: 0.9.3
|
||||
eslint-scope: 5.1.1
|
||||
events: 3.3.0
|
||||
glob-to-regexp: 0.4.1
|
||||
graceful-fs: 4.2.9
|
||||
json-parse-better-errors: 1.0.2
|
||||
json-parse-even-better-errors: 2.3.1
|
||||
loader-runner: 4.2.0
|
||||
mime-types: 2.1.34
|
||||
neo-async: 2.6.2
|
||||
schema-utils: 3.1.1
|
||||
tapable: 2.2.1
|
||||
terser-webpack-plugin: 5.3.1_webpack@5.70.0
|
||||
terser-webpack-plugin: 5.3.1_webpack@5.72.1
|
||||
watchpack: 2.3.1
|
||||
webpack-cli: 4.9.2_webpack@5.70.0
|
||||
webpack-cli: 4.9.2_webpack@5.72.1
|
||||
webpack-sources: 3.2.3
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
|
@ -1501,7 +1507,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/wrappy/1.0.2:
|
||||
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
|
||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||
dev: true
|
||||
|
||||
/yallist/4.0.0:
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"defaults": {
|
||||
"theme": "gelbooru",
|
||||
"length": 7
|
||||
"length": 7,
|
||||
"render": "auto"
|
||||
},
|
||||
"api": {
|
||||
"get": true,
|
||||
|
|
|
@ -8,9 +8,9 @@ import { validateID, minify } from '../utils';
|
|||
* @param {number} count
|
||||
* @param {string} theme
|
||||
* @param {number|string} length
|
||||
* @returns
|
||||
* @param {boolean} pixelated
|
||||
*/
|
||||
function genImage(count, theme, length) {
|
||||
function genImage(count, theme, length, pixelated) {
|
||||
let nums;
|
||||
if (length === 'auto') {
|
||||
nums = count.toString().split('');
|
||||
|
@ -29,7 +29,14 @@ function genImage(count, theme, length) {
|
|||
|
||||
const svg = `
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="${x}" height="${height}" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<svg
|
||||
width="${x}"
|
||||
height="${height}"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
${pixelated ? 'style="image-rendering: pixelated"' : ''}
|
||||
>
|
||||
<title>Moe Counter</title>
|
||||
<g>${parts}</g>
|
||||
</svg>
|
||||
|
@ -42,26 +49,35 @@ function genImage(count, theme, length) {
|
|||
* @param {FetchEvent} event
|
||||
*/
|
||||
export async function get(req, event) {
|
||||
// id
|
||||
const id = validateID(req.params.id);
|
||||
// theme
|
||||
let { theme, length, add } = req.query;
|
||||
if (!theme || !themes[theme]) {
|
||||
theme = settings.defaults.theme;
|
||||
}
|
||||
// length
|
||||
let _length = length || settings.defaults.length;
|
||||
if (length === 'auto') {
|
||||
_length = 'auto';
|
||||
} else if (!length || length <= 0 || length > 10) {
|
||||
_length = 7;
|
||||
}
|
||||
// render
|
||||
let pixelated = false;
|
||||
if (req.query.render === 'pixelated') {
|
||||
pixelated = true;
|
||||
}
|
||||
|
||||
// get times from KV and set time asynchronously (no await)
|
||||
const count = Number.parseInt(await KV.get(id)) || 0;
|
||||
let image;
|
||||
if (add !== '0') {
|
||||
image = genImage(count + 1, theme, _length);
|
||||
image = genImage(count + 1, theme, _length, pixelated);
|
||||
// do not quit worker before setting time
|
||||
event.waitUntil(KV.put(id, (count + 1).toString()));
|
||||
} else {
|
||||
image = genImage(count, theme, _length);
|
||||
image = genImage(count, theme, _length, pixelated);
|
||||
}
|
||||
|
||||
return await genResponse(req, image, {
|
||||
|
|
Loading…
Reference in New Issue