Migrate AWS SDK for JavaScript v2 APIs to v3

This was cherry-picked from https://github.com/handlebars-lang/handlebars.js/pull/2020.
This commit is contained in:
Jakob Linskeseder
2026-03-18 20:22:55 +01:00
committed by Jay Linski
parent 71350d90ec
commit d025292e06
3 changed files with 4468 additions and 727 deletions
+4444 -705
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -64,6 +64,7 @@
"yargs": "^16.2.0"
},
"devDependencies": {
"@aws-sdk/client-s3": "^3.1011.0",
"@playwright/test": "^1.58.2",
"@rspack/cli": "^1.7.8",
"@rspack/core": "^1.7.8",
@@ -72,7 +73,6 @@
"@vitest/browser": "^4.0.18",
"@vitest/browser-playwright": "^4.0.18",
"@vitest/coverage-v8": "^4.0.18",
"aws-sdk": "^2.1.49",
"concurrently": "^5.0.0",
"eslint": "^10.0.3",
"eslint-plugin-compat": "^7.0.1",
+23 -21
View File
@@ -1,9 +1,11 @@
/* eslint-disable no-console */
const fs = require('fs');
const AWS = require('aws-sdk');
const { S3, PutObjectCommand } = require('@aws-sdk/client-s3');
const git = require('./util/git');
const semver = require('semver');
let s3Client;
async function main() {
console.log('remotes: ' + (await git.remotes()));
console.log('branches: ' + (await git.branches()));
@@ -25,13 +27,13 @@ async function main() {
}
if (suffixes.length > 0) {
initSDK();
validateS3Env();
console.log('publishing file-suffixes: ' + JSON.stringify(suffixes));
await publish(suffixes);
}
}
function initSDK() {
function validateS3Env() {
const bucket = process.env.S3_BUCKET_NAME,
key = process.env.S3_ACCESS_KEY_ID,
secret = process.env.S3_SECRET_ACCESS_KEY;
@@ -39,8 +41,6 @@ function initSDK() {
if (!bucket || !key || !secret) {
throw new Error('Missing S3 config values');
}
AWS.config.update({ accessKeyId: key, secretAccessKey: secret });
}
async function publish(suffixes) {
@@ -65,25 +65,27 @@ async function publishSuffix(suffix) {
}
async function uploadToBucket(localFile, nameInBucket) {
const bucket = process.env.S3_BUCKET_NAME;
const uploadParams = {
Bucket: bucket,
Key: nameInBucket,
Body: fs.readFileSync(localFile, 'utf8'),
};
return s3PutObject(uploadParams);
const s3 = getS3Client();
return s3.send(
new PutObjectCommand({
Bucket: process.env.S3_BUCKET_NAME,
Key: nameInBucket,
Body: fs.readFileSync(localFile, 'utf8'),
})
);
}
function s3PutObject(uploadParams) {
const s3 = new AWS.S3();
return new Promise((resolve, reject) => {
s3.putObject(uploadParams, (err) => {
if (err != null) {
return reject(err);
}
resolve();
function getS3Client() {
if (!s3Client) {
s3Client = new S3({
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
},
});
});
}
return s3Client;
}
function getNameInBucket(filename, suffix) {