diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 4a4949319..01a04f902 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -15,17 +15,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits fetch-depth: 0 - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 env: FORCE_COLOR: 0 with: - node-version: '18' + node-version: '20' cache: 'npm' registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 074e70e5c..7aae921cd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,28 +6,24 @@ env: FORCE_COLOR: true jobs: - verify-linux: + linux: timeout-minutes: 30 - name: Verify linux + name: Linux runs-on: ubuntu-latest - strategy: - matrix: - node-version: - - '18' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - name: Setup Node 20 + uses: actions/setup-node@v4 env: FORCE_COLOR: 0 with: - node-version: ${{ matrix.node-version }} + node-version: 20 cache: npm - name: Install Dependencies run: npm ci - name: Lint - run: npm run lint \ No newline at end of file + run: npm run lint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e43faeeaf..e8ae03eec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,17 +14,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits fetch-depth: 0 - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 env: FORCE_COLOR: 0 with: - node-version: '18' + node-version: '20' cache: 'npm' registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/verify-browser.yml b/.github/workflows/verify-browser.yml index f84b1fb1e..8b6b2ba22 100644 --- a/.github/workflows/verify-browser.yml +++ b/.github/workflows/verify-browser.yml @@ -1,4 +1,4 @@ -name: Verify Browser +name: Browser tests on: pull_request @@ -8,22 +8,18 @@ env: jobs: verify-linux: timeout-minutes: 30 - name: Verify linux + name: Linux runs-on: ubuntu-latest - strategy: - matrix: - node-version: - - '18' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - name: Setup Node 20 + uses: actions/setup-node@v4 env: FORCE_COLOR: 0 with: - node-version: ${{ matrix.node-version }} + node-version: 20 cache: npm - name: Install Dependencies diff --git a/.github/workflows/verify-node.yml b/.github/workflows/verify-node.yml index 68feb73cd..13853e7c2 100644 --- a/.github/workflows/verify-node.yml +++ b/.github/workflows/verify-node.yml @@ -1,4 +1,4 @@ -name: Verify Node +name: Node tests on: pull_request @@ -8,19 +8,20 @@ env: jobs: verify-linux: timeout-minutes: 30 - name: Verify linux + name: Linux runs-on: ubuntu-latest strategy: matrix: node-version: - '18' - - '19' + - '20' + - 'latest' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 env: FORCE_COLOR: 0 with: @@ -48,3 +49,42 @@ jobs: - name: Test run: npm run test:node + + verify-windows: + timeout-minutes: 30 + name: Windows + runs-on: windows-2022 + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - uses: actions/checkout@v4 + + - name: Setup Node '20' + uses: actions/setup-node@v4 + env: + FORCE_COLOR: 0 + with: + node-version: '20' + cache: 'npm' + + - name: Install Playwright dependencies + run: npx playwright install-deps + + # Set up GitHub Actions caching for Wireit. + - uses: google/wireit@setup-github-actions-caching/v1 + + - name: Install Dependencies + run: npm ci + + - name: Build + run: npm run build + + # build for production in CI to make sure tests can run with production build + - name: Build specific packages for production + run: npm run build:production + + - name: Test + run: npm run test:node diff --git a/.github/workflows/verify-windows.yml b/.github/workflows/verify-windows.yml deleted file mode 100644 index b8f54bc1c..000000000 --- a/.github/workflows/verify-windows.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Verify Windows - -on: pull_request - -jobs: - verify-windows: - timeout-minutes: 30 - name: Verify windows - runs-on: windows-2022 - steps: - - name: Set git to use LF - run: | - git config --global core.autocrlf false - git config --global core.eol lf - - - uses: actions/checkout@v3 - - - name: Setup Node '18' - uses: actions/setup-node@v3 - env: - FORCE_COLOR: 0 - with: - node-version: '18' - cache: 'npm' - - - name: Install Playwright dependencies - run: npx playwright install-deps - - # Set up GitHub Actions caching for Wireit. - - uses: google/wireit@setup-github-actions-caching/v1 - - - name: Install Dependencies - run: npm ci - - - name: Build - run: npm run build - - # build for production in CI to make sure tests can run with production build - - name: Build specific packages for production - run: npm run build:production - - - name: Test - run: npm run test:node diff --git a/packages/dev-server-core/CHANGELOG.md b/packages/dev-server-core/CHANGELOG.md index fa493f216..75114fd81 100644 --- a/packages/dev-server-core/CHANGELOG.md +++ b/packages/dev-server-core/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/dev-server-core +## 0.7.1 + +### Patch Changes + +- 649edc2b: Add option to modify chokidar watchOptions with @web/dev-server + ## 0.7.0 ### Minor Changes diff --git a/packages/dev-server-core/package.json b/packages/dev-server-core/package.json index 4f11492b9..1aaebe02b 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.7.0", + "version": "0.7.1", "publishConfig": { "access": "public" }, diff --git a/packages/dev-server-core/src/server/DevServer.ts b/packages/dev-server-core/src/server/DevServer.ts index d8c4679d2..f282651fa 100644 --- a/packages/dev-server-core/src/server/DevServer.ts +++ b/packages/dev-server-core/src/server/DevServer.ts @@ -18,7 +18,7 @@ export class DevServer { constructor( public config: DevServerCoreConfig, public logger: Logger, - public fileWatcher = chokidar.watch([]), + public fileWatcher = chokidar.watch([], config.chokidarOptions), ) { if (!config) throw new Error('Missing config.'); if (!logger) throw new Error('Missing logger.'); diff --git a/packages/dev-server-core/src/server/DevServerCoreConfig.ts b/packages/dev-server-core/src/server/DevServerCoreConfig.ts index f65dd5e54..659e0469e 100644 --- a/packages/dev-server-core/src/server/DevServerCoreConfig.ts +++ b/packages/dev-server-core/src/server/DevServerCoreConfig.ts @@ -1,6 +1,7 @@ import { Middleware } from 'koa'; import { Plugin } from '../plugins/Plugin'; import { Server } from 'net'; +import chokidar from 'chokidar'; export type MimeTypeMappings = Record; @@ -67,4 +68,9 @@ export interface DevServerCoreConfig { * Useful when you want more control over when files are build (e.g. when doing a test run using @web/test-runner). */ disableFileWatcher?: boolean; + + /** + * Additional options you want to provide to chokidar file watcher + */ + chokidarOptions?: chokidar.WatchOptions; } diff --git a/packages/dev-server/CHANGELOG.md b/packages/dev-server/CHANGELOG.md index 879eeec42..71ebfe103 100644 --- a/packages/dev-server/CHANGELOG.md +++ b/packages/dev-server/CHANGELOG.md @@ -1,5 +1,13 @@ # @web/dev-server +## 0.4.2 + +### Patch Changes + +- 649edc2b: Add option to modify chokidar watchOptions with @web/dev-server +- Updated dependencies [649edc2b] + - @web/dev-server-core@0.7.1 + ## 0.4.1 ### Patch Changes diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index ef983b0fa..d2501c80d 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@web/dev-server", - "version": "0.4.1", + "version": "0.4.2", "publishConfig": { "access": "public" }, @@ -59,7 +59,7 @@ "@babel/code-frame": "^7.12.11", "@types/command-line-args": "^5.0.0", "@web/config-loader": "^0.3.0", - "@web/dev-server-core": "^0.7.0", + "@web/dev-server-core": "^0.7.1", "@web/dev-server-rollup": "^0.6.1", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", diff --git a/packages/dev-server/src/config/parseConfig.ts b/packages/dev-server/src/config/parseConfig.ts index 8507db24f..9836d98e4 100644 --- a/packages/dev-server/src/config/parseConfig.ts +++ b/packages/dev-server/src/config/parseConfig.ts @@ -16,6 +16,7 @@ const defaultConfig: Partial = { clearTerminalOnReload: true, middleware: [], plugins: [], + chokidarOptions: {}, }; function validate(config: Record, key: string, type: string) { diff --git a/packages/mocks/CHANGELOG.md b/packages/mocks/CHANGELOG.md index c87dce1b0..d09cb4fc6 100644 --- a/packages/mocks/CHANGELOG.md +++ b/packages/mocks/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/mocks +## 1.1.1 + +### Patch Changes + +- 17906853: workaround for MSW breaking change + ## 1.1.0 ### Minor Changes diff --git a/packages/mocks/browser.js b/packages/mocks/browser.js index 9a8d28391..dfcc1380b 100644 --- a/packages/mocks/browser.js +++ b/packages/mocks/browser.js @@ -4,7 +4,7 @@ import { _registerMockRoutes } from './registerMockRoutes.js'; const bypassServiceWorker = new URL(window.location.href).searchParams.has('bypass-sw'); const worker = setupWorker(); -worker +const workerPromise = worker .start({ serviceWorker: { url: '__msw_sw__.js', @@ -19,8 +19,21 @@ worker console.error(`[MOCKS]: Failed to load Service Worker. Did you forget to use the mockPlugin in the dev server?`); + return Promise.resolve(); }); +/** + * It's unfortunate to override native `fetch`, and you should never do it, and please don't take this + * code as an example. We have to do this here because MSW removed this behavior which was released as + * a breaking change in a minor version https://github.com/mswjs/msw/issues/1981 + */ +const originalFetch = window.fetch; +window.fetch = async (...args) => { + await workerPromise; + window.fetch = originalFetch; + return window.fetch(...args); +}; + /** * Mock the given mocked routes using a Service Worker. * diff --git a/packages/mocks/package.json b/packages/mocks/package.json index 3b27d8178..a3e61b771 100644 --- a/packages/mocks/package.json +++ b/packages/mocks/package.json @@ -1,6 +1,6 @@ { "name": "@web/mocks", - "version": "1.1.0", + "version": "1.1.1", "publishConfig": { "access": "public" }, diff --git a/packages/storybook-builder/CHANGELOG.md b/packages/storybook-builder/CHANGELOG.md index 6b9465852..018252c0e 100644 --- a/packages/storybook-builder/CHANGELOG.md +++ b/packages/storybook-builder/CHANGELOG.md @@ -1,5 +1,11 @@ # @web/storybook-builder +## 0.1.6 + +### Patch Changes + +- 010eed69: fix: import both globals and globalsNameReferenceMap from @storybook/preview/globals and use the one that is set. This fixes issue https://github.com/modernweb-dev/web/issues/2619 + ## 0.1.5 ### Patch Changes diff --git a/packages/storybook-builder/package.json b/packages/storybook-builder/package.json index 194a3ba4f..e33172d4c 100644 --- a/packages/storybook-builder/package.json +++ b/packages/storybook-builder/package.json @@ -1,6 +1,6 @@ { "name": "@web/storybook-builder", - "version": "0.1.5", + "version": "0.1.6", "publishConfig": { "access": "public" },