Socket
Socket
Sign inDemoInstall

@aws-sdk/s3-request-presigner

Package Overview
Dependencies
Maintainers
5
Versions
448
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-sdk/s3-request-presigner - npm Package Compare versions

Comparing version 3.490.0 to 3.495.0

13

dist-cjs/constants.js

@@ -1,12 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ALGORITHM_IDENTIFIER = exports.HOST_HEADER = exports.EXPIRES_QUERY_PARAM = exports.SIGNED_HEADERS_QUERY_PARAM = exports.AMZ_DATE_QUERY_PARAM = exports.CREDENTIAL_QUERY_PARAM = exports.ALGORITHM_QUERY_PARAM = exports.SHA256_HEADER = exports.UNSIGNED_PAYLOAD = void 0;
exports.UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD";
exports.SHA256_HEADER = "X-Amz-Content-Sha256";
exports.ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm";
exports.CREDENTIAL_QUERY_PARAM = "X-Amz-Credential";
exports.AMZ_DATE_QUERY_PARAM = "X-Amz-Date";
exports.SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders";
exports.EXPIRES_QUERY_PARAM = "X-Amz-Expires";
exports.HOST_HEADER = "host";
exports.ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256";
module.exports = require("./index.js");

@@ -1,65 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSignedUrl = void 0;
const util_format_url_1 = require("@aws-sdk/util-format-url");
const middleware_endpoint_1 = require("@smithy/middleware-endpoint");
const protocol_http_1 = require("@smithy/protocol-http");
const presigner_1 = require("./presigner");
const getSignedUrl = async (client, command, options = {}) => {
var _a, _b;
let s3Presigner;
if (typeof client.config.endpointProvider === "function") {
const endpointV2 = await (0, middleware_endpoint_1.getEndpointFromInstructions)(command.input, command.constructor, client.config);
const authScheme = (_b = (_a = endpointV2.properties) === null || _a === void 0 ? void 0 : _a.authSchemes) === null || _b === void 0 ? void 0 : _b[0];
s3Presigner = new presigner_1.S3RequestPresigner({
...client.config,
signingName: authScheme === null || authScheme === void 0 ? void 0 : authScheme.signingName,
region: async () => authScheme === null || authScheme === void 0 ? void 0 : authScheme.signingRegion,
});
}
else {
s3Presigner = new presigner_1.S3RequestPresigner(client.config);
}
const presignInterceptMiddleware = (next, context) => async (args) => {
var _a, _b;
const { request } = args;
if (!protocol_http_1.HttpRequest.isInstance(request)) {
throw new Error("Request to be presigned is not an valid HTTP request.");
}
delete request.headers["amz-sdk-invocation-id"];
delete request.headers["amz-sdk-request"];
delete request.headers["x-amz-user-agent"];
let presigned;
const presignerOptions = {
...options,
signingRegion: (_a = options.signingRegion) !== null && _a !== void 0 ? _a : context["signing_region"],
signingService: (_b = options.signingService) !== null && _b !== void 0 ? _b : context["signing_service"],
};
if (context.s3ExpressIdentity) {
presigned = await s3Presigner.presignWithCredentials(request, context.s3ExpressIdentity, presignerOptions);
}
else {
presigned = await s3Presigner.presign(request, presignerOptions);
}
return {
response: {},
output: {
$metadata: { httpStatusCode: 200 },
presigned,
},
};
};
const middlewareName = "presignInterceptMiddleware";
const clientStack = client.middlewareStack.clone();
clientStack.addRelativeTo(presignInterceptMiddleware, {
name: middlewareName,
relation: "before",
toMiddleware: "awsAuthMiddleware",
override: true,
});
const handler = command.resolveMiddleware(clientStack, client.config, {});
const { output } = await handler({ input: command.input });
const { presigned } = output;
return (0, util_format_url_1.formatUrl)(presigned);
};
exports.getSignedUrl = getSignedUrl;
module.exports = require("./index.js");

163

dist-cjs/index.js

@@ -1,5 +0,158 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./getSignedUrl"), exports);
tslib_1.__exportStar(require("./presigner"), exports);
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
S3RequestPresigner: () => S3RequestPresigner,
getSignedUrl: () => getSignedUrl
});
module.exports = __toCommonJS(src_exports);
// src/getSignedUrl.ts
var import_util_format_url = require("@aws-sdk/util-format-url");
var import_middleware_endpoint = require("@smithy/middleware-endpoint");
var import_protocol_http = require("@smithy/protocol-http");
// src/presigner.ts
var import_signature_v4_multi_region = require("@aws-sdk/signature-v4-multi-region");
// src/constants.ts
var UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD";
var SHA256_HEADER = "X-Amz-Content-Sha256";
// src/presigner.ts
var _S3RequestPresigner = class _S3RequestPresigner {
constructor(options) {
const resolvedOptions = {
// Allow `signingName` because we want to support usecase of supply client's resolved config
// directly. Where service equals signingName.
service: options.signingName || options.service || "s3",
uriEscapePath: options.uriEscapePath || false,
applyChecksum: options.applyChecksum || false,
...options
};
this.signer = new import_signature_v4_multi_region.SignatureV4MultiRegion(resolvedOptions);
}
presign(requestToSign, { unsignableHeaders = /* @__PURE__ */ new Set(), unhoistableHeaders = /* @__PURE__ */ new Set(), ...options } = {}) {
this.prepareRequest(requestToSign, {
unsignableHeaders,
unhoistableHeaders
});
return this.signer.presign(requestToSign, {
expiresIn: 900,
unsignableHeaders,
unhoistableHeaders,
...options
});
}
presignWithCredentials(requestToSign, credentials, { unsignableHeaders = /* @__PURE__ */ new Set(), unhoistableHeaders = /* @__PURE__ */ new Set(), ...options } = {}) {
this.prepareRequest(requestToSign, {
unsignableHeaders,
unhoistableHeaders
});
return this.signer.presignWithCredentials(requestToSign, credentials, {
expiresIn: 900,
unsignableHeaders,
unhoistableHeaders,
...options
});
}
prepareRequest(requestToSign, { unsignableHeaders = /* @__PURE__ */ new Set(), unhoistableHeaders = /* @__PURE__ */ new Set() } = {}) {
unsignableHeaders.add("content-type");
Object.keys(requestToSign.headers).map((header) => header.toLowerCase()).filter((header) => header.startsWith("x-amz-server-side-encryption")).forEach((header) => {
unhoistableHeaders.add(header);
});
requestToSign.headers[SHA256_HEADER] = UNSIGNED_PAYLOAD;
const currentHostHeader = requestToSign.headers.host;
const port = requestToSign.port;
const expectedHostHeader = `${requestToSign.hostname}${requestToSign.port != null ? ":" + port : ""}`;
if (!currentHostHeader || currentHostHeader === requestToSign.hostname && requestToSign.port != null) {
requestToSign.headers.host = expectedHostHeader;
}
}
};
__name(_S3RequestPresigner, "S3RequestPresigner");
var S3RequestPresigner = _S3RequestPresigner;
// src/getSignedUrl.ts
var getSignedUrl = /* @__PURE__ */ __name(async (client, command, options = {}) => {
var _a, _b;
let s3Presigner;
if (typeof client.config.endpointProvider === "function") {
const endpointV2 = await (0, import_middleware_endpoint.getEndpointFromInstructions)(
command.input,
command.constructor,
client.config
);
const authScheme = (_b = (_a = endpointV2.properties) == null ? void 0 : _a.authSchemes) == null ? void 0 : _b[0];
s3Presigner = new S3RequestPresigner({
...client.config,
signingName: authScheme == null ? void 0 : authScheme.signingName,
region: async () => authScheme == null ? void 0 : authScheme.signingRegion
});
} else {
s3Presigner = new S3RequestPresigner(client.config);
}
const presignInterceptMiddleware = /* @__PURE__ */ __name((next, context) => async (args) => {
const { request } = args;
if (!import_protocol_http.HttpRequest.isInstance(request)) {
throw new Error("Request to be presigned is not an valid HTTP request.");
}
delete request.headers["amz-sdk-invocation-id"];
delete request.headers["amz-sdk-request"];
delete request.headers["x-amz-user-agent"];
let presigned2;
const presignerOptions = {
...options,
signingRegion: options.signingRegion ?? context["signing_region"],
signingService: options.signingService ?? context["signing_service"]
};
if (context.s3ExpressIdentity) {
presigned2 = await s3Presigner.presignWithCredentials(request, context.s3ExpressIdentity, presignerOptions);
} else {
presigned2 = await s3Presigner.presign(request, presignerOptions);
}
return {
// Intercept the middleware stack by returning fake response
response: {},
output: {
$metadata: { httpStatusCode: 200 },
presigned: presigned2
}
};
}, "presignInterceptMiddleware");
const middlewareName = "presignInterceptMiddleware";
const clientStack = client.middlewareStack.clone();
clientStack.addRelativeTo(presignInterceptMiddleware, {
name: middlewareName,
relation: "before",
toMiddleware: "awsAuthMiddleware",
override: true
});
const handler = command.resolveMiddleware(clientStack, client.config, {});
const { output } = await handler({ input: command.input });
const { presigned } = output;
return (0, import_util_format_url.formatUrl)(presigned);
}, "getSignedUrl");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
S3RequestPresigner,
getSignedUrl
});

@@ -1,57 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.S3RequestPresigner = void 0;
const signature_v4_multi_region_1 = require("@aws-sdk/signature-v4-multi-region");
const constants_1 = require("./constants");
class S3RequestPresigner {
constructor(options) {
const resolvedOptions = {
service: options.signingName || options.service || "s3",
uriEscapePath: options.uriEscapePath || false,
applyChecksum: options.applyChecksum || false,
...options,
};
this.signer = new signature_v4_multi_region_1.SignatureV4MultiRegion(resolvedOptions);
}
presign(requestToSign, { unsignableHeaders = new Set(), unhoistableHeaders = new Set(), ...options } = {}) {
this.prepareRequest(requestToSign, {
unsignableHeaders,
unhoistableHeaders,
});
return this.signer.presign(requestToSign, {
expiresIn: 900,
unsignableHeaders,
unhoistableHeaders,
...options,
});
}
presignWithCredentials(requestToSign, credentials, { unsignableHeaders = new Set(), unhoistableHeaders = new Set(), ...options } = {}) {
this.prepareRequest(requestToSign, {
unsignableHeaders,
unhoistableHeaders,
});
return this.signer.presignWithCredentials(requestToSign, credentials, {
expiresIn: 900,
unsignableHeaders,
unhoistableHeaders,
...options,
});
}
prepareRequest(requestToSign, { unsignableHeaders = new Set(), unhoistableHeaders = new Set() } = {}) {
unsignableHeaders.add("content-type");
Object.keys(requestToSign.headers)
.map((header) => header.toLowerCase())
.filter((header) => header.startsWith("x-amz-server-side-encryption"))
.forEach((header) => {
unhoistableHeaders.add(header);
});
requestToSign.headers[constants_1.SHA256_HEADER] = constants_1.UNSIGNED_PAYLOAD;
const currentHostHeader = requestToSign.headers.host;
const port = requestToSign.port;
const expectedHostHeader = `${requestToSign.hostname}${requestToSign.port != null ? ":" + port : ""}`;
if (!currentHostHeader || (currentHostHeader === requestToSign.hostname && requestToSign.port != null)) {
requestToSign.headers.host = expectedHostHeader;
}
}
}
exports.S3RequestPresigner = S3RequestPresigner;
module.exports = require("./index.js");
{
"name": "@aws-sdk/s3-request-presigner",
"version": "3.490.0",
"version": "3.495.0",
"scripts": {
"build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
"build:cjs": "tsc -p tsconfig.cjs.json",
"build:cjs": "node ../../scripts/compilation/inline s3-request-presigner",
"build:es": "tsc -p tsconfig.es.json",

@@ -24,14 +24,14 @@ "build:include:deps": "lerna run --scope $npm_package_name --include-dependencies build",

"dependencies": {
"@aws-sdk/signature-v4-multi-region": "3.489.0",
"@aws-sdk/types": "3.489.0",
"@aws-sdk/util-format-url": "3.489.0",
"@smithy/middleware-endpoint": "^2.3.0",
"@smithy/protocol-http": "^3.0.12",
"@smithy/smithy-client": "^2.2.1",
"@smithy/types": "^2.8.0",
"@aws-sdk/signature-v4-multi-region": "3.495.0",
"@aws-sdk/types": "3.495.0",
"@aws-sdk/util-format-url": "3.495.0",
"@smithy/middleware-endpoint": "^2.4.0",
"@smithy/protocol-http": "^3.1.0",
"@smithy/smithy-client": "^2.3.0",
"@smithy/types": "^2.9.0",
"tslib": "^2.5.0"
},
"devDependencies": {
"@aws-sdk/client-s3": "3.490.0",
"@smithy/hash-node": "^2.0.18",
"@aws-sdk/client-s3": "3.495.0",
"@smithy/hash-node": "^2.1.0",
"@tsconfig/recommended": "1.0.1",

@@ -38,0 +38,0 @@ "@types/node": "^14.14.31",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc