diff --git a/.github/workflows/batch-dependency-updates.yml b/.github/workflows/batch-dependency-updates.yml index 019b7c79..5ac5a4e5 100644 --- a/.github/workflows/batch-dependency-updates.yml +++ b/.github/workflows/batch-dependency-updates.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 cache: 'pnpm' - name: update dependencies diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 57c8c043..34e4ca31 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 cache: 'pnpm' - run: pnpm install --frozen-lockfile diff --git a/.github/workflows/example-typesafe-i18n-exporter-dependencies.yml b/.github/workflows/example-typesafe-i18n-exporter-dependencies.yml index 7c03cebe..42f5c790 100644 --- a/.github/workflows/example-typesafe-i18n-exporter-dependencies.yml +++ b/.github/workflows/example-typesafe-i18n-exporter-dependencies.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 - name: install dependencies run: npm install --no-save diff --git a/.github/workflows/example-typesafe-i18n-exporter.yml b/.github/workflows/example-typesafe-i18n-exporter.yml index 3578101d..b52c6e63 100644 --- a/.github/workflows/example-typesafe-i18n-exporter.yml +++ b/.github/workflows/example-typesafe-i18n-exporter.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 - name: install dependencies run: npm install --no-save diff --git a/.github/workflows/example-typesafe-i18n-formatters-dependencies.yml b/.github/workflows/example-typesafe-i18n-formatters-dependencies.yml index 993f62e5..c9e94134 100644 --- a/.github/workflows/example-typesafe-i18n-formatters-dependencies.yml +++ b/.github/workflows/example-typesafe-i18n-formatters-dependencies.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 - name: install dependencies run: npm install --no-save diff --git a/.github/workflows/example-typesafe-i18n-formatters.yml b/.github/workflows/example-typesafe-i18n-formatters.yml index ca5ceeca..917698ff 100644 --- a/.github/workflows/example-typesafe-i18n-formatters.yml +++ b/.github/workflows/example-typesafe-i18n-formatters.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 - name: install dependencies run: npm install --no-save diff --git a/.github/workflows/example-typesafe-i18n-importer-dependencies.yml b/.github/workflows/example-typesafe-i18n-importer-dependencies.yml index c19d1d80..92423cdc 100644 --- a/.github/workflows/example-typesafe-i18n-importer-dependencies.yml +++ b/.github/workflows/example-typesafe-i18n-importer-dependencies.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 - name: install dependencies run: npm install --no-save diff --git a/.github/workflows/example-typesafe-i18n-importer.yml b/.github/workflows/example-typesafe-i18n-importer.yml index 1ba3b8b8..67caff6c 100644 --- a/.github/workflows/example-typesafe-i18n-importer.yml +++ b/.github/workflows/example-typesafe-i18n-importer.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 - name: install dependencies run: npm install --no-save diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3f32a9c8..50285fb7 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -18,7 +18,7 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 cache: 'pnpm' - run: pnpm install --frozen-lockfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7b91384..5394f9f3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,14 +1,34 @@ -name: run tests & bump version & publish to npm +name: release-please & publish to npm on: push: branches: - 'main' +permissions: + contents: write + pull-requests: write + issues: write + jobs: - release: + release-please: + runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release.outputs.release_created }} + steps: + - id: release + uses: googleapis/release-please-action@v4 + with: + config-file: release-please-config.json + manifest-file: .release-please-manifest.json + + publish: + needs: release-please + if: ${{ needs.release-please.outputs.release_created == 'true' }} runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, 'chore:') && !contains(github.event.head_commit.message, 'docs:')" + permissions: + contents: read + id-token: write steps: - uses: actions/checkout@v4 @@ -19,8 +39,9 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 cache: 'pnpm' + registry-url: 'https://registry.npmjs.org' - run: pnpm install --frozen-lockfile @@ -30,24 +51,14 @@ jobs: - name: run tests run: pnpm test - - name: bump version and create tag - uses: 'phips28/gh-action-bump-version@master' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - minor-wording: 'feat' - major-wording: 'major' - - name: build package run: pnpm build - name: create browser artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: typesafe-i18n-browser path: dist/ - - name: publish to npm - uses: JS-DevTools/npm-publish@v1 - with: - token: ${{ secrets.NPM_TOKEN }} + - name: publish to npm (OIDC) + run: npm publish --provenance diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5cd95915..e3437377 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,10 +21,10 @@ jobs: - name: install node uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 24 cache: 'pnpm' - run: pnpm install --frozen-lockfile - name: run tests - run: pnpm test \ No newline at end of file + run: pnpm test diff --git a/.nvmrc b/.nvmrc index 3876fd49..a45fd52c 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.16.1 +24 diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000..943a81a8 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "5.26.2" +} diff --git a/packages/detectors/src/detectors/browser/navigator.test.ts b/packages/detectors/src/detectors/browser/navigator.test.ts index da98dd18..4d91641d 100644 --- a/packages/detectors/src/detectors/browser/navigator.test.ts +++ b/packages/detectors/src/detectors/browser/navigator.test.ts @@ -4,13 +4,26 @@ import type { Locale } from '../../../../runtime/src/core.mjs' import { navigatorDetector } from './navigator.mjs' const test = suite('detector:navigator') +const originalNavigatorDescriptor = Object.getOwnPropertyDescriptor(globalThis, 'navigator') // -------------------------------------------------------------------------------------------------------------------- const testDetector = (name: string, languages: string[] | undefined, expected: Locale[]) => test(`navigator ${name}`, () => { - globalThis.navigator = { languages: languages as string[] } as unknown as Navigator - assert.equal(navigatorDetector(), expected) + Object.defineProperty(globalThis, 'navigator', { + configurable: true, + value: { languages: languages as string[] } as unknown as Navigator, + }) + + try { + assert.equal(navigatorDetector(), expected) + } finally { + if (originalNavigatorDescriptor) { + Object.defineProperty(globalThis, 'navigator', originalNavigatorDescriptor) + } else { + delete (globalThis as { navigator?: Navigator }).navigator + } + } }) testDetector('undefined', undefined, []) diff --git a/packages/version.ts b/packages/version.ts index d504c1d9..96075694 100644 --- a/packages/version.ts +++ b/packages/version.ts @@ -1,2 +1,2 @@ // this file gets auto-generated -export const version = '5.25.1' +export const version = '5.26.2' diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000..aea6ccff --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,59 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "release-type": "node", + "package-name": "typesafe-i18n", + "changelog-path": "CHANGELOG.md", + "include-component-in-tag": false, + "include-v-in-tag": false, + "changelog-sections": [ + { + "type": "feat", + "section": "Features", + "hidden": false + }, + { + "type": "fix", + "section": "Bug Fixes", + "hidden": false + }, + { + "type": "perf", + "section": "Performance Improvements", + "hidden": false + }, + { + "type": "refactor", + "section": "Refactoring", + "hidden": false + }, + { + "type": "docs", + "section": "Documentation", + "hidden": false + }, + { + "type": "ci", + "section": "Continuous Integration", + "hidden": true + }, + { + "type": "build", + "section": "Build System", + "hidden": true + }, + { + "type": "test", + "section": "Tests", + "hidden": true + }, + { + "type": "chore", + "section": "Miscellaneous", + "hidden": true + } + ] + } + } +} diff --git a/website/.nvmrc b/website/.nvmrc index d1c51cd9..a45fd52c 100644 --- a/website/.nvmrc +++ b/website/.nvmrc @@ -1 +1 @@ -v16.14.2 \ No newline at end of file +24