diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 27ddaed00..6d32c6312 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -8,6 +8,7 @@ on: jobs: release: + timeout-minutes: 30 # Prevents changesets action from creating a PR on forks if: github.repository == 'modernweb-dev/web' name: Pre-release @@ -37,6 +38,9 @@ jobs: - name: Build packages run: npm run build + - name: Build types for js packages + run: npm run types + - name: Build for production run: npm run build:production diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2893e5371..c61aa47fe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,6 +7,7 @@ on: jobs: release: + timeout-minutes: 30 # Prevents changesets action from creating a PR on forks if: github.repository == 'modernweb-dev/web' name: Release @@ -36,6 +37,9 @@ jobs: - name: Build packages run: npm run build + - name: Build types for js packages + run: npm run types + - name: Build for production run: npm run build:production diff --git a/.github/workflows/verify-browserstack.yml b/.github/workflows/verify-browserstack.yml index 6d66652e6..0f01c3fd5 100644 --- a/.github/workflows/verify-browserstack.yml +++ b/.github/workflows/verify-browserstack.yml @@ -4,6 +4,7 @@ on: pull_request jobs: verify-browserstack: + timeout-minutes: 30 name: Verify Browserstack # Run only from the original repository diff --git a/.github/workflows/verify-node.yml b/.github/workflows/verify-node.yml index 5afb5cff4..e31e85421 100644 --- a/.github/workflows/verify-node.yml +++ b/.github/workflows/verify-node.yml @@ -7,6 +7,7 @@ env: jobs: verify-linux: + timeout-minutes: 30 name: Verify linux runs-on: ubuntu-latest strategy: @@ -38,6 +39,9 @@ jobs: - name: Build packages run: npm run build + - name: Build types for js packages + run: npm run types + # build for production in CI to make sure tests can run with production build - name: Build for production run: npm run build:production diff --git a/.github/workflows/verify-saucelabs.yml b/.github/workflows/verify-saucelabs.yml index a208d4afb..b5eb1bfce 100644 --- a/.github/workflows/verify-saucelabs.yml +++ b/.github/workflows/verify-saucelabs.yml @@ -4,6 +4,7 @@ on: pull_request jobs: verify-saucelabs: + timeout-minutes: 30 name: Verify Sauce Labs # Run only from the original repository diff --git a/.github/workflows/verify-windows.yml b/.github/workflows/verify-windows.yml index 66f687e74..00e402a78 100644 --- a/.github/workflows/verify-windows.yml +++ b/.github/workflows/verify-windows.yml @@ -4,6 +4,7 @@ on: pull_request jobs: verify-windows: + timeout-minutes: 30 name: Verify windows runs-on: windows-2022 steps: diff --git a/docs/docs/dev-server/node-api.md b/docs/docs/dev-server/node-api.md index c363e947f..c5b6e8e88 100644 --- a/docs/docs/dev-server/node-api.md +++ b/docs/docs/dev-server/node-api.md @@ -152,6 +152,29 @@ wss.on('connection', ws => { }); ``` +## Middleware mode + +If you need to connect to an existing running web server with a compatible node middleware API (e.g. `express`), you can use `@web/dev-server` in middleware mode. + +```js +import { startDevServer } from '@web/dev-server'; + +async function main() { + const expressApp = express(); + expressApp.listen(1234); + const { koaApp } = await startDevServer({ + config: { + middlewareMode: true, + }, + }); + expressApp.use(koaApp.callback()); +} + +main(); +``` + +In this mode it will not start a new HTTP server, but rather allow you to use it's callback `koaApp.callback()` as a middleware in a parent server. + ## Advanced If you need more control than what `startDevServer` gives you, you can also use the individual pieces that make up the dev server directly. diff --git a/integration/test-runner/tests/focus/runFocusTest.ts b/integration/test-runner/tests/focus/runFocusTest.ts index 22b338833..f32b5247d 100644 --- a/integration/test-runner/tests/focus/runFocusTest.ts +++ b/integration/test-runner/tests/focus/runFocusTest.ts @@ -7,7 +7,7 @@ import { expect } from 'chai'; export function runFocusTest( config: Partial & { browsers: BrowserLauncher[] }, ) { - describe('focus', async function () { + describe.skip('focus', async function () { let allSessions: TestSession[]; before(async () => { @@ -21,7 +21,7 @@ export function runFocusTest( allSessions = result.sessions; }); - it('can run tests with focus, concurrently and sequentially', () => { + it.skip('can run tests with focus, concurrently and sequentially', () => { expect(allSessions.every(s => s.passed)).to.equal(true, 'All sessions should have passed'); }); }); diff --git a/package-lock.json b/package-lock.json index 6435e9f7d..f2bf69dc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "rollup": "^3.15.0", "ts-node": "^10.4.0", "typescript": "~5.0.4", - "wireit": "^0.9.5" + "wireit": "^0.10.0" }, "engines": { "node": ">=16.0.0" @@ -6323,11 +6323,6 @@ "resolved": "packages/rollup-plugin-polyfills-loader", "link": true }, - "node_modules/@web/storybook-prebuilt": { - "version": "0.1.37", - "resolved": "https://registry.npmjs.org/@web/storybook-prebuilt/-/storybook-prebuilt-0.1.37.tgz", - "integrity": "sha512-je4BAbOJiEjQOkeFJfw+fnezKpU3fQW+5ZTiY24UGB1xPaZfU7ZMrC9tW6699vy/QRVJhiJyQrcIQ35OVSlCQA==" - }, "node_modules/@web/test-runner": { "resolved": "packages/test-runner", "link": true @@ -6489,7 +6484,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -7624,6 +7618,12 @@ "node": ">=6.0.0" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, "node_modules/array-iterate": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", @@ -7690,6 +7690,17 @@ "node": "*" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -7714,6 +7725,14 @@ "node": ">=0.8.0" } }, + "node_modules/async-mutex": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz", + "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -8028,6 +8047,14 @@ "node": "^4.5.0 || >= 5.9" } }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -8084,6 +8111,122 @@ "node": ">= 6" } }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -9236,22 +9379,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chromium-bidi": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.6.tgz", - "integrity": "sha512-TQOkWRaLI/IWvoP8XC+7jO4uHTIiAUiklXU1T0qszlUFEai9LgKXIBXy3pOS3EnQZ3bQtMbKUPkug0fTAEHCSw==", - "dependencies": { - "mitt": "3.0.0" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/chromium-bidi/node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" - }, "node_modules/ci-info": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", @@ -9918,6 +10045,12 @@ "node": ">= 0.6" } }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, "node_modules/cookies": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", @@ -9976,39 +10109,6 @@ "node": ">= 0.10" } }, - "node_modules/cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -10674,8 +10774,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -10741,6 +10840,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.4.tgz", + "integrity": "sha512-MTZdZsuNxSBL92rsjx3VFWe57OpRlikyLbcx2B5Dmdv6oScqpMrvpY7zHLMymrUxo3U5+suPUMsNgW/+SZB1lg==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^1.14.3", + "esprima": "^4.0.1", + "vm2": "^3.9.19" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -11788,6 +11901,83 @@ "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint": { "version": "8.39.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", @@ -12194,7 +12384,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -12325,52 +12514,261 @@ "node": ">=6" } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, "dependencies": { - "mime-db": "^1.28.0" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10.0" } }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "ms": "2.0.0" } }, - "node_modules/extendable-error": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", - "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", - "dev": true + "node_modules/express/node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, - "node_modules/external-editor": { + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/express/node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", + "dev": true + }, + "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", @@ -12424,8 +12822,7 @@ "node_modules/fast-fifo": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.2.0.tgz", - "integrity": "sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg==", - "dev": true + "integrity": "sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg==" }, "node_modules/fast-glob": { "version": "3.2.12", @@ -12450,8 +12847,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { "version": "1.15.0", @@ -12849,6 +13245,15 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -13092,6 +13497,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/git-diff-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/git-diff-tree/-/git-diff-tree-1.1.0.tgz", @@ -14186,6 +14626,29 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http2-wrapper": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", @@ -14605,6 +15068,15 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -17643,6 +18115,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -17656,6 +18134,15 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -19048,6 +19535,14 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nlcst-is-literal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nlcst-is-literal/-/nlcst-is-literal-2.1.1.tgz", @@ -19783,6 +20278,59 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", + "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "pac-resolver": "^6.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.2.tgz", + "integrity": "sha512-EQpuJ2ifOjpZY5sg1Q1ZeAxvtLwR7Mj3RgY8cysPGbsRu3RBXyJFWxnMus9PScjxya/0LzvVDxNh/gl0eXBU4w==", + "dependencies": { + "degenerator": "^4.0.4", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/package-json": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", @@ -21351,13 +21899,75 @@ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/prr": { - "version": "1.0.1", + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", + "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^6.0.3", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" }, @@ -21654,69 +22264,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/puppeteer": { - "version": "19.10.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.10.1.tgz", - "integrity": "sha512-HqpY8sWqz28JfyZE8cGG9kBPgASD7iRHn/ryWLvVLXE10poR5AyU/mMsLmL175qoYl/chwMTN2pxKSz7HobaCg==", - "hasInstallScript": true, - "dependencies": { - "@puppeteer/browsers": "0.5.0", - "cosmiconfig": "8.1.3", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "puppeteer-core": "19.10.1" - } - }, - "node_modules/puppeteer-core": { - "version": "19.10.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.10.1.tgz", - "integrity": "sha512-vD4ojslBtnIWd56IQIEADIcAWrNel/Qt7YGlAxcSNB0b33U3tYe0A+0FLmPNgSa7UTlCOCCVEmzXi5QlDtLGjQ==", - "dependencies": { - "@puppeteer/browsers": "0.5.0", - "chromium-bidi": "0.4.6", - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1107588", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "proxy-from-env": "1.1.0", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.13.0" - }, - "engines": { - "node": ">=14.14.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/qs": { "version": "6.11.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", @@ -21779,8 +22326,7 @@ "node_modules/queue-tick": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" }, "node_modules/quick-lru": { "version": "4.0.1", @@ -25068,6 +25614,15 @@ "node": ">=8.0.0" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/smartwrap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/smartwrap/-/smartwrap-2.0.2.tgz", @@ -25287,6 +25842,48 @@ "node": ">=10.0.0" } }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", + "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", + "dependencies": { + "agent-base": "^7.0.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -27795,6 +28392,22 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/vm2": { + "version": "3.9.19", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", + "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", + "deprecated": "The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm.", + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -28364,9 +28977,9 @@ } }, "node_modules/wireit": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.9.5.tgz", - "integrity": "sha512-dKKNAwLxQjbPPMrltPxMUFKvLy2z6hlVjvR/qitvPm8GEQyb/1QYBG7ObvOQLsi95uAXpkWLJXBYkCKeVcMVgA==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.10.0.tgz", + "integrity": "sha512-4TX6V9D/2iXUBzdqQaUG+cRePle0mDx1Q7x4Ka2cA8lgp1+ZBhrOTiLsXYRl2roQEldEFgQ2Ff1W8YgyNWAa6w==", "dev": true, "dependencies": { "braces": "^3.0.2", @@ -28406,7 +29019,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -29239,84 +29851,323 @@ }, "devDependencies": { "@esm-bundle/chai": "^4.1.5", - "puppeteer": "^19.9.0" + "puppeteer": "^20.0.0" }, "engines": { "node": ">=16.0.0" } }, - "packages/config-loader": { - "name": "@web/config-loader", - "version": "0.2.1", - "license": "MIT", + "packages/browser-logs/node_modules/@puppeteer/browsers": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.4.tgz", + "integrity": "sha512-1eRHnLFMJTcIdeAIKFCWjAkUmjZtDlgTzTtK0KC8h+Sw3aJ1B3V7IMFu1S5YL8EmO/U4Vte4ukEpOUPnkqL3jw==", + "dev": true, "dependencies": { - "semver": "^7.3.4" + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "packages/config-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "packages/browser-logs/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "packages/browser-logs/node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, + "packages/browser-logs/node_modules/chromium-bidi": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "mitt": "3.0.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "devtools-protocol": "*" } }, - "packages/config-loader/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "packages/browser-logs/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" } }, - "packages/dev-server": { - "name": "@web/dev-server", - "version": "0.2.3", - "license": "MIT", + "packages/browser-logs/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.11", - "@types/command-line-args": "^5.0.0", - "@web/config-loader": "^0.2.1", - "@web/dev-server-core": "^0.5.1", - "@web/dev-server-rollup": "^0.5.1", - "camelcase": "^6.2.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^7.0.1", - "debounce": "^1.2.0", - "deepmerge": "^4.2.2", - "ip": "^1.1.5", - "nanocolors": "^0.2.1", - "open": "^8.0.2", - "portfinder": "^1.0.32" + "node-fetch": "^2.6.12" + } + }, + "packages/browser-logs/node_modules/devtools-protocol": { + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==", + "dev": true + }, + "packages/browser-logs/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" }, "bin": { - "wds": "dist/bin.js", - "web-dev-server": "dist/bin.js" - }, - "devDependencies": { - "@types/command-line-usage": "^5.0.1", - "lit-html": "^2.7.3", - "puppeteer": "^19.9.0" + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/browser-logs/node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "packages/browser-logs/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "packages/dev-server-core": { - "name": "@web/dev-server-core", - "version": "0.5.1", + "packages/browser-logs/node_modules/puppeteer": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.8.1.tgz", + "integrity": "sha512-1ZntYZenpbKqNJW30UItrAskWuYp9i4GQ99y9uefLwewpybDYCuPXkn5nGRd+KkT08O7ge/WHNHmv8cH1zDQ1Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.8.1" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "packages/browser-logs/node_modules/puppeteer-core": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.8.1.tgz", + "integrity": "sha512-Qoh8f8Y90AVV003kENcwMZ6V2qTtsQ6S7PSwEwCILKvbeQCevbJl5KMzT3qOArgKsT3mZfR+sLHNy6+tWFsQcQ==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/browser-logs/node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "packages/browser-logs/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "packages/browser-logs/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "packages/browser-logs/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "packages/browser-logs/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "packages/browser-logs/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "packages/browser-logs/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "packages/config-loader": { + "name": "@web/config-loader", + "version": "0.2.1", + "license": "MIT", + "dependencies": { + "semver": "^7.3.4" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/config-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "packages/config-loader/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "packages/dev-server": { + "name": "@web/dev-server", + "version": "0.2.5", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.11", + "@types/command-line-args": "^5.0.0", + "@web/config-loader": "^0.2.1", + "@web/dev-server-core": "^0.5.1", + "@web/dev-server-rollup": "^0.5.1", + "camelcase": "^6.2.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^7.0.1", + "debounce": "^1.2.0", + "deepmerge": "^4.2.2", + "ip": "^1.1.5", + "nanocolors": "^0.2.1", + "open": "^8.0.2", + "portfinder": "^1.0.32" + }, + "bin": { + "wds": "dist/bin.js", + "web-dev-server": "dist/bin.js" + }, + "devDependencies": { + "@types/command-line-usage": "^5.0.1", + "lit-html": "^2.7.3", + "puppeteer": "^20.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/dev-server-core": { + "name": "@web/dev-server-core", + "version": "0.5.2", "license": "MIT", "dependencies": { "@types/koa": "^2.11.6", @@ -29344,6 +30195,7 @@ "@types/koa-static": "^4.0.1", "@types/parse5": "^6.0.1", "abort-controller": "^3.0.0", + "express": "^4.18.2", "nanoid": "^3.1.25", "node-fetch": "3.0.0-beta.9", "portfinder": "^1.0.32" @@ -29417,12 +30269,251 @@ }, "devDependencies": { "lit-html": "^2.7.3", - "puppeteer": "^19.9.0" + "puppeteer": "^20.0.0" }, "engines": { "node": ">=16.0.0" } }, + "packages/dev-server-hmr/node_modules/@puppeteer/browsers": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.4.tgz", + "integrity": "sha512-1eRHnLFMJTcIdeAIKFCWjAkUmjZtDlgTzTtK0KC8h+Sw3aJ1B3V7IMFu1S5YL8EmO/U4Vte4ukEpOUPnkqL3jw==", + "dev": true, + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/dev-server-hmr/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "packages/dev-server-hmr/node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, + "packages/dev-server-hmr/node_modules/chromium-bidi": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "dev": true, + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "packages/dev-server-hmr/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "packages/dev-server-hmr/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "packages/dev-server-hmr/node_modules/devtools-protocol": { + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==", + "dev": true + }, + "packages/dev-server-hmr/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/dev-server-hmr/node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "packages/dev-server-hmr/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "packages/dev-server-hmr/node_modules/puppeteer": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.8.1.tgz", + "integrity": "sha512-1ZntYZenpbKqNJW30UItrAskWuYp9i4GQ99y9uefLwewpybDYCuPXkn5nGRd+KkT08O7ge/WHNHmv8cH1zDQ1Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.8.1" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "packages/dev-server-hmr/node_modules/puppeteer-core": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.8.1.tgz", + "integrity": "sha512-Qoh8f8Y90AVV003kENcwMZ6V2qTtsQ6S7PSwEwCILKvbeQCevbJl5KMzT3qOArgKsT3mZfR+sLHNy6+tWFsQcQ==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/dev-server-hmr/node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "packages/dev-server-hmr/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "packages/dev-server-hmr/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "packages/dev-server-hmr/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "packages/dev-server-hmr/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "packages/dev-server-hmr/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "packages/dev-server-hmr/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "packages/dev-server-import-maps": { "name": "@web/dev-server-import-maps", "version": "0.1.1", @@ -29476,7 +30567,7 @@ }, "packages/dev-server-rollup": { "name": "@web/dev-server-rollup", - "version": "0.5.1", + "version": "0.5.2", "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^15.0.1", @@ -29525,7 +30616,7 @@ }, "packages/dev-server-storybook": { "name": "@web/dev-server-storybook", - "version": "0.7.2", + "version": "0.7.4", "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", @@ -29547,43 +30638,217 @@ "rollup": "^3.15.0", "storybook-addon-markdown-docs": "^1.0.4" }, - "bin": { - "build-storybook": "dist/build/cli.js" + "bin": { + "build-storybook": "dist/build/cli.js" + }, + "devDependencies": { + "@types/path-is-inside": "^1.0.0", + "@web/dev-server": "^0.2.5", + "htm": "^3.1.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/dev-server-storybook/node_modules/@web/storybook-prebuilt": { + "version": "0.1.36", + "resolved": "https://registry.npmjs.org/@web/storybook-prebuilt/-/storybook-prebuilt-0.1.36.tgz", + "integrity": "sha512-tKPIwmLTg3C04AO+3FH+gBbfwVuBE7ZmNm5W/k0WjmcNdqiTk1AxT5sIqKx1340GvvCVC0Ba7ZhaTbJstUqo9g==" + }, + "packages/dev-server/node_modules/@puppeteer/browsers": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.4.tgz", + "integrity": "sha512-1eRHnLFMJTcIdeAIKFCWjAkUmjZtDlgTzTtK0KC8h+Sw3aJ1B3V7IMFu1S5YL8EmO/U4Vte4ukEpOUPnkqL3jw==", + "dev": true, + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/dev-server/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "packages/dev-server/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "engines": { + "node": ">=12.17" + } + }, + "packages/dev-server/node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, + "packages/dev-server/node_modules/chromium-bidi": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "dev": true, + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "packages/dev-server/node_modules/command-line-usage": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", + "dependencies": { + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "packages/dev-server/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "packages/dev-server/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "packages/dev-server/node_modules/devtools-protocol": { + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==", + "dev": true + }, + "packages/dev-server/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/dev-server/node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "packages/dev-server/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" }, - "devDependencies": { - "@types/path-is-inside": "^1.0.0", - "@web/dev-server": "^0.2.2", - "htm": "^3.1.0" + "peerDependencies": { + "encoding": "^0.1.0" }, - "engines": { - "node": ">=16.0.0" + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "packages/dev-server-storybook/node_modules/@web/storybook-prebuilt": { - "version": "0.1.36", - "resolved": "https://registry.npmjs.org/@web/storybook-prebuilt/-/storybook-prebuilt-0.1.36.tgz", - "integrity": "sha512-tKPIwmLTg3C04AO+3FH+gBbfwVuBE7ZmNm5W/k0WjmcNdqiTk1AxT5sIqKx1340GvvCVC0Ba7ZhaTbJstUqo9g==" - }, - "packages/dev-server/node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "packages/dev-server/node_modules/puppeteer": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.8.1.tgz", + "integrity": "sha512-1ZntYZenpbKqNJW30UItrAskWuYp9i4GQ99y9uefLwewpybDYCuPXkn5nGRd+KkT08O7ge/WHNHmv8cH1zDQ1Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.8.1" + }, "engines": { - "node": ">=12.17" + "node": ">=16.3.0" } }, - "packages/dev-server/node_modules/command-line-usage": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", - "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", + "packages/dev-server/node_modules/puppeteer-core": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.8.1.tgz", + "integrity": "sha512-Qoh8f8Y90AVV003kENcwMZ6V2qTtsQ6S7PSwEwCILKvbeQCevbJl5KMzT3qOArgKsT3mZfR+sLHNy6+tWFsQcQ==", + "dev": true, "dependencies": { - "array-back": "^6.2.2", - "chalk-template": "^0.4.0", - "table-layout": "^3.0.0", - "typical": "^7.1.1" + "@puppeteer/browsers": "1.4.4", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" }, "engines": { - "node": ">=12.20.0" + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/dev-server/node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" } }, "packages/dev-server/node_modules/table-layout": { @@ -29606,6 +30871,34 @@ "node": ">=12.17" } }, + "packages/dev-server/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "packages/dev-server/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "packages/dev-server/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "packages/dev-server/node_modules/typical": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", @@ -29614,6 +30907,22 @@ "node": ">=12.17" } }, + "packages/dev-server/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "packages/dev-server/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "packages/dev-server/node_modules/wordwrapjs": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", @@ -29622,9 +30931,30 @@ "node": ">=12.17" } }, + "packages/dev-server/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "packages/mocks": { "name": "@web/mocks", - "version": "0.1.1", + "version": "0.1.5", "license": "MIT", "dependencies": { "@web/storybook-prebuilt": "^0.1.37", @@ -29632,8 +30962,8 @@ "msw": "0.0.0-fetch.rc-15" }, "devDependencies": { - "@web/dev-server": "^0.2.3", - "@web/dev-server-storybook": "^0.7.2" + "@web/dev-server": "^0.2.5", + "@web/dev-server-storybook": "^0.7.4" } }, "packages/mocks/node_modules/@web/storybook-prebuilt": { @@ -29799,87 +31129,261 @@ "node": ">=16.0.0" } }, - "packages/rollup-plugin-workbox": { - "version": "8.0.1", - "license": "MIT", + "packages/rollup-plugin-workbox": { + "version": "8.0.1", + "license": "MIT", + "dependencies": { + "esbuild": "^0.17.19", + "pretty-bytes": "^5.5.0", + "workbox-build": "^7.0.0" + } + }, + "packages/test-runner": { + "name": "@web/test-runner", + "version": "0.16.1", + "license": "MIT", + "dependencies": { + "@web/browser-logs": "^0.3.1", + "@web/config-loader": "^0.2.1", + "@web/dev-server": "^0.2.1", + "@web/test-runner-chrome": "^0.13.0", + "@web/test-runner-commands": "^0.7.0", + "@web/test-runner-core": "^0.11.1", + "@web/test-runner-mocha": "^0.8.1", + "camelcase": "^6.2.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^7.0.1", + "convert-source-map": "^2.0.0", + "diff": "^5.0.0", + "globby": "^11.0.1", + "nanocolors": "^0.2.1", + "portfinder": "^1.0.32", + "source-map": "^0.7.3" + }, + "bin": { + "web-test-runner": "dist/bin.js", + "wtr": "dist/bin.js" + }, + "devDependencies": { + "@types/diff": "^5.0.0", + "@web/dev-server-legacy": "^2.0.0", + "@web/test-runner-saucelabs": "^0.10.0", + "babel-plugin-istanbul": "^6.0.0", + "concurrently": "^8.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/test-runner-browserstack": { + "name": "@web/test-runner-browserstack", + "version": "0.6.1", + "license": "MIT", + "dependencies": { + "@web/test-runner-webdriver": "^0.7.0", + "browserstack-local": "^1.4.8", + "ip": "^1.1.5", + "nanoid": "^3.1.25" + }, + "devDependencies": { + "@types/ip": "^1.1.0", + "@web/dev-server-legacy": "^2.0.0", + "portfinder": "^1.0.32" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/test-runner-chrome": { + "name": "@web/test-runner-chrome", + "version": "0.13.4", + "license": "MIT", + "dependencies": { + "@web/test-runner-core": "^0.11.2", + "@web/test-runner-coverage-v8": "^0.7.0", + "async-mutex": "0.4.0", + "chrome-launcher": "^0.15.0", + "puppeteer-core": "^20.0.0" + }, + "devDependencies": { + "@types/istanbul-reports": "^3.0.0", + "@web/test-runner-mocha": "^0.8.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/test-runner-chrome/node_modules/@puppeteer/browsers": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.4.tgz", + "integrity": "sha512-1eRHnLFMJTcIdeAIKFCWjAkUmjZtDlgTzTtK0KC8h+Sw3aJ1B3V7IMFu1S5YL8EmO/U4Vte4ukEpOUPnkqL3jw==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/test-runner-chrome/node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, + "packages/test-runner-chrome/node_modules/chromium-bidi": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "packages/test-runner-chrome/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "packages/test-runner-chrome/node_modules/devtools-protocol": { + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==" + }, + "packages/test-runner-chrome/node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + }, + "packages/test-runner-chrome/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "packages/test-runner-chrome/node_modules/puppeteer-core": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.8.1.tgz", + "integrity": "sha512-Qoh8f8Y90AVV003kENcwMZ6V2qTtsQ6S7PSwEwCILKvbeQCevbJl5KMzT3qOArgKsT3mZfR+sLHNy6+tWFsQcQ==", + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/test-runner-chrome/node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", "dependencies": { - "esbuild": "^0.17.19", - "pretty-bytes": "^5.5.0", - "workbox-build": "^7.0.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" } }, - "packages/test-runner": { - "name": "@web/test-runner", - "version": "0.16.1", - "license": "MIT", + "packages/test-runner-chrome/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dependencies": { - "@web/browser-logs": "^0.3.1", - "@web/config-loader": "^0.2.1", - "@web/dev-server": "^0.2.1", - "@web/test-runner-chrome": "^0.13.0", - "@web/test-runner-commands": "^0.7.0", - "@web/test-runner-core": "^0.11.1", - "@web/test-runner-mocha": "^0.8.1", - "camelcase": "^6.2.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^7.0.1", - "convert-source-map": "^2.0.0", - "diff": "^5.0.0", - "globby": "^11.0.1", - "nanocolors": "^0.2.1", - "portfinder": "^1.0.32", - "source-map": "^0.7.3" - }, - "bin": { - "web-test-runner": "dist/bin.js", - "wtr": "dist/bin.js" - }, - "devDependencies": { - "@types/diff": "^5.0.0", - "@web/dev-server-legacy": "^2.0.0", - "@web/test-runner-saucelabs": "^0.10.0", - "babel-plugin-istanbul": "^6.0.0", - "concurrently": "^8.0.1" - }, - "engines": { - "node": ">=16.0.0" + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" } }, - "packages/test-runner-browserstack": { - "name": "@web/test-runner-browserstack", - "version": "0.6.1", - "license": "MIT", + "packages/test-runner-chrome/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dependencies": { - "@web/test-runner-webdriver": "^0.7.0", - "browserstack-local": "^1.4.8", - "ip": "^1.1.5", - "nanoid": "^3.1.25" - }, - "devDependencies": { - "@types/ip": "^1.1.0", - "@web/dev-server-legacy": "^2.0.0", - "portfinder": "^1.0.32" - }, - "engines": { - "node": ">=16.0.0" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "packages/test-runner-chrome": { - "name": "@web/test-runner-chrome", - "version": "0.13.2", - "license": "MIT", + "packages/test-runner-chrome/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "packages/test-runner-chrome/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "packages/test-runner-chrome/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { - "@web/test-runner-core": "^0.11.2", - "@web/test-runner-coverage-v8": "^0.7.0", - "chrome-launcher": "^0.15.0", - "puppeteer-core": "^19.8.1" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "packages/test-runner-chrome/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" }, - "devDependencies": { - "@types/istanbul-reports": "^3.0.0", - "@web/test-runner-mocha": "^0.8.0" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "engines": { - "node": ">=16.0.0" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "packages/test-runner-cli": { @@ -30043,16 +31547,236 @@ "dependencies": { "@web/test-runner-chrome": "^0.13.0", "@web/test-runner-core": "^0.11.1", - "puppeteer": "^19.9.0" + "puppeteer": "^20.0.0" }, "devDependencies": { "@web/test-runner-mocha": "^0.8.1", - "puppeteer-core": "^19.8.1" + "puppeteer-core": "^20.0.0" }, "engines": { "node": ">=16.0.0" } }, + "packages/test-runner-puppeteer/node_modules/@puppeteer/browsers": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.4.tgz", + "integrity": "sha512-1eRHnLFMJTcIdeAIKFCWjAkUmjZtDlgTzTtK0KC8h+Sw3aJ1B3V7IMFu1S5YL8EmO/U4Vte4ukEpOUPnkqL3jw==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/test-runner-puppeteer/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "packages/test-runner-puppeteer/node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, + "packages/test-runner-puppeteer/node_modules/chromium-bidi": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "packages/test-runner-puppeteer/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "packages/test-runner-puppeteer/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "packages/test-runner-puppeteer/node_modules/devtools-protocol": { + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==" + }, + "packages/test-runner-puppeteer/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/test-runner-puppeteer/node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + }, + "packages/test-runner-puppeteer/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "packages/test-runner-puppeteer/node_modules/puppeteer": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.8.1.tgz", + "integrity": "sha512-1ZntYZenpbKqNJW30UItrAskWuYp9i4GQ99y9uefLwewpybDYCuPXkn5nGRd+KkT08O7ge/WHNHmv8cH1zDQ1Q==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.8.1" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "packages/test-runner-puppeteer/node_modules/puppeteer-core": { + "version": "20.8.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.8.1.tgz", + "integrity": "sha512-Qoh8f8Y90AVV003kENcwMZ6V2qTtsQ6S7PSwEwCILKvbeQCevbJl5KMzT3qOArgKsT3mZfR+sLHNy6+tWFsQcQ==", + "dependencies": { + "@puppeteer/browsers": "1.4.4", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/test-runner-puppeteer/node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "packages/test-runner-puppeteer/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "packages/test-runner-puppeteer/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "packages/test-runner-puppeteer/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "packages/test-runner-puppeteer/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "packages/test-runner-puppeteer/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "packages/test-runner-puppeteer/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "packages/test-runner-saucelabs": { "name": "@web/test-runner-saucelabs", "version": "0.10.0", diff --git a/package.json b/package.json index 0491941db..796701357 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "node": ">=16.0.0" }, "scripts": { - "build": "rimraf --glob packages/*/tsconfig.tsbuildinfo && tsc --build && npm run types", + "build": "rimraf --glob packages/*/tsconfig.tsbuildinfo && tsc --build", "build:production": "node scripts/workspaces-scripts-bin.mjs build:production", "build:site": "npm run build && rocket build", "build:watch": "rimraf --glob packages/*/tsconfig.tsbuildinfo && tsc --build --watch", @@ -30,10 +30,10 @@ "search": "rocket search", "start": "rocket start", "start:build": "node packages/dev-server/dist/bin.js --root-dir _site --open", - "types": "wireit", "test": "npm run test:node && npm run test:browser && node scripts/workspaces-scripts-bin.mjs test:ci", "test:browser": "node packages/test-runner/dist/bin.js \"packages/*/test-browser/**/*.test.{js,ts}\"", "test:node": "mocha \"packages/!(*test-runner-selenium|*test-runner-webdriver)/test/**/*.test.{ts,js,mjs,cjs}\"", + "types": "wireit", "update": "npm run update:mjs-dts-entrypoints && npm run update:tsconfigs", "update-dependency": "node scripts/update-dependency.js", "update:mjs-dts-entrypoints": "node scripts/generate-mjs-dts-entrypoints.mjs && npm run format", @@ -75,7 +75,7 @@ "rollup": "^3.15.0", "ts-node": "^10.4.0", "typescript": "~5.0.4", - "wireit": "^0.9.5" + "wireit": "^0.10.0" }, "eslintConfig": { "parser": "@typescript-eslint/parser", diff --git a/packages/browser-logs/CHANGELOG.md b/packages/browser-logs/CHANGELOG.md index 0f3ec0748..da38a0791 100644 --- a/packages/browser-logs/CHANGELOG.md +++ b/packages/browser-logs/CHANGELOG.md @@ -1,5 +1,15 @@ # @web/browser-logs +## 0.3.3 + +### Patch Changes + +- 0c87f59e: feat/various fixes + + - Update puppeteer to `20.0.0`, fixes #2282 + - Use puppeteer's new `page.mouse.reset()` in sendMousePlugin, fixes #2262 + - Use `development` export condition by default + ## 0.3.2 ### Patch Changes diff --git a/packages/browser-logs/package.json b/packages/browser-logs/package.json index 8353c26e8..0f1cee1f0 100644 --- a/packages/browser-logs/package.json +++ b/packages/browser-logs/package.json @@ -1,6 +1,6 @@ { "name": "@web/browser-logs", - "version": "0.3.2", + "version": "0.3.3", "publishConfig": { "access": "public" }, @@ -50,6 +50,6 @@ }, "devDependencies": { "@esm-bundle/chai": "^4.1.5", - "puppeteer": "^19.9.0" + "puppeteer": "^20.0.0" } } diff --git a/packages/browser-logs/test/serialize-deserialize.test.ts b/packages/browser-logs/test/serialize-deserialize.test.ts index 2d2320de5..170cd863e 100644 --- a/packages/browser-logs/test/serialize-deserialize.test.ts +++ b/packages/browser-logs/test/serialize-deserialize.test.ts @@ -5,12 +5,10 @@ import path from 'path'; import { deserialize } from '../src/deserialize'; -const { sep } = path; - const serializeScript = fs.readFileSync(require.resolve('../dist/serialize.js'), 'utf-8'); const defaultOptions = { browserRootDir: __dirname, cwd: __dirname }; -describe.only('serialize deserialize', () => { +describe('serialize deserialize', () => { let browser: Browser; let page: Page; before(async () => { @@ -346,10 +344,10 @@ describe.only('serialize deserialize', () => { const deserialized = await deserialize(serialized, defaultOptions); expect(deserialized).to.be.a('string'); expect(deserialized).to.include('my error msg'); - expect(deserialized).to.include(' at c (pptr://__puppeteer_evaluation_script__:2:29)'); - expect(deserialized).to.include(' at b (pptr://__puppeteer_evaluation_script__:3:29)'); - expect(deserialized).to.include(' at a (pptr://__puppeteer_evaluation_script__:4:29)'); - expect(deserialized).to.include(' at pptr://__puppeteer_evaluation_script__:5:38'); + expect(deserialized).to.include('2:29'); + expect(deserialized).to.include('3:29'); + expect(deserialized).to.include('4:29'); + expect(deserialized).to.include('5:38'); }); it('handles errors in objects', async () => { @@ -362,10 +360,10 @@ describe.only('serialize deserialize', () => { const deserialized = await deserialize(serialized, defaultOptions); expect(deserialized.myError).to.be.a('string'); expect(deserialized.myError).to.include('my error msg'); - expect(deserialized.myError).to.include(' at c (pptr://__puppeteer_evaluation_script__:2:29)'); - expect(deserialized.myError).to.include(' at b (pptr://__puppeteer_evaluation_script__:3:29)'); - expect(deserialized.myError).to.include(' at a (pptr://__puppeteer_evaluation_script__:4:29)'); - expect(deserialized.myError).to.include('at pptr://__puppeteer_evaluation_script__:5:49'); + expect(deserialized.myError).to.include('2:29'); + expect(deserialized.myError).to.include('3:29'); + expect(deserialized.myError).to.include('4:29'); + expect(deserialized.myError).to.include('5:49'); }); it('handles errors in arrays', async () => { @@ -378,19 +376,19 @@ describe.only('serialize deserialize', () => { const deserialized = await deserialize(serialized, defaultOptions); expect(deserialized[0]).to.be.a('string'); expect(deserialized[0]).to.include('my error msg'); - expect(deserialized[0]).to.include(' at c (pptr://__puppeteer_evaluation_script__:2:29)'); - expect(deserialized[0]).to.include(' at b (pptr://__puppeteer_evaluation_script__:3:29)'); - expect(deserialized[0]).to.include(' at a (pptr://__puppeteer_evaluation_script__:4:29)'); - expect(deserialized[0]).to.include('at pptr://__puppeteer_evaluation_script__:5:39'); + expect(deserialized[0]).to.include('2:29'); + expect(deserialized[0]).to.include('3:29'); + expect(deserialized[0]).to.include('4:29'); + expect(deserialized[0]).to.include('5:39'); expect(deserialized[1]).to.be.a('string'); expect(deserialized[1]).to.include('my error msg'); - expect(deserialized[1]).to.include(' at c (pptr://__puppeteer_evaluation_script__:2:29)'); - expect(deserialized[1]).to.include(' at b (pptr://__puppeteer_evaluation_script__:3:29)'); - expect(deserialized[1]).to.include('at pptr://__puppeteer_evaluation_script__:5:44'); + expect(deserialized[1]).to.include('2:29'); + expect(deserialized[1]).to.include('3:29'); + expect(deserialized[1]).to.include('5:44'); expect(deserialized[2]).to.be.a('string'); expect(deserialized[2]).to.include('my error msg'); - expect(deserialized[2]).to.include(' at c (pptr://__puppeteer_evaluation_script__:2:29)'); - expect(deserialized[2]).to.include('at pptr://__puppeteer_evaluation_script__:5:49'); + expect(deserialized[2]).to.include('2:29'); + expect(deserialized[2]).to.include('5:49'); }); it('can map stack trace locations', async () => { @@ -406,10 +404,7 @@ describe.only('serialize deserialize', () => { }); expect(deserialized).to.be.a('string'); expect(deserialized).to.include('my error msg'); - expect(deserialized).to.include(` at c (..${sep}test__MAPPED__:1:2)`); - expect(deserialized).to.include(` at b (..${sep}test__MAPPED__:1:2)`); - expect(deserialized).to.include(` at a (..${sep}test__MAPPED__:1:2)`); - expect(deserialized).to.include(` at ..${sep}test__MAPPED__:1:2`); + expect(deserialized).to.include(`__MAPPED__:1:2`); }); it('mapped stack traces can be async', async () => { @@ -428,10 +423,7 @@ describe.only('serialize deserialize', () => { }); expect(deserialized).to.be.a('string'); expect(deserialized).to.include('my error msg'); - expect(deserialized).to.include(` at c (..${sep}test__MAPPED__:1:2)`); - expect(deserialized).to.include(` at b (..${sep}test__MAPPED__:1:2)`); - expect(deserialized).to.include(` at a (..${sep}test__MAPPED__:1:2)`); - expect(deserialized).to.include(` at ..${sep}test__MAPPED__:1:2`); + expect(deserialized).to.include(`__MAPPED__:1:2`); }); it('can define a cwd below current directory', async () => { @@ -447,10 +439,10 @@ describe.only('serialize deserialize', () => { }); expect(deserialized).to.be.a('string'); expect(deserialized).to.include('my error msg'); - expect(deserialized).to.include(` at c (test:2:29)`); - expect(deserialized).to.include(` at b (test:3:29)`); - expect(deserialized).to.include(` at a (test:4:29)`); - expect(deserialized).to.include(` at test:5:38`); + expect(deserialized).to.include(`2:29`); + expect(deserialized).to.include(`3:29`); + expect(deserialized).to.include(`4:29`); + expect(deserialized).to.include(`5:38`); }); it('can define a cwd above current directory', async () => { @@ -466,10 +458,10 @@ describe.only('serialize deserialize', () => { }); expect(deserialized).to.be.a('string'); expect(deserialized).to.include('my error msg'); - expect(deserialized).to.include(` at c (..:2:29)`); - expect(deserialized).to.include(` at b (..:3:29)`); - expect(deserialized).to.include(` at a (..:4:29)`); - expect(deserialized).to.include(` at ..:5:38`); + expect(deserialized).to.include(`2:29`); + expect(deserialized).to.include(`3:29`); + expect(deserialized).to.include(`4:29`); + expect(deserialized).to.include(`5:38`); }); it('handles null', async () => { diff --git a/packages/dev-server-core/CHANGELOG.md b/packages/dev-server-core/CHANGELOG.md index b20e432e6..f9fc1e724 100644 --- a/packages/dev-server-core/CHANGELOG.md +++ b/packages/dev-server-core/CHANGELOG.md @@ -1,5 +1,16 @@ # @web/dev-server-core +## 0.5.2 + +### Patch Changes + +- ce57936c: support middleware mode + + BREAKING CHANGE + + Theoretically it's a breaking change for Plugin API since now `serverStart` hook might not have a param `server`. + The breaking change shouldnt impact your codebase immediately since you need to first activate `middlewareMode` to actually break stuff if any plugin depends on the existence of the `server` arg that gets passed to the plugin, but type wise it might break compilation of such plugins right away. Considering that `@web/dev-server` is still on semver 0.x.x, and since the impact of this breaking change should be very minimal, we decided to make the breaking change in this patch version. + ## 0.5.1 ### Patch Changes diff --git a/packages/dev-server-core/package.json b/packages/dev-server-core/package.json index 5d06f0260..6ac604e51 100644 --- a/packages/dev-server-core/package.json +++ b/packages/dev-server-core/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server-core", - "version": "0.5.1", + "version": "0.5.2", "publishConfig": { "access": "public" }, @@ -81,6 +81,7 @@ "@types/koa-static": "^4.0.1", "@types/parse5": "^6.0.1", "abort-controller": "^3.0.0", + "express": "^4.18.2", "nanoid": "^3.1.25", "node-fetch": "3.0.0-beta.9", "portfinder": "^1.0.32" diff --git a/packages/dev-server-core/src/plugins/Plugin.ts b/packages/dev-server-core/src/plugins/Plugin.ts index 54cb52b76..158ba6b99 100644 --- a/packages/dev-server-core/src/plugins/Plugin.ts +++ b/packages/dev-server-core/src/plugins/Plugin.ts @@ -20,7 +20,7 @@ export type ResolveMimeTypeResult = void | string | { type?: string }; export interface ServerStartParams { config: DevServerCoreConfig; app: Koa; - server: Server; + server?: Server; fileWatcher: FSWatcher; logger: Logger; webSockets?: WebSocketsManager; diff --git a/packages/dev-server-core/src/server/DevServer.ts b/packages/dev-server-core/src/server/DevServer.ts index 6a2f4535a..5ee962b2b 100644 --- a/packages/dev-server-core/src/server/DevServer.ts +++ b/packages/dev-server-core/src/server/DevServer.ts @@ -10,8 +10,8 @@ import { WebSocketsManager } from '../web-sockets/WebSocketsManager'; export class DevServer { public koaApp: Koa; - public server: Server; - public webSockets; + public server?: Server; + public webSockets?: WebSocketsManager; private started = false; private connections = new Set(); @@ -23,29 +23,37 @@ export class DevServer { if (!config) throw new Error('Missing config.'); if (!logger) throw new Error('Missing logger.'); - const createResult = createServer(this.logger, this.config, this.fileWatcher); - this.koaApp = createResult.app; - this.server = createResult.server; - this.webSockets = new WebSocketsManager(this.server); - - this.server.on('connection', connection => { - this.connections.add(connection); - connection.on('close', () => { - this.connections.delete(connection); + const { app, server } = createServer( + this.logger, + this.config, + this.fileWatcher, + config.middlewareMode, + ); + this.koaApp = app; + if (server) { + this.server = server; + this.webSockets = new WebSocketsManager(this.server); + this.server.on('connection', connection => { + this.connections.add(connection); + connection.on('close', () => { + this.connections.delete(connection); + }); }); - }); + } } async start() { this.started = true; - await (promisify(this.server.listen).bind(this.server) as any)({ - port: this.config.port, - // in case of localhost the host should be undefined, otherwise some browsers - // connect to it via local network. for example safari on browserstack - host: ['localhost', '127.0.0.1'].includes(this.config.hostname) - ? undefined - : this.config.hostname, - }); + if (this.server && this.config.hostname) { + await (promisify(this.server.listen).bind(this.server) as any)({ + port: this.config.port, + // in case of localhost the host should be undefined, otherwise some browsers + // connect to it via local network. for example safari on browserstack + host: ['localhost', '127.0.0.1'].includes(this.config.hostname) + ? undefined + : this.config.hostname, + }); + } for (const plugin of this.config.plugins ?? []) { await plugin.serverStart?.({ @@ -60,13 +68,17 @@ export class DevServer { } private closeServer() { + if (!this.server) { + return; + } + // close all open connections for (const connection of this.connections) { connection.destroy(); } return new Promise(resolve => { - this.server.close(err => { + this.server!.close(err => { if (err) { console.error(err); } diff --git a/packages/dev-server-core/src/server/DevServerCoreConfig.ts b/packages/dev-server-core/src/server/DevServerCoreConfig.ts index 72359e531..90967ec5d 100644 --- a/packages/dev-server-core/src/server/DevServerCoreConfig.ts +++ b/packages/dev-server-core/src/server/DevServerCoreConfig.ts @@ -7,7 +7,7 @@ export interface DevServerCoreConfig { /** * The port to run the server on. */ - port: number; + port?: number; /** * Root directory to serve files from. All served files must be accessible with * this directory. If you are in a monorepository, you may need to set the to @@ -17,7 +17,11 @@ export interface DevServerCoreConfig { /** * Hostname to bind the server to. */ - hostname: string; + hostname?: string; + /** + * Whether to run server or not and allow to use as a middleware connected to another server. + */ + middlewareMode?: boolean; basePath?: string; /** * The app's index.html file. When set, serves the index.html for non-file requests. Use this to enable SPA routing diff --git a/packages/dev-server-core/src/server/createServer.ts b/packages/dev-server-core/src/server/createServer.ts index c01591adb..93fa9d900 100644 --- a/packages/dev-server-core/src/server/createServer.ts +++ b/packages/dev-server-core/src/server/createServer.ts @@ -25,7 +25,12 @@ function httpsRedirect(req: IncomingMessage, res: ServerResponse) { * Creates a koa server with middlewares, but does not start it. Returns the koa app and * http server instances. */ -export function createServer(logger: Logger, cfg: DevServerCoreConfig, fileWatcher: FSWatcher) { +export function createServer( + logger: Logger, + cfg: DevServerCoreConfig, + fileWatcher: FSWatcher, + middlewareMode = false, +) { const app = new Koa(); app.silent = true; app.on('error', error => { @@ -55,6 +60,10 @@ export function createServer(logger: Logger, cfg: DevServerCoreConfig, fileWatch app.use(m); } + if (middlewareMode) { + return { app }; + } + let server: Server; if (cfg.http2) { const dir = path.join(__dirname, '..'); diff --git a/packages/dev-server-core/test/server/DevServer.test.ts b/packages/dev-server-core/test/server/DevServer.test.ts index e4afd2357..be81cc35b 100644 --- a/packages/dev-server-core/test/server/DevServer.test.ts +++ b/packages/dev-server-core/test/server/DevServer.test.ts @@ -1,8 +1,11 @@ +import express from 'express'; +import http from 'http'; import Koa from 'koa'; import { Server } from 'net'; import { FSWatcher } from 'chokidar'; import { expect } from 'chai'; import fetch from 'node-fetch'; +import portfinder from 'portfinder'; import { Stub, stubMethod } from 'hanbi'; import { ServerStartParams } from '../../src/plugins/Plugin'; import { DevServer } from '../../src/server/DevServer'; @@ -68,6 +71,30 @@ it('can configure the hostname', async () => { server.stop(); }); +it('can run in middleware mode', async () => { + const { server: wdsServer } = await createTestServer({ middlewareMode: true }); + expect(wdsServer.server).to.equal(undefined); + + const app = express(); + let httpServer: http.Server; + const port = await portfinder.getPortPromise({ port: 9000 }); + await new Promise( + resolve => + (httpServer = app.listen(port, 'localhost', () => { + resolve(undefined); + })), + ); + app.use(wdsServer.koaApp.callback()); + + const response = await fetch(`http://localhost:${port}/index.html`); + const responseText = await response.text(); + + expect(response.status).to.equal(200); + expect(responseText).to.include('My app'); + + httpServer!.close(); +}); + it('can run multiple servers in parallel', async () => { const results = [ await createTestServer(), diff --git a/packages/dev-server-core/test/web-sockets/WebSocketsManager.test.ts b/packages/dev-server-core/test/web-sockets/WebSocketsManager.test.ts index 59889ecbc..17e9f916f 100644 --- a/packages/dev-server-core/test/web-sockets/WebSocketsManager.test.ts +++ b/packages/dev-server-core/test/web-sockets/WebSocketsManager.test.ts @@ -61,7 +61,7 @@ describe('WebSocketManager', () => { }); }, 'expected a message event'); - server.webSockets.send('hello world'); + server.webSockets!.send('hello world'); await waitForMessage; } finally { server.stop(); @@ -102,7 +102,7 @@ describe('WebSocketManager', () => { }); }, 'expected message'); - server.webSockets.send('hello world'); + server.webSockets!.send('hello world'); await Promise.all([waitForMessage1, waitForMessage2]); } finally { server.stop(); @@ -125,7 +125,7 @@ describe('WebSocketManager', () => { }, 'expected web socket to open'); const waitForMessage = waitFor(resolve => { - server.webSockets.on('message', ({ webSocket, data }) => { + server.webSockets!.on('message', ({ webSocket, data }) => { expect(webSocket).to.be.an.instanceOf(WebSocket); expect(data).to.eql({ type: 'foo' }); resolve(); @@ -167,7 +167,7 @@ describe('WebSocketManager', () => { }); }, 'expected a message event'); - server.webSockets.sendConsoleLog('hello world'); + server.webSockets!.sendConsoleLog('hello world'); await waitForMessage; } finally { server.stop(); @@ -202,7 +202,7 @@ describe('WebSocketManager', () => { }); }, 'expected a message event'); - server.webSockets.sendImport('/foo.js'); + server.webSockets!.sendImport('/foo.js'); await waitForMessage; } finally { server.stop(); diff --git a/packages/dev-server-hmr/CHANGELOG.md b/packages/dev-server-hmr/CHANGELOG.md index 1dd388e91..0930f8f70 100644 --- a/packages/dev-server-hmr/CHANGELOG.md +++ b/packages/dev-server-hmr/CHANGELOG.md @@ -1,5 +1,15 @@ # @web/dev-server-hmr +## 0.3.0 + +### Minor Changes + +- 0c87f59e: feat/various fixes + + - Update puppeteer to `20.0.0`, fixes #2282 + - Use puppeteer's new `page.mouse.reset()` in sendMousePlugin, fixes #2262 + - Use `development` export condition by default + ## 0.2.2 ### Patch Changes diff --git a/packages/dev-server-hmr/package.json b/packages/dev-server-hmr/package.json index ef7741a6d..c2bf79802 100644 --- a/packages/dev-server-hmr/package.json +++ b/packages/dev-server-hmr/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server-hmr", - "version": "0.2.2", + "version": "0.3.0", "publishConfig": { "access": "public" }, @@ -43,6 +43,6 @@ }, "devDependencies": { "lit-html": "^2.7.3", - "puppeteer": "^19.9.0" + "puppeteer": "^20.0.0" } } diff --git a/packages/dev-server-hmr/test/HmrPlugin.test.ts b/packages/dev-server-hmr/test/HmrPlugin.test.ts index 4b2b30076..d422d5e9e 100644 --- a/packages/dev-server-hmr/test/HmrPlugin.test.ts +++ b/packages/dev-server-hmr/test/HmrPlugin.test.ts @@ -27,7 +27,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); fileWatcher.emit('change', pathUtil.join(__dirname, '/foo.js')); @@ -56,7 +56,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); await fetch(`${host}/bar.js`); @@ -83,7 +83,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); await fetch(`${host}/bar.js`); @@ -111,7 +111,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); await fetch(`${host}/bar.js`); @@ -141,7 +141,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/root/foo.js`); await fetch(`${host}/root/bar.js`); @@ -171,7 +171,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); await fetch(`${host}/bar.js`); @@ -291,7 +291,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); await fetch(`${host}/bar.js`); @@ -322,7 +322,7 @@ describe('HmrPlugin', () => { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); try { await fetch(`${host}/foo.js`); fileWatcher.emit('change', pathUtil.join(__dirname, '/foo.js')); diff --git a/packages/dev-server-hmr/test/browser.test.ts b/packages/dev-server-hmr/test/browser.test.ts index 33b607633..732828551 100644 --- a/packages/dev-server-hmr/test/browser.test.ts +++ b/packages/dev-server-hmr/test/browser.test.ts @@ -46,7 +46,7 @@ describe('browser tests', function () { ], }); const { fileWatcher, webSockets } = server; - const stub = stubMethod(webSockets, 'send'); + const stub = stubMethod(webSockets!, 'send'); const page = await browser.newPage(); try { await page.goto(`${host}/foo.html`, { waitUntil: 'networkidle0' }); diff --git a/packages/dev-server-import-maps/package.json b/packages/dev-server-import-maps/package.json index f18c93d0b..f342bba1c 100644 --- a/packages/dev-server-import-maps/package.json +++ b/packages/dev-server-import-maps/package.json @@ -58,6 +58,6 @@ "picomatch": "^2.2.2" }, "devDependencies": { - "@web/test-runner": "^0.16.1" + "@web/test-runner": "^0.17.0" } } diff --git a/packages/dev-server-rollup/CHANGELOG.md b/packages/dev-server-rollup/CHANGELOG.md index 2db9ed918..30a8b47f3 100644 --- a/packages/dev-server-rollup/CHANGELOG.md +++ b/packages/dev-server-rollup/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/dev-server-rollup +## 0.5.2 + +### Patch Changes + +- 6b359149: fix: await buildStart in serverStart + ## 0.5.1 ### Patch Changes diff --git a/packages/dev-server-rollup/package.json b/packages/dev-server-rollup/package.json index c652ef700..efe81d35a 100644 --- a/packages/dev-server-rollup/package.json +++ b/packages/dev-server-rollup/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server-rollup", - "version": "0.5.1", + "version": "0.5.2", "publishConfig": { "access": "public" }, @@ -62,7 +62,7 @@ "@rollup/plugin-replace": "^5.0.2", "@types/parse5": "^6.0.1", "@types/whatwg-url": "^11.0.0", - "@web/test-runner-chrome": "^0.13.1", + "@web/test-runner-chrome": "^0.14.0", "@web/test-runner-core": "^0.11.0", "chai": "^4.2.0", "mocha": "^10.2.0", diff --git a/packages/dev-server-rollup/src/rollupAdapter.ts b/packages/dev-server-rollup/src/rollupAdapter.ts index 1c2564823..bc671df97 100644 --- a/packages/dev-server-rollup/src/rollupAdapter.ts +++ b/packages/dev-server-rollup/src/rollupAdapter.ts @@ -106,7 +106,7 @@ export function rollupAdapter( transformedOptions = rollupInputOptions; } if (typeof rollupPlugin.buildStart === 'function') { - rollupPlugin.buildStart?.call( + await rollupPlugin.buildStart?.call( rollupPluginContexts.pluginContext, rollupPluginContexts.normalizedInputOptions, ); diff --git a/packages/dev-server-storybook/package.json b/packages/dev-server-storybook/package.json index fa2930fe8..be306071d 100644 --- a/packages/dev-server-storybook/package.json +++ b/packages/dev-server-storybook/package.json @@ -75,7 +75,7 @@ }, "devDependencies": { "@types/path-is-inside": "^1.0.0", - "@web/dev-server": "^0.2.5", + "@web/dev-server": "^0.3.0", "htm": "^3.1.0" } } diff --git a/packages/dev-server/CHANGELOG.md b/packages/dev-server/CHANGELOG.md index d85997946..96ba33b3f 100644 --- a/packages/dev-server/CHANGELOG.md +++ b/packages/dev-server/CHANGELOG.md @@ -1,5 +1,15 @@ # @web/dev-server +## 0.3.0 + +### Minor Changes + +- 0c87f59e: feat/various fixes + + - Update puppeteer to `20.0.0`, fixes #2282 + - Use puppeteer's new `page.mouse.reset()` in sendMousePlugin, fixes #2262 + - Use `development` export condition by default + ## 0.2.5 ### Patch Changes diff --git a/packages/dev-server/demo/node-resolve/index.html b/packages/dev-server/demo/node-resolve/index.html index 27eedfa45..100acb54f 100644 --- a/packages/dev-server/demo/node-resolve/index.html +++ b/packages/dev-server/demo/node-resolve/index.html @@ -26,6 +26,8 @@

Node resolve demo

nodeResolve: window.__nodeResolve || false, noExtension: window.__noExtension || false, extensionPriority: window.__extensionPriority || false, + // lit-html only adds this global in development mode + developmentExportCondition: window.litIssuedWarnings || false, }; document.getElementById('test').innerHTML = `
${JSON.stringify(
         window.__tests,
diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json
index 0ecfa1e3f..1f2759894 100644
--- a/packages/dev-server/package.json
+++ b/packages/dev-server/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@web/dev-server",
-  "version": "0.2.5",
+  "version": "0.3.0",
   "publishConfig": {
     "access": "public"
   },
@@ -74,6 +74,6 @@
   "devDependencies": {
     "@types/command-line-usage": "^5.0.1",
     "lit-html": "^2.7.3",
-    "puppeteer": "^19.9.0"
+    "puppeteer": "^20.0.0"
   }
 }
diff --git a/packages/dev-server/src/plugins/nodeResolvePlugin.ts b/packages/dev-server/src/plugins/nodeResolvePlugin.ts
index 7295f5f05..6b34af7f3 100644
--- a/packages/dev-server/src/plugins/nodeResolvePlugin.ts
+++ b/packages/dev-server/src/plugins/nodeResolvePlugin.ts
@@ -15,6 +15,7 @@ export function nodeResolvePlugin(
       moduleDirectories: ['node_modules', 'web_modules'],
       // allow resolving polyfills for nodejs libs
       preferBuiltins: false,
+      exportConditions: ['development'],
     },
     userOptionsObject,
   );
diff --git a/packages/dev-server/test/integration.test.mjs b/packages/dev-server/test/integration.test.mjs
index a644f6673..e73f3bb9b 100644
--- a/packages/dev-server/test/integration.test.mjs
+++ b/packages/dev-server/test/integration.test.mjs
@@ -17,7 +17,13 @@ const testCases = [
   },
   {
     name: 'node-resolve',
-    tests: ['inlineNodeResolve', 'nodeResolve', 'noExtension', 'extensionPriority'],
+    tests: [
+      'developmentExportCondition',
+      'inlineNodeResolve',
+      'nodeResolve',
+      'noExtension',
+      'extensionPriority',
+    ],
   },
   {
     name: 'static',
diff --git a/packages/mocks/CHANGELOG.md b/packages/mocks/CHANGELOG.md
index 7fd4db4a7..1417d79c9 100644
--- a/packages/mocks/CHANGELOG.md
+++ b/packages/mocks/CHANGELOG.md
@@ -1,5 +1,39 @@
 # @web/mocks
 
+## 0.1.6
+
+### Patch Changes
+
+- 8cf9fcc1: Export types like Mock & handler as well via the `types.js` entrypoint.
+
+  Example:
+
+  ```js
+  // in TS
+  import { Mock } from '@web/mocks/types.js';
+
+  // or in JsDoc
+
+  /**
+   * Gets mocks by given status
+   * @param {number} status - response code status
+   * @returns {import('@web/mocks/types.js').Mock[]}
+   */
+  export function getMocksByStatus(status) {}
+  ```
+
+## 0.1.5
+
+### Patch Changes
+
+- c2a9df28: fix: flatten mocks correctly
+
+## 0.1.4
+
+### Patch Changes
+
+- fd7cb03e: fix: content type
+
 ## 0.1.3
 
 ### Patch Changes
diff --git a/packages/mocks/package.json b/packages/mocks/package.json
index ce93e0fcf..4d072a1d7 100644
--- a/packages/mocks/package.json
+++ b/packages/mocks/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@web/mocks",
-  "version": "0.1.3",
+  "version": "0.1.6",
   "publishConfig": {
     "access": "public"
   },
@@ -35,11 +35,15 @@
     "./node.js": {
       "types": "./dist-types/node.d.ts",
       "default": "./node.js"
+    },
+    "./types.js": {
+      "types": "./dist-types/types.d.ts",
+      "default": "./types.js"
     }
   },
   "scripts": {
-    "types": "wireit",
-    "start": "wds --config demo/wc/web-dev-server.config.mjs"
+    "start": "wds --config demo/wc/web-dev-server.config.mjs",
+    "types": "wireit"
   },
   "files": [
     "**/*.js",
@@ -55,6 +59,10 @@
     "lit": "^2.7.5",
     "msw": "0.0.0-fetch.rc-15"
   },
+  "devDependencies": {
+    "@web/dev-server": "^0.3.0",
+    "@web/dev-server-storybook": "^0.7.4"
+  },
   "wireit": {
     "types": {
       "command": "tsc --build --pretty",
@@ -68,9 +76,5 @@
       ],
       "dependencies": []
     }
-  },
-  "devDependencies": {
-    "@web/dev-server": "^0.2.5",
-    "@web/dev-server-storybook": "^0.7.4"
   }
 }
diff --git a/packages/mocks/storybook/decorator.js b/packages/mocks/storybook/decorator.js
index be663228f..320214367 100644
--- a/packages/mocks/storybook/decorator.js
+++ b/packages/mocks/storybook/decorator.js
@@ -45,13 +45,18 @@ export const withMocks = makeDecorator({
         ? {
             ...editedMock,
             handler: () =>
-              new Response(JSON.stringify(editedMock.data), { status: editedMock.status }),
+              new Response(JSON.stringify(editedMock.data), {
+                headers: {
+                  'Content-Type': 'application/json',
+                },
+                status: editedMock.status,
+              }),
           }
         : mock;
     });
 
     if (finalizedMocks) {
-      addons.getChannel().emit('mocks:loaded', finalizedMocks);
+      addons.getChannel().emit('mocks:loaded', finalizedMocks.flat(Infinity));
       registerMockRoutes(finalizedMocks);
     }
 
diff --git a/packages/rollup-plugin-polyfills-loader/src/rollupPluginPolyfillsLoader.ts b/packages/rollup-plugin-polyfills-loader/src/rollupPluginPolyfillsLoader.ts
index dda123660..9542ac073 100644
--- a/packages/rollup-plugin-polyfills-loader/src/rollupPluginPolyfillsLoader.ts
+++ b/packages/rollup-plugin-polyfills-loader/src/rollupPluginPolyfillsLoader.ts
@@ -67,15 +67,30 @@ export function polyfillsLoader(pluginOptions: RollupPluginPolyfillsLoaderConfig
             : bundle;
 
         let preloaded = [];
+        function normalize(path: string) {
+          if (path.startsWith('../')) {
+            return path;
+          } else if (path.startsWith('./')) {
+            return path;
+          } else if (path.startsWith('/')) {
+            return '.' + path;
+          } else {
+            return './' + path;
+          }
+        }
+
         for (const entrypoint of entrypoints) {
-          preloaded.push(entrypoint.importPath);
+          const importPath = normalize(path.posix.relative('', entrypoint.importPath));
+          preloaded.push(importPath);
 
           // js files (incl. chunks) will always be in the root directory
-          const pathToRoot = path.posix.dirname(entrypoint.importPath);
+          const pathToRoot = path.posix.dirname(importPath);
           for (const chunkPath of entrypoint.chunk.imports) {
-            preloaded.push(path.posix.join(pathToRoot, chunkPath));
+            const relativeChunkPath = normalize(path.posix.join(pathToRoot, chunkPath));
+            preloaded.push(relativeChunkPath);
           }
         }
+
         preloaded = [...new Set(preloaded)];
 
         const type =
diff --git a/packages/rollup-plugin-polyfills-loader/test/snapshots/flattened.html b/packages/rollup-plugin-polyfills-loader/test/snapshots/flattened.html
index a0b03406e..d905e0568 100644
--- a/packages/rollup-plugin-polyfills-loader/test/snapshots/flattened.html
+++ b/packages/rollup-plugin-polyfills-loader/test/snapshots/flattened.html
@@ -1,8 +1,7 @@
 
 
-
-
 
+
 
 
+
 
 
\ No newline at end of file
diff --git a/packages/rollup-plugin-polyfills-loader/test/snapshots/no-polyfills.html b/packages/rollup-plugin-polyfills-loader/test/snapshots/no-polyfills.html
index ca93f8027..509a80cca 100644
--- a/packages/rollup-plugin-polyfills-loader/test/snapshots/no-polyfills.html
+++ b/packages/rollup-plugin-polyfills-loader/test/snapshots/no-polyfills.html
@@ -1,10 +1,9 @@
 
             
-
-
 
+
 
-
 
+
 
 
\ No newline at end of file
diff --git a/packages/rollup-plugin-polyfills-loader/test/snapshots/non-flattened.html b/packages/rollup-plugin-polyfills-loader/test/snapshots/non-flattened.html
index 2d5a72fa9..c98a6c868 100644
--- a/packages/rollup-plugin-polyfills-loader/test/snapshots/non-flattened.html
+++ b/packages/rollup-plugin-polyfills-loader/test/snapshots/non-flattened.html
@@ -1,8 +1,7 @@
 
 
-
-
 
+