Tools for Deno-Powered Web Extensions
0
fork

Configure Feed

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

feat: workspaces (#12)

- adds `--config` cli arg

- relocates the plugin deno.json to source/deno.json

- uses @duesabati/esbuild-deno-plugin instead of @Luca

- update workflow to use deno 2

authored by

Ben Pevsner and committed by
GitHub
77456203 1d08847b

+787 -306
+7 -4
.github/workflows/deno.yml
··· 10 10 11 11 on: 12 12 push: 13 - branches: ["main"] 13 + branches: ['main'] 14 14 tags: 15 15 - v* 16 16 pull_request: 17 - branches: ["main"] 17 + branches: ['main'] 18 18 19 19 permissions: 20 20 contents: read ··· 28 28 uses: actions/checkout@v3 29 29 30 30 - name: Setup Deno 31 - uses: denoland/setup-deno@v1 31 + uses: denoland/setup-deno@v2 32 32 with: 33 - deno-version: v1.x 33 + deno-version: v2.x 34 34 35 35 - name: Verify formatting 36 36 run: deno fmt --check 37 37 38 38 - name: Run linter 39 39 run: deno lint 40 + 41 + - name: Install Bext 42 + run: deno task install 40 43 41 44 - name: Run tests 42 45 run: deno task test
+22 -12
README.md
··· 32 32 > bext --source=src # --source or -s: specify source directory (default: "source") 33 33 > bext --source=src --static=assets # --static or -t: specify static assets directory (default: "static") 34 34 > bext --source=src --static=assets --output=build # --output or -o: specify output directory (default: "dist") 35 + 36 + > bext --config=../deno.json # --config or -c: specify deno.json config file. If using a workspace, point at the root workspace deno.json 35 37 ``` 36 38 37 39 ## Types and Utilities ··· 63 65 bext `browserAPI` will also return a mock browser when running in a Deno environment (where native extension apis don't exist). This makes writing unit tests a breeze! 64 66 65 67 ```ts 66 - import browserAPI, { isDeno } from 'jsr:@bpev/bext'; 67 - import { assertStrictEquals } from 'jsr:@std/assert'; 68 - import { assertSpyCall, assertSpyCalls, stub } from 'jsr:@std/testing/mock'; 68 + import browserAPI, { isDeno } from 'jsr:@bpev/bext' 69 + import { assertStrictEquals } from 'jsr:@std/assert' 70 + import { assertSpyCall, assertSpyCalls, stub } from 'jsr:@std/testing/mock' 69 71 70 - import { getStorage } from './storage_helpers.ts'; 72 + import { getStorage } from './storage_helpers.ts' 71 73 72 74 Deno.test('is running in test env', () => { 73 75 assert() ··· 75 77 76 78 Deno.test('uses browser storage', async () => { 77 79 const getStorageStub = stub(browserAPI.storage.sync, 'get', () => { 78 - return Promise.resolve({ storage_key: 'mock_storage_value' }); 79 - }); 80 + return Promise.resolve({ storage_key: 'mock_storage_value' }) 81 + }) 80 82 81 - assertStrictEquals(await getStorage(), 'mock_storage_value'); 82 - assertSpyCalls(getStorageStub, 1); 83 + assertStrictEquals(await getStorage(), 'mock_storage_value') 84 + assertSpyCalls(getStorageStub, 1) 83 85 84 86 // Expect `chrome.sync.storage.get` to be called with the storage_key 85 - assertSpyCall(getStorageStub, 0, { args: ['storage_key'] }); 86 - getStorageStub.restore(); 87 - }); 87 + assertSpyCall(getStorageStub, 0, { args: ['storage_key'] }) 88 + getStorageStub.restore() 89 + }) 88 90 ``` 89 91 90 92 # Running this repo (for Bext development) 91 93 92 94 Tasks are defined in [deno.json](./deno.json), but basically: 93 95 94 - - `deno task dev`: Run the example app in watch-mode 96 + - `deno task dev:{project}`: Run the example app in watch-mode 95 97 - `deno task test`: Makes sure it all works. Use this before committing! 96 98 - runs fmt, lint, type-checks, unit tests for source and example apps 97 99 - builds example apps using local bext copy 100 + 101 + ## `/examples` 102 + 103 + Note that the `deno tasks` in the example projects are meant to show the client usage, and therefore have tasks that don't work within the context of this repo's workspace. 104 + 105 + If you want to run these projects from the Bext repo, please use the tasks in the root `deno.json` (instead of the `deno.json` in the `/examples/{project}`) 106 + 107 + Also, for this same reason, do not put any imports in the root `deno.json`.
+18 -33
deno.json
··· 1 1 { 2 - "name": "@bpev/bext", 3 - "version": "1.3.1", 4 - "exports": { 5 - ".": "./source/mod.ts", 6 - "./bin": "./source/main.ts", 7 - "./mock": "./source/mock_browser/main.ts", 8 - "./types/chrome": "./source/types/chrome.ts" 9 - }, 2 + "workspace": [ 3 + "examples/preact", 4 + "examples/barebones", 5 + "source" 6 + ], 10 7 "fmt": { 11 - "semiColons": false, 12 - "singleQuote": true, 13 8 "proseWrap": "preserve", 14 - "include": ["source", "examples"], 15 - "exclude": ["dist"] 9 + "semiColons": false, 10 + "singleQuote": true 16 11 }, 17 - "imports": { 18 - "@std/assert": "jsr:@std/assert@^1.0.0", 19 - "@std/testing": "jsr:@std/testing@^0.225.3" 20 - }, 21 - "lint": { 12 + "test": { 22 13 "include": ["source"], 23 - "exclude": ["dist", "examples"] 24 - }, 25 - "publish": { 26 - "exclude": ["dist", "examples"] 14 + "exclude": ["examples"] 27 15 }, 28 16 "tasks": { 29 - "build": "deno task build:preact && deno task build:barebones", 30 - "build:barebones": "(cd examples/barebones && deno run -A ../../source/main.ts internal-dev-only-build)", 31 - "build:preact": "(cd examples/preact && deno run -A ../../source/main.ts internal-dev-only-build)", 17 + "install": "deno install --name=bext -Agf ./source/main.ts", 18 + "build": "deno task build:barebones && deno task build:preact", 19 + "build:barebones": "(cd examples/barebones && bext build -c ../../deno.json)", 20 + "build:preact": "(cd examples/preact && bext build -c ../../deno.json)", 32 21 "check": "deno check source/main.ts && deno check source/mod.ts", 33 - "dev:barebones": "(cd examples/barebones && deno run -A ../../source/main.ts internal-dev-only-build -w)", 34 - "dev:preact": "(cd examples/preact && deno run -A ../../source/main.ts internal-dev-only-build -w)", 35 - "test": "deno task test:source && deno task build && deno task test:preact && deno publish --dry-run --allow-dirty", 36 - "test:preact": "(cd examples/preact && deno task test)", 37 - "test:source": "deno fmt && deno lint && deno task check && deno test source" 38 - }, 39 - "test": { 40 - "include": ["source"], 41 - "exclude": ["dist", "examples"] 22 + "dev:barebones": "(cd examples/barebones && bext dev -c ../../deno.json)", 23 + "dev:preact": "(cd examples/preact && bext dev -c ../../deno.json)", 24 + "test": "deno fmt && deno lint && deno task test:source && deno task test:preact && deno task build", 25 + "test:source": "(cd source && deno test)", 26 + "test:preact": "(cd examples/preact && deno task test)" 42 27 } 43 28 }
+699 -225
deno.lock
··· 1 1 { 2 - "version": "3", 3 - "packages": { 4 - "specifiers": { 5 - "jsr:@luca/esbuild-deno-loader@^0.10.3": "jsr:@luca/esbuild-deno-loader@0.10.3", 6 - "jsr:@std/assert@^0.213.1": "jsr:@std/assert@0.213.1", 7 - "jsr:@std/assert@^1.0.0": "jsr:@std/assert@1.0.0", 8 - "jsr:@std/cli@^1.0.0": "jsr:@std/cli@1.0.0", 9 - "jsr:@std/encoding@0.213": "jsr:@std/encoding@0.213.1", 10 - "jsr:@std/fs@^0.229.3": "jsr:@std/fs@0.229.3", 11 - "jsr:@std/internal@^1.0.1": "jsr:@std/internal@1.0.1", 12 - "jsr:@std/json@^0.213.1": "jsr:@std/json@0.213.1", 13 - "jsr:@std/jsonc@0.213": "jsr:@std/jsonc@0.213.1", 14 - "jsr:@std/path@0.213": "jsr:@std/path@0.213.1", 15 - "jsr:@std/path@1.0.0-rc.1": "jsr:@std/path@1.0.0-rc.1", 16 - "jsr:@std/path@^1.0.1": "jsr:@std/path@1.0.1", 17 - "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", 18 - "npm:@types/chrome@0.0.268": "npm:@types/chrome@0.0.268", 19 - "npm:esbuild@^0.23.0": "npm:esbuild@0.23.0" 2 + "version": "4", 3 + "specifiers": { 4 + "jsr:@b-fuze/deno-dom@~0.1.47": "0.1.49", 5 + "jsr:@denosaurs/plug@1.0.3": "1.0.3", 6 + "jsr:@std/assert@1.0.0-rc.2": "1.0.0-rc.2", 7 + "jsr:@std/assert@^1.0.11": "1.0.12", 8 + "jsr:@std/assert@~0.213.1": "0.213.1", 9 + "jsr:@std/data-structures@^1.0.0-rc.1": "1.0.6", 10 + "jsr:@std/encoding@0.213": "0.213.1", 11 + "jsr:@std/encoding@0.213.1": "0.213.1", 12 + "jsr:@std/fmt@0.213.1": "0.213.1", 13 + "jsr:@std/fmt@~0.225.4": "0.225.6", 14 + "jsr:@std/fs@0.213.1": "0.213.1", 15 + "jsr:@std/fs@^1.0.0-rc.1": "1.0.9", 16 + "jsr:@std/internal@1": "1.0.6", 17 + "jsr:@std/internal@^1.0.5": "1.0.5", 18 + "jsr:@std/internal@^1.0.6": "1.0.6", 19 + "jsr:@std/path@*": "1.0.8", 20 + "jsr:@std/path@0.213": "0.213.1", 21 + "jsr:@std/path@0.213.1": "0.213.1", 22 + "jsr:@std/path@1.0.0-rc.2": "1.0.0-rc.2", 23 + "jsr:@std/path@^1.0.2": "1.0.8", 24 + "jsr:@std/path@^1.0.6": "1.0.8", 25 + "jsr:@std/path@^1.0.8": "1.0.8", 26 + "jsr:@std/path@~0.213.1": "0.213.1", 27 + "jsr:@std/testing@~0.225.3": "0.225.3", 28 + "npm:@testing-library/preact@^3.2.4": "3.2.4_preact@10.26.4", 29 + "npm:@types/chrome@0.0.268": "0.0.268", 30 + "npm:preact@^10.23.0": "10.26.4" 31 + }, 32 + "jsr": { 33 + "@b-fuze/deno-dom@0.1.49": { 34 + "integrity": "45c40175fdd1e74ab2d4b54c4fdaabbad6e5b76ee28df12a48e076b3fa7901a9", 35 + "dependencies": [ 36 + "jsr:@denosaurs/plug" 37 + ] 38 + }, 39 + "@denosaurs/plug@1.0.3": { 40 + "integrity": "b010544e386bea0ff3a1d05e0c88f704ea28cbd4d753439c2f1ee021a85d4640", 41 + "dependencies": [ 42 + "jsr:@std/encoding@0.213.1", 43 + "jsr:@std/fmt@0.213.1", 44 + "jsr:@std/fs@0.213.1", 45 + "jsr:@std/path@0.213.1" 46 + ] 47 + }, 48 + "@std/assert@0.213.1": { 49 + "integrity": "24c28178b30c8e0782c18e8e94ea72b16282207569cdd10ffb9d1d26f2edebfe" 50 + }, 51 + "@std/assert@1.0.0-rc.2": { 52 + "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3", 53 + "dependencies": [ 54 + "jsr:@std/internal@1" 55 + ] 56 + }, 57 + "@std/assert@1.0.12": { 58 + "integrity": "08009f0926dda9cbd8bef3a35d3b6a4b964b0ab5c3e140a4e0351fbf34af5b9a", 59 + "dependencies": [ 60 + "jsr:@std/internal@^1.0.6" 61 + ] 62 + }, 63 + "@std/data-structures@1.0.6": { 64 + "integrity": "76a7fd8080c66604c0496220a791860492ab21a04a63a969c0b9a0609bbbb760" 65 + }, 66 + "@std/encoding@0.213.1": { 67 + "integrity": "fcbb6928713dde941a18ca5db88ca1544d0755ec8fb20fe61e2dc8144b390c62" 68 + }, 69 + "@std/fmt@0.213.1": { 70 + "integrity": "a06d31777566d874b9c856c10244ac3e6b660bdec4c82506cd46be052a1082c3" 71 + }, 72 + "@std/fmt@0.225.6": { 73 + "integrity": "aba6aea27f66813cecfd9484e074a9e9845782ab0685c030e453a8a70b37afc8" 74 + }, 75 + "@std/fs@0.213.1": { 76 + "integrity": "fbcaf099f8a85c27ab0712b666262cda8fe6d02e9937bf9313ecaea39a22c501", 77 + "dependencies": [ 78 + "jsr:@std/assert@~0.213.1", 79 + "jsr:@std/path@~0.213.1" 80 + ] 81 + }, 82 + "@std/fs@1.0.9": { 83 + "integrity": "3eef7e3ed3d317b29432c7dcb3b20122820dbc574263f721cb0248ad91bad890", 84 + "dependencies": [ 85 + "jsr:@std/path@^1.0.8" 86 + ] 87 + }, 88 + "@std/internal@1.0.5": { 89 + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" 90 + }, 91 + "@std/internal@1.0.6": { 92 + "integrity": "9533b128f230f73bd209408bb07a4b12f8d4255ab2a4d22a1fd6d87304aca9a4" 93 + }, 94 + "@std/path@0.213.1": { 95 + "integrity": "f187bf278a172752e02fcbacf6bd78a335ed320d080a7ed3a5a59c3e88abc673", 96 + "dependencies": [ 97 + "jsr:@std/assert@~0.213.1" 98 + ] 99 + }, 100 + "@std/path@1.0.0-rc.2": { 101 + "integrity": "39f20d37a44d1867abac8d91c169359ea6e942237a45a99ee1e091b32b921c7d" 102 + }, 103 + "@std/path@1.0.8": { 104 + "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" 105 + }, 106 + "@std/testing@0.225.3": { 107 + "integrity": "348c24d0479d44ab3dbb4f26170f242e19f24051b45935d4a9e7ca0ab7e37780", 108 + "dependencies": [ 109 + "jsr:@std/assert@1.0.0-rc.2", 110 + "jsr:@std/data-structures", 111 + "jsr:@std/fmt@~0.225.4", 112 + "jsr:@std/fs@^1.0.0-rc.1", 113 + "jsr:@std/internal@1", 114 + "jsr:@std/path@1.0.0-rc.2" 115 + ] 116 + } 117 + }, 118 + "npm": { 119 + "@babel/code-frame@7.26.2": { 120 + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", 121 + "dependencies": [ 122 + "@babel/helper-validator-identifier", 123 + "js-tokens", 124 + "picocolors" 125 + ] 126 + }, 127 + "@babel/helper-validator-identifier@7.25.9": { 128 + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" 129 + }, 130 + "@babel/runtime@7.26.10": { 131 + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", 132 + "dependencies": [ 133 + "regenerator-runtime" 134 + ] 135 + }, 136 + "@testing-library/dom@8.20.1": { 137 + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", 138 + "dependencies": [ 139 + "@babel/code-frame", 140 + "@babel/runtime", 141 + "@types/aria-query", 142 + "aria-query", 143 + "chalk", 144 + "dom-accessibility-api", 145 + "lz-string", 146 + "pretty-format" 147 + ] 148 + }, 149 + "@testing-library/preact@3.2.4_preact@10.26.4": { 150 + "integrity": "sha512-F+kJ243LP6VmEK1M809unzTE/ijg+bsMNuiRN0JEDIJBELKKDNhdgC/WrUSZ7klwJvtlO3wQZ9ix+jhObG07Fg==", 151 + "dependencies": [ 152 + "@testing-library/dom", 153 + "preact" 154 + ] 155 + }, 156 + "@types/aria-query@5.0.4": { 157 + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" 158 + }, 159 + "@types/chrome@0.0.268": { 160 + "integrity": "sha512-7N1QH9buudSJ7sI8Pe4mBHJr5oZ48s0hcanI9w3wgijAlv1OZNUZve9JR4x42dn5lJ5Sm87V1JNfnoh10EnQlA==", 161 + "dependencies": [ 162 + "@types/filesystem", 163 + "@types/har-format" 164 + ] 165 + }, 166 + "@types/filesystem@0.0.36": { 167 + "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==", 168 + "dependencies": [ 169 + "@types/filewriter" 170 + ] 171 + }, 172 + "@types/filewriter@0.0.33": { 173 + "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==" 174 + }, 175 + "@types/har-format@1.2.16": { 176 + "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==" 20 177 }, 21 - "jsr": { 22 - "@luca/esbuild-deno-loader@0.10.3": { 23 - "integrity": "32fc93f7e7f78060234fd5929a740668aab1c742b808c6048b57f9aaea514921", 24 - "dependencies": [ 25 - "jsr:@std/encoding@0.213", 26 - "jsr:@std/jsonc@0.213", 27 - "jsr:@std/path@0.213" 28 - ] 29 - }, 30 - "@std/assert@0.213.1": { 31 - "integrity": "24c28178b30c8e0782c18e8e94ea72b16282207569cdd10ffb9d1d26f2edebfe" 32 - }, 33 - "@std/assert@1.0.0": { 34 - "integrity": "0e4f6d873f7f35e2a1e6194ceee39686c996b9e5d134948e644d35d4c4df2008", 35 - "dependencies": [ 36 - "jsr:@std/internal@^1.0.1" 37 - ] 38 - }, 39 - "@std/cli@1.0.0": { 40 - "integrity": "3c38f1da21bff0d25a9e6d97139ef2eb9ba334b5910da92c0169b44f38655f08" 41 - }, 42 - "@std/encoding@0.213.1": { 43 - "integrity": "fcbb6928713dde941a18ca5db88ca1544d0755ec8fb20fe61e2dc8144b390c62" 44 - }, 45 - "@std/fs@0.229.3": { 46 - "integrity": "783bca21f24da92e04c3893c9e79653227ab016c48e96b3078377ebd5222e6eb", 47 - "dependencies": [ 48 - "jsr:@std/path@1.0.0-rc.1" 49 - ] 50 - }, 51 - "@std/internal@1.0.1": { 52 - "integrity": "6f8c7544d06a11dd256c8d6ba54b11ed870aac6c5aeafff499892662c57673e6" 53 - }, 54 - "@std/json@0.213.1": { 55 - "integrity": "f572b1de605d07c4a5602445dac54bfc51b1fb87a3710a17aed2608bfca54e68" 56 - }, 57 - "@std/jsonc@0.213.1": { 58 - "integrity": "5578f21aa583b7eb7317eed077ffcde47b294f1056bdbb9aacec407758637bfe", 178 + "ansi-regex@5.0.1": { 179 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 180 + }, 181 + "ansi-styles@4.3.0": { 182 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 183 + "dependencies": [ 184 + "color-convert" 185 + ] 186 + }, 187 + "ansi-styles@5.2.0": { 188 + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" 189 + }, 190 + "aria-query@5.1.3": { 191 + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", 192 + "dependencies": [ 193 + "deep-equal" 194 + ] 195 + }, 196 + "array-buffer-byte-length@1.0.2": { 197 + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", 198 + "dependencies": [ 199 + "call-bound", 200 + "is-array-buffer" 201 + ] 202 + }, 203 + "available-typed-arrays@1.0.7": { 204 + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", 205 + "dependencies": [ 206 + "possible-typed-array-names" 207 + ] 208 + }, 209 + "call-bind-apply-helpers@1.0.2": { 210 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 211 + "dependencies": [ 212 + "es-errors", 213 + "function-bind" 214 + ] 215 + }, 216 + "call-bind@1.0.8": { 217 + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", 218 + "dependencies": [ 219 + "call-bind-apply-helpers", 220 + "es-define-property", 221 + "get-intrinsic", 222 + "set-function-length" 223 + ] 224 + }, 225 + "call-bound@1.0.4": { 226 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 227 + "dependencies": [ 228 + "call-bind-apply-helpers", 229 + "get-intrinsic" 230 + ] 231 + }, 232 + "chalk@4.1.2": { 233 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 234 + "dependencies": [ 235 + "ansi-styles@4.3.0", 236 + "supports-color" 237 + ] 238 + }, 239 + "color-convert@2.0.1": { 240 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 241 + "dependencies": [ 242 + "color-name" 243 + ] 244 + }, 245 + "color-name@1.1.4": { 246 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 247 + }, 248 + "deep-equal@2.2.3": { 249 + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", 250 + "dependencies": [ 251 + "array-buffer-byte-length", 252 + "call-bind", 253 + "es-get-iterator", 254 + "get-intrinsic", 255 + "is-arguments", 256 + "is-array-buffer", 257 + "is-date-object", 258 + "is-regex", 259 + "is-shared-array-buffer", 260 + "isarray", 261 + "object-is", 262 + "object-keys", 263 + "object.assign", 264 + "regexp.prototype.flags", 265 + "side-channel", 266 + "which-boxed-primitive", 267 + "which-collection", 268 + "which-typed-array" 269 + ] 270 + }, 271 + "define-data-property@1.1.4": { 272 + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 273 + "dependencies": [ 274 + "es-define-property", 275 + "es-errors", 276 + "gopd" 277 + ] 278 + }, 279 + "define-properties@1.2.1": { 280 + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 281 + "dependencies": [ 282 + "define-data-property", 283 + "has-property-descriptors", 284 + "object-keys" 285 + ] 286 + }, 287 + "dom-accessibility-api@0.5.16": { 288 + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" 289 + }, 290 + "dunder-proto@1.0.1": { 291 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 292 + "dependencies": [ 293 + "call-bind-apply-helpers", 294 + "es-errors", 295 + "gopd" 296 + ] 297 + }, 298 + "es-define-property@1.0.1": { 299 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" 300 + }, 301 + "es-errors@1.3.0": { 302 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" 303 + }, 304 + "es-get-iterator@1.1.3": { 305 + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", 306 + "dependencies": [ 307 + "call-bind", 308 + "get-intrinsic", 309 + "has-symbols", 310 + "is-arguments", 311 + "is-map", 312 + "is-set", 313 + "is-string", 314 + "isarray", 315 + "stop-iteration-iterator" 316 + ] 317 + }, 318 + "es-object-atoms@1.1.1": { 319 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 320 + "dependencies": [ 321 + "es-errors" 322 + ] 323 + }, 324 + "for-each@0.3.5": { 325 + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", 326 + "dependencies": [ 327 + "is-callable" 328 + ] 329 + }, 330 + "function-bind@1.1.2": { 331 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" 332 + }, 333 + "functions-have-names@1.2.3": { 334 + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" 335 + }, 336 + "get-intrinsic@1.3.0": { 337 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 338 + "dependencies": [ 339 + "call-bind-apply-helpers", 340 + "es-define-property", 341 + "es-errors", 342 + "es-object-atoms", 343 + "function-bind", 344 + "get-proto", 345 + "gopd", 346 + "has-symbols", 347 + "hasown", 348 + "math-intrinsics" 349 + ] 350 + }, 351 + "get-proto@1.0.1": { 352 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 353 + "dependencies": [ 354 + "dunder-proto", 355 + "es-object-atoms" 356 + ] 357 + }, 358 + "gopd@1.2.0": { 359 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" 360 + }, 361 + "has-bigints@1.1.0": { 362 + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==" 363 + }, 364 + "has-flag@4.0.0": { 365 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 366 + }, 367 + "has-property-descriptors@1.0.2": { 368 + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 369 + "dependencies": [ 370 + "es-define-property" 371 + ] 372 + }, 373 + "has-symbols@1.1.0": { 374 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" 375 + }, 376 + "has-tostringtag@1.0.2": { 377 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 378 + "dependencies": [ 379 + "has-symbols" 380 + ] 381 + }, 382 + "hasown@2.0.2": { 383 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 384 + "dependencies": [ 385 + "function-bind" 386 + ] 387 + }, 388 + "internal-slot@1.1.0": { 389 + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", 390 + "dependencies": [ 391 + "es-errors", 392 + "hasown", 393 + "side-channel" 394 + ] 395 + }, 396 + "is-arguments@1.2.0": { 397 + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", 398 + "dependencies": [ 399 + "call-bound", 400 + "has-tostringtag" 401 + ] 402 + }, 403 + "is-array-buffer@3.0.5": { 404 + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", 405 + "dependencies": [ 406 + "call-bind", 407 + "call-bound", 408 + "get-intrinsic" 409 + ] 410 + }, 411 + "is-bigint@1.1.0": { 412 + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", 413 + "dependencies": [ 414 + "has-bigints" 415 + ] 416 + }, 417 + "is-boolean-object@1.2.2": { 418 + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", 419 + "dependencies": [ 420 + "call-bound", 421 + "has-tostringtag" 422 + ] 423 + }, 424 + "is-callable@1.2.7": { 425 + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" 426 + }, 427 + "is-date-object@1.1.0": { 428 + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", 429 + "dependencies": [ 430 + "call-bound", 431 + "has-tostringtag" 432 + ] 433 + }, 434 + "is-map@2.0.3": { 435 + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" 436 + }, 437 + "is-number-object@1.1.1": { 438 + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", 439 + "dependencies": [ 440 + "call-bound", 441 + "has-tostringtag" 442 + ] 443 + }, 444 + "is-regex@1.2.1": { 445 + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", 446 + "dependencies": [ 447 + "call-bound", 448 + "gopd", 449 + "has-tostringtag", 450 + "hasown" 451 + ] 452 + }, 453 + "is-set@2.0.3": { 454 + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" 455 + }, 456 + "is-shared-array-buffer@1.0.4": { 457 + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", 458 + "dependencies": [ 459 + "call-bound" 460 + ] 461 + }, 462 + "is-string@1.1.1": { 463 + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", 464 + "dependencies": [ 465 + "call-bound", 466 + "has-tostringtag" 467 + ] 468 + }, 469 + "is-symbol@1.1.1": { 470 + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", 471 + "dependencies": [ 472 + "call-bound", 473 + "has-symbols", 474 + "safe-regex-test" 475 + ] 476 + }, 477 + "is-weakmap@2.0.2": { 478 + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" 479 + }, 480 + "is-weakset@2.0.4": { 481 + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", 482 + "dependencies": [ 483 + "call-bound", 484 + "get-intrinsic" 485 + ] 486 + }, 487 + "isarray@2.0.5": { 488 + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" 489 + }, 490 + "js-tokens@4.0.0": { 491 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 492 + }, 493 + "lz-string@1.5.0": { 494 + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" 495 + }, 496 + "math-intrinsics@1.1.0": { 497 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" 498 + }, 499 + "object-inspect@1.13.4": { 500 + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" 501 + }, 502 + "object-is@1.1.6": { 503 + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", 504 + "dependencies": [ 505 + "call-bind", 506 + "define-properties" 507 + ] 508 + }, 509 + "object-keys@1.1.1": { 510 + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 511 + }, 512 + "object.assign@4.1.7": { 513 + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", 514 + "dependencies": [ 515 + "call-bind", 516 + "call-bound", 517 + "define-properties", 518 + "es-object-atoms", 519 + "has-symbols", 520 + "object-keys" 521 + ] 522 + }, 523 + "picocolors@1.1.1": { 524 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 525 + }, 526 + "possible-typed-array-names@1.1.0": { 527 + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" 528 + }, 529 + "preact@10.26.4": { 530 + "integrity": "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==" 531 + }, 532 + "pretty-format@27.5.1": { 533 + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", 534 + "dependencies": [ 535 + "ansi-regex", 536 + "ansi-styles@5.2.0", 537 + "react-is" 538 + ] 539 + }, 540 + "react-is@17.0.2": { 541 + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" 542 + }, 543 + "regenerator-runtime@0.14.1": { 544 + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" 545 + }, 546 + "regexp.prototype.flags@1.5.4": { 547 + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", 548 + "dependencies": [ 549 + "call-bind", 550 + "define-properties", 551 + "es-errors", 552 + "get-proto", 553 + "gopd", 554 + "set-function-name" 555 + ] 556 + }, 557 + "safe-regex-test@1.1.0": { 558 + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", 559 + "dependencies": [ 560 + "call-bound", 561 + "es-errors", 562 + "is-regex" 563 + ] 564 + }, 565 + "set-function-length@1.2.2": { 566 + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 567 + "dependencies": [ 568 + "define-data-property", 569 + "es-errors", 570 + "function-bind", 571 + "get-intrinsic", 572 + "gopd", 573 + "has-property-descriptors" 574 + ] 575 + }, 576 + "set-function-name@2.0.2": { 577 + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", 578 + "dependencies": [ 579 + "define-data-property", 580 + "es-errors", 581 + "functions-have-names", 582 + "has-property-descriptors" 583 + ] 584 + }, 585 + "side-channel-list@1.0.0": { 586 + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 587 + "dependencies": [ 588 + "es-errors", 589 + "object-inspect" 590 + ] 591 + }, 592 + "side-channel-map@1.0.1": { 593 + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 594 + "dependencies": [ 595 + "call-bound", 596 + "es-errors", 597 + "get-intrinsic", 598 + "object-inspect" 599 + ] 600 + }, 601 + "side-channel-weakmap@1.0.2": { 602 + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 603 + "dependencies": [ 604 + "call-bound", 605 + "es-errors", 606 + "get-intrinsic", 607 + "object-inspect", 608 + "side-channel-map" 609 + ] 610 + }, 611 + "side-channel@1.1.0": { 612 + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 613 + "dependencies": [ 614 + "es-errors", 615 + "object-inspect", 616 + "side-channel-list", 617 + "side-channel-map", 618 + "side-channel-weakmap" 619 + ] 620 + }, 621 + "stop-iteration-iterator@1.1.0": { 622 + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", 623 + "dependencies": [ 624 + "es-errors", 625 + "internal-slot" 626 + ] 627 + }, 628 + "supports-color@7.2.0": { 629 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 630 + "dependencies": [ 631 + "has-flag" 632 + ] 633 + }, 634 + "which-boxed-primitive@1.1.1": { 635 + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", 636 + "dependencies": [ 637 + "is-bigint", 638 + "is-boolean-object", 639 + "is-number-object", 640 + "is-string", 641 + "is-symbol" 642 + ] 643 + }, 644 + "which-collection@1.0.2": { 645 + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", 646 + "dependencies": [ 647 + "is-map", 648 + "is-set", 649 + "is-weakmap", 650 + "is-weakset" 651 + ] 652 + }, 653 + "which-typed-array@1.1.19": { 654 + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", 655 + "dependencies": [ 656 + "available-typed-arrays", 657 + "call-bind", 658 + "call-bound", 659 + "for-each", 660 + "get-proto", 661 + "gopd", 662 + "has-tostringtag" 663 + ] 664 + } 665 + }, 666 + "remote": { 667 + "https://deno.land/x/deno_dom@v0.1.32-alpha/build/deno-wasm/deno-wasm.js": "b3ba6f2047b5fd8424292408c6c6ad2cb8c56a22984fdaceea2333a727bece25", 668 + "https://deno.land/x/deno_dom@v0.1.32-alpha/deno-dom-wasm.ts": "bfd999a493a6974e9fca4d331bee03bfb68cfc600c662cd0b48b21d67a2a8ba0", 669 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/api.ts": "0ff5790f0a3eeecb4e00b7d8fbfa319b165962cf6d0182a65ba90f158d74f7d7", 670 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/constructor-lock.ts": "59714df7e0571ec7bd338903b1f396202771a6d4d7f55a452936bd0de9deb186", 671 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/deserialize.ts": "f4d34514ca00473ca428b69ad437ba345925744b5d791cb9552e2d7a0e7b0439", 672 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/document-fragment.ts": "a40c6e18dd0efcf749a31552c1c9a6f7fa614452245e86ee38fc92ba0235e5ae", 673 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/document.ts": "9f1d7bcd67d14d35a181ff044ad0c5f21fdad8b5dab87831e4e39ae5bf291383", 674 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/dom-parser.ts": "609097b426f8c2358f3e5d2bca55ed026cf26cdf86562e94130dfdb0f2537f92", 675 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/element.ts": "1ce1b47ff50946c8669211a10b22958fd0e1e579add8fd3894e0d8c94055f63e", 676 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/elements/html-template-element.ts": "19ad97c55222115e8daaca2788b9c98cc31a7f9d2547ed5bca0c56a4a12bfec8", 677 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/html-collection.ts": "ae90197f5270c32074926ad6cf30ee07d274d44596c7e413c354880cebce8565", 678 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/node-list.ts": "d9c07baf0acc383112cbabafacf26a0aedb04d0866645e7485f5ab23e470b6f8", 679 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/node.ts": "338f7555b159e570ab577596ad5252a4d946f04edcc245fca98bda348966b2ce", 680 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/selectors/custom-api.ts": "852696bd58e534bc41bd3be9e2250b60b67cd95fd28ed16b1deff1d548531a71", 681 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/selectors/nwsapi-types.ts": "c43b36c36acc5d32caabaa54fda8c9d239b2b0fcbce9a28efb93c84aa1021698", 682 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/selectors/nwsapi.js": "985d7d8fc1eabbb88946b47a1c44c1b2d4aa79ff23c21424219f1528fa27a2ff", 683 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/selectors/selectors.ts": "83eab57be2290fb48e3130533448c93c6c61239f2a2f3b85f1917f80ca0fdc75", 684 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/selectors/sizzle-types.ts": "78149e2502409989ce861ed636b813b059e16bc267bb543e7c2b26ef43e4798b", 685 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/selectors/sizzle.js": "c3aed60c1045a106d8e546ac2f85cc82e65f62d9af2f8f515210b9212286682a", 686 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/utils-types.ts": "96db30e3e4a75b194201bb9fa30988215da7f91b380fca6a5143e51ece2a8436", 687 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/dom/utils.ts": "9a21e6be3d16160d9ce69a42d37fb26708d8b77e0e4e7fedfa849224bd3eac8b", 688 + "https://deno.land/x/deno_dom@v0.1.32-alpha/src/parser.ts": "b65eb7e673fa7ca611de871de109655f0aa9fa35ddc1de73df1a5fc2baafc332" 689 + }, 690 + "workspace": { 691 + "members": { 692 + "examples/preact": { 59 693 "dependencies": [ 60 - "jsr:@std/assert@^0.213.1", 61 - "jsr:@std/json@^0.213.1" 694 + "jsr:@b-fuze/deno-dom@~0.1.47", 695 + "jsr:@bpev/bext@*", 696 + "jsr:@std/assert@^1.0.11", 697 + "jsr:@std/testing@~0.225.3", 698 + "npm:@testing-library/preact@^3.2.4", 699 + "npm:preact@^10.23.0" 62 700 ] 63 701 }, 64 - "@std/path@0.213.1": { 65 - "integrity": "f187bf278a172752e02fcbacf6bd78a335ed320d080a7ed3a5a59c3e88abc673", 702 + "source": { 66 703 "dependencies": [ 67 - "jsr:@std/assert@^0.213.1" 704 + "jsr:@std/assert@^1.0.11", 705 + "jsr:@std/testing@~0.225.3" 68 706 ] 69 - }, 70 - "@std/path@1.0.0-rc.1": { 71 - "integrity": "b8c00ae2f19106a6bb7cbf1ab9be52aa70de1605daeb2dbdc4f87a7cbaf10ff6" 72 - }, 73 - "@std/path@1.0.1": { 74 - "integrity": "e061ff02c28481ca49e3a14981875c345e9fc7e973190672782cd0ac8af70428" 75 - }, 76 - "@std/testing@0.225.3": { 77 - "integrity": "348c24d0479d44ab3dbb4f26170f242e19f24051b45935d4a9e7ca0ab7e37780" 78 - } 79 - }, 80 - "npm": { 81 - "@esbuild/aix-ppc64@0.23.0": { 82 - "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", 83 - "dependencies": {} 84 - }, 85 - "@esbuild/android-arm64@0.23.0": { 86 - "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", 87 - "dependencies": {} 88 - }, 89 - "@esbuild/android-arm@0.23.0": { 90 - "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", 91 - "dependencies": {} 92 - }, 93 - "@esbuild/android-x64@0.23.0": { 94 - "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", 95 - "dependencies": {} 96 - }, 97 - "@esbuild/darwin-arm64@0.23.0": { 98 - "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", 99 - "dependencies": {} 100 - }, 101 - "@esbuild/darwin-x64@0.23.0": { 102 - "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", 103 - "dependencies": {} 104 - }, 105 - "@esbuild/freebsd-arm64@0.23.0": { 106 - "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", 107 - "dependencies": {} 108 - }, 109 - "@esbuild/freebsd-x64@0.23.0": { 110 - "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", 111 - "dependencies": {} 112 - }, 113 - "@esbuild/linux-arm64@0.23.0": { 114 - "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", 115 - "dependencies": {} 116 - }, 117 - "@esbuild/linux-arm@0.23.0": { 118 - "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", 119 - "dependencies": {} 120 - }, 121 - "@esbuild/linux-ia32@0.23.0": { 122 - "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", 123 - "dependencies": {} 124 - }, 125 - "@esbuild/linux-loong64@0.23.0": { 126 - "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", 127 - "dependencies": {} 128 - }, 129 - "@esbuild/linux-mips64el@0.23.0": { 130 - "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", 131 - "dependencies": {} 132 - }, 133 - "@esbuild/linux-ppc64@0.23.0": { 134 - "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", 135 - "dependencies": {} 136 - }, 137 - "@esbuild/linux-riscv64@0.23.0": { 138 - "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", 139 - "dependencies": {} 140 - }, 141 - "@esbuild/linux-s390x@0.23.0": { 142 - "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", 143 - "dependencies": {} 144 - }, 145 - "@esbuild/linux-x64@0.23.0": { 146 - "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", 147 - "dependencies": {} 148 - }, 149 - "@esbuild/netbsd-x64@0.23.0": { 150 - "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", 151 - "dependencies": {} 152 - }, 153 - "@esbuild/openbsd-arm64@0.23.0": { 154 - "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", 155 - "dependencies": {} 156 - }, 157 - "@esbuild/openbsd-x64@0.23.0": { 158 - "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", 159 - "dependencies": {} 160 - }, 161 - "@esbuild/sunos-x64@0.23.0": { 162 - "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", 163 - "dependencies": {} 164 - }, 165 - "@esbuild/win32-arm64@0.23.0": { 166 - "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", 167 - "dependencies": {} 168 - }, 169 - "@esbuild/win32-ia32@0.23.0": { 170 - "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", 171 - "dependencies": {} 172 - }, 173 - "@esbuild/win32-x64@0.23.0": { 174 - "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", 175 - "dependencies": {} 176 - }, 177 - "@types/chrome@0.0.268": { 178 - "integrity": "sha512-7N1QH9buudSJ7sI8Pe4mBHJr5oZ48s0hcanI9w3wgijAlv1OZNUZve9JR4x42dn5lJ5Sm87V1JNfnoh10EnQlA==", 179 - "dependencies": { 180 - "@types/filesystem": "@types/filesystem@0.0.36", 181 - "@types/har-format": "@types/har-format@1.2.15" 182 - } 183 - }, 184 - "@types/filesystem@0.0.36": { 185 - "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==", 186 - "dependencies": { 187 - "@types/filewriter": "@types/filewriter@0.0.33" 188 - } 189 - }, 190 - "@types/filewriter@0.0.33": { 191 - "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==", 192 - "dependencies": {} 193 - }, 194 - "@types/har-format@1.2.15": { 195 - "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==", 196 - "dependencies": {} 197 - }, 198 - "esbuild@0.23.0": { 199 - "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", 200 - "dependencies": { 201 - "@esbuild/aix-ppc64": "@esbuild/aix-ppc64@0.23.0", 202 - "@esbuild/android-arm": "@esbuild/android-arm@0.23.0", 203 - "@esbuild/android-arm64": "@esbuild/android-arm64@0.23.0", 204 - "@esbuild/android-x64": "@esbuild/android-x64@0.23.0", 205 - "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.23.0", 206 - "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.23.0", 207 - "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.23.0", 208 - "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.23.0", 209 - "@esbuild/linux-arm": "@esbuild/linux-arm@0.23.0", 210 - "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.23.0", 211 - "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.23.0", 212 - "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.23.0", 213 - "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.23.0", 214 - "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.23.0", 215 - "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.23.0", 216 - "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.23.0", 217 - "@esbuild/linux-x64": "@esbuild/linux-x64@0.23.0", 218 - "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.23.0", 219 - "@esbuild/openbsd-arm64": "@esbuild/openbsd-arm64@0.23.0", 220 - "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.23.0", 221 - "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.23.0", 222 - "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.23.0", 223 - "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.23.0", 224 - "@esbuild/win32-x64": "@esbuild/win32-x64@0.23.0" 225 - } 226 707 } 227 708 } 228 - }, 229 - "remote": {}, 230 - "workspace": { 231 - "dependencies": [ 232 - "jsr:@std/assert@^1.0.0", 233 - "jsr:@std/testing@^0.225.3" 234 - ] 235 709 } 236 710 }
-3
examples/barebones/README.md
··· 1 1 # Barebones 2 2 3 3 The bare minimum needed for a chrome extension 4 - 5 - Note: Since is also used for internal dev. In your own app, the 6 - `internal-dev-only` tasks can be removed.
+1 -4
examples/barebones/deno.json
··· 1 1 { 2 2 "tasks": { 3 3 "dev": "bext --watch", 4 - "build": "bext", 5 - "internal-dev-only-install": "deno install --name=bext-internal -Agf ../../source/main.ts", 6 - "internal-dev-only-dev": "bext-internal --watch", 7 - "internal-dev-only-build": "bext-internal" 4 + "build": "bext" 8 5 } 9 6 }
-2
examples/preact/README.md
··· 2 2 3 3 A Preact-Rendered Chrome/Firefox extension built with Bext. 4 4 5 - Note: Since is also used for internal dev. In your own app, the `browser` dependency should point to `jsr:@bpev/bext`. Also, the `internal-dev-only` tasks can be removed. 6 - 7 5 Uses: 8 6 9 7 - `background.ts` logs url to extension console for each new tab update
+3 -7
examples/preact/deno.json
··· 14 14 15 15 "imports": { 16 16 "@b-fuze/deno-dom": "jsr:@b-fuze/deno-dom@^0.1.47", 17 - "@std/assert": "jsr:@std/assert@^1.0.0", 17 + "@bpev/bext": "jsr:@bpev/bext", 18 + "@std/assert": "jsr:@std/assert@^1.0.11", 18 19 "@std/testing": "jsr:@std/testing@^0.225.3", 19 20 "@testing-library/preact": "npm:@testing-library/preact@^3.2.4", 20 - "browser": "../../source/mod.ts", 21 - "browser/": "../../source/", 22 21 "deno-dom": "https://deno.land/x/deno_dom@v0.1.32-alpha/deno-dom-wasm.ts", 23 22 "preact": "npm:preact@^10.23.0", 24 23 "preact/hooks": "npm:preact@^10.23.0/hooks" ··· 40 39 "check:background": "deno check source/background.ts", 41 40 "check:content_script": "deno check source/content_script.ts", 42 41 "check:options": "deno check source/options.tsx", 43 - "check:popup": "deno check source/popup.tsx", 44 - "bext-internal-dev-only-install": "deno install --name=bext-internal -Agf ../../source/main.ts", 45 - "bext-internal-dev-only-dev": "bext-internal --watch", 46 - "bext-internal-dev-only-build": "bext-internal" 42 + "check:popup": "deno check source/popup.tsx" 47 43 } 48 44 }
+2 -2
examples/preact/source/background.ts
··· 1 - import type Chrome from 'browser/types/chrome.ts' 2 - import browserAPI from 'browser' 1 + import type Chrome from '@bpev/bext/types/chrome' 2 + import browserAPI from '@bpev/bext' 3 3 4 4 browserAPI.tabs.onUpdated.addListener( 5 5 (
+2 -2
examples/preact/source/components/options_button.tsx
··· 2 2 import { h } from 'preact' 3 3 4 4 import { useCallback } from 'preact/hooks' 5 - import browserAPI from 'browser' 5 + import browserAPI from '@bpev/bext' 6 6 7 7 export default function OptionsButton() { 8 8 const onClick = useCallback(() => { ··· 10 10 }, []) 11 11 12 12 return ( 13 - <button onClick={onClick}> 13 + <button type='button' onClick={onClick}> 14 14 Options 15 15 </button> 16 16 )
+1
examples/preact/source/pages/home.tsx
··· 36 36 }, [setInputData])} 37 37 /> 38 38 <button 39 + type='button' 39 40 onClick={useCallback(() => updateStorage(inputData), [inputData])} 40 41 > 41 42 Update Storage
+1 -1
examples/preact/source/utilities/storage_helpers.test.ts
··· 1 - import browserAPI from 'browser' 1 + import browserAPI from '@bpev/bext' 2 2 import { assertStrictEquals } from '@std/assert' 3 3 import { assertSpyCall, assertSpyCalls, stub } from '@std/testing/mock' 4 4
+1 -1
examples/preact/source/utilities/storage_helpers.ts
··· 1 - import browserAPI from 'browser' 1 + import browserAPI from '@bpev/bext' 2 2 3 3 const { storage } = browserAPI 4 4 const KEY = 'storage_key'
+18
source/deno.json
··· 1 + { 2 + "name": "@bpev/bext", 3 + "version": "1.3.1", 4 + "exports": { 5 + ".": "./mod.ts", 6 + "./bin": "./main.ts", 7 + "./mock": "./mock_browser/main.ts", 8 + "./types/chrome": "./types/chrome.ts" 9 + }, 10 + "imports": { 11 + "@std/assert": "jsr:@std/assert@^1.0.11", 12 + "@std/testing": "jsr:@std/testing@^0.225.3" 13 + }, 14 + "tasks": { 15 + "check": "deno check main.ts && deno check mod.ts", 16 + "test": "deno fmt && deno lint && deno task check && deno publish --dry-run --allow-dirty" 17 + } 18 + }
+12 -10
source/main.ts
··· 6 6 * 7 7 * @example 8 8 * ```sh 9 - * deno install -g --name=bext-internal -Ag jsr:@bpev/bext/bin 9 + * deno install -g --name=bext -Ag jsr:@bpev/bext/bin 10 10 * cd ./my_project 11 11 * bext # both 12 12 * bext chrome # only chrome ··· 19 19 */ 20 20 21 21 // Keep imports for this file local, to ensure it can be run independently 22 - import * as esbuild from 'npm:esbuild@^0.23.0' 23 - import { denoPlugins } from 'jsr:@luca/esbuild-deno-loader@^0.10.3' 24 - import { parseArgs } from 'jsr:@std/cli@^1.0.0' 25 - import { copy, ensureDir, exists } from 'jsr:@std/fs@^0.229.3' 26 - import { join, resolve } from 'jsr:@std/path@^1.0.1' 22 + import * as esbuild from 'npm:esbuild@0.24.2' 23 + import { denoPlugins } from 'jsr:@duesabati/esbuild-deno-plugin@0.2.6' 24 + import { parseArgs } from 'jsr:@std/cli@^1.0.15' 25 + import { copy, ensureDir, exists } from 'jsr:@std/fs@^1.0.15' 26 + import { join, resolve } from 'jsr:@std/path@^1.0.8' 27 27 28 28 interface BrowserManifestSettings { 29 29 color: string ··· 37 37 } 38 38 39 39 const args = parseArgs(Deno.args, { 40 - string: ['source', 'static', 'output'], 40 + string: ['config', 'output', 'source', 'static'], 41 41 boolean: ['watch'], 42 42 alias: { 43 - w: 'watch', 43 + c: 'config', 44 + o: 'output', 44 45 s: 'source', 45 46 t: 'static', 46 - o: 'output', 47 + w: 'watch', 47 48 }, 48 49 default: { 50 + config: './deno.json', 49 51 source: 'source', 50 52 static: 'static', 51 53 output: 'dist', ··· 145 147 } 146 148 147 149 esBuildOptions.plugins = [ 148 - ...denoPlugins({ configPath: resolve('./deno.json') }), 150 + ...denoPlugins({ configPath: resolve(args.config) }), 149 151 ] 150 152 151 153 // Add watch esbuild options