diff --git a/.eslintignore b/.eslintignore index d05df27..378eac2 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1 @@ -web_modules +build diff --git a/.gitignore b/.gitignore index de5f652..87bb06d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,9 @@ # Dependencies node_modules -web_modules # Generated +build stream-lens.zip # Logs diff --git a/background.html b/background.html index 067913f..162bc2e 100644 --- a/background.html +++ b/background.html @@ -1,5 +1,5 @@ StreamLens - - + + diff --git a/background/badge.js b/background/badge.js index 73849db..2a33853 100644 --- a/background/badge.js +++ b/background/badge.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { some, isEmpty, size } from '/web_modules/lodash-es.js'; +import { some, isEmpty, size } from 'lodash-es'; /** @typedef {import('./store').SLStore} SLStore */ diff --git a/background/index.js b/background/index.js index a5ac0d4..e028407 100644 --- a/background/index.js +++ b/background/index.js @@ -1,8 +1,8 @@ /** * External dependencies */ -import createStore from '/web_modules/unistore.js'; -import { primary } from '/web_modules/unistore-browser-sync.js'; +import createStore from 'unistore'; +import { primary } from 'unistore-browser-sync'; /** * Internal dependencies diff --git a/background/oauth.js b/background/oauth.js index c5d4f73..9e6b6f3 100644 --- a/background/oauth.js +++ b/background/oauth.js @@ -1,12 +1,12 @@ /** * External dependencies */ -import { snakeCase } from '/web_modules/lodash-es.js'; +import { snakeCase } from 'lodash-es'; /** * Project dependencies */ -import { authRedirectURL } from '/config.js'; +import { authRedirectURL } from '../config.js'; /** * Suported authorization request parameters, values serving as defaults. diff --git a/background/providers/twitch.js b/background/providers/twitch.js index 263def5..d00afa4 100644 --- a/background/providers/twitch.js +++ b/background/providers/twitch.js @@ -1,12 +1,12 @@ /** * External dependencies */ -import { find, chunk } from '/web_modules/lodash-es.js'; +import { find, chunk } from 'lodash-es'; /** * Project dependencies */ -import { applications } from '/config.js'; +import { applications } from '../../config.js'; /** * Internal dependencies diff --git a/background/store/actions.js b/background/store/actions.js index 18cc9bb..1e09f49 100644 --- a/background/store/actions.js +++ b/background/store/actions.js @@ -1,12 +1,12 @@ /** * External dependencies */ -import { omit, reject } from '/web_modules/lodash-es.js'; +import { omit, reject } from 'lodash-es'; /** * Project dependencies */ -import { applications } from '/config.js'; +import { applications } from '../../config.js'; /** * Internal dependencies diff --git a/manifest.json b/manifest.json index dfdd3cc..1fac50d 100644 --- a/manifest.json +++ b/manifest.json @@ -21,7 +21,7 @@ "content_scripts": [ { "matches": [ "https://streamlens.app/auth/" ], - "js": [ "web_modules/webextension-polyfill.js", "auth.js" ], + "js": [ "node_modules/webextension-polyfill/dist/browser-polyfill.js", "auth.js" ], "all_frames": true } ], diff --git a/options.html b/options.html index 7c2ead0..702c658 100644 --- a/options.html +++ b/options.html @@ -6,5 +6,5 @@
- - + + diff --git a/options/components/color-scheme-setting.js b/options/components/color-scheme-setting.js index 00797d5..5afb373 100644 --- a/options/components/color-scheme-setting.js +++ b/options/components/color-scheme-setting.js @@ -1,13 +1,12 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Project dependencies */ -import useSelect from '/common/hooks/use-select.js'; -import useDispatch from '/common/hooks/use-dispatch.js'; +import { useSelect, useDispatch } from '@streamlens/hooks'; /** * Internal dependencies diff --git a/options/components/provider-authorization.js b/options/components/provider-authorization.js index 4b87caa..611f4ac 100644 --- a/options/components/provider-authorization.js +++ b/options/components/provider-authorization.js @@ -1,14 +1,13 @@ /** * External dependencies */ -import { h, Fragment } from '/web_modules/preact.js'; +import { h, Fragment } from 'preact'; /** * Project dependencies */ -import ProviderLabel from '/common/components/provider-label.js'; -import useSelect from '/common/hooks/use-select.js'; -import useDispatch from '/common/hooks/use-dispatch.js'; +import { ProviderLabel } from '@streamlens/components'; +import { useSelect, useDispatch } from '@streamlens/hooks'; /** * Internal dependencies diff --git a/options/components/provider-authorizations.js b/options/components/provider-authorizations.js index 0ae56e1..70973a6 100644 --- a/options/components/provider-authorizations.js +++ b/options/components/provider-authorizations.js @@ -1,12 +1,12 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Project dependencies */ -import useSelect from '/common/hooks/use-select.js'; +import { useSelect } from '@streamlens/hooks'; /** * Internal dependencies diff --git a/options/components/provider-token-error.js b/options/components/provider-token-error.js index 9b8da54..72d59d6 100644 --- a/options/components/provider-token-error.js +++ b/options/components/provider-token-error.js @@ -1,14 +1,14 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Project dependencies */ -import useDispatch from '/common/hooks/use-dispatch.js'; -import Notice from '/common/components/notice.js'; -import { getProviderLabel } from '/common/components/provider-label.js'; +import { useDispatch } from '@streamlens/hooks'; +import { Notice } from '@streamlens/components'; +import { getProviderLabel } from '@streamlens/components/provider-label'; /** * Returns a Token Errors element. diff --git a/options/components/root.js b/options/components/root.js index 9716aec..e9cca94 100644 --- a/options/components/root.js +++ b/options/components/root.js @@ -1,8 +1,8 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; -import { StoreContext } from '/web_modules/prsh.js'; +import { h } from 'preact'; +import { StoreContext } from 'prsh'; /** * Internal dependencies diff --git a/options/components/section.js b/options/components/section.js index 2846b5e..e568405 100644 --- a/options/components/section.js +++ b/options/components/section.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** @typedef {import('preact').ComponentChildren} ComponentChildren */ diff --git a/options/index.js b/options/index.js index 47a255e..5c35f2d 100644 --- a/options/index.js +++ b/options/index.js @@ -1,9 +1,9 @@ /** * External dependencies */ -import { render, h } from '/web_modules/preact.js'; -import createStore from '/web_modules/unistore.js'; -import { replica } from '/web_modules/unistore-browser-sync.js'; +import { render, h } from 'preact'; +import createStore from 'unistore'; +import { replica } from 'unistore-browser-sync'; /** * Internal dependencies diff --git a/package-lock.json b/package-lock.json index 76397c5..9ea467b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,15 @@ "": { "name": "stream-lens", "version": "1.3.2", + "bundleDependencies": [ + "webextension-polyfill" + ], "license": "GPL-3.0-or-later", + "workspaces": [ + "packages/**" + ], "dependencies": { - "lodash-es": "^4.17.15", + "lodash-es": "^4.17.21", "preact": "^10.4.7", "prsh": "^1.0.1", "unistore": "^3.5.2", @@ -17,21 +23,17 @@ "webextension-polyfill": "^0.6.0" }, "devDependencies": { - "@rollup/plugin-node-resolve": "^9.0.0", - "@types/lodash-es": "^4.17.3", + "@types/lodash-es": "^4.17.4", + "@types/node": "^14.14.32", "@wordpress/eslint-plugin": "^7.1.0", - "es-module-lexer": "^0.3.24", + "esbuild": "^0.8.56", "eslint": "^7.7.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jsdoc": "^30.2.2", "eslint-plugin-prettier": "^3.1.4", - "esm-root-loader": "^0.1.0", "fast-glob": "^3.2.4", - "magic-string": "^0.25.7", "npm-pack-zip": "^1.2.7", "prettier": "npm:wp-prettier@^2.0.5", - "rollup": "^2.26.0", - "rollup-plugin-sourcemaps": "^0.6.2", "typescript": "^4.2.3", "web-ext-types": "^3.2.1" } @@ -216,36 +218,13 @@ "node": ">= 8" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", - "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">= 10.0.0" - } + "node_modules/@streamlens/components": { + "resolved": "packages/components", + "link": true }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } + "node_modules/@streamlens/hooks": { + "resolved": "packages/hooks", + "link": true }, "node_modules/@types/color-name": { "version": "1.1.1", @@ -253,12 +232,6 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "node_modules/@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", @@ -272,29 +245,20 @@ "dev": true }, "node_modules/@types/lodash-es": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.3.tgz", - "integrity": "sha512-iHI0i7ZAL1qepz1Y7f3EKg/zUMDwDfTzitx+AlHhJJvXwenP682ZyGbgPSc5Ej3eEAKVbNWKFuwOadCj5vBbYQ==", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.4.tgz", + "integrity": "sha512-BBz79DCJbD2CVYZH67MBeHZRX++HF+5p8Mo5MzjZi64Wac39S3diedJYHZtScbRVf4DjZyN6LzA0SB0zy+HSSQ==", "dev": true, "dependencies": { "@types/lodash": "*" } }, "node_modules/@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", + "version": "14.14.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", + "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==", "dev": true }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "2.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", @@ -594,18 +558,6 @@ "lodash": "^4.17.14" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/axe-core": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.5.5.tgz", @@ -723,15 +675,6 @@ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", "dev": true }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -935,30 +878,12 @@ "node": ">=0.10.0" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1032,12 +957,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.24.tgz", - "integrity": "sha512-jm/i7KdJtaMDle921xIsA/MQQOGuZ6goYxhlV+k+gQNI7FtP4N6jknrmJvj++3ODpiyFGwQ4PIstJfHJQJNc+g==", - "dev": true - }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -1052,6 +971,16 @@ "node": ">= 0.4" } }, + "node_modules/esbuild": { + "version": "0.8.56", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.56.tgz", + "integrity": "sha512-PTMdAWK3JI2MNW811znGssGP5GR44tQPr++VQ1rPP0n8Z1cTKbCPD3S/kXPLr3ZZDIwAaVm08fuFym6Rp8l/0A==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1359,12 +1288,6 @@ "node": ">=8" } }, - "node_modules/esm-root-loader": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/esm-root-loader/-/esm-root-loader-0.1.0.tgz", - "integrity": "sha512-hS6DdhXGvdeID7DikNmxxCvLpKFR5PPooN9lgYfWRYpKD4SsDBqIUI9LF1ySpXmColO70EzXr9bBSN4wuFOb5Q==", - "dev": true - }, "node_modules/espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", @@ -1434,12 +1357,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1578,19 +1495,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1828,12 +1732,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2037,9 +1935,9 @@ "dev": true }, "node_modules/lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -2053,15 +1951,6 @@ "loose-envify": "cli.js" } }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, "node_modules/map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -2795,34 +2684,6 @@ "rimraf": "bin.js" } }, - "node_modules/rollup": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.0.tgz", - "integrity": "sha512-1kwpBuxQERz+ymjPLepaXqf3NMRDwSumuEfW/fsTtflmyyhI6ev7nLy5Vdadvn01zd0WWAojRuvA2+0coPGCGQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" - } - }, - "node_modules/rollup-plugin-sourcemaps": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz", - "integrity": "sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.0.9", - "source-map-resolve": "^0.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", @@ -2919,22 +2780,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", @@ -3301,7 +3146,8 @@ "node_modules/webextension-polyfill": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.6.0.tgz", - "integrity": "sha512-PlYwiX8e4bNZrEeBFxbFFsLtm0SMPxJliLTGdNCA0Bq2XkWrAn2ejUd+89vZm+8BnfFB1BclJyCz3iKsm2atNg==" + "integrity": "sha512-PlYwiX8e4bNZrEeBFxbFFsLtm0SMPxJliLTGdNCA0Bq2XkWrAn2ejUd+89vZm+8BnfFB1BclJyCz3iKsm2atNg==", + "inBundle": true }, "node_modules/which": { "version": "2.0.2", @@ -3521,6 +3367,12 @@ "engines": { "node": ">= 0.10.0" } + }, + "packages/components": { + "name": "@streamlens/components" + }, + "packages/hooks": { + "name": "@streamlens/hooks" } }, "dependencies": { @@ -3688,30 +3540,11 @@ "fastq": "^1.6.0" } }, - "@rollup/plugin-node-resolve": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", - "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.17.0" - } + "@streamlens/components": { + "version": "file:packages/components" }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } + "@streamlens/hooks": { + "version": "file:packages/hooks" }, "@types/color-name": { "version": "1.1.1", @@ -3719,12 +3552,6 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", @@ -3738,29 +3565,20 @@ "dev": true }, "@types/lodash-es": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.3.tgz", - "integrity": "sha512-iHI0i7ZAL1qepz1Y7f3EKg/zUMDwDfTzitx+AlHhJJvXwenP682ZyGbgPSc5Ej3eEAKVbNWKFuwOadCj5vBbYQ==", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.4.tgz", + "integrity": "sha512-BBz79DCJbD2CVYZH67MBeHZRX++HF+5p8Mo5MzjZi64Wac39S3diedJYHZtScbRVf4DjZyN6LzA0SB0zy+HSSQ==", "dev": true, "requires": { "@types/lodash": "*" } }, "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", + "version": "14.14.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz", + "integrity": "sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==", "dev": true }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@typescript-eslint/experimental-utils": { "version": "2.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", @@ -4004,12 +3822,6 @@ "lodash": "^4.17.14" } }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "axe-core": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.5.5.tgz", @@ -4115,12 +3927,6 @@ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", "dev": true }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -4290,24 +4096,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4369,12 +4163,6 @@ "string.prototype.trimstart": "^1.0.1" } }, - "es-module-lexer": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.24.tgz", - "integrity": "sha512-jm/i7KdJtaMDle921xIsA/MQQOGuZ6goYxhlV+k+gQNI7FtP4N6jknrmJvj++3ODpiyFGwQ4PIstJfHJQJNc+g==", - "dev": true - }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -4386,6 +4174,12 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.8.56", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.56.tgz", + "integrity": "sha512-PTMdAWK3JI2MNW811znGssGP5GR44tQPr++VQ1rPP0n8Z1cTKbCPD3S/kXPLr3ZZDIwAaVm08fuFym6Rp8l/0A==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -4628,12 +4422,6 @@ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, - "esm-root-loader": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/esm-root-loader/-/esm-root-loader-0.1.0.tgz", - "integrity": "sha512-hS6DdhXGvdeID7DikNmxxCvLpKFR5PPooN9lgYfWRYpKD4SsDBqIUI9LF1ySpXmColO70EzXr9bBSN4wuFOb5Q==", - "dev": true - }, "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", @@ -4683,12 +4471,6 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4809,13 +4591,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -5002,12 +4777,6 @@ "is-extglob": "^2.1.1" } }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5169,9 +4938,9 @@ "dev": true }, "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "loose-envify": { "version": "1.4.0", @@ -5182,15 +4951,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -5768,25 +5528,6 @@ "glob": "^7.1.3" } }, - "rollup": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.0.tgz", - "integrity": "sha512-1kwpBuxQERz+ymjPLepaXqf3NMRDwSumuEfW/fsTtflmyyhI6ev7nLy5Vdadvn01zd0WWAojRuvA2+0coPGCGQ==", - "dev": true, - "requires": { - "fsevents": "~2.1.2" - } - }, - "rollup-plugin-sourcemaps": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz", - "integrity": "sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.9", - "source-map-resolve": "^0.6.0" - } - }, "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", @@ -5868,22 +5609,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", diff --git a/package.json b/package.json index e92c66d..1e77a9a 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,18 @@ "type": "module", "version": "1.3.2", "description": "Browser extension for displaying live stream status for Twitch", + "workspaces": [ + "packages/**" + ], "scripts": { + "build": "esbuild background/index.js popup/index.js options/index.js --bundle --outdir=build --format=esm", + "dev": "esbuild background/index.js popup/index.js options/index.js --bundle --outdir=build --format=esm --sourcemap=inline --watch", "test": "npm run test:lint && npm run test:types && npm run test:unit", - "clean": "rm -rf web_modules", - "prepare": "npm run clean && rollup -c", + "clean": "rm -rf build", + "prepare": "npm run clean && npm run build", "test:lint": "eslint .", "test:types": "tsc", - "test:unit": "node --experimental-modules --experimental-loader=esm-root-loader test/runner.js", + "test:unit": "node test/runner.js", "prebundle": "npm run prepare", "bundle": "npm-pack-zip" }, @@ -26,13 +31,10 @@ "license": "GPL-3.0-or-later", "files": [ "_locales", - "background", - "common", + "build", "fonts", "images", - "options", - "popup", - "web_modules", + "node_modules/webextension-polyfill/dist/browser-polyfill.js", "auth.js", "background.html", "common.css", @@ -46,29 +48,28 @@ "!test" ], "dependencies": { - "lodash-es": "^4.17.15", + "lodash-es": "^4.17.21", "preact": "^10.4.7", "prsh": "^1.0.1", "unistore": "^3.5.2", "unistore-browser-sync": "^1.0.0", "webextension-polyfill": "^0.6.0" }, + "bundledDependencies": [ + "webextension-polyfill" + ], "devDependencies": { - "@rollup/plugin-node-resolve": "^9.0.0", - "@types/lodash-es": "^4.17.3", + "@types/lodash-es": "^4.17.4", + "@types/node": "^14.14.32", "@wordpress/eslint-plugin": "^7.1.0", - "es-module-lexer": "^0.3.24", + "esbuild": "^0.8.56", "eslint": "^7.7.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jsdoc": "^30.2.2", "eslint-plugin-prettier": "^3.1.4", - "esm-root-loader": "^0.1.0", "fast-glob": "^3.2.4", - "magic-string": "^0.25.7", "npm-pack-zip": "^1.2.7", "prettier": "npm:wp-prettier@^2.0.5", - "rollup": "^2.26.0", - "rollup-plugin-sourcemaps": "^0.6.2", "typescript": "^4.2.3", "web-ext-types": "^3.2.1" } diff --git a/common/components/card.js b/packages/components/card.js similarity index 97% rename from common/components/card.js rename to packages/components/card.js index e89da11..b463e75 100644 --- a/common/components/card.js +++ b/packages/components/card.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Internal dependencies diff --git a/common/components/color-scheme.js b/packages/components/color-scheme.js similarity index 93% rename from common/components/color-scheme.js rename to packages/components/color-scheme.js index 1f6d294..393584b 100644 --- a/common/components/color-scheme.js +++ b/packages/components/color-scheme.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { useEffect } from '/web_modules/preact/hooks.js'; +import { useEffect } from 'preact/hooks'; /** * Internal dependencies diff --git a/common/components/icon-button.js b/packages/components/icon-button.js similarity index 96% rename from common/components/icon-button.js rename to packages/components/icon-button.js index 79a1409..ae67357 100644 --- a/common/components/icon-button.js +++ b/packages/components/icon-button.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Internal dependencies diff --git a/common/components/icon.js b/packages/components/icon.js similarity index 98% rename from common/components/icon.js rename to packages/components/icon.js index 4cead70..d025733 100644 --- a/common/components/icon.js +++ b/packages/components/icon.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Icon details. diff --git a/packages/components/index.js b/packages/components/index.js new file mode 100644 index 0000000..1fac559 --- /dev/null +++ b/packages/components/index.js @@ -0,0 +1,9 @@ +export { default as Card } from './card.js'; +export { default as ColorScheme } from './color-scheme.js'; +export { default as IconButton } from './icon-button.js'; +export { default as Icon } from './icon.js'; +export { default as LoadingIndicator } from './loading-indicator.js'; +export { default as Notice } from './notice.js'; +export { default as ProviderLabel } from './provider-label.js'; +export { default as Tooltip } from './tooltip.js'; +export { default as VisuallyHidden } from './visually-hidden.js'; diff --git a/common/components/loading-indicator.js b/packages/components/loading-indicator.js similarity index 93% rename from common/components/loading-indicator.js rename to packages/components/loading-indicator.js index 216f8a0..3344637 100644 --- a/common/components/loading-indicator.js +++ b/packages/components/loading-indicator.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Returns a Loading Indicator element. diff --git a/common/components/notice.js b/packages/components/notice.js similarity index 96% rename from common/components/notice.js rename to packages/components/notice.js index 50dbf22..d5ded28 100644 --- a/common/components/notice.js +++ b/packages/components/notice.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Internal dependencies diff --git a/packages/components/package.json b/packages/components/package.json new file mode 100644 index 0000000..c841e09 --- /dev/null +++ b/packages/components/package.json @@ -0,0 +1,5 @@ +{ + "name": "@streamlens/components", + "private": true, + "type": "module" +} diff --git a/common/components/provider-label.js b/packages/components/provider-label.js similarity index 93% rename from common/components/provider-label.js rename to packages/components/provider-label.js index 6475ebf..f111248 100644 --- a/common/components/provider-label.js +++ b/packages/components/provider-label.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h, Fragment } from '/web_modules/preact.js'; +import { h, Fragment } from 'preact'; /** * Provider label mapping. diff --git a/common/components/tooltip.js b/packages/components/tooltip.js similarity index 96% rename from common/components/tooltip.js rename to packages/components/tooltip.js index 60df0eb..a9444cc 100644 --- a/common/components/tooltip.js +++ b/packages/components/tooltip.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** @typedef {import('preact').ComponentChildren} ComponentChildren */ diff --git a/common/components/visually-hidden.js b/packages/components/visually-hidden.js similarity index 93% rename from common/components/visually-hidden.js rename to packages/components/visually-hidden.js index 04ca407..f0aaa52 100644 --- a/common/components/visually-hidden.js +++ b/packages/components/visually-hidden.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** @typedef {import('preact').ComponentChildren} ComponentChildren */ diff --git a/packages/hooks/index.js b/packages/hooks/index.js new file mode 100644 index 0000000..0ffa1f8 --- /dev/null +++ b/packages/hooks/index.js @@ -0,0 +1,2 @@ +export { default as useDispatch } from './use-dispatch.js'; +export { default as useSelect } from './use-select.js'; diff --git a/packages/hooks/package.json b/packages/hooks/package.json new file mode 100644 index 0000000..fc5f7f8 --- /dev/null +++ b/packages/hooks/package.json @@ -0,0 +1,5 @@ +{ + "name": "@streamlens/hooks", + "private": true, + "type": "module" +} diff --git a/common/hooks/use-dispatch.js b/packages/hooks/use-dispatch.js similarity index 86% rename from common/hooks/use-dispatch.js rename to packages/hooks/use-dispatch.js index 0d765c1..9e0999a 100644 --- a/common/hooks/use-dispatch.js +++ b/packages/hooks/use-dispatch.js @@ -1,7 +1,7 @@ /** * Internal dependencies */ -import { useStore } from '/web_modules/prsh.js'; +import { useStore } from 'prsh'; /** * Hook which returns a dispatch function, from the store context if available. diff --git a/common/hooks/use-select.js b/packages/hooks/use-select.js similarity index 76% rename from common/hooks/use-select.js rename to packages/hooks/use-select.js index c04aa45..eded215 100644 --- a/common/hooks/use-select.js +++ b/packages/hooks/use-select.js @@ -1,9 +1,9 @@ /** * External dependencies */ -import { useSelector } from '/web_modules/prsh.js'; +import { useSelector } from 'prsh'; -/** @typedef {import('/background/store.js').SLState} SLState */ +/** @typedef {import('/background/store').SLState} SLState */ /** * Hook which returns a value derived using a given selector function, updated diff --git a/popup.html b/popup.html index 403c3e2..e17612c 100644 --- a/popup.html +++ b/popup.html @@ -6,5 +6,5 @@
- - + + diff --git a/popup/components/getting-started.js b/popup/components/getting-started.js index b153c99..1ea3221 100644 --- a/popup/components/getting-started.js +++ b/popup/components/getting-started.js @@ -1,14 +1,14 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; -import { isEmpty } from '/web_modules/lodash-es.js'; +import { h } from 'preact'; +import { isEmpty } from 'lodash-es'; /** * Project dependencies */ -import useSelect from '/common/hooks/use-select.js'; -import Card from '/common/components/card.js'; +import { useSelect } from '@streamlens/hooks'; +import { Card } from '@streamlens/components'; /** * Returns a Getting Started element. diff --git a/popup/components/no-search-results.js b/popup/components/no-search-results.js index e0df506..1da254e 100644 --- a/popup/components/no-search-results.js +++ b/popup/components/no-search-results.js @@ -1,12 +1,12 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Project dependencies */ -import Card from '/common/components/card.js'; +import { Card } from '@streamlens/components'; /** * Returns a No Streams Live element. diff --git a/popup/components/no-streams-live.js b/popup/components/no-streams-live.js index cb5e7a2..abbe33b 100644 --- a/popup/components/no-streams-live.js +++ b/popup/components/no-streams-live.js @@ -1,12 +1,12 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** * Project dependencies */ -import Card from '/common/components/card.js'; +import { Card } from '@streamlens/components'; /** * Returns a No Streams Live element. diff --git a/popup/components/root.js b/popup/components/root.js index 9b18f7b..89bee86 100644 --- a/popup/components/root.js +++ b/popup/components/root.js @@ -1,13 +1,13 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; -import { StoreContext } from '/web_modules/prsh.js'; +import { h } from 'preact'; +import { StoreContext } from 'prsh'; /** * Project dependencies */ -import ColorScheme from '/common/components/color-scheme.js'; +import { ColorScheme } from '@streamlens/components'; /** * Internal dependencies diff --git a/popup/components/search-context.js b/popup/components/search-context.js index a9f37c8..5d64d06 100644 --- a/popup/components/search-context.js +++ b/popup/components/search-context.js @@ -1,8 +1,8 @@ /** * External dependencies */ -import { h, createContext } from '/web_modules/preact.js'; -import { useState } from '/web_modules/preact/hooks.js'; +import { h, createContext } from 'preact'; +import { useState } from 'preact/hooks'; /** @typedef {import('preact').ComponentChildren} ComponentChildren */ diff --git a/popup/components/stream-list.js b/popup/components/stream-list.js index bfdc14d..4c7ddde 100644 --- a/popup/components/stream-list.js +++ b/popup/components/stream-list.js @@ -1,15 +1,15 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; -import { size, reject, deburr, clamp } from '/web_modules/lodash-es.js'; -import { useContext, useState, useRef } from '/web_modules/preact/hooks.js'; +import { h } from 'preact'; +import { size, reject, deburr, clamp } from 'lodash-es'; +import { useContext, useState, useRef } from 'preact/hooks'; /** * Project dependencies */ -import LoadingIndicator from '/common/components/loading-indicator.js'; -import useSelect from '/common/hooks/use-select.js'; +import { LoadingIndicator } from '@streamlens/components'; +import { useSelect } from '@streamlens/hooks'; /** * Internal dependencies diff --git a/popup/components/stream.js b/popup/components/stream.js index 378aff7..93b0921 100644 --- a/popup/components/stream.js +++ b/popup/components/stream.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; +import { h } from 'preact'; /** @typedef {import('/background/store').SLStream} SLStream */ diff --git a/popup/components/token-errors.js b/popup/components/token-errors.js index dd51dcb..4b2f79f 100644 --- a/popup/components/token-errors.js +++ b/popup/components/token-errors.js @@ -1,16 +1,15 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; -import { findKey } from '/web_modules/lodash-es.js'; +import { h } from 'preact'; +import { findKey } from 'lodash-es'; /** * Project dependencies */ -import Notice from '/common/components/notice.js'; -import { getProviderLabel } from '/common/components/provider-label.js'; -import useSelect from '/common/hooks/use-select.js'; -import useDispatch from '/common/hooks/use-dispatch.js'; +import { Notice } from '@streamlens/components'; +import { getProviderLabel } from '@streamlens/components/provider-label'; +import { useSelect, useDispatch } from '@streamlens/hooks'; /** * Returns a Token Errors element. diff --git a/popup/components/toolbar.js b/popup/components/toolbar.js index 081244e..68e68b8 100644 --- a/popup/components/toolbar.js +++ b/popup/components/toolbar.js @@ -1,21 +1,20 @@ /** * External dependencies */ -import { h } from '/web_modules/preact.js'; -import { useContext, useRef, useEffect } from '/web_modules/preact/hooks.js'; +import { h } from 'preact'; +import { useContext, useRef, useEffect } from 'preact/hooks'; /** * Project dependencies */ -import IconButton from '/common/components/icon-button.js'; -import VisuallyHidden from '/common/components/visually-hidden.js'; +import { IconButton, VisuallyHidden } from '@streamlens/components'; /** * Internal dependencies */ import { SearchContext } from './search-context.js'; -/** @typedef {import('/common/components/tooltip').TooltipPosition} TooltipPosition */ +/** @typedef {import('@streamlens/components/tooltip').TooltipPosition} TooltipPosition */ /** * Returns a stream list toolbar. diff --git a/popup/index.js b/popup/index.js index 47a255e..5c35f2d 100644 --- a/popup/index.js +++ b/popup/index.js @@ -1,9 +1,9 @@ /** * External dependencies */ -import { render, h } from '/web_modules/preact.js'; -import createStore from '/web_modules/unistore.js'; -import { replica } from '/web_modules/unistore-browser-sync.js'; +import { render, h } from 'preact'; +import createStore from 'unistore'; +import { replica } from 'unistore-browser-sync'; /** * Internal dependencies diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 63be64a..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,56 +0,0 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import sourcemaps from 'rollup-plugin-sourcemaps'; -import { parse } from 'es-module-lexer'; -import MagicString from 'magic-string'; - -const dependencies = [ - 'lodash-es', - 'preact', - 'preact/hooks', - 'prsh', - 'unistore', - 'unistore-browser-sync', - 'webextension-polyfill', -]; - -const mapWebModules = { - async renderChunk( code ) { - const [ imports ] = await parse( code ); - let magicString; - - for ( let i = imports.length - 1; i >= 0; i-- ) { - const { s: start, e: end } = imports[ i ]; - const source = code.substring( start, end ); - if ( dependencies.includes( source ) ) { - if ( ! magicString ) { - magicString = new MagicString( code ); - } - - magicString.overwrite( start, end, '/web_modules/' + source + '.js' ); - } - } - - if ( ! magicString ) { - return null; - } - - return { - code: magicString.toString(), - map: magicString.generateMap( { hires: true } ), - }; - }, -}; - -export default /** @type {import('rollup').RollupOptions[]} */ ( dependencies.map( - ( dependency ) => ( { - input: dependency, - context: 'window', - output: { - sourcemap: 'inline', - file: `web_modules/${ dependency }.js`, - format: 'esm', - }, - external: dependencies, - plugins: [ nodeResolve(), mapWebModules, sourcemaps() ], - } ) -) ); diff --git a/test/runner.js b/test/runner.js index a380275..bf2a524 100644 --- a/test/runner.js +++ b/test/runner.js @@ -11,7 +11,7 @@ import glob from 'fast-glob'; import './setup.js'; ( async () => { - const suites = glob.stream( '+(background|common|options|popup)/**/test/*.js' ); + const suites = glob.stream( '+(background|packages|options|popup)/**/test/*.js' ); console.log( 'Running…\n' ); diff --git a/tsconfig.json b/tsconfig.json index 8c4137e..bdb77a5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,40 +2,26 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "/web_modules/*.js": [ - "node_modules/@types/*", - "node_modules/*", - "web_modules/*.js" - ], - "/*": [ - "*" - ] + "/*": [ "*" ] }, "module": "esnext", "moduleResolution": "node", "target": "es2019", "allowJs": true, "checkJs": true, - "lib": [ - "dom", - "esnext" - ], + "lib": [ "dom", "esnext" ], "skipLibCheck": true, - "typeRoots": [ - "node_modules/@types", - "node_modules/web-ext-types" - ], + "typeRoots": [ "node_modules/@types", "node_modules/web-ext-types" ], "noEmit": true, "strictNullChecks": true }, "include": [ "background", - "common", + "packages", "options", - "popup" + "popup", + "packages/hooks", + "packages/components" ], - "exclude": [ - "node_modules", - "web_modules" - ] + "exclude": [ "node_modules" ] }