Skip to content

Commit e71a02e

Browse files
razor-xclaude
andauthored
Upgrade Node.js to v24 and modernize development tooling (#595)
Adopt the toolchain patterns from @seamapi/makenew-tsmodule v3.0.4, mirroring the update already applied to seamapi/javascript-http and seamapi/docs. - Add engines and devEngines and drop .nvmrc. Node v24 is now the default in CI and the devcontainer, with v22.11.0 still supported. - Update the workflow action versions and install dependencies with npm ci --ignore-scripts followed by npm rebuild. - Update the npm dependencies. Refreshing the lockfile also records the esbuild platform packages that npm tracks for tsx. - Fix the tsconfig.json schema URL. TypeScript v6 is already in place through @seamapi/smith v1.1.0, which declares typescript, tsx, eslint, and jiti as peer dependencies and depends on @types/node directly, so none of them are declared here. The Python toolchain is unchanged: Poetry, pylint, black, and the Python version matrices in CI are untouched. Running the codegen produces byte for byte identical output under the updated toolchain. Claude-Session: https://claude.ai/code/session_01Y2XoVcysK4XshKsKtsbK4U Co-authored-by: Claude <noreply@anthropic.com>
1 parent a3c4ea9 commit e71a02e

15 files changed

Lines changed: 545 additions & 54 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ ARG VARIANT="3"
22

33
FROM mcr.microsoft.com/vscode/devcontainers/python:${VARIANT}
44

5-
ARG NODE_VERSION="20"
5+
ARG NODE_VERSION="24"
66
ARG POETRY_VERSION="1.8.2"
77
ARG POETRY_SRC="https://install.python-poetry.org"
88

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"build": {
55
"dockerfile": "Dockerfile",
66
"args": {
7-
"NODE_VERSION": "20",
7+
"NODE_VERSION": "24",
88
"POETRY_VERSION": "1.8.2",
99
"VARIANT": "3.12"
1010
}

.github/actions/setup-node/action.yml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ inputs:
66
node_version:
77
description: The Node.js version.
88
required: false
9-
default: '20'
9+
default: '24'
1010
registry_url:
1111
description: The Node.js package registry URL.
1212
required: false
@@ -20,19 +20,27 @@ runs:
2020
using: composite
2121
steps:
2222
- name: Setup Node.js
23-
uses: actions/setup-node@v4
23+
uses: actions/setup-node@v7
2424
if: inputs.install_dependencies == 'true'
2525
with:
26-
cache: npm
2726
node-version: ${{ inputs.node_version }}
2827
registry-url: ${{ inputs.registry_url }}
2928
- name: Setup Node.js without cache
30-
uses: actions/setup-node@v4
29+
uses: actions/setup-node@v7
3130
if: inputs.install_dependencies == 'false'
3231
with:
3332
node-version: ${{ inputs.node_version }}
3433
registry-url: ${{ inputs.registry_url }}
3534
- name: Install dependencies
3635
if: inputs.install_dependencies == 'true'
3736
shell: bash
38-
run: npm ci
37+
run: npm ci --ignore-scripts
38+
- name: Rebuild Node.js modules
39+
shell: bash
40+
run: npm rebuild
41+
- name: Run postinstall script
42+
shell: bash
43+
run: npm run postinstall --if-present
44+
- name: Run prepare script
45+
shell: bash
46+
run: npm run prepare --if-present

.github/workflows/_build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ jobs:
3131
timeout-minutes: 30
3232
steps:
3333
- name: Checkout
34-
uses: actions/checkout@v4
34+
uses: actions/checkout@v7
3535
- name: Setup
3636
uses: ./.github/actions/setup
3737
with:
3838
python_version: ${{ inputs.python_version }}
3939
- name: Build
4040
run: make build
4141
- name: Upload artifact
42-
uses: actions/upload-artifact@v4
42+
uses: actions/upload-artifact@v7
4343
if: inputs.upload_artifact == 'true'
4444
with:
4545
name: build-${{ github.sha }}

.github/workflows/_publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ jobs:
2020
timeout-minutes: 30
2121
steps:
2222
- name: Checkout
23-
uses: actions/checkout@v4
23+
uses: actions/checkout@v7
2424
- name: Setup
2525
uses: ./.github/actions/setup
2626
with:
2727
install_dependencies: 'false'
2828
- name: Download artifact
29-
uses: actions/download-artifact@v4
29+
uses: actions/download-artifact@v8
3030
with:
3131
name: ${{ inputs.artifact_name }}
3232
path: dist/

.github/workflows/check.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
os_name: Linux
2929
steps:
3030
- name: Checkout
31-
uses: actions/checkout@v4
31+
uses: actions/checkout@v7
3232
- name: Setup
3333
uses: ./.github/actions/setup
3434
with:
@@ -49,7 +49,7 @@ jobs:
4949
- '3.12'
5050
steps:
5151
- name: Checkout
52-
uses: actions/checkout@v4
52+
uses: actions/checkout@v7
5353
- name: Setup
5454
uses: ./.github/actions/setup
5555
with:
@@ -98,12 +98,12 @@ jobs:
9898
with:
9999
python-version: ${{ matrix.python }}
100100
- name: Download artifact
101-
uses: actions/download-artifact@v4
101+
uses: actions/download-artifact@v8
102102
with:
103103
name: ${{ needs.build.outputs.artifact_name }}
104104
path: .
105105
- name: Find wheels
106-
uses: tj-actions/glob@v21
106+
uses: tj-actions/glob@v22
107107
id: wheels
108108
with:
109109
files: '*.whl'

.github/workflows/format.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ jobs:
1414
timeout-minutes: 30
1515
steps:
1616
- name: Checkout
17-
uses: actions/checkout@v4
17+
uses: actions/checkout@v7
1818
with:
1919
ref: ${{ github.head_ref }}
2020
token: ${{ secrets.GH_TOKEN }}
2121
- name: Import GPG key
22-
uses: crazy-max/ghaction-import-gpg@v6
22+
uses: crazy-max/ghaction-import-gpg@v7
2323
with:
2424
git_user_signingkey: true
2525
git_commit_gpgsign: true
@@ -36,7 +36,7 @@ jobs:
3636
- name: Format with Prettier
3737
run: npm run format
3838
- name: Commit
39-
uses: stefanzweifel/git-auto-commit-action@v5
39+
uses: stefanzweifel/git-auto-commit-action@v7
4040
if: always()
4141
with:
4242
commit_message: 'ci: Format code'

.github/workflows/generate.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ jobs:
1414
timeout-minutes: 30
1515
steps:
1616
- name: Checkout
17-
uses: actions/checkout@v4
17+
uses: actions/checkout@v7
1818
with:
1919
ref: ${{ github.head_ref }}
2020
token: ${{ secrets.GH_TOKEN }}
2121
- name: Import GPG key
22-
uses: crazy-max/ghaction-import-gpg@v6
22+
uses: crazy-max/ghaction-import-gpg@v7
2323
with:
2424
git_user_signingkey: true
2525
git_commit_gpgsign: true
@@ -44,7 +44,7 @@ jobs:
4444
- name: Generate code
4545
run: npm run generate
4646
- name: Commit
47-
uses: stefanzweifel/git-auto-commit-action@v5
47+
uses: stefanzweifel/git-auto-commit-action@v7
4848
with:
4949
commit_message: 'ci: Generate code'
5050
commit_user_name: ${{ secrets.GIT_USER_NAME }}

.github/workflows/publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ jobs:
2121
needs: build
2222
steps:
2323
- name: Checkout
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v7
2525
with:
2626
fetch-depth: 0
2727
- name: Download artifact
28-
uses: actions/download-artifact@v4
28+
uses: actions/download-artifact@v8
2929
with:
3030
name: ${{ needs.build.outputs.artifact_name }}
3131
path: dist/
@@ -38,7 +38,7 @@ jobs:
3838
npx standard-changelog@^5.0.0 --release-count 2 --infile $outfile.tmp --outfile $outfile.tmp
3939
sed '1,3d' $outfile.tmp > $outfile
4040
- name: Create GitHub release
41-
uses: softprops/action-gh-release@v2
41+
uses: softprops/action-gh-release@v3
4242
with:
4343
token: ${{ secrets.GH_TOKEN }}
4444
fail_on_unmatched_files: true

.github/workflows/semantic-release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ jobs:
2222
new_release_version: ${{ steps.release.outputs.new_release_version }}
2323
steps:
2424
- name: Checkout
25-
uses: actions/checkout@v4
25+
uses: actions/checkout@v7
2626
with:
2727
fetch-depth: 0
2828
- name: Semantic release
2929
id: release
30-
uses: cycjimmy/semantic-release-action@v4
30+
uses: cycjimmy/semantic-release-action@v6
3131
with:
3232
dry_run: true
3333
release:
@@ -38,7 +38,7 @@ jobs:
3838
if: needs.semantic.outputs.new_release_published == 'true' && needs.semantic.outputs.new_release_version != '1.0.0'
3939
steps:
4040
- name: Checkout
41-
uses: actions/checkout@v4
41+
uses: actions/checkout@v7
4242
with:
4343
fetch-depth: 1
4444
- name: Release version ${{ needs.semantic.outputs.new_release_version }} on ${{ github.ref_name }}

0 commit comments

Comments
 (0)