diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml index 4b417f38..9399ff01 100644 --- a/.github/workflows/check-dist.yml +++ b/.github/workflows/check-dist.yml @@ -47,10 +47,10 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Setup Node 20 + - name: Setup Node 24 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: - node-version: 20.x + node-version: 24.x cache: 'npm' - name: Install dependencies diff --git a/.github/workflows/test.yml b/.github/workflows/test_v2.yml similarity index 76% rename from .github/workflows/test.yml rename to .github/workflows/test_v2.yml index 01ae0e73..a0a5cf9e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test_v2.yml @@ -1,4 +1,5 @@ -name: Test Transfer Artefact +name: Test Transfer Artefact V2 + on: push: branches: @@ -12,10 +13,21 @@ on: jobs: test: - name: Tests - + name: Test Transfer Artefact V2 runs-on: ubuntu-latest + services: + floci: + image: hectorvent/floci:latest + ports: + - 4566:4566 + + env: + AWS_ACCESS_KEY_ID: test + AWS_SECRET_ACCESS_KEY: test + AWS_DEFAULT_REGION: us-east-1 + AWS_ENDPOINT_URL: http://localhost:4566 + steps: - name: Checkout Repository Code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -27,18 +39,28 @@ jobs: with: python-version: '3.x' - - name: Set up mock AWS credentials + - name: Install AWS CLI run: | - echo "AWS_ACCESS_KEY_ID=mock-key" >> $GITHUB_ENV - echo "AWS_SECRET_ACCESS_KEY=mock-secret" >> $GITHUB_ENV - echo "AWS_REGION=us-east-1" >> $GITHUB_ENV - echo "AWS_ENDPOINT_URL=http://s3.localhost.localstack.cloud:4566" >> $GITHUB_ENV + python -m pip install --upgrade pip + pip install awscli - - name: Start LocalStack - uses: LocalStack/setup-localstack@a9b3e54ee0052a2f40a4eb4ca8b39dfd3bc2bc65 # v0.2.3 - with: - image-tag: 'latest' - install-awslocal: 'true' + - name: Wait for Floci + shell: bash + run: | + for i in {1..30}; do + if aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls >/dev/null 2>&1; then + echo "Floci is ready" + exit 0 + fi + sleep 2 + done + echo "Floci did not become ready in time" + exit 1 + + - name: Create mock bucket + shell: bash + run: | + aws --endpoint-url="$AWS_ENDPOINT_URL" s3 mb s3://mock-bucket || true - name: Setup Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -68,31 +90,19 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - name: Create 2 special character file + shell: bash run: | - # First verify bucket still exists - echo "Verifying bucket exists before upload..." - if ! awslocal s3api head-bucket --bucket mock-bucket; then - echo "Bucket not found, recreating..." - awslocal s3 mb s3://mock-bucket - awslocal s3api put-bucket-acl --bucket mock-bucket --acl public-read-write - fi - - # Create test directory and files mkdir -p "path/to/special chars" echo "File with spaces" > "path/to/special chars/file with spaces.txt" echo "File with symbols" > "path/to/special chars/file-with-@#$symbols.txt" - # Test direct upload to verify bucket access - echo "Testing direct upload with awslocal..." - awslocal s3 cp "path/to/special chars/file with spaces.txt" "s3://mock-bucket/test-upload.txt" - if [ $? -eq 0 ]; then - echo "Direct upload test successful" - awslocal s3 rm "s3://mock-bucket/test-upload.txt" - else - echo "Direct upload test failed" - exit 1 - fi - shell: bash + echo "Testing direct upload with aws..." + aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp \ + "path/to/special chars/file with spaces.txt" \ + "s3://mock-bucket/test-upload.txt" + + aws --endpoint-url="$AWS_ENDPOINT_URL" s3 rm \ + "s3://mock-bucket/test-upload.txt" - name: Upload 2 special characters files uses: ./ @@ -103,9 +113,10 @@ jobs: artifact-bucket: 'mock-bucket' if-no-files-found: 'error' - - name: Check if 2 special characters files were uploaded to LocalStack + - name: Check if 2 special characters files were uploaded to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/special-char-artifact/${{ github.run_number }}-special-char-artifact --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/special-char-artifact/${{ github.run_number }}-special-char-artifact --recursive | wc -l) if [ "$FILE_COUNT" -ne 2 ]; then echo "Upload failed: Expected 2 files, but found $FILE_COUNT." exit 1 @@ -121,6 +132,7 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 2 special characters artifacts were downloaded + shell: bash run: | FILE_COUNT=$(ls download/special-char-artifact | wc -l) if [ "$FILE_COUNT" -ne 2 ]; then @@ -130,12 +142,12 @@ jobs: echo "Download successful: 2 files is present." - name: Create 100 small files + shell: bash run: | mkdir -p path/to/many-files for i in {1..100}; do echo "Content for file $i" > "path/to/many-files/file$i.txt" done - shell: bash - name: Upload 100 files uses: ./ @@ -146,9 +158,10 @@ jobs: artifact-bucket: 'mock-bucket' if-no-files-found: 'error' - - name: Check if 100 files were uploaded to LocalStack + - name: Check if 100 files were uploaded to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/Many-Files-Test/${{ github.run_number }}-Many-Files-Test --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/Many-Files-Test/${{ github.run_number }}-Many-Files-Test --recursive | wc -l) if [ "$FILE_COUNT" -ne 100 ]; then echo "Upload failed: Expected 100 files, but found $FILE_COUNT." exit 1 @@ -164,6 +177,7 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 100 files were downloaded + shell: bash run: | FILE_COUNT=$(ls download/many-files-test | wc -l) if [ "$FILE_COUNT" -ne 100 ]; then @@ -173,6 +187,7 @@ jobs: echo "Download successful: All 100 files are present." - name: Create 4 different file types + shell: bash run: | mkdir -p path/to/file-types echo '{"key": "value"}' > path/to/file-types/test.json @@ -180,7 +195,6 @@ jobs: echo 'binary content' > path/to/file-types/test.bin echo '#!/bin/bash\necho "test"' > path/to/file-types/test.sh chmod +x path/to/file-types/test.sh - shell: bash - name: Upload 4 different file types uses: ./ @@ -191,9 +205,10 @@ jobs: artifact-bucket: 'mock-bucket' if-no-files-found: 'error' - - name: Check if 4 different file types were uploaded to LocalStack + - name: Check if 4 different file types were uploaded to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/File-Types-Test/${{ github.run_number }}-File-Types-Test --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/File-Types-Test/${{ github.run_number }}-File-Types-Test --recursive | wc -l) if [ "$FILE_COUNT" -ne 4 ]; then echo "Upload failed: Expected 4 files, but found $FILE_COUNT." exit 1 @@ -209,6 +224,7 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 4 different file types were downloaded + shell: bash run: | FILE_COUNT=$(ls download/file-types-test | wc -l) if [ "$FILE_COUNT" -ne 4 ]; then @@ -218,6 +234,7 @@ jobs: echo "Download successful: All 4 files are present." - name: Create 3 test files in 3 paths + shell: bash run: | mkdir -p path/to/dir-1 mkdir -p path/to/dir-2 @@ -233,9 +250,10 @@ jobs: path: 'path/**/dir*/' artifact-bucket: 'mock-bucket' - - name: Check if 3 files were uploaded when using wildcard pattern to LocalStack + - name: Check if 3 files were uploaded when using wildcard pattern to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/wildcard-artifacts/${{ github.run_number }}-wildcard-artifacts --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/wildcard-artifacts/${{ github.run_number }}-wildcard-artifacts --recursive | wc -l) if [ "$FILE_COUNT" -ne 3 ]; then echo "Upload failed: Expected 3 files, but found $FILE_COUNT." exit 1 @@ -251,6 +269,7 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 3 files were downloaded when using wildcard pattern + shell: bash run: | FILE_COUNT=$(find download/wildcard-artifacts -type f | wc -l) if [ "$FILE_COUNT" -ne 3 ]; then @@ -268,9 +287,10 @@ jobs: artifact-bucket: 'mock-bucket' if-no-files-found: 'error' - - name: Check if 1 GZip artifact was uploaded to LocalStack + - name: Check if 1 GZip artifact was uploaded to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/GZip-Artifact/${{ github.run_number }}-GZip-Artifact --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/GZip-Artifact/${{ github.run_number }}-GZip-Artifact --recursive | wc -l) if [ "$FILE_COUNT" -ne 1 ]; then echo "Upload failed: Expected 1 file, but found $FILE_COUNT." exit 1 @@ -286,6 +306,7 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 1 GZip artifact was downloaded + shell: bash run: | FILE_COUNT=$(ls download/GZip-Artifact | wc -l) if [ "$FILE_COUNT" -ne 1 ]; then @@ -306,9 +327,10 @@ jobs: artifact-bucket: 'mock-bucket' if-no-files-found: 'error' - - name: Check if 3 multi-path files were uploaded to LocalStack + - name: Check if 3 multi-path files were uploaded to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/Multi-Path-Artifact/${{ github.run_number }}-Multi-Path-Artifact --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/Multi-Path-Artifact/${{ github.run_number }}-Multi-Path-Artifact --recursive | wc -l) if [ "$FILE_COUNT" -ne 3 ]; then echo "Upload failed: Expected 3 files, but found $FILE_COUNT." exit 1 @@ -325,6 +347,7 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 3 multi-path files were downloaded + shell: bash run: | FILE_COUNT=$(find download/Multi-Path-Artifact -type f | wc -l) if [ "$FILE_COUNT" -ne 3 ]; then @@ -334,10 +357,10 @@ jobs: echo "Upload successful: All 3 files are present." - name: Create 1 test file + shell: bash run: | mkdir -p some/new/path echo "Lorem ipsum dolor sit amet" > some/new/path/file1.txt - shell: bash - name: Upload 1 file artifact uses: ./ @@ -348,15 +371,15 @@ jobs: artifact-bucket: 'mock-bucket' if-no-files-found: 'error' - - name: Check if 1 single file artifact was uploaded to LocalStack + - name: Check if 1 single file artifact was uploaded to Floci + shell: bash run: | - FILE_COUNT=$(aws --endpoint-url=http://localhost:4566 s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/artifact-a/${{ github.run_number }}-artifact-a --recursive | wc -l) + FILE_COUNT=$(aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls s3://mock-bucket/ci-pipeline-upload-artifacts/artifact-a/${{ github.run_number }}-artifact-a --recursive | wc -l) if [ "$FILE_COUNT" -ne 1 ]; then echo "Upload failed: Expected 1 file, but found $FILE_COUNT." exit 1 fi echo "Upload successful: 1 file is present." - shell: bash - name: Download 1 file artifact uses: ./ @@ -367,14 +390,14 @@ jobs: artifact-bucket: 'mock-bucket' - name: Check if 1 single file artifact was downloaded + shell: bash run: | - FILE_COUNT=$(ls download/artifact-a | wc -l) + FILE_COUNT=$(ls download/artifact-a | wc -l) if [ "$FILE_COUNT" -ne 1 ]; then echo "Download failed: Expected 1 file, but found $FILE_COUNT." exit 1 fi echo "Download successful: 1 file is present." - shell: bash - name: Create empty directory run: mkdir -p empty-dir-test diff --git a/.licenses/npm/@types/node.dep.yml b/.licenses/npm/@types/node.dep.yml index a6dec428..ff7bcb85 100644 --- a/.licenses/npm/@types/node.dep.yml +++ b/.licenses/npm/@types/node.dep.yml @@ -1,6 +1,6 @@ --- name: "@types/node" -version: 20.17.19 +version: 24.12.2 type: npm summary: TypeScript definitions for node homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node diff --git a/.licenses/npm/undici-types.dep.yml b/.licenses/npm/undici-types.dep.yml index 1116934a..b8ccaf1c 100644 --- a/.licenses/npm/undici-types.dep.yml +++ b/.licenses/npm/undici-types.dep.yml @@ -1,6 +1,6 @@ --- name: undici-types -version: 6.19.8 +version: 7.16.0 type: npm summary: A stand-alone types package for Undici homepage: https://undici.nodejs.org diff --git a/.tool-versions b/.tool-versions index 33f36804..14f3ec61 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 20.11.0 \ No newline at end of file +nodejs 24.13.0 \ No newline at end of file diff --git a/action.yml b/action.yml index 0c708eea..08a191ab 100644 --- a/action.yml +++ b/action.yml @@ -39,5 +39,5 @@ inputs: description: 'Github run number used to identify artifacts' default: ${{ github.run_number }} runs: - using: node20 + using: node24 main: 'dist/index.js' diff --git a/package-lock.json b/package-lock.json index 9b6270ec..69e4db2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@jest/types": "^29.6.3", "@types/jest": "^29.5.14", - "@types/node": "^20.11.16", + "@types/node": "^24.0.0", "@typescript-eslint/eslint-plugin": "^8.25", "@typescript-eslint/parser": "^8.25.0", "concurrently": "^8.2.2", @@ -45,6 +45,9 @@ "ts-jest": "^29.2.6", "ts-node": "^10.9.2", "typescript": "^5.7.3" + }, + "engines": { + "node": ">=24" } }, "node_modules/@actions/artifact": { @@ -1228,6 +1231,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", @@ -2908,6 +2912,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "peer": true, "dependencies": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", @@ -3979,11 +3984,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.17.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.19.tgz", - "integrity": "sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==", + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", + "peer": true, "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~7.16.0" } }, "node_modules/@types/stack-utils": { @@ -4239,6 +4245,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4615,6 +4622,7 @@ "resolved": "https://registry.npmjs.org/aws-crt/-/aws-crt-1.28.1.tgz", "integrity": "sha512-3cu6kLKYlJbCeYUWsuFpbEFWLt5pIoRYqcpRC9YU5QcUh2nKCKFOn9vi1eyOSC55Sp6xOMgLNhwaN1CIMH8rLg==", "hasInstallScript": true, + "peer": true, "dependencies": { "@aws-sdk/util-utf8-browser": "^3.259.0", "@httptoolkit/websocket-stream": "^6.0.1", @@ -4920,6 +4928,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -6013,6 +6022,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -6072,6 +6082,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.2.tgz", "integrity": "sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==", "dev": true, + "peer": true, "bin": { "eslint-config-prettier": "build/bin/cli.js" }, @@ -6295,6 +6306,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -8007,6 +8019,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -9540,6 +9553,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -10673,6 +10687,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "peer": true, "engines": { "node": ">=12" }, @@ -10785,6 +10800,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -10986,6 +11002,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11046,9 +11063,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" }, "node_modules/universal-user-agent": { "version": "6.0.1", @@ -11373,6 +11390,7 @@ "version": "8.19.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "peer": true, "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index 39e8bc9a..24be426e 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,9 @@ "url": "https://github.com/actions/upload-artifact/issues" }, "homepage": "https://github.com/actions/upload-artifact#readme", + "engines": { + "node": ">=24" + }, "dependencies": { "@actions/artifact": "^2.2.2", "@actions/core": "^1.11.1", @@ -43,7 +46,7 @@ "devDependencies": { "@jest/types": "^29.6.3", "@types/jest": "^29.5.14", - "@types/node": "^20.11.16", + "@types/node": "^24.0.0", "@typescript-eslint/eslint-plugin": "^8.25", "@typescript-eslint/parser": "^8.25.0", "esbuild": "^0.25.0",