aws4-axios
Advanced tools
Comparing version 3.3.14 to 3.3.15
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || (function () { | ||
var ownKeys = function(o) { | ||
ownKeys = Object.getOwnPropertyNames || function (o) { | ||
var ar = []; | ||
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; | ||
return ar; | ||
}; | ||
return ownKeys(o); | ||
}; | ||
return function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
})(); | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
@@ -22,9 +55,6 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.aws4Interceptor = void 0; | ||
const aws4_1 = require("aws4"); | ||
const axios_1 = __importDefault(require("axios")); | ||
const axios_1 = __importStar(require("axios")); | ||
const assumeRoleCredentialsProvider_1 = require("./credentials/assumeRoleCredentialsProvider"); | ||
@@ -79,5 +109,12 @@ const isCredentialsProvider_1 = require("./credentials/isCredentialsProvider"); | ||
const { data, method } = config; | ||
const headers = config.headers; | ||
const transformRequest = getTransformer(config); | ||
transformRequest.bind(config); | ||
// Save, and reset headers on retry | ||
if (config._originalHeaders) { | ||
config.headers = new axios_1.AxiosHeaders(config._originalHeaders); | ||
} | ||
else { | ||
config._originalHeaders = new axios_1.AxiosHeaders(config.headers); | ||
} | ||
const headers = config.headers; | ||
// @ts-expect-error we bound the function to the config object | ||
@@ -84,0 +121,0 @@ const transformedData = transformRequest(data, headers); |
@@ -100,3 +100,3 @@ "use strict"; | ||
})); | ||
it("signs url query paremeters in GET requests", () => __awaiter(void 0, void 0, void 0, function* () { | ||
it("signs url query parameters in GET requests", () => __awaiter(void 0, void 0, void 0, function* () { | ||
// Arrange | ||
@@ -128,3 +128,3 @@ const request = { | ||
})); | ||
it("signs query paremeters in GET requests", () => __awaiter(void 0, void 0, void 0, function* () { | ||
it("signs query parameters in GET requests", () => __awaiter(void 0, void 0, void 0, function* () { | ||
// Arrange | ||
@@ -487,2 +487,40 @@ const request = { | ||
})); | ||
it("supports retries", () => __awaiter(void 0, void 0, void 0, function* () { | ||
// Arrange | ||
const data = { foo: "bar" }; | ||
const request = { | ||
method: "POST", | ||
url: "https://example.com/foobar", | ||
data, | ||
headers: getDefaultHeaders(), | ||
transformRequest: getDefaultTransformRequest(), | ||
}; | ||
aws4_1.sign.mockImplementation((request) => { | ||
// neither call should contain the previous Authorization header | ||
expect(request).toEqual({ | ||
service: "execute-api", | ||
path: "/foobar", | ||
method: "POST", | ||
region: "local", | ||
host: "example.com", | ||
body: '{"foo":"bar"}', | ||
headers: { "Content-Type": "application/json" }, | ||
signQuery: undefined | ||
}); | ||
request.headers['Authorization'] = 'signed'; | ||
return request; | ||
}); | ||
const interceptor = (0, _1.aws4Interceptor)({ | ||
options: { | ||
region: "local", | ||
service: "execute-api", | ||
}, | ||
instance: axios_1.default, | ||
}); | ||
// Act | ||
yield interceptor(request); | ||
yield interceptor(request); | ||
yield interceptor(request); | ||
expect(aws4_1.sign).toBeCalledTimes(3); | ||
})); | ||
}); |
{ | ||
"name": "aws4-axios", | ||
"version": "3.3.14", | ||
"version": "3.3.15", | ||
"description": "Axios request interceptor for signing requests with AWSv4", | ||
@@ -47,10 +47,10 @@ "author": "James Bourne", | ||
"@typescript-eslint/parser": "^7.0.0", | ||
"axios": "^1.6.7", | ||
"axios-mock-adapter": "^2.0.0", | ||
"axios": "^1.7.7", | ||
"axios-mock-adapter": "^2.1.0", | ||
"eslint": "^8.0.0", | ||
"eslint-config-prettier": "^9.0.0", | ||
"eslint-config-prettier": "^10.0.0", | ||
"husky": "^9.0.0", | ||
"jest": "^29.0.0", | ||
"lint-staged": "^15.0.0", | ||
"nock": "^13.3.0", | ||
"nock": "^14.0.0", | ||
"npm-run-all2": "^7.0.0", | ||
@@ -57,0 +57,0 @@ "prettier": "^3.0.0", |
71335
1457