@aws-sdk/s3-request-presigner
Advanced tools
Comparing version 3.490.0 to 3.495.0
@@ -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"); |
@@ -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", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
33106
368
+ Added@aws-sdk/middleware-sdk-s3@3.495.0(transitive)
+ Added@aws-sdk/signature-v4-multi-region@3.495.0(transitive)
+ Added@aws-sdk/types@3.495.0(transitive)
+ Added@aws-sdk/util-arn-parser@3.495.0(transitive)
+ Added@aws-sdk/util-format-url@3.495.0(transitive)
- Removed@aws-sdk/middleware-sdk-s3@3.489.0(transitive)
- Removed@aws-sdk/signature-v4-multi-region@3.489.0(transitive)
- Removed@aws-sdk/types@3.489.0(transitive)
- Removed@aws-sdk/util-arn-parser@3.465.0(transitive)
- Removed@aws-sdk/util-format-url@3.489.0(transitive)
Updated@aws-sdk/types@3.495.0
Updated@smithy/protocol-http@^3.1.0
Updated@smithy/smithy-client@^2.3.0
Updated@smithy/types@^2.9.0