[READ-ONLY] Mirror of https://github.com/probablykasper/thumbnail-grabber. Chrome extension for grabbing thumbnails/covers
browser-extension chrome chrome-extension chrome-extention extension
0

Configure Feed

Select the types of activity you want to include in your feed.

Added eslint

Kasper (Dec 11, 2020, 9:22 PM +0100) 18a1c6d2 6e80a3d9

+649 -34
+33
.eslintrc.js
··· 1 + module.exports = { 2 + env: { 3 + es2020: true, 4 + node: true, 5 + browser: true, 6 + webextensions: true, 7 + }, 8 + extends: 'eslint:recommended', 9 + parserOptions: { 10 + ecmaVersion: 2020, 11 + sourceType: 'module', 12 + }, 13 + ignorePatterns: ['**/node_modules'], 14 + rules: { 15 + indent: ['error', 2], 16 + quotes: ['error', 'single', { 'avoidEscape': true }], 17 + 'comma-dangle': ['error', 'always-multiline'], 18 + // semi: ['error', 'never'], 19 + // 'no-unused-vars': [ 20 + // 'error', 21 + // { args: 'none' }, 22 + // ], 23 + 'linebreak-style': ['error', 'unix'], 24 + 'no-extra-parens': ['error', 'all'], 25 + 'no-loss-of-precision': ['error'], 26 + 'space-before-function-paren': ['error', 'never'], 27 + 'object-curly-spacing': ['error', 'always'], 28 + 'array-bracket-spacing': ['error', 'never', { 29 + // arraysInArrays: true, 30 + // objectsInArrays: true, 31 + }], 32 + }, 33 + }
+584
package-lock.json
··· 1248 1248 "to-fast-properties": "^2.0.0" 1249 1249 } 1250 1250 }, 1251 + "@eslint/eslintrc": { 1252 + "version": "0.2.2", 1253 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", 1254 + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", 1255 + "dev": true, 1256 + "requires": { 1257 + "ajv": "^6.12.4", 1258 + "debug": "^4.1.1", 1259 + "espree": "^7.3.0", 1260 + "globals": "^12.1.0", 1261 + "ignore": "^4.0.6", 1262 + "import-fresh": "^3.2.1", 1263 + "js-yaml": "^3.13.1", 1264 + "lodash": "^4.17.19", 1265 + "minimatch": "^3.0.4", 1266 + "strip-json-comments": "^3.1.1" 1267 + }, 1268 + "dependencies": { 1269 + "ajv": { 1270 + "version": "6.12.6", 1271 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1272 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1273 + "dev": true, 1274 + "requires": { 1275 + "fast-deep-equal": "^3.1.1", 1276 + "fast-json-stable-stringify": "^2.0.0", 1277 + "json-schema-traverse": "^0.4.1", 1278 + "uri-js": "^4.2.2" 1279 + } 1280 + }, 1281 + "fast-deep-equal": { 1282 + "version": "3.1.3", 1283 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1284 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1285 + "dev": true 1286 + }, 1287 + "globals": { 1288 + "version": "12.4.0", 1289 + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 1290 + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 1291 + "dev": true, 1292 + "requires": { 1293 + "type-fest": "^0.8.1" 1294 + } 1295 + }, 1296 + "ignore": { 1297 + "version": "4.0.6", 1298 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1299 + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1300 + "dev": true 1301 + }, 1302 + "import-fresh": { 1303 + "version": "3.2.2", 1304 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", 1305 + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", 1306 + "dev": true, 1307 + "requires": { 1308 + "parent-module": "^1.0.0", 1309 + "resolve-from": "^4.0.0" 1310 + } 1311 + }, 1312 + "resolve-from": { 1313 + "version": "4.0.0", 1314 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1315 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1316 + "dev": true 1317 + }, 1318 + "type-fest": { 1319 + "version": "0.8.1", 1320 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1321 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1322 + "dev": true 1323 + } 1324 + } 1325 + }, 1251 1326 "@iarna/toml": { 1252 1327 "version": "2.2.3", 1253 1328 "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.3.tgz", ··· 1383 1458 "dev": true 1384 1459 } 1385 1460 } 1461 + }, 1462 + "acorn-jsx": { 1463 + "version": "5.3.1", 1464 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", 1465 + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", 1466 + "dev": true 1386 1467 }, 1387 1468 "acorn-walk": { 1388 1469 "version": "6.2.0", ··· 1589 1670 "version": "1.0.0", 1590 1671 "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 1591 1672 "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 1673 + "dev": true 1674 + }, 1675 + "astral-regex": { 1676 + "version": "1.0.0", 1677 + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 1678 + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 1592 1679 "dev": true 1593 1680 }, 1594 1681 "async-each": { ··· 3024 3111 "path-type": "^4.0.0" 3025 3112 } 3026 3113 }, 3114 + "doctrine": { 3115 + "version": "3.0.0", 3116 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 3117 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 3118 + "dev": true, 3119 + "requires": { 3120 + "esutils": "^2.0.2" 3121 + } 3122 + }, 3027 3123 "dom-serializer": { 3028 3124 "version": "0.2.2", 3029 3125 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", ··· 3167 3263 "once": "^1.4.0" 3168 3264 } 3169 3265 }, 3266 + "enquirer": { 3267 + "version": "2.3.6", 3268 + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 3269 + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 3270 + "dev": true, 3271 + "requires": { 3272 + "ansi-colors": "^4.1.1" 3273 + }, 3274 + "dependencies": { 3275 + "ansi-colors": { 3276 + "version": "4.1.1", 3277 + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 3278 + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 3279 + "dev": true 3280 + } 3281 + } 3282 + }, 3170 3283 "entities": { 3171 3284 "version": "1.1.2", 3172 3285 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", ··· 3251 3364 "source-map": "~0.6.1" 3252 3365 } 3253 3366 }, 3367 + "eslint": { 3368 + "version": "7.15.0", 3369 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", 3370 + "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", 3371 + "dev": true, 3372 + "requires": { 3373 + "@babel/code-frame": "^7.0.0", 3374 + "@eslint/eslintrc": "^0.2.2", 3375 + "ajv": "^6.10.0", 3376 + "chalk": "^4.0.0", 3377 + "cross-spawn": "^7.0.2", 3378 + "debug": "^4.0.1", 3379 + "doctrine": "^3.0.0", 3380 + "enquirer": "^2.3.5", 3381 + "eslint-scope": "^5.1.1", 3382 + "eslint-utils": "^2.1.0", 3383 + "eslint-visitor-keys": "^2.0.0", 3384 + "espree": "^7.3.1", 3385 + "esquery": "^1.2.0", 3386 + "esutils": "^2.0.2", 3387 + "file-entry-cache": "^6.0.0", 3388 + "functional-red-black-tree": "^1.0.1", 3389 + "glob-parent": "^5.0.0", 3390 + "globals": "^12.1.0", 3391 + "ignore": "^4.0.6", 3392 + "import-fresh": "^3.0.0", 3393 + "imurmurhash": "^0.1.4", 3394 + "is-glob": "^4.0.0", 3395 + "js-yaml": "^3.13.1", 3396 + "json-stable-stringify-without-jsonify": "^1.0.1", 3397 + "levn": "^0.4.1", 3398 + "lodash": "^4.17.19", 3399 + "minimatch": "^3.0.4", 3400 + "natural-compare": "^1.4.0", 3401 + "optionator": "^0.9.1", 3402 + "progress": "^2.0.0", 3403 + "regexpp": "^3.1.0", 3404 + "semver": "^7.2.1", 3405 + "strip-ansi": "^6.0.0", 3406 + "strip-json-comments": "^3.1.0", 3407 + "table": "^5.2.3", 3408 + "text-table": "^0.2.0", 3409 + "v8-compile-cache": "^2.0.3" 3410 + }, 3411 + "dependencies": { 3412 + "ansi-regex": { 3413 + "version": "5.0.0", 3414 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 3415 + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 3416 + "dev": true 3417 + }, 3418 + "ansi-styles": { 3419 + "version": "4.3.0", 3420 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3421 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3422 + "dev": true, 3423 + "requires": { 3424 + "color-convert": "^2.0.1" 3425 + } 3426 + }, 3427 + "chalk": { 3428 + "version": "4.1.0", 3429 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 3430 + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 3431 + "dev": true, 3432 + "requires": { 3433 + "ansi-styles": "^4.1.0", 3434 + "supports-color": "^7.1.0" 3435 + } 3436 + }, 3437 + "color-convert": { 3438 + "version": "2.0.1", 3439 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3440 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3441 + "dev": true, 3442 + "requires": { 3443 + "color-name": "~1.1.4" 3444 + } 3445 + }, 3446 + "color-name": { 3447 + "version": "1.1.4", 3448 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3449 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3450 + "dev": true 3451 + }, 3452 + "cross-spawn": { 3453 + "version": "7.0.3", 3454 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 3455 + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 3456 + "dev": true, 3457 + "requires": { 3458 + "path-key": "^3.1.0", 3459 + "shebang-command": "^2.0.0", 3460 + "which": "^2.0.1" 3461 + } 3462 + }, 3463 + "glob-parent": { 3464 + "version": "5.1.1", 3465 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 3466 + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 3467 + "dev": true, 3468 + "requires": { 3469 + "is-glob": "^4.0.1" 3470 + } 3471 + }, 3472 + "globals": { 3473 + "version": "12.4.0", 3474 + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 3475 + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 3476 + "dev": true, 3477 + "requires": { 3478 + "type-fest": "^0.8.1" 3479 + } 3480 + }, 3481 + "has-flag": { 3482 + "version": "4.0.0", 3483 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3484 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3485 + "dev": true 3486 + }, 3487 + "ignore": { 3488 + "version": "4.0.6", 3489 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 3490 + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 3491 + "dev": true 3492 + }, 3493 + "import-fresh": { 3494 + "version": "3.2.2", 3495 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", 3496 + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", 3497 + "dev": true, 3498 + "requires": { 3499 + "parent-module": "^1.0.0", 3500 + "resolve-from": "^4.0.0" 3501 + } 3502 + }, 3503 + "levn": { 3504 + "version": "0.4.1", 3505 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3506 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3507 + "dev": true, 3508 + "requires": { 3509 + "prelude-ls": "^1.2.1", 3510 + "type-check": "~0.4.0" 3511 + } 3512 + }, 3513 + "optionator": { 3514 + "version": "0.9.1", 3515 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 3516 + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 3517 + "dev": true, 3518 + "requires": { 3519 + "deep-is": "^0.1.3", 3520 + "fast-levenshtein": "^2.0.6", 3521 + "levn": "^0.4.1", 3522 + "prelude-ls": "^1.2.1", 3523 + "type-check": "^0.4.0", 3524 + "word-wrap": "^1.2.3" 3525 + } 3526 + }, 3527 + "path-key": { 3528 + "version": "3.1.1", 3529 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3530 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3531 + "dev": true 3532 + }, 3533 + "prelude-ls": { 3534 + "version": "1.2.1", 3535 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3536 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3537 + "dev": true 3538 + }, 3539 + "resolve-from": { 3540 + "version": "4.0.0", 3541 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3542 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3543 + "dev": true 3544 + }, 3545 + "semver": { 3546 + "version": "7.3.4", 3547 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 3548 + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 3549 + "dev": true, 3550 + "requires": { 3551 + "lru-cache": "^6.0.0" 3552 + } 3553 + }, 3554 + "shebang-command": { 3555 + "version": "2.0.0", 3556 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3557 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3558 + "dev": true, 3559 + "requires": { 3560 + "shebang-regex": "^3.0.0" 3561 + } 3562 + }, 3563 + "shebang-regex": { 3564 + "version": "3.0.0", 3565 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3566 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3567 + "dev": true 3568 + }, 3569 + "strip-ansi": { 3570 + "version": "6.0.0", 3571 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3572 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3573 + "dev": true, 3574 + "requires": { 3575 + "ansi-regex": "^5.0.0" 3576 + } 3577 + }, 3578 + "supports-color": { 3579 + "version": "7.2.0", 3580 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3581 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3582 + "dev": true, 3583 + "requires": { 3584 + "has-flag": "^4.0.0" 3585 + } 3586 + }, 3587 + "type-check": { 3588 + "version": "0.4.0", 3589 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3590 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3591 + "dev": true, 3592 + "requires": { 3593 + "prelude-ls": "^1.2.1" 3594 + } 3595 + }, 3596 + "type-fest": { 3597 + "version": "0.8.1", 3598 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3599 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 3600 + "dev": true 3601 + }, 3602 + "which": { 3603 + "version": "2.0.2", 3604 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3605 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3606 + "dev": true, 3607 + "requires": { 3608 + "isexe": "^2.0.0" 3609 + } 3610 + } 3611 + } 3612 + }, 3613 + "eslint-scope": { 3614 + "version": "5.1.1", 3615 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 3616 + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 3617 + "dev": true, 3618 + "requires": { 3619 + "esrecurse": "^4.3.0", 3620 + "estraverse": "^4.1.1" 3621 + } 3622 + }, 3623 + "eslint-utils": { 3624 + "version": "2.1.0", 3625 + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 3626 + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 3627 + "dev": true, 3628 + "requires": { 3629 + "eslint-visitor-keys": "^1.1.0" 3630 + }, 3631 + "dependencies": { 3632 + "eslint-visitor-keys": { 3633 + "version": "1.3.0", 3634 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 3635 + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 3636 + "dev": true 3637 + } 3638 + } 3639 + }, 3640 + "eslint-visitor-keys": { 3641 + "version": "2.0.0", 3642 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", 3643 + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", 3644 + "dev": true 3645 + }, 3646 + "espree": { 3647 + "version": "7.3.1", 3648 + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 3649 + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 3650 + "dev": true, 3651 + "requires": { 3652 + "acorn": "^7.4.0", 3653 + "acorn-jsx": "^5.3.1", 3654 + "eslint-visitor-keys": "^1.3.0" 3655 + }, 3656 + "dependencies": { 3657 + "eslint-visitor-keys": { 3658 + "version": "1.3.0", 3659 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 3660 + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 3661 + "dev": true 3662 + } 3663 + } 3664 + }, 3254 3665 "esprima": { 3255 3666 "version": "3.1.3", 3256 3667 "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", 3257 3668 "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", 3258 3669 "dev": true 3259 3670 }, 3671 + "esquery": { 3672 + "version": "1.3.1", 3673 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 3674 + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 3675 + "dev": true, 3676 + "requires": { 3677 + "estraverse": "^5.1.0" 3678 + }, 3679 + "dependencies": { 3680 + "estraverse": { 3681 + "version": "5.2.0", 3682 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 3683 + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 3684 + "dev": true 3685 + } 3686 + } 3687 + }, 3688 + "esrecurse": { 3689 + "version": "4.3.0", 3690 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 3691 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 3692 + "dev": true, 3693 + "requires": { 3694 + "estraverse": "^5.2.0" 3695 + }, 3696 + "dependencies": { 3697 + "estraverse": { 3698 + "version": "5.2.0", 3699 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 3700 + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 3701 + "dev": true 3702 + } 3703 + } 3704 + }, 3260 3705 "estraverse": { 3261 3706 "version": "4.3.0", 3262 3707 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", ··· 3526 3971 "escape-string-regexp": "^1.0.5" 3527 3972 } 3528 3973 }, 3974 + "file-entry-cache": { 3975 + "version": "6.0.0", 3976 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", 3977 + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", 3978 + "dev": true, 3979 + "requires": { 3980 + "flat-cache": "^3.0.4" 3981 + } 3982 + }, 3529 3983 "file-uri-to-path": { 3530 3984 "version": "1.0.0", 3531 3985 "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", ··· 3570 4024 "locate-path": "^3.0.0" 3571 4025 } 3572 4026 }, 4027 + "flat-cache": { 4028 + "version": "3.0.4", 4029 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 4030 + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 4031 + "dev": true, 4032 + "requires": { 4033 + "flatted": "^3.1.0", 4034 + "rimraf": "^3.0.2" 4035 + }, 4036 + "dependencies": { 4037 + "rimraf": { 4038 + "version": "3.0.2", 4039 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 4040 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 4041 + "dev": true, 4042 + "requires": { 4043 + "glob": "^7.1.3" 4044 + } 4045 + } 4046 + } 4047 + }, 4048 + "flatted": { 4049 + "version": "3.1.0", 4050 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", 4051 + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", 4052 + "dev": true 4053 + }, 3573 4054 "for-in": { 3574 4055 "version": "1.0.2", 3575 4056 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", ··· 4251 4732 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 4252 4733 "dev": true 4253 4734 }, 4735 + "functional-red-black-tree": { 4736 + "version": "1.0.1", 4737 + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 4738 + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 4739 + "dev": true 4740 + }, 4254 4741 "gensync": { 4255 4742 "version": "1.0.0-beta.2", 4256 4743 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", ··· 4757 5244 "caller-path": "^2.0.0", 4758 5245 "resolve-from": "^3.0.0" 4759 5246 } 5247 + }, 5248 + "imurmurhash": { 5249 + "version": "0.1.4", 5250 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 5251 + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 5252 + "dev": true 4760 5253 }, 4761 5254 "indent-string": { 4762 5255 "version": "4.0.0", ··· 5351 5844 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 5352 5845 "dev": true 5353 5846 }, 5847 + "json-stable-stringify-without-jsonify": { 5848 + "version": "1.0.1", 5849 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 5850 + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 5851 + "dev": true 5852 + }, 5354 5853 "json-stringify-safe": { 5355 5854 "version": "5.0.1", 5356 5855 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", ··· 5450 5949 "dev": true, 5451 5950 "requires": { 5452 5951 "js-tokens": "^3.0.0 || ^4.0.0" 5952 + } 5953 + }, 5954 + "lru-cache": { 5955 + "version": "6.0.0", 5956 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 5957 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 5958 + "dev": true, 5959 + "requires": { 5960 + "yallist": "^4.0.0" 5453 5961 } 5454 5962 }, 5455 5963 "magic-string": { ··· 5669 6177 "to-regex": "^3.0.1" 5670 6178 } 5671 6179 }, 6180 + "natural-compare": { 6181 + "version": "1.4.0", 6182 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 6183 + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 6184 + "dev": true 6185 + }, 5672 6186 "nice-try": { 5673 6187 "version": "1.0.5", 5674 6188 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", ··· 6065 6579 "ws": "^5.1.1" 6066 6580 } 6067 6581 }, 6582 + "parent-module": { 6583 + "version": "1.0.1", 6584 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 6585 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 6586 + "dev": true, 6587 + "requires": { 6588 + "callsites": "^3.0.0" 6589 + }, 6590 + "dependencies": { 6591 + "callsites": { 6592 + "version": "3.1.0", 6593 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 6594 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 6595 + "dev": true 6596 + } 6597 + } 6598 + }, 6068 6599 "parse-asn1": { 6069 6600 "version": "5.1.5", 6070 6601 "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", ··· 6741 7272 "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 6742 7273 "dev": true 6743 7274 }, 7275 + "progress": { 7276 + "version": "2.0.3", 7277 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 7278 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 7279 + "dev": true 7280 + }, 6744 7281 "psl": { 6745 7282 "version": "1.7.0", 6746 7283 "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", ··· 6933 7470 "extend-shallow": "^3.0.2", 6934 7471 "safe-regex": "^1.1.0" 6935 7472 } 7473 + }, 7474 + "regexpp": { 7475 + "version": "3.1.0", 7476 + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 7477 + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 7478 + "dev": true 6936 7479 }, 6937 7480 "regexpu-core": { 6938 7481 "version": "4.6.0", ··· 7375 7918 "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 7376 7919 "dev": true 7377 7920 }, 7921 + "slice-ansi": { 7922 + "version": "2.1.0", 7923 + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 7924 + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 7925 + "dev": true, 7926 + "requires": { 7927 + "ansi-styles": "^3.2.0", 7928 + "astral-regex": "^1.0.0", 7929 + "is-fullwidth-code-point": "^2.0.0" 7930 + } 7931 + }, 7378 7932 "snapdragon": { 7379 7933 "version": "0.8.2", 7380 7934 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", ··· 7750 8304 "ansi-regex": "^3.0.0" 7751 8305 } 7752 8306 }, 8307 + "strip-json-comments": { 8308 + "version": "3.1.1", 8309 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 8310 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 8311 + "dev": true 8312 + }, 7753 8313 "stylehacks": { 7754 8314 "version": "4.0.3", 7755 8315 "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", ··· 7821 8381 "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", 7822 8382 "dev": true 7823 8383 }, 8384 + "table": { 8385 + "version": "5.4.6", 8386 + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 8387 + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 8388 + "dev": true, 8389 + "requires": { 8390 + "ajv": "^6.10.2", 8391 + "lodash": "^4.17.14", 8392 + "slice-ansi": "^2.1.0", 8393 + "string-width": "^3.0.0" 8394 + } 8395 + }, 7824 8396 "terser": { 7825 8397 "version": "3.17.0", 7826 8398 "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", ··· 7831 8403 "source-map": "~0.6.1", 7832 8404 "source-map-support": "~0.5.10" 7833 8405 } 8406 + }, 8407 + "text-table": { 8408 + "version": "0.2.0", 8409 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 8410 + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 8411 + "dev": true 7834 8412 }, 7835 8413 "through": { 7836 8414 "version": "2.3.8", ··· 8435 9013 "version": "4.0.0", 8436 9014 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 8437 9015 "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 9016 + "dev": true 9017 + }, 9018 + "yallist": { 9019 + "version": "4.0.0", 9020 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 9021 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 8438 9022 "dev": true 8439 9023 }, 8440 9024 "yargs": {
+3 -1
package.json
··· 1 1 { 2 2 "scripts": { 3 3 "start": "node tasks.js --task extension:watch", 4 - "zip": "node tasks.js --task extension:zip" 4 + "zip": "node tasks.js --task extension:zip", 5 + "eslint": "eslint ." 5 6 }, 6 7 "babel": { 7 8 "plugins": [ ··· 15 16 }, 16 17 "devDependencies": { 17 18 "@babel/core": "^7.12.10", 19 + "eslint": "^7.15.0", 18 20 "@babel/plugin-transform-runtime": "^7.12.10", 19 21 "@babel/runtime-corejs2": "^7.12.5", 20 22 "clarify": "^2.1.0",
+22 -26
src/content-script.js
··· 5 5 var xhr = new XMLHttpRequest(); 6 6 xhr.open(requestType, url); 7 7 xhr.responseType = responseType; 8 - xhr.onload = function(event) { 8 + xhr.onload = function() { 9 9 if (this.status == 200) { 10 10 resolve(this.response); 11 11 } else { ··· 46 46 notificationElement.classList.add('thumbnail-grabber-notification'); 47 47 notificationElement.querySelector('p:last-child').textContent = msg; 48 48 49 - notificationElement.querySelector('p:first-child').addEventListener('click', function(e) { 49 + notificationElement.querySelector('p:first-child').addEventListener('click', function() { 50 50 notificationElement.style.animation = 'none'; 51 51 requestAnimationFrame(function() { 52 52 notificationElement.classList.add('thumbnail-grabber-notification-removing'); ··· 75 75 `https://img.youtube.com/vi/${id}/sddefault.jpg`, 76 76 `https://img.youtube.com/vi/${id}/hqdefault.jpg`, 77 77 ]; 78 - const urlPromises = urls.map(url => 79 - new Promise(async (resolve, reject) => { 80 - try { 81 - await xhr(url, 'GET', 'blob'); 82 - resolve(url); 83 - } catch(err) { 84 - reject(err); 85 - } 86 - }) 87 - ); 78 + const urlPromises = urls.map(url => { 79 + return async function() { 80 + await xhr(url, 'GET', 'blob'); 81 + return url; 82 + } 83 + }); 88 84 let error = ''; 89 85 for (const urlPromise of urlPromises) { 90 86 try { 91 87 const url = await urlPromise; 92 88 return url; 93 - break; 94 89 } catch(err) { 95 90 error = err; 96 91 continue; ··· 134 129 } else if (site == 'youtube music') { 135 130 if (newUrl != location.href) throw 'For YouTube Music, you need to be at the URL' 136 131 filename = 'Cover'; 137 - var coverImg = document.querySelector('.ytmusic-player-bar.image'); 138 - var iurl = new URL(coverImg.src); 132 + const coverImg = document.querySelector('.ytmusic-player-bar.image'); 133 + const iurl = new URL(coverImg.src); 139 134 if (iurl.hostname == 'i.ytimg.com') { 140 135 if (!iurl.pathname.startsWith('/vi/')) { 141 136 throw "i.ytimg.com url doesn't start with /vi/" ··· 148 143 } else if (site == 'youtube music playlist') { 149 144 if (newUrl != location.href) throw 'For YouTube Music, you need to be at the URL' 150 145 filename = 'Cover'; 151 - var coverImg = document.querySelector('#img'); 152 - var iurl = new URL(coverImg.src); 146 + const coverImg = document.querySelector('#img'); 147 + const iurl = new URL(coverImg.src); 153 148 if (iurl.hostname == 'i.ytimg.com') { 154 149 if (iurl.pathname.startsWith('/vi/')) { 155 150 const id = iurl.pathname.substr(4, 11); ··· 238 233 239 234 chrome.runtime.onMessage.addListener(async function(msg, sender, sendResponse) { 240 235 if (msg.type == 'existance-check') { 241 - sendResponse({injected: true}); 236 + sendResponse({ injected: true }); 242 237 } else if (msg.type == 'notify') { 243 238 notify(msg.notificationMsg); 244 239 } else if (msg.type == 'open') { ··· 292 287 } 293 288 close(); 294 289 } else if (e.target.textContent == 'OPTIONS') { 295 - chrome.runtime.sendMessage({type: 'options'}); 290 + chrome.runtime.sendMessage({ type: 'options' }); 296 291 } 297 292 }); 298 293 ··· 303 298 const a = document.createElement('a'); 304 299 a.style = 'display: none'; 305 300 document.body.appendChild(a); 306 - var url = window.URL.createObjectURL(imgBlob); 307 - a.href = url; 301 + var blobUrl = window.URL.createObjectURL(imgBlob); 302 + a.href = blobUrl; 308 303 a.download = filename; 309 304 a.click(); 310 305 document.body.removeChild(a); ··· 312 307 313 308 function createImage(options) { 314 309 options = options || {}; 315 - const img = (Image) ? new Image() : document.createElement('img'); 310 + const img = Image ? new Image() : document.createElement('img'); 316 311 if (options.src) { 317 - img.src = options.src; 312 + img.src = options.src; 318 313 } 319 314 return img; 320 315 } ··· 335 330 resolve(); 336 331 } catch(error) { 337 332 if (error.message.toLowerCase().includes('document is not focused')) { 338 - reject("Tab must be focused"); 333 + reject('Tab must be focused'); 339 334 } else { 340 335 reject(error); 341 336 } ··· 347 342 348 343 async function copyToClipboard(pngBlob) { 349 344 await navigator.clipboard.write([ 345 + // eslint-disable-next-line no-undef 350 346 new ClipboardItem({ 351 - [pngBlob.type]: pngBlob 352 - }) 347 + [pngBlob.type]: pngBlob, 348 + }), 353 349 ]); 354 350 } 355 351
+7 -7
src/modules/url-util.js
··· 6 6 matchPattern: '*://soundcloud.com/*/*', 7 7 checkUrl: (url) => 8 8 url.hostname.endsWith('soundcloud.com') // allow www 9 - && url.pathname.split('/').length-1 >= 2 9 + && url.pathname.split('/').length-1 >= 2, 10 10 }, 11 11 { 12 12 name: 'youtube music', ··· 14 14 checkUrl: (url) => 15 15 url.hostname == 'music.youtube.com' 16 16 && url.pathname == '/watch' 17 - && url.searchParams.has('v') 17 + && url.searchParams.has('v'), 18 18 }, 19 19 { 20 20 name: 'youtube music playlist', ··· 22 22 checkUrl: (url) => 23 23 url.hostname == 'music.youtube.com' 24 24 && url.pathname == '/playlist' 25 - && url.searchParams.has('list') 25 + && url.searchParams.has('list'), 26 26 }, 27 27 { 28 28 name: 'youtube', ··· 31 31 // allow www 32 32 url.hostname.endsWith('youtube.com') 33 33 && url.pathname == '/watch' 34 - && url.searchParams.has('v') 34 + && url.searchParams.has('v'), 35 35 }, 36 36 { 37 37 name: 'spotify', ··· 39 39 checkUrl: (url) => 40 40 // allow www 41 41 url.hostname == 'open.spotify.com' 42 - && url.pathname.startsWith('/album') 42 + && url.pathname.startsWith('/album'), 43 43 }, 44 44 { 45 45 name: 'spotify', ··· 47 47 checkUrl: (url) => 48 48 // allow www 49 49 url.hostname == 'open.spotify.com' 50 - && url.pathname.startsWith('/playlist') 50 + && url.pathname.startsWith('/playlist'), 51 51 }, 52 52 ]; 53 53 ··· 60 60 for (const site of sites) { 61 61 if (site.checkUrl(new URL(url))) { 62 62 return site.name; 63 - }; 63 + } 64 64 } 65 65 }, 66 66 matchPatterns,