kopia lustrzana https://github.com/cheeaun/phanpy
				
				
				
			Experiment: resolve unresolved shortcodes
							rodzic
							
								
									efe8063361
								
							
						
					
					
						commit
						2eb96d2833
					
				|  | @ -23,6 +23,7 @@ | ||||||
|         "fast-blurhash": "~1.1.4", |         "fast-blurhash": "~1.1.4", | ||||||
|         "fast-equals": "~5.3.2", |         "fast-equals": "~5.3.2", | ||||||
|         "fuse.js": "~7.1.0", |         "fuse.js": "~7.1.0", | ||||||
|  |         "giframe": "~0.2.0", | ||||||
|         "html-prettify": "~1.0.7", |         "html-prettify": "~1.0.7", | ||||||
|         "idb-keyval": "~6.2.2", |         "idb-keyval": "~6.2.2", | ||||||
|         "intl-locale-textinfo-polyfill": "~3.0.0", |         "intl-locale-textinfo-polyfill": "~3.0.0", | ||||||
|  | @ -3893,6 +3894,38 @@ | ||||||
|         "node": ">=8" |         "node": ">=8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/@mapbox/node-pre-gyp": { | ||||||
|  |       "version": "1.0.11", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", | ||||||
|  |       "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", | ||||||
|  |       "license": "BSD-3-Clause", | ||||||
|  |       "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.7.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", | ||||||
|  |       "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "bin": { | ||||||
|  |         "semver": "bin/semver.js" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/@messageformat/parser": { |     "node_modules/@messageformat/parser": { | ||||||
|       "version": "5.1.1", |       "version": "5.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.1.tgz", |       "resolved": "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.1.tgz", | ||||||
|  | @ -4504,6 +4537,12 @@ | ||||||
|       "devOptional": true, |       "devOptional": true, | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|     "node_modules/acorn": { |     "node_modules/acorn": { | ||||||
|       "version": "8.12.1", |       "version": "8.12.1", | ||||||
|       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", |       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", | ||||||
|  | @ -4516,6 +4555,18 @@ | ||||||
|         "node": ">=0.4.0" |         "node": ">=0.4.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "debug": "4" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 6.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/ajv": { |     "node_modules/ajv": { | ||||||
|       "version": "8.17.1", |       "version": "8.17.1", | ||||||
|       "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", |       "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", | ||||||
|  | @ -4572,6 +4623,26 @@ | ||||||
|         "node": ">= 8" |         "node": ">= 8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/aproba": { | ||||||
|  |       "version": "2.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", | ||||||
|  |       "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|  |     "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==", | ||||||
|  |       "deprecated": "This package is no longer supported.", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "delegates": "^1.0.0", | ||||||
|  |         "readable-stream": "^3.6.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/argparse": { |     "node_modules/argparse": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", | ||||||
|  | @ -4782,7 +4853,6 @@ | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     }, |     }, | ||||||
|     "node_modules/base64-js": { |     "node_modules/base64-js": { | ||||||
|  | @ -4848,7 +4918,6 @@ | ||||||
|       "version": "1.1.11", |       "version": "1.1.11", | ||||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT", |       "license": "MIT", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "balanced-match": "^1.0.0", |         "balanced-match": "^1.0.0", | ||||||
|  | @ -5020,6 +5089,21 @@ | ||||||
|       ], |       ], | ||||||
|       "license": "CC-BY-4.0" |       "license": "CC-BY-4.0" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/canvas": { | ||||||
|  |       "version": "2.11.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", | ||||||
|  |       "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", | ||||||
|  |       "hasInstallScript": true, | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "@mapbox/node-pre-gyp": "^1.0.0", | ||||||
|  |         "nan": "^2.17.0", | ||||||
|  |         "simple-get": "^3.0.3" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=6" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/capital-case": { |     "node_modules/capital-case": { | ||||||
|       "version": "1.0.4", |       "version": "1.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", | ||||||
|  | @ -5088,6 +5172,15 @@ | ||||||
|         "fsevents": "~2.3.1" |         "fsevents": "~2.3.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/chownr": { | ||||||
|  |       "version": "2.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", | ||||||
|  |       "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/chroma-js": { |     "node_modules/chroma-js": { | ||||||
|       "version": "3.1.2", |       "version": "3.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.1.2.tgz", |       "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.1.2.tgz", | ||||||
|  | @ -5156,6 +5249,15 @@ | ||||||
|       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", | ||||||
|       "devOptional": true |       "devOptional": 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==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "bin": { | ||||||
|  |         "color-support": "bin.js" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/colors": { |     "node_modules/colors": { | ||||||
|       "version": "1.0.3", |       "version": "1.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", |       "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", | ||||||
|  | @ -5190,9 +5292,14 @@ | ||||||
|       "version": "0.0.1", |       "version": "0.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
|       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", |       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     }, |     }, | ||||||
|  |     "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": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|     "node_modules/constant-case": { |     "node_modules/constant-case": { | ||||||
|       "version": "3.0.4", |       "version": "3.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", |       "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", | ||||||
|  | @ -5480,7 +5587,6 @@ | ||||||
|       "version": "4.3.7", |       "version": "4.3.7", | ||||||
|       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", |       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||||||
|       "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", |       "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||||||
|       "devOptional": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "ms": "^2.1.3" |         "ms": "^2.1.3" | ||||||
|       }, |       }, | ||||||
|  | @ -5499,6 +5605,18 @@ | ||||||
|       "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", |       "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "mimic-response": "^2.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/deepmerge": { |     "node_modules/deepmerge": { | ||||||
|       "version": "4.3.1", |       "version": "4.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", |       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", | ||||||
|  | @ -5597,6 +5715,21 @@ | ||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/delegates": { | ||||||
|  |       "version": "1.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", | ||||||
|  |       "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", | ||||||
|  |       "license": "MIT" | ||||||
|  |     }, | ||||||
|  |     "node_modules/detect-libc": { | ||||||
|  |       "version": "2.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", | ||||||
|  |       "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", | ||||||
|  |       "license": "Apache-2.0", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/dom-input-range": { |     "node_modules/dom-input-range": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-2.0.1.tgz", | ||||||
|  | @ -5702,8 +5835,7 @@ | ||||||
|     "node_modules/emoji-regex": { |     "node_modules/emoji-regex": { | ||||||
|       "version": "8.0.0", |       "version": "8.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", |       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | ||||||
|       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", |       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/entities": { |     "node_modules/entities": { | ||||||
|       "version": "4.5.0", |       "version": "4.5.0", | ||||||
|  | @ -6134,11 +6266,40 @@ | ||||||
|         "node": ">=10" |         "node": ">=10" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "minipass": "^3.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/fs-minipass/node_modules/minipass": { | ||||||
|  |       "version": "3.3.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", | ||||||
|  |       "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "yallist": "^4.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/fs-minipass/node_modules/yallist": { | ||||||
|  |       "version": "4.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", | ||||||
|  |       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|     "node_modules/fs.realpath": { |     "node_modules/fs.realpath": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | ||||||
|       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", |       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/fsevents": { |     "node_modules/fsevents": { | ||||||
|       "version": "2.3.3", |       "version": "2.3.3", | ||||||
|  | @ -6198,6 +6359,48 @@ | ||||||
|         "node": ">=10" |         "node": ">=10" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/gauge": { | ||||||
|  |       "version": "3.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", | ||||||
|  |       "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", | ||||||
|  |       "deprecated": "This package is no longer supported.", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "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/gauge/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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/gauge/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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "ansi-regex": "^5.0.1" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/gensync": { |     "node_modules/gensync": { | ||||||
|       "version": "1.0.0-beta.2", |       "version": "1.0.0-beta.2", | ||||||
|       "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", |       "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", | ||||||
|  | @ -6262,11 +6465,19 @@ | ||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/giframe": { | ||||||
|  |       "version": "0.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/giframe/-/giframe-0.2.0.tgz", | ||||||
|  |       "integrity": "sha512-fJCuJSxTjB4FQ/qDvCZ6bbEXzrvQ1KQtl7BxqAeVunT3tSn5YoABq2o0poWgjnrqZgRSSuGGkLwF8O9oQ51HzQ==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "canvas": "^2.6.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/glob": { |     "node_modules/glob": { | ||||||
|       "version": "7.2.3", |       "version": "7.2.3", | ||||||
|       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", |       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", | ||||||
|       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", |       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "fs.realpath": "^1.0.0", |         "fs.realpath": "^1.0.0", | ||||||
|         "inflight": "^1.0.4", |         "inflight": "^1.0.4", | ||||||
|  | @ -6420,6 +6631,12 @@ | ||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/has-unicode": { | ||||||
|  |       "version": "2.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", | ||||||
|  |       "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|     "node_modules/hasown": { |     "node_modules/hasown": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", | ||||||
|  | @ -6456,6 +6673,19 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/html-prettify/-/html-prettify-1.0.7.tgz", |       "resolved": "https://registry.npmjs.org/html-prettify/-/html-prettify-1.0.7.tgz", | ||||||
|       "integrity": "sha512-99pRsP2PV2DyWnrVibNyad7gNmzCP7AANO8jw7Z9yanWyXH9dPdqdMXGefySplroqCNdk95u7j5TLxfyJ1Cbbg==" |       "integrity": "sha512-99pRsP2PV2DyWnrVibNyad7gNmzCP7AANO8jw7Z9yanWyXH9dPdqdMXGefySplroqCNdk95u7j5TLxfyJ1Cbbg==" | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "agent-base": "6", | ||||||
|  |         "debug": "4" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 6" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/human-signals": { |     "node_modules/human-signals": { | ||||||
|       "version": "2.1.0", |       "version": "2.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", |       "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", | ||||||
|  | @ -6517,7 +6747,6 @@ | ||||||
|       "version": "1.0.6", |       "version": "1.0.6", | ||||||
|       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | ||||||
|       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", |       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "once": "^1.3.0", |         "once": "^1.3.0", | ||||||
|         "wrappy": "1" |         "wrappy": "1" | ||||||
|  | @ -6526,8 +6755,7 @@ | ||||||
|     "node_modules/inherits": { |     "node_modules/inherits": { | ||||||
|       "version": "2.0.4", |       "version": "2.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||||
|       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/internal-slot": { |     "node_modules/internal-slot": { | ||||||
|       "version": "1.0.7", |       "version": "1.0.7", | ||||||
|  | @ -6695,7 +6923,6 @@ | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", | ||||||
|       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", |       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", | ||||||
|       "dev": true, |  | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=8" |         "node": ">=8" | ||||||
|       } |       } | ||||||
|  | @ -7256,6 +7483,21 @@ | ||||||
|         "sourcemap-codec": "^1.4.8" |         "sourcemap-codec": "^1.4.8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "semver": "^6.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "url": "https://github.com/sponsors/sindresorhus" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/masto": { |     "node_modules/masto": { | ||||||
|       "version": "7.2.0", |       "version": "7.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/masto/-/masto-7.2.0.tgz", |       "resolved": "https://registry.npmjs.org/masto/-/masto-7.2.0.tgz", | ||||||
|  | @ -7326,11 +7568,22 @@ | ||||||
|         "node": ">=6" |         "node": ">=6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "url": "https://github.com/sponsors/sindresorhus" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/minimatch": { |     "node_modules/minimatch": { | ||||||
|       "version": "3.1.2", |       "version": "3.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", | ||||||
|       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", |       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", | ||||||
|       "dev": true, |  | ||||||
|       "license": "ISC", |       "license": "ISC", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "brace-expansion": "^1.1.7" |         "brace-expansion": "^1.1.7" | ||||||
|  | @ -7348,6 +7601,49 @@ | ||||||
|         "node": ">=16 || 14 >=14.17" |         "node": ">=16 || 14 >=14.17" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/minizlib": { | ||||||
|  |       "version": "2.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", | ||||||
|  |       "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "minipass": "^3.0.0", | ||||||
|  |         "yallist": "^4.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/minizlib/node_modules/minipass": { | ||||||
|  |       "version": "3.3.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", | ||||||
|  |       "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "yallist": "^4.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/minizlib/node_modules/yallist": { | ||||||
|  |       "version": "4.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", | ||||||
|  |       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|  |     "node_modules/mkdirp": { | ||||||
|  |       "version": "1.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", | ||||||
|  |       "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "bin": { | ||||||
|  |         "mkdirp": "bin/cmd.js" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/moize": { |     "node_modules/moize": { | ||||||
|       "version": "6.1.6", |       "version": "6.1.6", | ||||||
|       "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz", |       "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz", | ||||||
|  | @ -7372,8 +7668,13 @@ | ||||||
|     "node_modules/ms": { |     "node_modules/ms": { | ||||||
|       "version": "2.1.3", |       "version": "2.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||||||
|       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", |       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" | ||||||
|       "devOptional": true |     }, | ||||||
|  |     "node_modules/nan": { | ||||||
|  |       "version": "2.23.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz", | ||||||
|  |       "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==", | ||||||
|  |       "license": "MIT" | ||||||
|     }, |     }, | ||||||
|     "node_modules/nanoid": { |     "node_modules/nanoid": { | ||||||
|       "version": "3.3.11", |       "version": "3.3.11", | ||||||
|  | @ -7404,6 +7705,48 @@ | ||||||
|         "tslib": "^2.0.3" |         "tslib": "^2.0.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/node-fetch": { | ||||||
|  |       "version": "2.7.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | ||||||
|  |       "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "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-fetch/node_modules/tr46": { | ||||||
|  |       "version": "0.0.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", | ||||||
|  |       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", | ||||||
|  |       "license": "MIT" | ||||||
|  |     }, | ||||||
|  |     "node_modules/node-fetch/node_modules/webidl-conversions": { | ||||||
|  |       "version": "3.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", | ||||||
|  |       "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", | ||||||
|  |       "license": "BSD-2-Clause" | ||||||
|  |     }, | ||||||
|  |     "node_modules/node-fetch/node_modules/whatwg-url": { | ||||||
|  |       "version": "5.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", | ||||||
|  |       "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "tr46": "~0.0.3", | ||||||
|  |         "webidl-conversions": "^3.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/node-html-parser": { |     "node_modules/node-html-parser": { | ||||||
|       "version": "6.1.13", |       "version": "6.1.13", | ||||||
|       "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", |       "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", | ||||||
|  | @ -7421,6 +7764,21 @@ | ||||||
|       "devOptional": true, |       "devOptional": true, | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/nopt": { | ||||||
|  |       "version": "5.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", | ||||||
|  |       "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "abbrev": "1" | ||||||
|  |       }, | ||||||
|  |       "bin": { | ||||||
|  |         "nopt": "bin/nopt.js" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=6" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/normalize-path": { |     "node_modules/normalize-path": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", | ||||||
|  | @ -7452,6 +7810,19 @@ | ||||||
|         "node": ">=8" |         "node": ">=8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/npmlog": { | ||||||
|  |       "version": "5.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", | ||||||
|  |       "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", | ||||||
|  |       "deprecated": "This package is no longer supported.", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "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/nth-check": { |     "node_modules/nth-check": { | ||||||
|       "version": "2.1.1", |       "version": "2.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", |       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", | ||||||
|  | @ -7469,8 +7840,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | ||||||
|       "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", |       "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", | ||||||
|       "license": "MIT", |       "license": "MIT", | ||||||
|       "optional": true, |  | ||||||
|       "peer": true, |  | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=0.10.0" |         "node": ">=0.10.0" | ||||||
|       } |       } | ||||||
|  | @ -7525,7 +7894,6 @@ | ||||||
|       "version": "1.4.0", |       "version": "1.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||||
|       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", |       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "wrappy": "1" |         "wrappy": "1" | ||||||
|       } |       } | ||||||
|  | @ -7705,7 +8073,6 @@ | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | ||||||
|       "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", |       "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", | ||||||
|       "dev": true, |  | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=0.10.0" |         "node": ">=0.10.0" | ||||||
|       } |       } | ||||||
|  | @ -8857,7 +9224,6 @@ | ||||||
|       "version": "3.6.2", |       "version": "3.6.2", | ||||||
|       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", |       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", | ||||||
|       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", |       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "inherits": "^2.0.3", |         "inherits": "^2.0.3", | ||||||
|         "string_decoder": "^1.1.1", |         "string_decoder": "^1.1.1", | ||||||
|  | @ -9013,6 +9379,22 @@ | ||||||
|         "node": ">=8" |         "node": ">=8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/rimraf": { | ||||||
|  |       "version": "3.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", | ||||||
|  |       "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", | ||||||
|  |       "deprecated": "Rimraf versions prior to v4 are no longer supported", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "glob": "^7.1.3" | ||||||
|  |       }, | ||||||
|  |       "bin": { | ||||||
|  |         "rimraf": "bin.js" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "url": "https://github.com/sponsors/isaacs" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/rollup": { |     "node_modules/rollup": { | ||||||
|       "version": "4.52.2", |       "version": "4.52.2", | ||||||
|       "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.2.tgz", |       "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.2.tgz", | ||||||
|  | @ -9090,7 +9472,6 @@ | ||||||
|       "version": "5.2.1", |       "version": "5.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", |       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||||||
|       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", |       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | ||||||
|       "dev": true, |  | ||||||
|       "funding": [ |       "funding": [ | ||||||
|         { |         { | ||||||
|           "type": "github", |           "type": "github", | ||||||
|  | @ -9137,7 +9518,6 @@ | ||||||
|       "version": "6.3.1", |       "version": "6.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", |       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", | ||||||
|       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", |       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", | ||||||
|       "devOptional": true, |  | ||||||
|       "bin": { |       "bin": { | ||||||
|         "semver": "bin/semver.js" |         "semver": "bin/semver.js" | ||||||
|       } |       } | ||||||
|  | @ -9162,6 +9542,12 @@ | ||||||
|         "randombytes": "^2.1.0" |         "randombytes": "^2.1.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/set-blocking": { | ||||||
|  |       "version": "2.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", | ||||||
|  |       "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|     "node_modules/set-function-length": { |     "node_modules/set-function-length": { | ||||||
|       "version": "1.2.2", |       "version": "1.2.2", | ||||||
|       "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", |       "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", | ||||||
|  | @ -9236,8 +9622,7 @@ | ||||||
|     "node_modules/signal-exit": { |     "node_modules/signal-exit": { | ||||||
|       "version": "3.0.7", |       "version": "3.0.7", | ||||||
|       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", |       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", | ||||||
|       "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", |       "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/simple-code-frame": { |     "node_modules/simple-code-frame": { | ||||||
|       "version": "1.3.0", |       "version": "1.3.0", | ||||||
|  | @ -9248,6 +9633,37 @@ | ||||||
|         "kolorist": "^1.6.0" |         "kolorist": "^1.6.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "funding": [ | ||||||
|  |         { | ||||||
|  |           "type": "github", | ||||||
|  |           "url": "https://github.com/sponsors/feross" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "type": "patreon", | ||||||
|  |           "url": "https://www.patreon.com/feross" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "type": "consulting", | ||||||
|  |           "url": "https://feross.org/support" | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       "license": "MIT" | ||||||
|  |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "MIT", | ||||||
|  |       "dependencies": { | ||||||
|  |         "decompress-response": "^4.2.0", | ||||||
|  |         "once": "^1.3.1", | ||||||
|  |         "simple-concat": "^1.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/smob": { |     "node_modules/smob": { | ||||||
|       "version": "1.5.0", |       "version": "1.5.0", | ||||||
|       "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", |       "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", | ||||||
|  | @ -9331,7 +9747,6 @@ | ||||||
|       "version": "1.3.0", |       "version": "1.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", |       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", | ||||||
|       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", |       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "safe-buffer": "~5.2.0" |         "safe-buffer": "~5.2.0" | ||||||
|       } |       } | ||||||
|  | @ -9354,7 +9769,6 @@ | ||||||
|       "version": "4.2.3", |       "version": "4.2.3", | ||||||
|       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", |       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", | ||||||
|       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", |       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "emoji-regex": "^8.0.0", |         "emoji-regex": "^8.0.0", | ||||||
|         "is-fullwidth-code-point": "^3.0.0", |         "is-fullwidth-code-point": "^3.0.0", | ||||||
|  | @ -9404,7 +9818,6 @@ | ||||||
|       "version": "5.0.1", |       "version": "5.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", |       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", | ||||||
|       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", |       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", | ||||||
|       "dev": true, |  | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=8" |         "node": ">=8" | ||||||
|       } |       } | ||||||
|  | @ -9413,7 +9826,6 @@ | ||||||
|       "version": "6.0.1", |       "version": "6.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", |       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", | ||||||
|       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", |       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "ansi-regex": "^5.0.1" |         "ansi-regex": "^5.0.1" | ||||||
|       }, |       }, | ||||||
|  | @ -9595,6 +10007,38 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.2.0.tgz", |       "resolved": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.2.0.tgz", | ||||||
|       "integrity": "sha512-KRu67z1hb4sPxMdFIF2kaufYHTcWOb8NVLbIl2g5dPWZkEQ6D3wfSIVJ7iXbicTt9cO3e0vARqgx9fITtTZxQw==" |       "integrity": "sha512-KRu67z1hb4sPxMdFIF2kaufYHTcWOb8NVLbIl2g5dPWZkEQ6D3wfSIVJ7iXbicTt9cO3e0vARqgx9fITtTZxQw==" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/tar": { | ||||||
|  |       "version": "6.2.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", | ||||||
|  |       "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "chownr": "^2.0.0", | ||||||
|  |         "fs-minipass": "^2.0.0", | ||||||
|  |         "minipass": "^5.0.0", | ||||||
|  |         "minizlib": "^2.1.1", | ||||||
|  |         "mkdirp": "^1.0.3", | ||||||
|  |         "yallist": "^4.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/tar/node_modules/minipass": { | ||||||
|  |       "version": "5.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", | ||||||
|  |       "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/tar/node_modules/yallist": { | ||||||
|  |       "version": "4.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", | ||||||
|  |       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", | ||||||
|  |       "license": "ISC" | ||||||
|  |     }, | ||||||
|     "node_modules/temml": { |     "node_modules/temml": { | ||||||
|       "version": "0.11.11", |       "version": "0.11.11", | ||||||
|       "resolved": "https://registry.npmjs.org/temml/-/temml-0.11.11.tgz", |       "resolved": "https://registry.npmjs.org/temml/-/temml-0.11.11.tgz", | ||||||
|  | @ -10086,8 +10530,7 @@ | ||||||
|     "node_modules/util-deprecate": { |     "node_modules/util-deprecate": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||||||
|       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", |       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/valtio": { |     "node_modules/valtio": { | ||||||
|       "version": "2.1.8", |       "version": "2.1.8", | ||||||
|  | @ -10425,6 +10868,15 @@ | ||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "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==", | ||||||
|  |       "license": "ISC", | ||||||
|  |       "dependencies": { | ||||||
|  |         "string-width": "^1.0.2 || 2 || 3 || 4" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/workbox-background-sync": { |     "node_modules/workbox-background-sync": { | ||||||
|       "version": "7.3.0", |       "version": "7.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.3.0.tgz", |       "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.3.0.tgz", | ||||||
|  | @ -10814,8 +11266,7 @@ | ||||||
|     "node_modules/wrappy": { |     "node_modules/wrappy": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||||
|       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", |       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/ws": { |     "node_modules/ws": { | ||||||
|       "version": "8.18.0", |       "version": "8.18.0", | ||||||
|  |  | ||||||
|  | @ -36,6 +36,7 @@ | ||||||
|     "fast-blurhash": "~1.1.4", |     "fast-blurhash": "~1.1.4", | ||||||
|     "fast-equals": "~5.3.2", |     "fast-equals": "~5.3.2", | ||||||
|     "fuse.js": "~7.1.0", |     "fuse.js": "~7.1.0", | ||||||
|  |     "giframe": "~0.2.0", | ||||||
|     "html-prettify": "~1.0.7", |     "html-prettify": "~1.0.7", | ||||||
|     "idb-keyval": "~6.2.2", |     "idb-keyval": "~6.2.2", | ||||||
|     "intl-locale-textinfo-polyfill": "~3.0.0", |     "intl-locale-textinfo-polyfill": "~3.0.0", | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								public/sw.js
								
								
								
								
							
							
						
						
									
										22
									
								
								public/sw.js
								
								
								
								
							|  | @ -236,6 +236,28 @@ const apiExtendedRoute = new RegExpRoute( | ||||||
| ); | ); | ||||||
| registerRoute(apiExtendedRoute); | registerRoute(apiExtendedRoute); | ||||||
| 
 | 
 | ||||||
|  | // Cache ActivityPub requests (Accept: application/activity+json)
 | ||||||
|  | const activityPubRoute = new Route( | ||||||
|  |   ({ request }) => { | ||||||
|  |     const acceptHeader = request.headers.get('accept'); | ||||||
|  |     return acceptHeader?.includes('application/activity+json'); | ||||||
|  |   }, | ||||||
|  |   new StaleWhileRevalidate({ | ||||||
|  |     cacheName: 'activity-json', | ||||||
|  |     plugins: [ | ||||||
|  |       new ExpirationPlugin({ | ||||||
|  |         maxEntries: 30, | ||||||
|  |         maxAgeSeconds: 60 * 60, // 1 hour
 | ||||||
|  |         ...expirationPluginOptions, | ||||||
|  |       }), | ||||||
|  |       new CacheableResponsePlugin({ | ||||||
|  |         statuses: [0, 200], | ||||||
|  |       }), | ||||||
|  |     ], | ||||||
|  |   }), | ||||||
|  | ); | ||||||
|  | registerRoute(activityPubRoute); | ||||||
|  | 
 | ||||||
| // Note: expiration is not working as expected
 | // Note: expiration is not working as expected
 | ||||||
| // https://github.com/GoogleChrome/workbox/issues/3316
 | // https://github.com/GoogleChrome/workbox/issues/3316
 | ||||||
| //
 | //
 | ||||||
|  |  | ||||||
|  | @ -121,7 +121,11 @@ function AccountBlock({ | ||||||
|           <> |           <> | ||||||
|             {displayName ? ( |             {displayName ? ( | ||||||
|               <b> |               <b> | ||||||
|                 <EmojiText text={displayName} emojis={emojis} /> |                 <EmojiText | ||||||
|  |                   text={displayName} | ||||||
|  |                   emojis={emojis} | ||||||
|  |                   resolverURL={url} | ||||||
|  |                 /> | ||||||
|               </b> |               </b> | ||||||
|             ) : ( |             ) : ( | ||||||
|               <b>{username}</b> |               <b>{username}</b> | ||||||
|  |  | ||||||
|  | @ -1,45 +1,112 @@ | ||||||
| import { memo } from 'preact/compat'; | import pThrottle from 'p-throttle'; | ||||||
|  | import { useEffect, useState } from 'preact/hooks'; | ||||||
| 
 | 
 | ||||||
|  | import { getGifFirstFrame } from '../utils/get-gif-first-frame'; | ||||||
| import mem from '../utils/mem'; | import mem from '../utils/mem'; | ||||||
| 
 | 
 | ||||||
| import CustomEmoji from './custom-emoji'; | import CustomEmoji from './custom-emoji'; | ||||||
| 
 | 
 | ||||||
|  | const throttledFetch = pThrottle({ | ||||||
|  |   limit: 2, | ||||||
|  |   interval: 1000, | ||||||
|  | })(fetch); | ||||||
|  | 
 | ||||||
|  | const SHORTCODES_REGEX = /(\:(\w|\+|\-)+\:)(?=|[\!\.\?]|$)/g; | ||||||
|  | 
 | ||||||
| const shortcodesRegexp = mem((shortcodes) => { | const shortcodesRegexp = mem((shortcodes) => { | ||||||
|   return new RegExp(`:(${shortcodes.join('|')}):`, 'g'); |   return new RegExp(`:(${shortcodes.join('|')}):`, 'g'); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| function EmojiText({ text, emojis, staticEmoji }) { | function EmojiText({ text, emojis = [], staticEmoji, resolverURL }) { | ||||||
|  |   const [resolvedEmojis, setResolvedEmojis] = useState([]); | ||||||
|  |   const [loading, setLoading] = useState(false); | ||||||
|  | 
 | ||||||
|  |   useEffect(() => { | ||||||
|  |     if (!resolverURL || !text?.includes(':')) return; | ||||||
|  | 
 | ||||||
|  |     const matches = text.match(SHORTCODES_REGEX); | ||||||
|  |     if (!matches) return; | ||||||
|  | 
 | ||||||
|  |     const hasUnresolved = matches.some((match) => { | ||||||
|  |       const shortcode = match.slice(1, -1); | ||||||
|  |       return !emojis.some((e) => e.shortcode === shortcode); | ||||||
|  |     }); | ||||||
|  |     if (!hasUnresolved) return; | ||||||
|  | 
 | ||||||
|  |     setLoading(true); | ||||||
|  | 
 | ||||||
|  |     (async () => { | ||||||
|  |       try { | ||||||
|  |         const response = await throttledFetch(resolverURL, { | ||||||
|  |           headers: { accept: 'application/activity+json' }, | ||||||
|  |           referrerPolicy: 'no-referrer', | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         const data = await response.json(); | ||||||
|  |         const emojiTags = data.tag?.filter((t) => t.type === 'Emoji') || []; | ||||||
|  | 
 | ||||||
|  |         if (!emojiTags.length) return; | ||||||
|  | 
 | ||||||
|  |         const emojis = emojiTags.map((t) => ({ | ||||||
|  |           shortcode: t.name.replace(/^:|:$/g, ''), | ||||||
|  |           url: t.icon.url, | ||||||
|  |         })); | ||||||
|  | 
 | ||||||
|  |         await Promise.all( | ||||||
|  |           emojis.map(async (emoji, index) => { | ||||||
|  |             const tag = emojiTags[index]; | ||||||
|  |             if (tag.icon?.mediaType === 'image/gif') { | ||||||
|  |               const staticUrl = await getGifFirstFrame(emoji.url); | ||||||
|  |               if (staticUrl) emoji.staticUrl = staticUrl; | ||||||
|  |             } | ||||||
|  |           }), | ||||||
|  |         ); | ||||||
|  | 
 | ||||||
|  |         setResolvedEmojis(emojis); | ||||||
|  |       } catch (error) { | ||||||
|  |         console.error('Failed to resolve emojis:', error); | ||||||
|  |       } finally { | ||||||
|  |         setLoading(false); | ||||||
|  |       } | ||||||
|  |     })(); | ||||||
|  |   }, [resolverURL, text, emojis?.length]); | ||||||
|  | 
 | ||||||
|   if (!text) return ''; |   if (!text) return ''; | ||||||
|   if (!emojis?.length) return text; |   if (!text.includes(':')) return text; | ||||||
|   if (text.indexOf(':') === -1) return text; | 
 | ||||||
|   // const regex = new RegExp( |   if (resolverURL && loading) { | ||||||
|   //   `:(${emojis.map((e) => e.shortcode).join('|')}):`, |     return text.replace(SHORTCODES_REGEX, ''); | ||||||
|   //   'g', |   } | ||||||
|   // ); | 
 | ||||||
|   const regex = shortcodesRegexp(emojis.map((e) => e.shortcode)); |   const allEmojis = [ | ||||||
|   const elements = text.split(regex).map((word, i) => { |     ...resolvedEmojis.filter( | ||||||
|     const emoji = emojis.find((e) => e.shortcode === word); |       (resolved) => | ||||||
|  |         !emojis.some((emoji) => emoji.shortcode === resolved.shortcode), | ||||||
|  |     ), | ||||||
|  |     ...emojis, | ||||||
|  |   ]; | ||||||
|  |   if (!allEmojis.length) return text; | ||||||
|  | 
 | ||||||
|  |   const regex = shortcodesRegexp(allEmojis.map((e) => e.shortcode)); | ||||||
|  |   const elements = text.split(regex).map((word, index) => { | ||||||
|  |     const emoji = allEmojis.find((e) => e.shortcode === word); | ||||||
|  | 
 | ||||||
|     if (emoji) { |     if (emoji) { | ||||||
|       const { url, staticUrl } = emoji; |       const { url, staticUrl } = emoji; | ||||||
|       return ( |       return ( | ||||||
|         <CustomEmoji |         <CustomEmoji | ||||||
|  |           key={`${word}-${index}`} | ||||||
|           staticUrl={staticEmoji ? undefined : staticUrl} |           staticUrl={staticEmoji ? undefined : staticUrl} | ||||||
|           alt={word} |  | ||||||
|           url={staticEmoji ? staticUrl || url : url} |           url={staticEmoji ? staticUrl || url : url} | ||||||
|           key={word + '-' + i} // Handle >= 2 same shortcodes |           alt={word} | ||||||
|         /> |         /> | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     return word; |     return word; | ||||||
|   }); |   }); | ||||||
|  | 
 | ||||||
|   return elements; |   return elements; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default mem(EmojiText); | export default EmojiText; | ||||||
| 
 |  | ||||||
| // export default memo( |  | ||||||
| //   EmojiText, |  | ||||||
| //   (oldProps, newProps) => |  | ||||||
| //     oldProps.text === newProps.text && |  | ||||||
| //     oldProps.emojis?.length === newProps.emojis?.length, |  | ||||||
| // ); |  | ||||||
|  |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| import './name-text.css'; | import './name-text.css'; | ||||||
| 
 | 
 | ||||||
| import { useLingui } from '@lingui/react'; | import { useLingui } from '@lingui/react'; | ||||||
| import { memo } from 'preact/compat'; |  | ||||||
| 
 | 
 | ||||||
| import { api } from '../utils/api'; | import { api } from '../utils/api'; | ||||||
| import getDomain from '../utils/get-domain'; |  | ||||||
| import mem from '../utils/mem'; | import mem from '../utils/mem'; | ||||||
| import states from '../utils/states'; | import states from '../utils/states'; | ||||||
| 
 | 
 | ||||||
|  | @ -55,8 +53,6 @@ function NameText({ | ||||||
| 
 | 
 | ||||||
|   if (!instance) instance = api().instance; |   if (!instance) instance = api().instance; | ||||||
| 
 | 
 | ||||||
|   const accountInstance = getDomain(url); |  | ||||||
| 
 |  | ||||||
|   const trimmedUsername = username.toLowerCase().trim(); |   const trimmedUsername = username.toLowerCase().trim(); | ||||||
|   const trimmedDisplayName = (displayName || '').toLowerCase().trim(); |   const trimmedDisplayName = (displayName || '').toLowerCase().trim(); | ||||||
|   const shortenedDisplayName = trimmedDisplayName |   const shortenedDisplayName = trimmedDisplayName | ||||||
|  | @ -113,7 +109,12 @@ function NameText({ | ||||||
|       {displayName && !short ? ( |       {displayName && !short ? ( | ||||||
|         <> |         <> | ||||||
|           <b dir="auto"> |           <b dir="auto"> | ||||||
|             <EmojiText text={displayName} emojis={emojis} staticEmoji /> |             <EmojiText | ||||||
|  |               text={displayName} | ||||||
|  |               emojis={emojis} | ||||||
|  |               resolverURL={account.url} | ||||||
|  |               staticEmoji | ||||||
|  |             /> | ||||||
|           </b> |           </b> | ||||||
|           {!showAcct && !hideUsername && ( |           {!showAcct && !hideUsername && ( | ||||||
|             <> |             <> | ||||||
|  | @ -148,11 +149,4 @@ function NameText({ | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default mem(NameText); | export default NameText; | ||||||
| 
 |  | ||||||
| // export default memo(NameText, (oldProps, newProps) => { |  | ||||||
| //   // Only care about account.id, the other props usually don't change |  | ||||||
| //   const { account } = oldProps; |  | ||||||
| //   const { account: newAccount } = newProps; |  | ||||||
| //   return account?.acct === newAccount?.acct; |  | ||||||
| // }); |  | ||||||
|  |  | ||||||
|  | @ -13,62 +13,62 @@ msgstr "" | ||||||
| "Language-Team: \n" | "Language-Team: \n" | ||||||
| "Plural-Forms: \n" | "Plural-Forms: \n" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:139 | #: src/components/account-block.jsx:143 | ||||||
| msgid "Locked" | msgid "Locked" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #. placeholder {0}: shortenNumber(statusesCount) | #. placeholder {0}: shortenNumber(statusesCount) | ||||||
| #: src/components/account-block.jsx:146 | #: src/components/account-block.jsx:150 | ||||||
| msgid "Posts: {0}" | msgid "Posts: {0}" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #. placeholder {0}: niceDateTime(lastStatusAt, { hideTime: true, }) | #. placeholder {0}: niceDateTime(lastStatusAt, { hideTime: true, }) | ||||||
| #: src/components/account-block.jsx:151 | #: src/components/account-block.jsx:155 | ||||||
| msgid "Last posted: {0}" | msgid "Last posted: {0}" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:166 | #: src/components/account-block.jsx:170 | ||||||
| #: src/components/account-info.jsx:678 | #: src/components/account-info.jsx:678 | ||||||
| msgid "Automated" | msgid "Automated" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:173 | #: src/components/account-block.jsx:177 | ||||||
| #: src/components/account-info.jsx:683 | #: src/components/account-info.jsx:683 | ||||||
| #: src/components/status.jsx:569 | #: src/components/status.jsx:569 | ||||||
| msgid "Group" | msgid "Group" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:183 | #: src/components/account-block.jsx:187 | ||||||
| msgid "Mutual" | msgid "Mutual" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:187 | #: src/components/account-block.jsx:191 | ||||||
| #: src/components/related-actions.jsx:882 | #: src/components/related-actions.jsx:882 | ||||||
| msgid "Requested" | msgid "Requested" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:191 | #: src/components/account-block.jsx:195 | ||||||
| #: src/components/related-actions.jsx:873 | #: src/components/related-actions.jsx:873 | ||||||
| msgid "Following" | msgid "Following" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:195 | #: src/components/account-block.jsx:199 | ||||||
| #: src/components/related-actions.jsx:182 | #: src/components/related-actions.jsx:182 | ||||||
| msgid "Follows you" | msgid "Follows you" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:203 | #: src/components/account-block.jsx:207 | ||||||
| msgid "{followersCount, plural, one {# follower} other {# followers}}" | msgid "{followersCount, plural, one {# follower} other {# followers}}" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/components/account-block.jsx:212 | #: src/components/account-block.jsx:216 | ||||||
| #: src/components/account-info.jsx:726 | #: src/components/account-info.jsx:726 | ||||||
| msgid "Verified" | msgid "Verified" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) | #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) | ||||||
| #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) | #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) | ||||||
| #: src/components/account-block.jsx:227 | #: src/components/account-block.jsx:231 | ||||||
| #: src/components/account-info.jsx:865 | #: src/components/account-info.jsx:865 | ||||||
| msgid "Joined <0>{0}</0>" | msgid "Joined <0>{0}</0>" | ||||||
| msgstr "" | msgstr "" | ||||||
|  | @ -120,7 +120,7 @@ msgstr "" | ||||||
| #: src/components/status.jsx:2267 | #: src/components/status.jsx:2267 | ||||||
| #: src/components/status.jsx:2955 | #: src/components/status.jsx:2955 | ||||||
| #: src/components/status.jsx:2958 | #: src/components/status.jsx:2958 | ||||||
| #: src/pages/account-statuses.jsx:540 | #: src/pages/account-statuses.jsx:544 | ||||||
| #: src/pages/accounts.jsx:118 | #: src/pages/accounts.jsx:118 | ||||||
| #: src/pages/hashtag.jsx:203 | #: src/pages/hashtag.jsx:203 | ||||||
| #: src/pages/list.jsx:171 | #: src/pages/list.jsx:171 | ||||||
|  | @ -2958,31 +2958,31 @@ msgstr "" | ||||||
| msgid "Showing posts in {0}" | msgid "Showing posts in {0}" | ||||||
| msgstr "Showing posts in {0}" | msgstr "Showing posts in {0}" | ||||||
| 
 | 
 | ||||||
| #: src/pages/account-statuses.jsx:517 | #: src/pages/account-statuses.jsx:521 | ||||||
| msgid "Nothing to see here yet." | msgid "Nothing to see here yet." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/pages/account-statuses.jsx:518 | #: src/pages/account-statuses.jsx:522 | ||||||
| #: src/pages/public.jsx:99 | #: src/pages/public.jsx:99 | ||||||
| #: src/pages/trending.jsx:452 | #: src/pages/trending.jsx:452 | ||||||
| msgid "Unable to load posts" | msgid "Unable to load posts" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/pages/account-statuses.jsx:559 | #: src/pages/account-statuses.jsx:563 | ||||||
| #: src/pages/account-statuses.jsx:589 | #: src/pages/account-statuses.jsx:593 | ||||||
| msgid "Unable to fetch account info" | msgid "Unable to fetch account info" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #. placeholder {0}: accountInstance ? ( <> {' '} (<b>{punycode.toUnicode(accountInstance)}</b>) </> ) : null | #. placeholder {0}: accountInstance ? ( <> {' '} (<b>{punycode.toUnicode(accountInstance)}</b>) </> ) : null | ||||||
| #: src/pages/account-statuses.jsx:566 | #: src/pages/account-statuses.jsx:570 | ||||||
| msgid "Switch to account's instance {0}" | msgid "Switch to account's instance {0}" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/pages/account-statuses.jsx:596 | #: src/pages/account-statuses.jsx:600 | ||||||
| msgid "Switch to my instance (<0>{currentInstance}</0>)" | msgid "Switch to my instance (<0>{currentInstance}</0>)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: src/pages/account-statuses.jsx:669 | #: src/pages/account-statuses.jsx:673 | ||||||
| msgid "Month" | msgid "Month" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -505,7 +505,11 @@ function AccountStatuses() { | ||||||
|             // }} |             // }} | ||||||
|           > |           > | ||||||
|             <b> |             <b> | ||||||
|               <EmojiText text={displayName} emojis={emojis} /> |               <EmojiText | ||||||
|  |                 text={displayName} | ||||||
|  |                 emojis={emojis} | ||||||
|  |                 resolverURL={account?.url} | ||||||
|  |               /> | ||||||
|             </b> |             </b> | ||||||
|             <div> |             <div> | ||||||
|               <span class="bidi-isolate">@{acct}</span> |               <span class="bidi-isolate">@{acct}</span> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,24 @@ | ||||||
|  | import GIFrame from 'giframe'; | ||||||
|  | 
 | ||||||
|  | export async function getGifFirstFrame(gifUrl) { | ||||||
|  |   try { | ||||||
|  |     const giframe = new GIFrame(0, { | ||||||
|  |       usePNG: true, | ||||||
|  |     }); | ||||||
|  |     const base64Promise = giframe.getBase64(); | ||||||
|  | 
 | ||||||
|  |     const response = await fetch(gifUrl); | ||||||
|  |     const buf = await response.arrayBuffer(); | ||||||
|  |     giframe.feed(new Uint8Array(buf)); | ||||||
|  | 
 | ||||||
|  |     const base64 = await base64Promise; | ||||||
|  |     // Convert data URI to blob
 | ||||||
|  |     // More memory-efficient if same image is rendered multiple times
 | ||||||
|  |     const blob = await (await fetch(base64)).blob(); | ||||||
|  |     const staticUrl = URL.createObjectURL(blob); | ||||||
|  |     return staticUrl; | ||||||
|  |   } catch (e) { | ||||||
|  |     // Fail silently if giframe fails
 | ||||||
|  |     return null; | ||||||
|  |   } | ||||||
|  | } | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 Lim Chee Aun
						Lim Chee Aun