diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml index 6ab16e4e..ff844a7e 100644 --- a/.github/workflows/release-please.yaml +++ b/.github/workflows/release-please.yaml @@ -3,6 +3,13 @@ on: push: branches: - main + workflow_dispatch: + inputs: + tag: + description: 'Git tag to publish from' + required: true + type: string + jobs: release-please: runs-on: ubuntu-latest @@ -20,89 +27,190 @@ jobs: id: release with: token: ${{ steps.get-token.outputs.token }} + if: github.event_name == 'push' - uses: actions/checkout@v5 - if: ${{ steps.release.outputs.releases_created }} + if: ${{ steps.release.outputs.releases_created || github.event_name == 'workflow_dispatch' }} with: token: ${{ steps.get-token.outputs.token }} + fetch-depth: 0 + - name: Checkout tag for manual publish + if: github.event_name == 'workflow_dispatch' + run: git checkout ${{ github.event.inputs.tag }} - uses: actions/setup-node@v4 with: node-version: '*' cache: 'npm' check-latest: true registry-url: 'https://registry.npmjs.org' - if: ${{ steps.release.outputs.releases_created }} + if: ${{ steps.release.outputs.releases_created || github.event_name == 'workflow_dispatch' }} - name: Setup Deno uses: denoland/setup-deno@v1 with: deno-version: 2.2.4 - run: npm ci - if: ${{ steps.release.outputs.releases_created }} + if: ${{ steps.release.outputs.releases_created || github.event_name == 'workflow_dispatch' }} - name: Build packages - if: ${{ steps.release.outputs.releases_created }} + if: ${{ steps.release.outputs.releases_created || github.event_name == 'workflow_dispatch' }} run: npm run build --workspaces=true # Publishing packages in topological order, as defined in `package.json`. - - run: npm publish packages/types/ --provenance --access=public - if: ${{ steps.release.outputs['packages/types--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/dev-utils/ --provenance --access=public - if: ${{ steps.release.outputs['packages/dev-utils--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/runtime-utils/ --provenance --access=public - if: ${{ steps.release.outputs['packages/runtime-utils--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/blobs/ --provenance --access=public - if: ${{ steps.release.outputs['packages/blobs--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/cache/ --provenance --access=public - if: ${{ steps.release.outputs['packages/cache--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/edge-functions/ --provenance --access=public - if: ${{ steps.release.outputs['packages/edge-functions--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/functions/ --provenance --access=public - if: ${{ steps.release.outputs['packages/functions--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/headers/ --provenance --access=public - if: ${{ steps.release.outputs['packages/headers--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/images/ --provenance --access=public - if: ${{ steps.release.outputs['packages/images--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/nuxt-module/ --provenance --access=public - if: ${{ steps.release.outputs['packages/nuxt-module--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/redirects/ --provenance --access=public - if: ${{ steps.release.outputs['packages/redirects--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/runtime/ --provenance --access=public - if: ${{ steps.release.outputs['packages/runtime--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/static/ --provenance --access=public - if: ${{ steps.release.outputs['packages/static--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/dev/ --provenance --access=public - if: ${{ steps.release.outputs['packages/dev--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/vite-plugin/ --provenance --access=public - if: ${{ steps.release.outputs['packages/vite-plugin--release_created'] }} - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - run: npm publish packages/otel/ --provenance --access=public - if: ${{ steps.release.outputs['packages/otel--release_created'] }} + - if: ${{ steps.release.outputs['packages/types--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/types/ --provenance --access=public || true + else + npm publish packages/types/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/dev-utils--release_created'] || github.event_name == 'workflow_dispatch' + }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/dev-utils/ --provenance --access=public || true + else + npm publish packages/dev-utils/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/runtime-utils--release_created'] || github.event_name == + 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/runtime-utils/ --provenance --access=public || true + else + npm publish packages/runtime-utils/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: ${{ steps.release.outputs['packages/blobs--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/blobs/ --provenance --access=public || true + else + npm publish packages/blobs/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: ${{ steps.release.outputs['packages/cache--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/cache/ --provenance --access=public || true + else + npm publish packages/cache/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/edge-functions--release_created'] || github.event_name == + 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/edge-functions/ --provenance --access=public || true + else + npm publish packages/edge-functions/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/functions--release_created'] || github.event_name == 'workflow_dispatch' + }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/functions/ --provenance --access=public || true + else + npm publish packages/functions/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/headers--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/headers/ --provenance --access=public || true + else + npm publish packages/headers/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: ${{ steps.release.outputs['packages/images--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/images/ --provenance --access=public || true + else + npm publish packages/images/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/nuxt-module--release_created'] || github.event_name == 'workflow_dispatch' + }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/nuxt-module/ --provenance --access=public || true + else + npm publish packages/nuxt-module/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/redirects--release_created'] || github.event_name == 'workflow_dispatch' + }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/redirects/ --provenance --access=public || true + else + npm publish packages/redirects/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/runtime--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/runtime/ --provenance --access=public || true + else + npm publish packages/runtime/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: ${{ steps.release.outputs['packages/static--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/static/ --provenance --access=public || true + else + npm publish packages/static/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: ${{ steps.release.outputs['packages/dev--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/dev/ --provenance --access=public || true + else + npm publish packages/dev/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: + ${{ steps.release.outputs['packages/vite-plugin--release_created'] || github.event_name == 'workflow_dispatch' + }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/vite-plugin/ --provenance --access=public || true + else + npm publish packages/vite-plugin/ --provenance --access=public + fi + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - if: ${{ steps.release.outputs['packages/otel--release_created'] || github.event_name == 'workflow_dispatch' }} + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + npm publish packages/otel/ --provenance --access=public || true + else + npm publish packages/otel/ --provenance --access=public + fi env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 16dfbaa9..4ca07994 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,18 +1,18 @@ { - "packages/blobs": "10.0.9", - "packages/cache": "3.0.10", - "packages/dev": "4.5.7", - "packages/dev-utils": "4.1.2", - "packages/edge-functions": "2.17.3", - "packages/functions": "4.2.4", - "packages/headers": "2.0.10", - "packages/images": "1.2.6", - "packages/nuxt-module": "0.1.14", + "packages/blobs": "10.0.10", + "packages/cache": "3.0.11", + "packages/dev": "4.5.8", + "packages/dev-utils": "4.1.3", + "packages/edge-functions": "2.17.4", + "packages/functions": "4.2.5", + "packages/headers": "2.0.11", + "packages/images": "1.2.7", + "packages/nuxt-module": "0.1.15", "packages/otel": "3.4.1", - "packages/redirects": "3.0.11", - "packages/runtime": "4.0.13", + "packages/redirects": "3.0.12", + "packages/runtime": "4.0.14", "packages/runtime-utils": "2.1.0", - "packages/static": "3.0.9", - "packages/types": "2.0.2", - "packages/vite-plugin": "2.5.7" + "packages/static": "3.0.10", + "packages/types": "2.0.3", + "packages/vite-plugin": "2.5.8" } diff --git a/eslint.config.js b/eslint.config.js index 03d96499..945fdb6a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -115,6 +115,9 @@ export default tseslint.config( // Custom assertion functions 'assertNetlifyToml', + + // Vitest type testing functions + 'expectTypeOf', ], }, ], diff --git a/package-lock.json b/package-lock.json index 99121265..0ca2a8bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21167,10 +21167,10 @@ }, "packages/blobs": { "name": "@netlify/blobs", - "version": "10.0.9", + "version": "10.0.10", "license": "MIT", "dependencies": { - "@netlify/dev-utils": "4.1.2", + "@netlify/dev-utils": "4.1.3", "@netlify/runtime-utils": "2.1.0" }, "devDependencies": { @@ -21188,14 +21188,14 @@ }, "packages/cache": { "name": "@netlify/cache", - "version": "3.0.10", + "version": "3.0.11", "license": "MIT", "dependencies": { "@netlify/runtime-utils": "2.1.0" }, "devDependencies": { - "@netlify/dev-utils": "4.1.2", - "@netlify/types": "2.0.2", + "@netlify/dev-utils": "4.1.3", + "@netlify/types": "2.0.3", "npm-run-all2": "^7.0.2", "tsup": "^8.0.0", "vitest": "^3.0.0" @@ -21253,24 +21253,24 @@ }, "packages/dev": { "name": "@netlify/dev", - "version": "4.5.7", + "version": "4.5.8", "license": "MIT", "dependencies": { - "@netlify/blobs": "10.0.9", + "@netlify/blobs": "10.0.10", "@netlify/config": "^23.2.0", - "@netlify/dev-utils": "4.1.2", - "@netlify/edge-functions": "2.17.3", - "@netlify/functions": "4.2.4", - "@netlify/headers": "2.0.10", - "@netlify/images": "1.2.6", - "@netlify/redirects": "3.0.11", - "@netlify/runtime": "4.0.13", - "@netlify/static": "3.0.9", + "@netlify/dev-utils": "4.1.3", + "@netlify/edge-functions": "2.17.4", + "@netlify/functions": "4.2.5", + "@netlify/headers": "2.0.11", + "@netlify/images": "1.2.7", + "@netlify/redirects": "3.0.12", + "@netlify/runtime": "4.0.14", + "@netlify/static": "3.0.10", "ulid": "^3.0.0" }, "devDependencies": { "@netlify/api": "^14.0.4", - "@netlify/types": "2.0.2", + "@netlify/types": "2.0.3", "tsup": "^8.0.0", "vitest": "^3.0.0" }, @@ -21280,7 +21280,7 @@ }, "packages/dev-utils": { "name": "@netlify/dev-utils", - "version": "4.1.2", + "version": "4.1.3", "license": "MIT", "dependencies": { "@whatwg-node/server": "^0.10.0", @@ -21300,7 +21300,7 @@ "write-file-atomic": "^5.0.1" }, "devDependencies": { - "@netlify/types": "2.0.1", + "@netlify/types": "2.0.3", "@types/node": "^18.19.110", "@types/parse-gitignore": "^1.0.2", "@types/write-file-atomic": "^4.0.3", @@ -21322,14 +21322,14 @@ }, "packages/edge-functions": { "name": "@netlify/edge-functions", - "version": "2.17.3", + "version": "2.17.4", "license": "MIT", "dependencies": { - "@netlify/dev-utils": "4.1.2", + "@netlify/dev-utils": "4.1.3", "@netlify/edge-bundler": "^14.5.2", "@netlify/edge-functions-bootstrap": "^2.16.0", "@netlify/runtime-utils": "2.1.0", - "@netlify/types": "2.0.2", + "@netlify/types": "2.0.3", "get-port": "^7.1.0" }, "devDependencies": { @@ -21343,12 +21343,12 @@ }, "packages/functions": { "name": "@netlify/functions", - "version": "4.2.4", + "version": "4.2.5", "license": "MIT", "dependencies": { - "@netlify/blobs": "10.0.9", - "@netlify/dev-utils": "4.1.2", - "@netlify/types": "2.0.2", + "@netlify/blobs": "10.0.10", + "@netlify/dev-utils": "4.1.3", + "@netlify/types": "2.0.3", "@netlify/zip-it-and-ship-it": "^14.1.3", "cron-parser": "^4.9.0", "decache": "^4.6.2", @@ -21525,13 +21525,13 @@ }, "packages/headers": { "name": "@netlify/headers", - "version": "2.0.10", + "version": "2.0.11", "license": "MIT", "dependencies": { "@netlify/headers-parser": "^9.0.2" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "@types/node": "^20.17.57", "tsup": "^8.0.0", "vitest": "^3.1.4" @@ -21555,13 +21555,13 @@ }, "packages/images": { "name": "@netlify/images", - "version": "1.2.6", + "version": "1.2.7", "license": "MIT", "dependencies": { "ipx": "^3.1.1" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "tsup": "^8.5.0", "vitest": "^3.1.4" }, @@ -21571,11 +21571,11 @@ }, "packages/nuxt-module": { "name": "@netlify/nuxt", - "version": "0.1.14", + "version": "0.1.15", "license": "MIT", "dependencies": { - "@netlify/dev": "^4.5.7", - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev": "^4.5.8", + "@netlify/dev-utils": "^4.1.3", "@nuxt/kit": "^4.0.0", "h3": "^1.15.3" }, @@ -21923,10 +21923,10 @@ }, "packages/redirects": { "name": "@netlify/redirects", - "version": "3.0.11", + "version": "3.0.12", "license": "MIT", "dependencies": { - "@netlify/dev-utils": "4.1.2", + "@netlify/dev-utils": "4.1.3", "@netlify/redirect-parser": "^15.0.3", "cookie": "^1.0.2", "jsonwebtoken": "9.0.2", @@ -21943,16 +21943,16 @@ }, "packages/runtime": { "name": "@netlify/runtime", - "version": "4.0.13", + "version": "4.0.14", "license": "MIT", "dependencies": { - "@netlify/blobs": "^10.0.9", - "@netlify/cache": "3.0.10", + "@netlify/blobs": "^10.0.10", + "@netlify/cache": "3.0.11", "@netlify/runtime-utils": "2.1.0", - "@netlify/types": "2.0.2" + "@netlify/types": "2.0.3" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "@types/node": "^20.17.57", "tsup": "^8.0.0", "vitest": "^3.0.0" @@ -21989,13 +21989,13 @@ }, "packages/static": { "name": "@netlify/static", - "version": "3.0.9", + "version": "3.0.10", "license": "MIT", "dependencies": { "mime-types": "^3.0.0" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "@types/mime-types": "^2.1.4", "tsup": "^8.5.0", "vitest": "^3.1.4" @@ -22006,7 +22006,7 @@ }, "packages/types": { "name": "@netlify/types", - "version": "2.0.2", + "version": "2.0.3", "license": "MIT", "devDependencies": { "@types/node": "^18.19.110", @@ -22020,11 +22020,11 @@ }, "packages/vite-plugin": { "name": "@netlify/vite-plugin", - "version": "2.5.7", + "version": "2.5.8", "license": "MIT", "dependencies": { - "@netlify/dev": "4.5.7", - "@netlify/dev-utils": "^4.1.2" + "@netlify/dev": "4.5.8", + "@netlify/dev-utils": "^4.1.3" }, "devDependencies": { "@types/node": "^20.17.57", diff --git a/packages/blobs/CHANGELOG.md b/packages/blobs/CHANGELOG.md index 58dd3965..705d98c9 100644 --- a/packages/blobs/CHANGELOG.md +++ b/packages/blobs/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [10.0.10](https://github.com/netlify/primitives/compare/blobs-v10.0.9...blobs-v10.0.10) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/dev-utils bumped from 4.1.2 to 4.1.3 + ## [10.0.9](https://github.com/netlify/primitives/compare/blobs-v10.0.8...blobs-v10.0.9) (2025-08-19) diff --git a/packages/blobs/package.json b/packages/blobs/package.json index d1e89875..05db9257 100644 --- a/packages/blobs/package.json +++ b/packages/blobs/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/blobs", - "version": "10.0.9", + "version": "10.0.10", "description": "TypeScript client for Netlify Blobs", "type": "module", "engines": { @@ -76,7 +76,7 @@ "vitest": "^3.0.0" }, "dependencies": { - "@netlify/dev-utils": "4.1.2", + "@netlify/dev-utils": "4.1.3", "@netlify/runtime-utils": "2.1.0" } } diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md index f972dc48..02eb1a86 100644 --- a/packages/cache/CHANGELOG.md +++ b/packages/cache/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [3.0.11](https://github.com/netlify/primitives/compare/cache-v3.0.10...cache-v3.0.11) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @netlify/dev-utils bumped from 4.1.2 to 4.1.3 + * @netlify/types bumped from 2.0.2 to 2.0.3 + ## [3.0.10](https://github.com/netlify/primitives/compare/cache-v3.0.9...cache-v3.0.10) (2025-08-19) diff --git a/packages/cache/package.json b/packages/cache/package.json index d45a2983..44d72b16 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/cache", - "version": "3.0.10", + "version": "3.0.11", "description": "TypeScript utilities for interacting with the Netlify cache", "type": "module", "engines": { @@ -68,8 +68,8 @@ }, "author": "Netlify Inc.", "devDependencies": { - "@netlify/dev-utils": "4.1.2", - "@netlify/types": "2.0.2", + "@netlify/dev-utils": "4.1.3", + "@netlify/types": "2.0.3", "npm-run-all2": "^7.0.2", "tsup": "^8.0.0", "vitest": "^3.0.0" diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 86f4bc08..dd802526 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [4.1.3](https://github.com/netlify/primitives/compare/dev-utils-v4.1.2...dev-utils-v4.1.3) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @netlify/types bumped from 2.0.1 to 2.0.3 + ## [4.1.2](https://github.com/netlify/primitives/compare/dev-utils-v4.1.1...dev-utils-v4.1.2) (2025-08-19) diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 07f127a2..a4bb2933 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/dev-utils", - "version": "4.1.2", + "version": "4.1.3", "description": "TypeScript utilities for the local emulation of the Netlify environment", "type": "module", "engines": { @@ -42,7 +42,7 @@ }, "author": "Netlify Inc.", "devDependencies": { - "@netlify/types": "2.0.1", + "@netlify/types": "2.0.3", "@types/node": "^18.19.110", "@types/parse-gitignore": "^1.0.2", "@types/write-file-atomic": "^4.0.3", diff --git a/packages/dev/CHANGELOG.md b/packages/dev/CHANGELOG.md index 83613385..0166666f 100644 --- a/packages/dev/CHANGELOG.md +++ b/packages/dev/CHANGELOG.md @@ -1,5 +1,29 @@ # Changelog +## [4.5.8](https://github.com/netlify/primitives/compare/dev-v4.5.7...dev-v4.5.8) (2025-08-28) + + +### Bug Fixes + +* **dev:** add support for `dev-server` context ([#438](https://github.com/netlify/primitives/issues/438)) ([793b853](https://github.com/netlify/primitives/commit/793b85333bbdd0959df97ccd8e04bc269f9d3747)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/blobs bumped from 10.0.9 to 10.0.10 + * @netlify/dev-utils bumped from 4.1.2 to 4.1.3 + * @netlify/edge-functions bumped from 2.17.3 to 2.17.4 + * @netlify/functions bumped from 4.2.4 to 4.2.5 + * @netlify/headers bumped from 2.0.10 to 2.0.11 + * @netlify/images bumped from 1.2.6 to 1.2.7 + * @netlify/redirects bumped from 3.0.11 to 3.0.12 + * @netlify/runtime bumped from 4.0.13 to 4.0.14 + * @netlify/static bumped from 3.0.9 to 3.0.10 + * devDependencies + * @netlify/types bumped from 2.0.2 to 2.0.3 + ## [4.5.7](https://github.com/netlify/primitives/compare/dev-v4.5.6...dev-v4.5.7) (2025-08-26) diff --git a/packages/dev/package.json b/packages/dev/package.json index 1d37b0b6..96dcf12e 100644 --- a/packages/dev/package.json +++ b/packages/dev/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/dev", - "version": "4.5.7", + "version": "4.5.8", "description": "Emulation of the Netlify environment for local development", "type": "module", "engines": { @@ -47,21 +47,21 @@ "author": "Netlify Inc.", "devDependencies": { "@netlify/api": "^14.0.4", - "@netlify/types": "2.0.2", + "@netlify/types": "2.0.3", "tsup": "^8.0.0", "vitest": "^3.0.0" }, "dependencies": { - "@netlify/blobs": "10.0.9", + "@netlify/blobs": "10.0.10", "@netlify/config": "^23.2.0", - "@netlify/dev-utils": "4.1.2", - "@netlify/edge-functions": "2.17.3", - "@netlify/functions": "4.2.4", - "@netlify/headers": "2.0.10", - "@netlify/images": "1.2.6", - "@netlify/redirects": "3.0.11", - "@netlify/runtime": "4.0.13", - "@netlify/static": "3.0.9", + "@netlify/dev-utils": "4.1.3", + "@netlify/edge-functions": "2.17.4", + "@netlify/functions": "4.2.5", + "@netlify/headers": "2.0.11", + "@netlify/images": "1.2.7", + "@netlify/redirects": "3.0.12", + "@netlify/runtime": "4.0.14", + "@netlify/static": "3.0.10", "ulid": "^3.0.0" } } diff --git a/packages/dev/src/lib/env.ts b/packages/dev/src/lib/env.ts index 8c25db14..344af494 100644 --- a/packages/dev/src/lib/env.ts +++ b/packages/dev/src/lib/env.ts @@ -8,7 +8,7 @@ export type EnvironmentVariableSource = 'account' | 'addons' | 'configFile' | 'g * These all match possible `context` values returned by the Envelope API. * Note that a user may also specify a branch name with the special `branch:my-branch-name` format. */ -export const SUPPORTED_CONTEXTS = ['all', 'production', 'deploy-preview', 'branch-deploy', 'dev'] as const +export const SUPPORTED_CONTEXTS = ['all', 'production', 'deploy-preview', 'branch-deploy', 'dev', 'dev-server'] as const /** * Additional aliases for the user-provided env `context` option. diff --git a/packages/edge-functions/CHANGELOG.md b/packages/edge-functions/CHANGELOG.md index 005d886f..1f67b1ae 100644 --- a/packages/edge-functions/CHANGELOG.md +++ b/packages/edge-functions/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [2.17.4](https://github.com/netlify/primitives/compare/edge-functions-v2.17.3...edge-functions-v2.17.4) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/dev-utils bumped from 4.1.2 to 4.1.3 + * @netlify/types bumped from 2.0.2 to 2.0.3 + ## [2.17.3](https://github.com/netlify/primitives/compare/edge-functions-v2.17.2...edge-functions-v2.17.3) (2025-08-26) diff --git a/packages/edge-functions/package.json b/packages/edge-functions/package.json index 5a8a8429..7aa54afe 100644 --- a/packages/edge-functions/package.json +++ b/packages/edge-functions/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/edge-functions", - "version": "2.17.3", + "version": "2.17.4", "description": "TypeScript utilities for interacting with Netlify Edge Functions", "type": "module", "engines": { @@ -55,11 +55,11 @@ "vitest": "^3.0.0" }, "dependencies": { - "@netlify/dev-utils": "4.1.2", + "@netlify/dev-utils": "4.1.3", "@netlify/edge-bundler": "^14.5.2", "@netlify/edge-functions-bootstrap": "^2.16.0", "@netlify/runtime-utils": "2.1.0", - "@netlify/types": "2.0.2", + "@netlify/types": "2.0.3", "get-port": "^7.1.0" } } diff --git a/packages/functions/CHANGELOG.md b/packages/functions/CHANGELOG.md index 00a9fae4..a81b73f6 100644 --- a/packages/functions/CHANGELOG.md +++ b/packages/functions/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [4.2.5](https://github.com/netlify/primitives/compare/functions-v4.2.4...functions-v4.2.5) (2025-08-28) + + +### Bug Fixes + +* restore missing `Netlify` global type in `@netlify/functions` ([#434](https://github.com/netlify/primitives/issues/434)) ([2e028b9](https://github.com/netlify/primitives/commit/2e028b9cbdc88a61da1641ec9bf30704e2b36220)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/blobs bumped from 10.0.9 to 10.0.10 + * @netlify/dev-utils bumped from 4.1.2 to 4.1.3 + * @netlify/types bumped from 2.0.2 to 2.0.3 + ## [4.2.4](https://github.com/netlify/primitives/compare/functions-v4.2.3...functions-v4.2.4) (2025-08-26) diff --git a/packages/functions/package.json b/packages/functions/package.json index 79920b62..e31fb694 100644 --- a/packages/functions/package.json +++ b/packages/functions/package.json @@ -31,7 +31,7 @@ } } }, - "version": "4.2.4", + "version": "4.2.5", "description": "TypeScript utilities for interacting with Netlify Functions", "files": [ "dist/**/*.js", @@ -80,9 +80,9 @@ "test": "test" }, "dependencies": { - "@netlify/blobs": "10.0.9", - "@netlify/dev-utils": "4.1.2", - "@netlify/types": "2.0.2", + "@netlify/blobs": "10.0.10", + "@netlify/dev-utils": "4.1.3", + "@netlify/types": "2.0.3", "@netlify/zip-it-and-ship-it": "^14.1.3", "cron-parser": "^4.9.0", "decache": "^4.6.2", diff --git a/packages/functions/src/global-types.test.ts b/packages/functions/src/global-types.test.ts new file mode 100644 index 00000000..4ec42959 --- /dev/null +++ b/packages/functions/src/global-types.test.ts @@ -0,0 +1,13 @@ +import { describe, test, expectTypeOf } from 'vitest' +import type { NetlifyGlobal } from '@netlify/types' + +// Import the main module to ensure global augmentation is loaded +import './main.js' + +describe('Netlify global type declaration regression test', () => { + test('should augment global scope with `Netlify` global', () => { + expectTypeOf().toEqualTypeOf() + expectTypeOf().toHaveProperty('env') + expectTypeOf().toHaveProperty('context') + }) +}) diff --git a/packages/functions/src/main.ts b/packages/functions/src/main.ts index a3154338..736ee659 100644 --- a/packages/functions/src/main.ts +++ b/packages/functions/src/main.ts @@ -1,3 +1,9 @@ +import type { NetlifyGlobal } from '@netlify/types' + +declare global { + const Netlify: NetlifyGlobal +} + export { builder } from './lib/builder.js' export { purgeCache } from './lib/purge_cache.js' export { schedule } from './lib/schedule.js' diff --git a/packages/functions/tsconfig.json b/packages/functions/tsconfig.json index 12ec691d..49490e9d 100644 --- a/packages/functions/tsconfig.json +++ b/packages/functions/tsconfig.json @@ -11,6 +11,7 @@ "removeComments": false, "strict": true, "moduleResolution": "node", + "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src", "dev"] diff --git a/packages/functions/vitest.config.ts b/packages/functions/vitest.config.ts index 0bbc0597..6f0b1819 100644 --- a/packages/functions/vitest.config.ts +++ b/packages/functions/vitest.config.ts @@ -7,5 +7,8 @@ export default defineConfig({ test: { include: ['(src|dev)/**/*.test.ts'], testTimeout: 30_000, + typecheck: { + enabled: true, + }, }, }) diff --git a/packages/headers/CHANGELOG.md b/packages/headers/CHANGELOG.md index 152de14b..3637bec7 100644 --- a/packages/headers/CHANGELOG.md +++ b/packages/headers/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [2.0.11](https://github.com/netlify/primitives/compare/headers-v2.0.10...headers-v2.0.11) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @netlify/dev-utils bumped from ^4.1.2 to ^4.1.3 + ## [2.0.10](https://github.com/netlify/primitives/compare/headers-v2.0.9...headers-v2.0.10) (2025-08-19) diff --git a/packages/headers/package.json b/packages/headers/package.json index c4357e1a..e8b8f92c 100644 --- a/packages/headers/package.json +++ b/packages/headers/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/headers", - "version": "2.0.10", + "version": "2.0.11", "description": "TypeScript implementation of Netlify's headers engine", "type": "module", "engines": { @@ -32,7 +32,7 @@ }, "author": "Netlify Inc.", "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "@types/node": "^20.17.57", "tsup": "^8.0.0", "vitest": "^3.1.4" diff --git a/packages/images/CHANGELOG.md b/packages/images/CHANGELOG.md index 5603fbe6..7b02c7da 100644 --- a/packages/images/CHANGELOG.md +++ b/packages/images/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [1.2.7](https://github.com/netlify/primitives/compare/images-v1.2.6...images-v1.2.7) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @netlify/dev-utils bumped from ^4.1.2 to ^4.1.3 + ## [1.2.6](https://github.com/netlify/primitives/compare/images-v1.2.5...images-v1.2.6) (2025-08-19) diff --git a/packages/images/package.json b/packages/images/package.json index faeeccc8..37918422 100644 --- a/packages/images/package.json +++ b/packages/images/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/images", - "version": "1.2.6", + "version": "1.2.7", "description": "TypeScript implementation of Netlify's Image CDN", "type": "module", "engines": { @@ -32,7 +32,7 @@ "test": "test" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "tsup": "^8.5.0", "vitest": "^3.1.4" }, diff --git a/packages/nuxt-module/CHANGELOG.md b/packages/nuxt-module/CHANGELOG.md index e3de571a..8433c1d7 100644 --- a/packages/nuxt-module/CHANGELOG.md +++ b/packages/nuxt-module/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.1.15](https://github.com/netlify/primitives/compare/nuxt-v0.1.14...nuxt-v0.1.15) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/dev bumped from ^4.5.7 to ^4.5.8 + * @netlify/dev-utils bumped from ^4.1.2 to ^4.1.3 + ## [0.1.14](https://github.com/netlify/primitives/compare/nuxt-v0.1.13...nuxt-v0.1.14) (2025-08-26) diff --git a/packages/nuxt-module/package.json b/packages/nuxt-module/package.json index 32224377..78d4c737 100644 --- a/packages/nuxt-module/package.json +++ b/packages/nuxt-module/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/nuxt", - "version": "0.1.14", + "version": "0.1.15", "description": "Nuxt module providing local emulation of the Netlify environment", "type": "module", "engines": { @@ -50,8 +50,8 @@ }, "author": "Netlify Inc.", "dependencies": { - "@netlify/dev": "^4.5.7", - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev": "^4.5.8", + "@netlify/dev-utils": "^4.1.3", "@nuxt/kit": "^4.0.0", "h3": "^1.15.3" }, diff --git a/packages/redirects/CHANGELOG.md b/packages/redirects/CHANGELOG.md index eac31252..fe87ebc2 100644 --- a/packages/redirects/CHANGELOG.md +++ b/packages/redirects/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [3.0.12](https://github.com/netlify/primitives/compare/redirects-v3.0.11...redirects-v3.0.12) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/dev-utils bumped from 4.1.2 to 4.1.3 + ## [3.0.11](https://github.com/netlify/primitives/compare/redirects-v3.0.10...redirects-v3.0.11) (2025-08-19) diff --git a/packages/redirects/package.json b/packages/redirects/package.json index b046dc28..02a39715 100644 --- a/packages/redirects/package.json +++ b/packages/redirects/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/redirects", - "version": "3.0.11", + "version": "3.0.12", "description": "TypeScript implementation of Netlify's rewrites and redirects engine", "type": "module", "engines": { @@ -37,7 +37,7 @@ "vitest": "^3.1.4" }, "dependencies": { - "@netlify/dev-utils": "4.1.2", + "@netlify/dev-utils": "4.1.3", "@netlify/redirect-parser": "^15.0.3", "cookie": "^1.0.2", "jsonwebtoken": "9.0.2", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 06e7e1bf..8ec1ca71 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [4.0.14](https://github.com/netlify/primitives/compare/runtime-v4.0.13...runtime-v4.0.14) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/blobs bumped from ^10.0.9 to ^10.0.10 + * @netlify/cache bumped from 3.0.10 to 3.0.11 + * @netlify/types bumped from 2.0.2 to 2.0.3 + * devDependencies + * @netlify/dev-utils bumped from ^4.1.2 to ^4.1.3 + ## [4.0.13](https://github.com/netlify/primitives/compare/runtime-v4.0.12...runtime-v4.0.13) (2025-08-19) diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 9763a66a..a8330051 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/runtime", - "version": "4.0.13", + "version": "4.0.14", "description": "Netlify compute runtime", "type": "module", "engines": { @@ -29,13 +29,13 @@ }, "author": "Netlify Inc.", "dependencies": { - "@netlify/blobs": "^10.0.9", - "@netlify/cache": "3.0.10", + "@netlify/blobs": "^10.0.10", + "@netlify/cache": "3.0.11", "@netlify/runtime-utils": "2.1.0", - "@netlify/types": "2.0.2" + "@netlify/types": "2.0.3" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "@types/node": "^20.17.57", "tsup": "^8.0.0", "vitest": "^3.0.0" diff --git a/packages/static/CHANGELOG.md b/packages/static/CHANGELOG.md index 4b8b14b5..56e86c25 100644 --- a/packages/static/CHANGELOG.md +++ b/packages/static/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [3.0.10](https://github.com/netlify/primitives/compare/static-v3.0.9...static-v3.0.10) (2025-08-28) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @netlify/dev-utils bumped from ^4.1.2 to ^4.1.3 + ## [3.0.9](https://github.com/netlify/primitives/compare/static-v3.0.8...static-v3.0.9) (2025-08-19) diff --git a/packages/static/package.json b/packages/static/package.json index 49239205..d56ada8d 100644 --- a/packages/static/package.json +++ b/packages/static/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/static", - "version": "3.0.9", + "version": "3.0.10", "description": "TypeScript implementtion of Netlify's static file serving logic", "type": "module", "engines": { @@ -32,7 +32,7 @@ "test": "test" }, "devDependencies": { - "@netlify/dev-utils": "^4.1.2", + "@netlify/dev-utils": "^4.1.3", "@types/mime-types": "^2.1.4", "tsup": "^8.5.0", "vitest": "^3.1.4" diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 3559a0a5..f579933c 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.3](https://github.com/netlify/primitives/compare/types-v2.0.2...types-v2.0.3) (2025-08-28) + + +### Bug Fixes + +* restore missing `Netlify` global type in `@netlify/functions` ([#434](https://github.com/netlify/primitives/issues/434)) ([2e028b9](https://github.com/netlify/primitives/commit/2e028b9cbdc88a61da1641ec9bf30704e2b36220)) + ## [2.0.2](https://github.com/netlify/primitives/compare/types-v2.0.1...types-v2.0.2) (2025-06-04) diff --git a/packages/types/package-lock.json b/packages/types/package-lock.json index e81d40b0..08a515db 100644 --- a/packages/types/package-lock.json +++ b/packages/types/package-lock.json @@ -1,12 +1,12 @@ { "name": "@netlify/types", - "version": "2.0.2", + "version": "2.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@netlify/types", - "version": "2.0.2", + "version": "2.0.3", "license": "MIT", "devDependencies": { "@types/node": "^22.14.1", diff --git a/packages/types/package.json b/packages/types/package.json index 4a8084f3..d4f10edd 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/types", - "version": "2.0.2", + "version": "2.0.3", "description": "TypeScript definitions for the Netlify platform", "type": "module", "engines": { diff --git a/packages/types/src/main.test.ts b/packages/types/src/main.test.ts index 1e77f5f6..72c2acd2 100644 --- a/packages/types/src/main.test.ts +++ b/packages/types/src/main.test.ts @@ -4,12 +4,12 @@ import { fileURLToPath } from 'node:url' import { expect, expectTypeOf, test } from 'vitest' -import { Context, NetlifyGlobal } from './main.js' +import type { Context, NetlifyGlobal } from './main.js' import * as main from './main.js' test('Exports types', () => { - expectTypeOf() - expectTypeOf() + expectTypeOf().toExtend() + expectTypeOf().toExtend() }) test('Does not export runtime code', () => { diff --git a/packages/types/vitest.config.ts b/packages/types/vitest.config.ts new file mode 100644 index 00000000..4428598a --- /dev/null +++ b/packages/types/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + typecheck: { + enabled: true, + }, + }, +}) diff --git a/packages/vite-plugin/CHANGELOG.md b/packages/vite-plugin/CHANGELOG.md index 31fef150..e2ed3c7e 100644 --- a/packages/vite-plugin/CHANGELOG.md +++ b/packages/vite-plugin/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [2.5.8](https://github.com/netlify/primitives/compare/vite-plugin-v2.5.7...vite-plugin-v2.5.8) (2025-08-28) + + +### Bug Fixes + +* **vite-plugin:** pass environmentVariables option to NetlifyDev ([#442](https://github.com/netlify/primitives/issues/442)) ([214ac26](https://github.com/netlify/primitives/commit/214ac26f0da3e598b29e8ee7c8c9434de4468703)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @netlify/dev bumped from 4.5.7 to 4.5.8 + * @netlify/dev-utils bumped from ^4.1.2 to ^4.1.3 + ## [2.5.7](https://github.com/netlify/primitives/compare/vite-plugin-v2.5.6...vite-plugin-v2.5.7) (2025-08-26) diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 7a2c4e26..3706d842 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@netlify/vite-plugin", - "version": "2.5.7", + "version": "2.5.8", "description": "Vite plugin with a local emulation of the Netlify environment", "type": "module", "engines": { @@ -40,8 +40,8 @@ "vitest": "^3.0.0" }, "dependencies": { - "@netlify/dev": "4.5.7", - "@netlify/dev-utils": "^4.1.2" + "@netlify/dev": "4.5.8", + "@netlify/dev-utils": "^4.1.3" }, "peerDependencies": { "vite": "^5 || ^6 || ^7" diff --git a/packages/vite-plugin/src/main.ts b/packages/vite-plugin/src/main.ts index 982be0f0..f62bba88 100644 --- a/packages/vite-plugin/src/main.ts +++ b/packages/vite-plugin/src/main.ts @@ -30,11 +30,21 @@ export default function netlify(options: NetlifyPluginOptions = {}): any { return } const logger = createLoggerFromViteLogger(viteDevServer.config.logger) - const { blobs, edgeFunctions, functions, images, middleware = true, redirects, staticFiles } = options + const { + blobs, + edgeFunctions, + environmentVariables, + functions, + images, + middleware = true, + redirects, + staticFiles, + } = options const netlifyDev = new NetlifyDev({ blobs, edgeFunctions, + environmentVariables, functions, images, logger,