@maxkabechani/mtn-momo-sdk 0.2.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATION.md +79 -0
- package/README.md +68 -5
- package/lib/cjs/auth.d.ts +3 -3
- package/lib/cjs/auth.d.ts.map +1 -1
- package/lib/cjs/auth.js +31 -11
- package/lib/cjs/auth.js.map +1 -1
- package/lib/cjs/cli.js +5 -2
- package/lib/cjs/cli.js.map +1 -1
- package/lib/cjs/client.d.ts +6 -6
- package/lib/cjs/client.d.ts.map +1 -1
- package/lib/cjs/client.js +16 -44
- package/lib/cjs/client.js.map +1 -1
- package/lib/cjs/collections.d.ts +7 -6
- package/lib/cjs/collections.d.ts.map +1 -1
- package/lib/cjs/collections.js +45 -25
- package/lib/cjs/collections.js.map +1 -1
- package/lib/cjs/common.d.ts +13 -4
- package/lib/cjs/common.d.ts.map +1 -1
- package/lib/cjs/common.js.map +1 -1
- package/lib/cjs/disbursements.d.ts +8 -11
- package/lib/cjs/disbursements.d.ts.map +1 -1
- package/lib/cjs/disbursements.js +46 -31
- package/lib/cjs/disbursements.js.map +1 -1
- package/lib/cjs/errors.d.ts +16 -7
- package/lib/cjs/errors.d.ts.map +1 -1
- package/lib/cjs/errors.js +33 -23
- package/lib/cjs/errors.js.map +1 -1
- package/lib/cjs/httpClient.d.ts +90 -0
- package/lib/cjs/httpClient.d.ts.map +1 -0
- package/lib/cjs/httpClient.js +388 -0
- package/lib/cjs/httpClient.js.map +1 -0
- package/lib/cjs/index.d.ts +12 -11
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +30 -28
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/remittance.d.ts +6 -6
- package/lib/cjs/remittance.d.ts.map +1 -1
- package/lib/cjs/remittance.js +58 -41
- package/lib/cjs/remittance.js.map +1 -1
- package/lib/cjs/security.d.ts +32 -0
- package/lib/cjs/security.d.ts.map +1 -0
- package/lib/cjs/security.js +253 -0
- package/lib/cjs/security.js.map +1 -0
- package/lib/cjs/users.d.ts +5 -3
- package/lib/cjs/users.d.ts.map +1 -1
- package/lib/cjs/users.js +17 -6
- package/lib/cjs/users.js.map +1 -1
- package/lib/cjs/validate.d.ts +7 -7
- package/lib/cjs/validate.d.ts.map +1 -1
- package/lib/cjs/validate.js +67 -84
- package/lib/cjs/validate.js.map +1 -1
- package/lib/esm/auth.d.ts +3 -3
- package/lib/esm/auth.d.ts.map +1 -1
- package/lib/esm/auth.js +28 -8
- package/lib/esm/auth.js.map +1 -1
- package/lib/esm/cli.js +5 -2
- package/lib/esm/cli.js.map +1 -1
- package/lib/esm/client.d.ts +6 -6
- package/lib/esm/client.d.ts.map +1 -1
- package/lib/esm/client.js +16 -11
- package/lib/esm/client.js.map +1 -1
- package/lib/esm/collections.d.ts +7 -6
- package/lib/esm/collections.d.ts.map +1 -1
- package/lib/esm/collections.js +38 -18
- package/lib/esm/collections.js.map +1 -1
- package/lib/esm/common.d.ts +13 -4
- package/lib/esm/common.d.ts.map +1 -1
- package/lib/esm/common.js.map +1 -1
- package/lib/esm/disbursements.d.ts +8 -11
- package/lib/esm/disbursements.d.ts.map +1 -1
- package/lib/esm/disbursements.js +34 -19
- package/lib/esm/disbursements.js.map +1 -1
- package/lib/esm/errors.d.ts +16 -7
- package/lib/esm/errors.d.ts.map +1 -1
- package/lib/esm/errors.js +16 -6
- package/lib/esm/errors.js.map +1 -1
- package/lib/esm/httpClient.d.ts +90 -0
- package/lib/esm/httpClient.d.ts.map +1 -0
- package/lib/esm/httpClient.js +378 -0
- package/lib/esm/httpClient.js.map +1 -0
- package/lib/esm/index.d.ts +12 -11
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +12 -11
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/remittance.d.ts +6 -6
- package/lib/esm/remittance.d.ts.map +1 -1
- package/lib/esm/remittance.js +52 -35
- package/lib/esm/remittance.js.map +1 -1
- package/lib/esm/security.d.ts +32 -0
- package/lib/esm/security.d.ts.map +1 -0
- package/lib/esm/security.js +234 -0
- package/lib/esm/security.js.map +1 -0
- package/lib/esm/users.d.ts +5 -3
- package/lib/esm/users.d.ts.map +1 -1
- package/lib/esm/users.js +17 -6
- package/lib/esm/users.js.map +1 -1
- package/lib/esm/validate.d.ts +7 -7
- package/lib/esm/validate.d.ts.map +1 -1
- package/lib/esm/validate.js +66 -84
- package/lib/esm/validate.js.map +1 -1
- package/package.json +23 -7
package/lib/cjs/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAa,SAAQ,KAAK;IAC9B,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;gBAEf,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IACrC,IAAI,SAA2B;CAChD;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5B,IAAI,SAAkB;CACvC;AAED,qBAAa,uBAAwB,SAAQ,YAAY;IACvC,IAAI,SAA6B;CAClD;AAED,qBAAa,2BAA4B,SAAQ,YAAY;IAC3C,IAAI,SAAiC;CACtD;AAED,qBAAa,oBAAqB,SAAQ,YAAY;IACpC,IAAI,SAA0B;CAC/C;AAED,qBAAa,gCAAiC,SAAQ,YAAY;IAChD,IAAI,SAAsC;CAC3D;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/B,IAAI,SAAqB;CAC1C;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnC,IAAI,SAAyB;CAC9C;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClC,IAAI,SAAwB;CAC7C;AAED,qBAAa,6BAA8B,SAAQ,YAAY;IAC7C,IAAI,SAAmC;CACxD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;IACtC,IAAI,SAA4B;CACjD;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClC,IAAI,SAAwB;CAC7C;AAED,qBAAa,uBAAwB,SAAQ,YAAY;IACvC,IAAI,SAA6B;CAClD;AAED,qBAAa,yBAA0B,SAAQ,YAAY;IACzC,IAAI,SAA+B;CACpD;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IACrC,IAAI,SAA2B;CAChD;AAED,qBAAa,uBAAwB,SAAQ,YAAY;IACvC,IAAI,SAA6B;CAClD;AAED,qBAAa,yBAA0B,SAAQ,YAAY;IACzC,IAAI,SAA+B;CACpD;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChC,IAAI,SAAsB;CAC3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,KAAK,CAajE;AAED,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,4bAsE9D;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,gBAWhE"}
|
package/lib/cjs/errors.js
CHANGED
|
@@ -4,10 +4,12 @@ exports.UnspecifiedError = exports.TransactionCancelledError = exports.ServiceUn
|
|
|
4
4
|
exports.handleError = handleError;
|
|
5
5
|
exports.getError = getError;
|
|
6
6
|
exports.getTransactionError = getTransactionError;
|
|
7
|
-
const
|
|
7
|
+
const common_js_1 = require("./common.js");
|
|
8
|
+
const httpClient_js_1 = require("./httpClient.js");
|
|
9
|
+
const security_js_1 = require("./security.js");
|
|
8
10
|
class MtnMoMoError extends Error {
|
|
9
11
|
constructor(message) {
|
|
10
|
-
super(message);
|
|
12
|
+
super(message ? (0, security_js_1.redactSensitiveText)(message) : message);
|
|
11
13
|
Object.setPrototypeOf(this, new.target.prototype);
|
|
12
14
|
}
|
|
13
15
|
}
|
|
@@ -139,69 +141,77 @@ class UnspecifiedError extends MtnMoMoError {
|
|
|
139
141
|
}
|
|
140
142
|
exports.UnspecifiedError = UnspecifiedError;
|
|
141
143
|
function handleError(error) {
|
|
142
|
-
if (!error.
|
|
144
|
+
if (!(error instanceof httpClient_js_1.HttpClientError) || !error.providerCode) {
|
|
143
145
|
return error;
|
|
144
146
|
}
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
+
const mapped = getError(error.providerCode, error.providerMessage);
|
|
148
|
+
mapped.status = error.status;
|
|
149
|
+
mapped.code = error.providerCode;
|
|
150
|
+
mapped.retryable = error.retryable;
|
|
151
|
+
return mapped;
|
|
147
152
|
}
|
|
148
153
|
function getError(code, message) {
|
|
149
|
-
if (code ===
|
|
154
|
+
if (code === common_js_1.FailureReason.APPROVAL_REJECTED) {
|
|
150
155
|
return new ApprovalRejectedError(message);
|
|
151
156
|
}
|
|
152
|
-
if (code ===
|
|
157
|
+
if (code === common_js_1.FailureReason.EXPIRED) {
|
|
153
158
|
return new ExpiredError(message);
|
|
154
159
|
}
|
|
155
|
-
if (code ===
|
|
160
|
+
if (code === common_js_1.FailureReason.INTERNAL_PROCESSING_ERROR) {
|
|
156
161
|
return new InternalProcessingError(message);
|
|
157
162
|
}
|
|
158
|
-
if (code ===
|
|
163
|
+
if (code === common_js_1.FailureReason.INVALID_CALLBACK_URL_HOST) {
|
|
159
164
|
return new InvalidCallbackUrlHostError(message);
|
|
160
165
|
}
|
|
161
|
-
if (code ===
|
|
166
|
+
if (code === common_js_1.FailureReason.INVALID_CURRENCY) {
|
|
162
167
|
return new InvalidCurrencyError(message);
|
|
163
168
|
}
|
|
164
|
-
if (code ===
|
|
169
|
+
if (code === common_js_1.FailureReason.NOT_ALLOWED) {
|
|
165
170
|
return new NotAllowedError(message);
|
|
166
171
|
}
|
|
167
|
-
if (code ===
|
|
172
|
+
if (code === common_js_1.FailureReason.NOT_ALLOWED_TARGET_ENVIRONMENT) {
|
|
168
173
|
return new NotAllowedTargetEnvironmentError(message);
|
|
169
174
|
}
|
|
170
|
-
if (code ===
|
|
175
|
+
if (code === common_js_1.FailureReason.NOT_ENOUGH_FUNDS) {
|
|
171
176
|
return new NotEnoughFundsError(message);
|
|
172
177
|
}
|
|
173
|
-
if (code ===
|
|
178
|
+
if (code === common_js_1.FailureReason.PAYEE_NOT_FOUND) {
|
|
174
179
|
return new PayeeNotFoundError(message);
|
|
175
180
|
}
|
|
176
|
-
if (code ===
|
|
181
|
+
if (code === common_js_1.FailureReason.PAYEE_NOT_ALLOWED_TO_RECEIVE) {
|
|
177
182
|
return new PayeeNotAllowedToReceiveError(message);
|
|
178
183
|
}
|
|
179
|
-
if (code ===
|
|
184
|
+
if (code === common_js_1.FailureReason.PAYER_LIMIT_REACHED) {
|
|
180
185
|
return new PayerLimitReachedError(message);
|
|
181
186
|
}
|
|
182
|
-
if (code ===
|
|
187
|
+
if (code === common_js_1.FailureReason.PAYER_NOT_FOUND) {
|
|
183
188
|
return new PayerNotFoundError(message);
|
|
184
189
|
}
|
|
185
|
-
if (code ===
|
|
190
|
+
if (code === common_js_1.FailureReason.PAYMENT_NOT_APPROVED) {
|
|
186
191
|
return new PaymentNotApprovedError(message);
|
|
187
192
|
}
|
|
188
|
-
if (code ===
|
|
193
|
+
if (code === common_js_1.FailureReason.RESOURCE_ALREADY_EXIST) {
|
|
189
194
|
return new ResourceAlreadyExistError(message);
|
|
190
195
|
}
|
|
191
|
-
if (code ===
|
|
196
|
+
if (code === common_js_1.FailureReason.RESOURCE_NOT_FOUND) {
|
|
192
197
|
return new ResourceNotFoundError(message);
|
|
193
198
|
}
|
|
194
|
-
if (code ===
|
|
199
|
+
if (code === common_js_1.FailureReason.SERVICE_UNAVAILABLE) {
|
|
195
200
|
return new ServiceUnavailableError(message);
|
|
196
201
|
}
|
|
197
|
-
if (code ===
|
|
202
|
+
if (code === common_js_1.FailureReason.TRANSACTION_CANCELED) {
|
|
198
203
|
return new TransactionCancelledError(message);
|
|
199
204
|
}
|
|
200
205
|
return new UnspecifiedError(message);
|
|
201
206
|
}
|
|
202
207
|
function getTransactionError(transaction) {
|
|
203
208
|
const error = getError(transaction.reason);
|
|
204
|
-
error.transaction =
|
|
209
|
+
error.transaction = {
|
|
210
|
+
status: transaction.status,
|
|
211
|
+
reason: transaction.reason,
|
|
212
|
+
financialTransactionId: transaction.financialTransactionId,
|
|
213
|
+
externalId: transaction.externalId,
|
|
214
|
+
};
|
|
205
215
|
return error;
|
|
206
216
|
}
|
|
207
217
|
//# sourceMappingURL=errors.js.map
|
package/lib/cjs/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAkGA,kCAaC;AAED,4BAsEC;AAED,kDAYC;AAnMD,2CAA4C;AAE5C,mDAAkD;AAClD,+CAAoD;AASpD,MAAa,YAAa,SAAQ,KAAK;IAMrC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,iCAAmB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAVD,oCAUC;AAED,MAAa,qBAAsB,SAAQ,YAAY;IAAvD;;QACkB,SAAI,GAAG,uBAAuB,CAAC;IACjD,CAAC;CAAA;AAFD,sDAEC;AAED,MAAa,YAAa,SAAQ,YAAY;IAA9C;;QACkB,SAAI,GAAG,cAAc,CAAC;IACxC,CAAC;CAAA;AAFD,oCAEC;AAED,MAAa,uBAAwB,SAAQ,YAAY;IAAzD;;QACkB,SAAI,GAAG,yBAAyB,CAAC;IACnD,CAAC;CAAA;AAFD,0DAEC;AAED,MAAa,2BAA4B,SAAQ,YAAY;IAA7D;;QACkB,SAAI,GAAG,6BAA6B,CAAC;IACvD,CAAC;CAAA;AAFD,kEAEC;AAED,MAAa,oBAAqB,SAAQ,YAAY;IAAtD;;QACkB,SAAI,GAAG,sBAAsB,CAAC;IAChD,CAAC;CAAA;AAFD,oDAEC;AAED,MAAa,gCAAiC,SAAQ,YAAY;IAAlE;;QACkB,SAAI,GAAG,kCAAkC,CAAC;IAC5D,CAAC;CAAA;AAFD,4EAEC;AAED,MAAa,eAAgB,SAAQ,YAAY;IAAjD;;QACkB,SAAI,GAAG,iBAAiB,CAAC;IAC3C,CAAC;CAAA;AAFD,0CAEC;AAED,MAAa,mBAAoB,SAAQ,YAAY;IAArD;;QACkB,SAAI,GAAG,qBAAqB,CAAC;IAC/C,CAAC;CAAA;AAFD,kDAEC;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAApD;;QACkB,SAAI,GAAG,oBAAoB,CAAC;IAC9C,CAAC;CAAA;AAFD,gDAEC;AAED,MAAa,6BAA8B,SAAQ,YAAY;IAA/D;;QACkB,SAAI,GAAG,+BAA+B,CAAC;IACzD,CAAC;CAAA;AAFD,sEAEC;AAED,MAAa,sBAAuB,SAAQ,YAAY;IAAxD;;QACkB,SAAI,GAAG,wBAAwB,CAAC;IAClD,CAAC;CAAA;AAFD,wDAEC;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAApD;;QACkB,SAAI,GAAG,oBAAoB,CAAC;IAC9C,CAAC;CAAA;AAFD,gDAEC;AAED,MAAa,uBAAwB,SAAQ,YAAY;IAAzD;;QACkB,SAAI,GAAG,yBAAyB,CAAC;IACnD,CAAC;CAAA;AAFD,0DAEC;AAED,MAAa,yBAA0B,SAAQ,YAAY;IAA3D;;QACkB,SAAI,GAAG,2BAA2B,CAAC;IACrD,CAAC;CAAA;AAFD,8DAEC;AAED,MAAa,qBAAsB,SAAQ,YAAY;IAAvD;;QACkB,SAAI,GAAG,uBAAuB,CAAC;IACjD,CAAC;CAAA;AAFD,sDAEC;AAED,MAAa,uBAAwB,SAAQ,YAAY;IAAzD;;QACkB,SAAI,GAAG,yBAAyB,CAAC;IACnD,CAAC;CAAA;AAFD,0DAEC;AAED,MAAa,yBAA0B,SAAQ,YAAY;IAA3D;;QACkB,SAAI,GAAG,2BAA2B,CAAC;IACrD,CAAC;CAAA;AAFD,8DAEC;AAED,MAAa,gBAAiB,SAAQ,YAAY;IAAlD;;QACkB,SAAI,GAAG,kBAAkB,CAAC;IAC5C,CAAC;CAAA;AAFD,4CAEC;AAED,SAAgB,WAAW,CAAC,KAA8B;IACxD,IAAI,CAAC,CAAC,KAAK,YAAY,+BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CACrB,KAAK,CAAC,YAA6B,EACnC,KAAK,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;IACjC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAoB,EAAE,OAAgB;IAC7D,IAAI,IAAI,KAAK,yBAAa,CAAC,iBAAiB,EAAE,CAAC;QAC7C,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,yBAAyB,EAAE,CAAC;QACrD,OAAO,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,gBAAgB,EAAE,CAAC;QAC5C,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,8BAA8B,EAAE,CAAC;QAC1D,OAAO,IAAI,gCAAgC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,gBAAgB,EAAE,CAAC;QAC5C,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,4BAA4B,EAAE,CAAC;QACxD,OAAO,IAAI,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,mBAAmB,EAAE,CAAC;QAC/C,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,oBAAoB,EAAE,CAAC;QAChD,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,sBAAsB,EAAE,CAAC;QAClD,OAAO,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,kBAAkB,EAAE,CAAC;QAC9C,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,mBAAmB,EAAE,CAAC;QAC/C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,KAAK,yBAAa,CAAC,oBAAoB,EAAE,CAAC;QAChD,OAAO,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,mBAAmB,CACjC,WAA+D;IAE/D,MAAM,KAAK,GAAiB,QAAQ,CAAC,WAAW,CAAC,MAAuB,CAAC,CAAC;IAC1E,KAAK,CAAC,WAAW,GAAG;QAClB,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;QAC1D,UAAU,EAAE,WAAW,CAAC,UAAU;KACnC,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export interface RequestConfig {
|
|
2
|
+
baseURL?: string;
|
|
3
|
+
headers?: Record<string, string>;
|
|
4
|
+
timeout?: number;
|
|
5
|
+
maxResponseBytes?: number;
|
|
6
|
+
data?: unknown;
|
|
7
|
+
params?: Record<string, string>;
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
}
|
|
10
|
+
export interface InternalRequestConfig extends RequestConfig {
|
|
11
|
+
url: string;
|
|
12
|
+
method: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SafeRequestSummary {
|
|
15
|
+
method: string;
|
|
16
|
+
url: string;
|
|
17
|
+
timeout: number;
|
|
18
|
+
}
|
|
19
|
+
export interface FetchResponse<T = unknown> {
|
|
20
|
+
data: T;
|
|
21
|
+
status: number;
|
|
22
|
+
statusText: string;
|
|
23
|
+
headers: Record<string, string>;
|
|
24
|
+
config: SafeRequestSummary;
|
|
25
|
+
}
|
|
26
|
+
interface HttpClientErrorOptions {
|
|
27
|
+
status?: number;
|
|
28
|
+
providerCode?: string;
|
|
29
|
+
providerMessage?: string;
|
|
30
|
+
retryable?: boolean;
|
|
31
|
+
causeName?: string;
|
|
32
|
+
secrets?: string[];
|
|
33
|
+
}
|
|
34
|
+
export declare class HttpClientError extends Error {
|
|
35
|
+
readonly config: SafeRequestSummary;
|
|
36
|
+
readonly status?: number;
|
|
37
|
+
readonly providerCode?: string;
|
|
38
|
+
readonly providerMessage?: string;
|
|
39
|
+
readonly retryable: boolean;
|
|
40
|
+
readonly causeName?: string;
|
|
41
|
+
constructor(message: string, config: SafeRequestSummary, options?: HttpClientErrorOptions);
|
|
42
|
+
toJSON(): Record<string, unknown>;
|
|
43
|
+
}
|
|
44
|
+
export declare class RequestTimeoutError extends HttpClientError {
|
|
45
|
+
readonly name = "RequestTimeoutError";
|
|
46
|
+
}
|
|
47
|
+
export declare class RequestAbortedError extends HttpClientError {
|
|
48
|
+
readonly name = "RequestAbortedError";
|
|
49
|
+
}
|
|
50
|
+
export declare class UnexpectedRedirectError extends HttpClientError {
|
|
51
|
+
readonly name = "UnexpectedRedirectError";
|
|
52
|
+
}
|
|
53
|
+
export declare class ResponseSizeLimitError extends HttpClientError {
|
|
54
|
+
readonly name = "ResponseSizeLimitError";
|
|
55
|
+
}
|
|
56
|
+
declare class InterceptorManagerImpl<V> {
|
|
57
|
+
handlers: {
|
|
58
|
+
onFulfilled: ((value: V) => V | Promise<V>) | null;
|
|
59
|
+
onRejected: ((error: unknown) => unknown) | null;
|
|
60
|
+
}[];
|
|
61
|
+
use(onFulfilled?: ((value: V) => V | Promise<V>) | null, onRejected?: ((error: unknown) => unknown) | null): number;
|
|
62
|
+
eject(id: number): void;
|
|
63
|
+
}
|
|
64
|
+
export interface HttpClientDefaults {
|
|
65
|
+
baseURL?: string;
|
|
66
|
+
headers: {
|
|
67
|
+
common: Record<string, string>;
|
|
68
|
+
[key: string]: Record<string, string> | string | undefined;
|
|
69
|
+
};
|
|
70
|
+
timeout: number;
|
|
71
|
+
maxResponseBytes: number;
|
|
72
|
+
}
|
|
73
|
+
export declare class HttpClient {
|
|
74
|
+
defaults: HttpClientDefaults;
|
|
75
|
+
interceptors: {
|
|
76
|
+
request: InterceptorManagerImpl<InternalRequestConfig>;
|
|
77
|
+
response: InterceptorManagerImpl<FetchResponse<unknown>>;
|
|
78
|
+
};
|
|
79
|
+
constructor(config?: RequestConfig);
|
|
80
|
+
request<T = unknown>(config: InternalRequestConfig): Promise<FetchResponse<T>>;
|
|
81
|
+
get<T = unknown>(url: string, config?: RequestConfig): Promise<FetchResponse<T>>;
|
|
82
|
+
post<T = unknown>(url: string, data?: unknown, config?: RequestConfig): Promise<FetchResponse<T>>;
|
|
83
|
+
put<T = unknown>(url: string, data?: unknown, config?: RequestConfig): Promise<FetchResponse<T>>;
|
|
84
|
+
delete<T = unknown>(url: string, config?: RequestConfig): Promise<FetchResponse<T>>;
|
|
85
|
+
patch<T = unknown>(url: string, data?: unknown, config?: RequestConfig): Promise<FetchResponse<T>>;
|
|
86
|
+
private runRejectedInterceptors;
|
|
87
|
+
}
|
|
88
|
+
export declare function createHttpClient(config?: RequestConfig): HttpClient;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=httpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpClient = exports.ResponseSizeLimitError = exports.UnexpectedRedirectError = exports.RequestAbortedError = exports.RequestTimeoutError = exports.HttpClientError = void 0;
|
|
4
|
+
exports.createHttpClient = createHttpClient;
|
|
5
|
+
const security_js_1 = require("./security.js");
|
|
6
|
+
class HttpClientError extends Error {
|
|
7
|
+
constructor(message, config, options = {}) {
|
|
8
|
+
super(redactValues(message, options.secrets));
|
|
9
|
+
this.name = "HttpClientError";
|
|
10
|
+
this.config = Object.freeze({ ...config });
|
|
11
|
+
this.status = options.status;
|
|
12
|
+
this.providerCode = options.providerCode;
|
|
13
|
+
this.retryable = options.retryable ?? false;
|
|
14
|
+
this.causeName = options.causeName;
|
|
15
|
+
if (options.providerMessage) {
|
|
16
|
+
Object.defineProperty(this, "providerMessage", {
|
|
17
|
+
value: redactValues(options.providerMessage, options.secrets),
|
|
18
|
+
enumerable: false,
|
|
19
|
+
writable: false,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
23
|
+
}
|
|
24
|
+
toJSON() {
|
|
25
|
+
return {
|
|
26
|
+
name: this.name,
|
|
27
|
+
message: this.message,
|
|
28
|
+
config: this.config,
|
|
29
|
+
status: this.status,
|
|
30
|
+
providerCode: this.providerCode,
|
|
31
|
+
retryable: this.retryable,
|
|
32
|
+
causeName: this.causeName,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.HttpClientError = HttpClientError;
|
|
37
|
+
class RequestTimeoutError extends HttpClientError {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(...arguments);
|
|
40
|
+
this.name = "RequestTimeoutError";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.RequestTimeoutError = RequestTimeoutError;
|
|
44
|
+
class RequestAbortedError extends HttpClientError {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(...arguments);
|
|
47
|
+
this.name = "RequestAbortedError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.RequestAbortedError = RequestAbortedError;
|
|
51
|
+
class UnexpectedRedirectError extends HttpClientError {
|
|
52
|
+
constructor() {
|
|
53
|
+
super(...arguments);
|
|
54
|
+
this.name = "UnexpectedRedirectError";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.UnexpectedRedirectError = UnexpectedRedirectError;
|
|
58
|
+
class ResponseSizeLimitError extends HttpClientError {
|
|
59
|
+
constructor() {
|
|
60
|
+
super(...arguments);
|
|
61
|
+
this.name = "ResponseSizeLimitError";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.ResponseSizeLimitError = ResponseSizeLimitError;
|
|
65
|
+
class InterceptorManagerImpl {
|
|
66
|
+
constructor() {
|
|
67
|
+
this.handlers = [];
|
|
68
|
+
}
|
|
69
|
+
use(onFulfilled, onRejected) {
|
|
70
|
+
this.handlers.push({
|
|
71
|
+
onFulfilled: onFulfilled || null,
|
|
72
|
+
onRejected: onRejected || null,
|
|
73
|
+
});
|
|
74
|
+
return this.handlers.length - 1;
|
|
75
|
+
}
|
|
76
|
+
eject(id) {
|
|
77
|
+
if (this.handlers[id]) {
|
|
78
|
+
this.handlers[id] = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
class HttpClient {
|
|
83
|
+
constructor(config) {
|
|
84
|
+
this.defaults = {
|
|
85
|
+
headers: { common: {} },
|
|
86
|
+
timeout: security_js_1.DEFAULT_TIMEOUT_MS,
|
|
87
|
+
maxResponseBytes: security_js_1.DEFAULT_MAX_RESPONSE_BYTES,
|
|
88
|
+
};
|
|
89
|
+
this.interceptors = {
|
|
90
|
+
request: new InterceptorManagerImpl(),
|
|
91
|
+
response: new InterceptorManagerImpl(),
|
|
92
|
+
};
|
|
93
|
+
if (config?.baseURL) {
|
|
94
|
+
this.defaults.baseURL = config.baseURL;
|
|
95
|
+
}
|
|
96
|
+
if (config?.headers) {
|
|
97
|
+
this.defaults.headers.common = { ...config.headers };
|
|
98
|
+
}
|
|
99
|
+
if (config?.timeout !== undefined) {
|
|
100
|
+
this.defaults.timeout = config.timeout;
|
|
101
|
+
}
|
|
102
|
+
if (config?.maxResponseBytes !== undefined) {
|
|
103
|
+
this.defaults.maxResponseBytes = config.maxResponseBytes;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async request(config) {
|
|
107
|
+
let currentConfig = {
|
|
108
|
+
...config,
|
|
109
|
+
headers: { ...config.headers },
|
|
110
|
+
};
|
|
111
|
+
if (this.defaults.baseURL &&
|
|
112
|
+
currentConfig.url &&
|
|
113
|
+
!/^https?:\/\//i.test(currentConfig.url)) {
|
|
114
|
+
const baseUrl = this.defaults.baseURL.replace(/\/+$/, "");
|
|
115
|
+
const urlPath = currentConfig.url.startsWith("/")
|
|
116
|
+
? currentConfig.url
|
|
117
|
+
: `/${currentConfig.url}`;
|
|
118
|
+
currentConfig.url = baseUrl + urlPath;
|
|
119
|
+
}
|
|
120
|
+
currentConfig.headers = {
|
|
121
|
+
...this.defaults.headers.common,
|
|
122
|
+
...currentConfig.headers,
|
|
123
|
+
};
|
|
124
|
+
currentConfig.timeout = currentConfig.timeout ?? this.defaults.timeout;
|
|
125
|
+
currentConfig.maxResponseBytes =
|
|
126
|
+
currentConfig.maxResponseBytes ?? this.defaults.maxResponseBytes;
|
|
127
|
+
for (const interceptor of this.interceptors.request.handlers) {
|
|
128
|
+
if (interceptor?.onFulfilled) {
|
|
129
|
+
currentConfig = await interceptor.onFulfilled(currentConfig);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const summary = safeRequestSummary(currentConfig);
|
|
133
|
+
const fetchOptions = {
|
|
134
|
+
method: currentConfig.method || "GET",
|
|
135
|
+
headers: currentConfig.headers,
|
|
136
|
+
redirect: "manual",
|
|
137
|
+
};
|
|
138
|
+
if (currentConfig.data !== undefined) {
|
|
139
|
+
if (typeof currentConfig.data === "string" ||
|
|
140
|
+
currentConfig.data instanceof URLSearchParams) {
|
|
141
|
+
fetchOptions.body = currentConfig.data;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
fetchOptions.body = JSON.stringify(currentConfig.data);
|
|
145
|
+
if (!hasHeader(fetchOptions.headers, "content-type")) {
|
|
146
|
+
fetchOptions.headers["Content-Type"] =
|
|
147
|
+
"application/json";
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const controller = new AbortController();
|
|
152
|
+
let timedOut = false;
|
|
153
|
+
const timeout = currentConfig.timeout ?? security_js_1.DEFAULT_TIMEOUT_MS;
|
|
154
|
+
const timer = setTimeout(() => {
|
|
155
|
+
timedOut = true;
|
|
156
|
+
controller.abort();
|
|
157
|
+
}, timeout);
|
|
158
|
+
const abortFromCaller = () => controller.abort(currentConfig.signal?.reason);
|
|
159
|
+
if (currentConfig.signal) {
|
|
160
|
+
if (currentConfig.signal.aborted) {
|
|
161
|
+
abortFromCaller();
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
currentConfig.signal.addEventListener("abort", abortFromCaller, {
|
|
165
|
+
once: true,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
fetchOptions.signal = controller.signal;
|
|
170
|
+
const cleanupAbortState = () => {
|
|
171
|
+
clearTimeout(timer);
|
|
172
|
+
currentConfig.signal?.removeEventListener("abort", abortFromCaller);
|
|
173
|
+
};
|
|
174
|
+
let response;
|
|
175
|
+
try {
|
|
176
|
+
response = await fetch(currentConfig.url, fetchOptions);
|
|
177
|
+
}
|
|
178
|
+
catch (cause) {
|
|
179
|
+
const causeError = cause instanceof Error ? cause : new Error(String(cause));
|
|
180
|
+
const error = timedOut
|
|
181
|
+
? new RequestTimeoutError("Request timed out", summary, {
|
|
182
|
+
retryable: true,
|
|
183
|
+
causeName: causeError.name,
|
|
184
|
+
})
|
|
185
|
+
: currentConfig.signal?.aborted
|
|
186
|
+
? new RequestAbortedError("Request was aborted", summary, {
|
|
187
|
+
retryable: false,
|
|
188
|
+
causeName: causeError.name,
|
|
189
|
+
})
|
|
190
|
+
: new HttpClientError("Network request failed", summary, {
|
|
191
|
+
retryable: true,
|
|
192
|
+
causeName: causeError.name,
|
|
193
|
+
});
|
|
194
|
+
cleanupAbortState();
|
|
195
|
+
throw await this.runRejectedInterceptors(error);
|
|
196
|
+
}
|
|
197
|
+
if (response.status >= 300 && response.status < 400) {
|
|
198
|
+
const error = new UnexpectedRedirectError("Unexpected redirect response", summary, { status: response.status, retryable: false });
|
|
199
|
+
cleanupAbortState();
|
|
200
|
+
throw await this.runRejectedInterceptors(error);
|
|
201
|
+
}
|
|
202
|
+
const responseHeaders = {};
|
|
203
|
+
response.headers.forEach((value, key) => {
|
|
204
|
+
responseHeaders[key] = value;
|
|
205
|
+
});
|
|
206
|
+
let responseText;
|
|
207
|
+
try {
|
|
208
|
+
responseText = await readResponseText(response, currentConfig.maxResponseBytes ?? security_js_1.DEFAULT_MAX_RESPONSE_BYTES, summary);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
cleanupAbortState();
|
|
212
|
+
if (error instanceof ResponseSizeLimitError) {
|
|
213
|
+
throw await this.runRejectedInterceptors(error);
|
|
214
|
+
}
|
|
215
|
+
const causeError = error instanceof Error ? error : new Error(String(error));
|
|
216
|
+
const safeError = timedOut
|
|
217
|
+
? new RequestTimeoutError("Request timed out", summary, {
|
|
218
|
+
retryable: true,
|
|
219
|
+
causeName: causeError.name,
|
|
220
|
+
})
|
|
221
|
+
: currentConfig.signal?.aborted
|
|
222
|
+
? new RequestAbortedError("Request was aborted", summary, {
|
|
223
|
+
retryable: false,
|
|
224
|
+
causeName: causeError.name,
|
|
225
|
+
})
|
|
226
|
+
: new HttpClientError("Failed to read response body", summary, {
|
|
227
|
+
status: response.status,
|
|
228
|
+
retryable: true,
|
|
229
|
+
causeName: causeError.name,
|
|
230
|
+
});
|
|
231
|
+
throw await this.runRejectedInterceptors(safeError);
|
|
232
|
+
}
|
|
233
|
+
cleanupAbortState();
|
|
234
|
+
const responseData = parseResponseBody(responseText, response.headers.get("content-type"));
|
|
235
|
+
const fetchResponse = {
|
|
236
|
+
data: responseData,
|
|
237
|
+
status: response.status,
|
|
238
|
+
statusText: response.statusText,
|
|
239
|
+
headers: responseHeaders,
|
|
240
|
+
config: summary,
|
|
241
|
+
};
|
|
242
|
+
if (!response.ok) {
|
|
243
|
+
const body = responseData && typeof responseData === "object"
|
|
244
|
+
? responseData
|
|
245
|
+
: {};
|
|
246
|
+
const providerCode = typeof body.code === "string" ? body.code : undefined;
|
|
247
|
+
const providerMessage = typeof body.message === "string" ? body.message : undefined;
|
|
248
|
+
const error = new HttpClientError(`Request failed with status code ${response.status}`, summary, {
|
|
249
|
+
status: response.status,
|
|
250
|
+
providerCode,
|
|
251
|
+
providerMessage,
|
|
252
|
+
retryable: response.status === 429 || response.status >= 500,
|
|
253
|
+
secrets: sensitiveHeaderValues(currentConfig.headers),
|
|
254
|
+
});
|
|
255
|
+
throw await this.runRejectedInterceptors(error);
|
|
256
|
+
}
|
|
257
|
+
let interceptedResponse = fetchResponse;
|
|
258
|
+
for (const interceptor of this.interceptors.response.handlers) {
|
|
259
|
+
if (interceptor?.onFulfilled) {
|
|
260
|
+
interceptedResponse = await interceptor.onFulfilled(interceptedResponse);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return interceptedResponse;
|
|
264
|
+
}
|
|
265
|
+
get(url, config) {
|
|
266
|
+
return this.request({ ...config, url, method: "GET" });
|
|
267
|
+
}
|
|
268
|
+
post(url, data, config) {
|
|
269
|
+
return this.request({ ...config, url, method: "POST", data });
|
|
270
|
+
}
|
|
271
|
+
put(url, data, config) {
|
|
272
|
+
return this.request({ ...config, url, method: "PUT", data });
|
|
273
|
+
}
|
|
274
|
+
delete(url, config) {
|
|
275
|
+
return this.request({ ...config, url, method: "DELETE" });
|
|
276
|
+
}
|
|
277
|
+
patch(url, data, config) {
|
|
278
|
+
return this.request({ ...config, url, method: "PATCH", data });
|
|
279
|
+
}
|
|
280
|
+
async runRejectedInterceptors(error) {
|
|
281
|
+
let currentError = error;
|
|
282
|
+
for (const interceptor of this.interceptors.response.handlers) {
|
|
283
|
+
if (interceptor?.onRejected) {
|
|
284
|
+
try {
|
|
285
|
+
await interceptor.onRejected(currentError);
|
|
286
|
+
}
|
|
287
|
+
catch (interceptedError) {
|
|
288
|
+
currentError =
|
|
289
|
+
interceptedError instanceof Error
|
|
290
|
+
? interceptedError
|
|
291
|
+
: new Error(String(interceptedError));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return currentError;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
exports.HttpClient = HttpClient;
|
|
299
|
+
function safeRequestSummary(config) {
|
|
300
|
+
return Object.freeze({
|
|
301
|
+
method: config.method || "GET",
|
|
302
|
+
url: (0, security_js_1.redactUrl)(config.url),
|
|
303
|
+
timeout: config.timeout ?? security_js_1.DEFAULT_TIMEOUT_MS,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
function hasHeader(headers, name) {
|
|
307
|
+
if (!headers)
|
|
308
|
+
return false;
|
|
309
|
+
const expected = name.toLowerCase();
|
|
310
|
+
if (headers instanceof Headers)
|
|
311
|
+
return headers.has(name);
|
|
312
|
+
if (Array.isArray(headers)) {
|
|
313
|
+
return headers.some(([key]) => key.toLowerCase() === expected);
|
|
314
|
+
}
|
|
315
|
+
return Object.keys(headers).some((key) => key.toLowerCase() === expected);
|
|
316
|
+
}
|
|
317
|
+
async function readResponseText(response, limit, summary) {
|
|
318
|
+
const declaredLength = Number(response.headers.get("content-length"));
|
|
319
|
+
if (Number.isFinite(declaredLength) && declaredLength > limit) {
|
|
320
|
+
throw new ResponseSizeLimitError("Response body exceeded the configured size limit", summary);
|
|
321
|
+
}
|
|
322
|
+
if (!response.body) {
|
|
323
|
+
return "";
|
|
324
|
+
}
|
|
325
|
+
const reader = response.body.getReader();
|
|
326
|
+
const chunks = [];
|
|
327
|
+
let total = 0;
|
|
328
|
+
while (true) {
|
|
329
|
+
const { done, value } = await reader.read();
|
|
330
|
+
if (done)
|
|
331
|
+
break;
|
|
332
|
+
if (!value)
|
|
333
|
+
continue;
|
|
334
|
+
total += value.byteLength;
|
|
335
|
+
if (total > limit) {
|
|
336
|
+
await reader.cancel();
|
|
337
|
+
throw new ResponseSizeLimitError("Response body exceeded the configured size limit", summary);
|
|
338
|
+
}
|
|
339
|
+
chunks.push(value);
|
|
340
|
+
}
|
|
341
|
+
const body = new Uint8Array(total);
|
|
342
|
+
let offset = 0;
|
|
343
|
+
for (const chunk of chunks) {
|
|
344
|
+
body.set(chunk, offset);
|
|
345
|
+
offset += chunk.byteLength;
|
|
346
|
+
}
|
|
347
|
+
return new TextDecoder().decode(body);
|
|
348
|
+
}
|
|
349
|
+
function parseResponseBody(responseText, contentType) {
|
|
350
|
+
if (!responseText)
|
|
351
|
+
return null;
|
|
352
|
+
if (contentType?.includes("application/json")) {
|
|
353
|
+
try {
|
|
354
|
+
return JSON.parse(responseText);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return responseText;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return responseText;
|
|
361
|
+
}
|
|
362
|
+
function sensitiveHeaderValues(headers) {
|
|
363
|
+
if (!headers)
|
|
364
|
+
return [];
|
|
365
|
+
const sensitiveNames = new Set([
|
|
366
|
+
"authorization",
|
|
367
|
+
"ocp-apim-subscription-key",
|
|
368
|
+
"cookie",
|
|
369
|
+
"set-cookie",
|
|
370
|
+
"x-api-key",
|
|
371
|
+
"api-key",
|
|
372
|
+
]);
|
|
373
|
+
return Object.entries(headers)
|
|
374
|
+
.filter(([name]) => sensitiveNames.has(name.toLowerCase()))
|
|
375
|
+
.map(([, value]) => value)
|
|
376
|
+
.filter(Boolean);
|
|
377
|
+
}
|
|
378
|
+
function redactValues(value, secrets = []) {
|
|
379
|
+
let redacted = (0, security_js_1.redactSensitiveText)(value);
|
|
380
|
+
for (const secret of secrets) {
|
|
381
|
+
redacted = redacted.split(secret).join("[redacted]");
|
|
382
|
+
}
|
|
383
|
+
return redacted;
|
|
384
|
+
}
|
|
385
|
+
function createHttpClient(config) {
|
|
386
|
+
return new HttpClient(config);
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=httpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"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"}
|