@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.
Files changed (101) hide show
  1. package/MIGRATION.md +79 -0
  2. package/README.md +68 -5
  3. package/lib/cjs/auth.d.ts +3 -3
  4. package/lib/cjs/auth.d.ts.map +1 -1
  5. package/lib/cjs/auth.js +31 -11
  6. package/lib/cjs/auth.js.map +1 -1
  7. package/lib/cjs/cli.js +5 -2
  8. package/lib/cjs/cli.js.map +1 -1
  9. package/lib/cjs/client.d.ts +6 -6
  10. package/lib/cjs/client.d.ts.map +1 -1
  11. package/lib/cjs/client.js +16 -44
  12. package/lib/cjs/client.js.map +1 -1
  13. package/lib/cjs/collections.d.ts +7 -6
  14. package/lib/cjs/collections.d.ts.map +1 -1
  15. package/lib/cjs/collections.js +45 -25
  16. package/lib/cjs/collections.js.map +1 -1
  17. package/lib/cjs/common.d.ts +13 -4
  18. package/lib/cjs/common.d.ts.map +1 -1
  19. package/lib/cjs/common.js.map +1 -1
  20. package/lib/cjs/disbursements.d.ts +8 -11
  21. package/lib/cjs/disbursements.d.ts.map +1 -1
  22. package/lib/cjs/disbursements.js +46 -31
  23. package/lib/cjs/disbursements.js.map +1 -1
  24. package/lib/cjs/errors.d.ts +16 -7
  25. package/lib/cjs/errors.d.ts.map +1 -1
  26. package/lib/cjs/errors.js +33 -23
  27. package/lib/cjs/errors.js.map +1 -1
  28. package/lib/cjs/httpClient.d.ts +90 -0
  29. package/lib/cjs/httpClient.d.ts.map +1 -0
  30. package/lib/cjs/httpClient.js +388 -0
  31. package/lib/cjs/httpClient.js.map +1 -0
  32. package/lib/cjs/index.d.ts +12 -11
  33. package/lib/cjs/index.d.ts.map +1 -1
  34. package/lib/cjs/index.js +30 -28
  35. package/lib/cjs/index.js.map +1 -1
  36. package/lib/cjs/remittance.d.ts +6 -6
  37. package/lib/cjs/remittance.d.ts.map +1 -1
  38. package/lib/cjs/remittance.js +58 -41
  39. package/lib/cjs/remittance.js.map +1 -1
  40. package/lib/cjs/security.d.ts +32 -0
  41. package/lib/cjs/security.d.ts.map +1 -0
  42. package/lib/cjs/security.js +253 -0
  43. package/lib/cjs/security.js.map +1 -0
  44. package/lib/cjs/users.d.ts +5 -3
  45. package/lib/cjs/users.d.ts.map +1 -1
  46. package/lib/cjs/users.js +17 -6
  47. package/lib/cjs/users.js.map +1 -1
  48. package/lib/cjs/validate.d.ts +7 -7
  49. package/lib/cjs/validate.d.ts.map +1 -1
  50. package/lib/cjs/validate.js +67 -84
  51. package/lib/cjs/validate.js.map +1 -1
  52. package/lib/esm/auth.d.ts +3 -3
  53. package/lib/esm/auth.d.ts.map +1 -1
  54. package/lib/esm/auth.js +28 -8
  55. package/lib/esm/auth.js.map +1 -1
  56. package/lib/esm/cli.js +5 -2
  57. package/lib/esm/cli.js.map +1 -1
  58. package/lib/esm/client.d.ts +6 -6
  59. package/lib/esm/client.d.ts.map +1 -1
  60. package/lib/esm/client.js +16 -11
  61. package/lib/esm/client.js.map +1 -1
  62. package/lib/esm/collections.d.ts +7 -6
  63. package/lib/esm/collections.d.ts.map +1 -1
  64. package/lib/esm/collections.js +38 -18
  65. package/lib/esm/collections.js.map +1 -1
  66. package/lib/esm/common.d.ts +13 -4
  67. package/lib/esm/common.d.ts.map +1 -1
  68. package/lib/esm/common.js.map +1 -1
  69. package/lib/esm/disbursements.d.ts +8 -11
  70. package/lib/esm/disbursements.d.ts.map +1 -1
  71. package/lib/esm/disbursements.js +34 -19
  72. package/lib/esm/disbursements.js.map +1 -1
  73. package/lib/esm/errors.d.ts +16 -7
  74. package/lib/esm/errors.d.ts.map +1 -1
  75. package/lib/esm/errors.js +16 -6
  76. package/lib/esm/errors.js.map +1 -1
  77. package/lib/esm/httpClient.d.ts +90 -0
  78. package/lib/esm/httpClient.d.ts.map +1 -0
  79. package/lib/esm/httpClient.js +378 -0
  80. package/lib/esm/httpClient.js.map +1 -0
  81. package/lib/esm/index.d.ts +12 -11
  82. package/lib/esm/index.d.ts.map +1 -1
  83. package/lib/esm/index.js +12 -11
  84. package/lib/esm/index.js.map +1 -1
  85. package/lib/esm/remittance.d.ts +6 -6
  86. package/lib/esm/remittance.d.ts.map +1 -1
  87. package/lib/esm/remittance.js +52 -35
  88. package/lib/esm/remittance.js.map +1 -1
  89. package/lib/esm/security.d.ts +32 -0
  90. package/lib/esm/security.d.ts.map +1 -0
  91. package/lib/esm/security.js +234 -0
  92. package/lib/esm/security.js.map +1 -0
  93. package/lib/esm/users.d.ts +5 -3
  94. package/lib/esm/users.d.ts.map +1 -1
  95. package/lib/esm/users.js +17 -6
  96. package/lib/esm/users.js.map +1 -1
  97. package/lib/esm/validate.d.ts +7 -7
  98. package/lib/esm/validate.d.ts.map +1 -1
  99. package/lib/esm/validate.js +66 -84
  100. package/lib/esm/validate.js.map +1 -1
  101. package/package.json +23 -7
@@ -0,0 +1,378 @@
1
+ import { DEFAULT_MAX_RESPONSE_BYTES, DEFAULT_TIMEOUT_MS, redactSensitiveText, redactUrl, } from "./security.js";
2
+ export class HttpClientError extends Error {
3
+ constructor(message, config, options = {}) {
4
+ super(redactValues(message, options.secrets));
5
+ this.name = "HttpClientError";
6
+ this.config = Object.freeze({ ...config });
7
+ this.status = options.status;
8
+ this.providerCode = options.providerCode;
9
+ this.retryable = options.retryable ?? false;
10
+ this.causeName = options.causeName;
11
+ if (options.providerMessage) {
12
+ Object.defineProperty(this, "providerMessage", {
13
+ value: redactValues(options.providerMessage, options.secrets),
14
+ enumerable: false,
15
+ writable: false,
16
+ });
17
+ }
18
+ Object.setPrototypeOf(this, new.target.prototype);
19
+ }
20
+ toJSON() {
21
+ return {
22
+ name: this.name,
23
+ message: this.message,
24
+ config: this.config,
25
+ status: this.status,
26
+ providerCode: this.providerCode,
27
+ retryable: this.retryable,
28
+ causeName: this.causeName,
29
+ };
30
+ }
31
+ }
32
+ export class RequestTimeoutError extends HttpClientError {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.name = "RequestTimeoutError";
36
+ }
37
+ }
38
+ export class RequestAbortedError extends HttpClientError {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.name = "RequestAbortedError";
42
+ }
43
+ }
44
+ export class UnexpectedRedirectError extends HttpClientError {
45
+ constructor() {
46
+ super(...arguments);
47
+ this.name = "UnexpectedRedirectError";
48
+ }
49
+ }
50
+ export class ResponseSizeLimitError extends HttpClientError {
51
+ constructor() {
52
+ super(...arguments);
53
+ this.name = "ResponseSizeLimitError";
54
+ }
55
+ }
56
+ class InterceptorManagerImpl {
57
+ constructor() {
58
+ this.handlers = [];
59
+ }
60
+ use(onFulfilled, onRejected) {
61
+ this.handlers.push({
62
+ onFulfilled: onFulfilled || null,
63
+ onRejected: onRejected || null,
64
+ });
65
+ return this.handlers.length - 1;
66
+ }
67
+ eject(id) {
68
+ if (this.handlers[id]) {
69
+ this.handlers[id] = null;
70
+ }
71
+ }
72
+ }
73
+ export class HttpClient {
74
+ constructor(config) {
75
+ this.defaults = {
76
+ headers: { common: {} },
77
+ timeout: DEFAULT_TIMEOUT_MS,
78
+ maxResponseBytes: DEFAULT_MAX_RESPONSE_BYTES,
79
+ };
80
+ this.interceptors = {
81
+ request: new InterceptorManagerImpl(),
82
+ response: new InterceptorManagerImpl(),
83
+ };
84
+ if (config?.baseURL) {
85
+ this.defaults.baseURL = config.baseURL;
86
+ }
87
+ if (config?.headers) {
88
+ this.defaults.headers.common = { ...config.headers };
89
+ }
90
+ if (config?.timeout !== undefined) {
91
+ this.defaults.timeout = config.timeout;
92
+ }
93
+ if (config?.maxResponseBytes !== undefined) {
94
+ this.defaults.maxResponseBytes = config.maxResponseBytes;
95
+ }
96
+ }
97
+ async request(config) {
98
+ let currentConfig = {
99
+ ...config,
100
+ headers: { ...config.headers },
101
+ };
102
+ if (this.defaults.baseURL &&
103
+ currentConfig.url &&
104
+ !/^https?:\/\//i.test(currentConfig.url)) {
105
+ const baseUrl = this.defaults.baseURL.replace(/\/+$/, "");
106
+ const urlPath = currentConfig.url.startsWith("/")
107
+ ? currentConfig.url
108
+ : `/${currentConfig.url}`;
109
+ currentConfig.url = baseUrl + urlPath;
110
+ }
111
+ currentConfig.headers = {
112
+ ...this.defaults.headers.common,
113
+ ...currentConfig.headers,
114
+ };
115
+ currentConfig.timeout = currentConfig.timeout ?? this.defaults.timeout;
116
+ currentConfig.maxResponseBytes =
117
+ currentConfig.maxResponseBytes ?? this.defaults.maxResponseBytes;
118
+ for (const interceptor of this.interceptors.request.handlers) {
119
+ if (interceptor?.onFulfilled) {
120
+ currentConfig = await interceptor.onFulfilled(currentConfig);
121
+ }
122
+ }
123
+ const summary = safeRequestSummary(currentConfig);
124
+ const fetchOptions = {
125
+ method: currentConfig.method || "GET",
126
+ headers: currentConfig.headers,
127
+ redirect: "manual",
128
+ };
129
+ if (currentConfig.data !== undefined) {
130
+ if (typeof currentConfig.data === "string" ||
131
+ currentConfig.data instanceof URLSearchParams) {
132
+ fetchOptions.body = currentConfig.data;
133
+ }
134
+ else {
135
+ fetchOptions.body = JSON.stringify(currentConfig.data);
136
+ if (!hasHeader(fetchOptions.headers, "content-type")) {
137
+ fetchOptions.headers["Content-Type"] =
138
+ "application/json";
139
+ }
140
+ }
141
+ }
142
+ const controller = new AbortController();
143
+ let timedOut = false;
144
+ const timeout = currentConfig.timeout ?? DEFAULT_TIMEOUT_MS;
145
+ const timer = setTimeout(() => {
146
+ timedOut = true;
147
+ controller.abort();
148
+ }, timeout);
149
+ const abortFromCaller = () => controller.abort(currentConfig.signal?.reason);
150
+ if (currentConfig.signal) {
151
+ if (currentConfig.signal.aborted) {
152
+ abortFromCaller();
153
+ }
154
+ else {
155
+ currentConfig.signal.addEventListener("abort", abortFromCaller, {
156
+ once: true,
157
+ });
158
+ }
159
+ }
160
+ fetchOptions.signal = controller.signal;
161
+ const cleanupAbortState = () => {
162
+ clearTimeout(timer);
163
+ currentConfig.signal?.removeEventListener("abort", abortFromCaller);
164
+ };
165
+ let response;
166
+ try {
167
+ response = await fetch(currentConfig.url, fetchOptions);
168
+ }
169
+ catch (cause) {
170
+ const causeError = cause instanceof Error ? cause : new Error(String(cause));
171
+ const error = timedOut
172
+ ? new RequestTimeoutError("Request timed out", summary, {
173
+ retryable: true,
174
+ causeName: causeError.name,
175
+ })
176
+ : currentConfig.signal?.aborted
177
+ ? new RequestAbortedError("Request was aborted", summary, {
178
+ retryable: false,
179
+ causeName: causeError.name,
180
+ })
181
+ : new HttpClientError("Network request failed", summary, {
182
+ retryable: true,
183
+ causeName: causeError.name,
184
+ });
185
+ cleanupAbortState();
186
+ throw await this.runRejectedInterceptors(error);
187
+ }
188
+ if (response.status >= 300 && response.status < 400) {
189
+ const error = new UnexpectedRedirectError("Unexpected redirect response", summary, { status: response.status, retryable: false });
190
+ cleanupAbortState();
191
+ throw await this.runRejectedInterceptors(error);
192
+ }
193
+ const responseHeaders = {};
194
+ response.headers.forEach((value, key) => {
195
+ responseHeaders[key] = value;
196
+ });
197
+ let responseText;
198
+ try {
199
+ responseText = await readResponseText(response, currentConfig.maxResponseBytes ?? DEFAULT_MAX_RESPONSE_BYTES, summary);
200
+ }
201
+ catch (error) {
202
+ cleanupAbortState();
203
+ if (error instanceof ResponseSizeLimitError) {
204
+ throw await this.runRejectedInterceptors(error);
205
+ }
206
+ const causeError = error instanceof Error ? error : new Error(String(error));
207
+ const safeError = timedOut
208
+ ? new RequestTimeoutError("Request timed out", summary, {
209
+ retryable: true,
210
+ causeName: causeError.name,
211
+ })
212
+ : currentConfig.signal?.aborted
213
+ ? new RequestAbortedError("Request was aborted", summary, {
214
+ retryable: false,
215
+ causeName: causeError.name,
216
+ })
217
+ : new HttpClientError("Failed to read response body", summary, {
218
+ status: response.status,
219
+ retryable: true,
220
+ causeName: causeError.name,
221
+ });
222
+ throw await this.runRejectedInterceptors(safeError);
223
+ }
224
+ cleanupAbortState();
225
+ const responseData = parseResponseBody(responseText, response.headers.get("content-type"));
226
+ const fetchResponse = {
227
+ data: responseData,
228
+ status: response.status,
229
+ statusText: response.statusText,
230
+ headers: responseHeaders,
231
+ config: summary,
232
+ };
233
+ if (!response.ok) {
234
+ const body = responseData && typeof responseData === "object"
235
+ ? responseData
236
+ : {};
237
+ const providerCode = typeof body.code === "string" ? body.code : undefined;
238
+ const providerMessage = typeof body.message === "string" ? body.message : undefined;
239
+ const error = new HttpClientError(`Request failed with status code ${response.status}`, summary, {
240
+ status: response.status,
241
+ providerCode,
242
+ providerMessage,
243
+ retryable: response.status === 429 || response.status >= 500,
244
+ secrets: sensitiveHeaderValues(currentConfig.headers),
245
+ });
246
+ throw await this.runRejectedInterceptors(error);
247
+ }
248
+ let interceptedResponse = fetchResponse;
249
+ for (const interceptor of this.interceptors.response.handlers) {
250
+ if (interceptor?.onFulfilled) {
251
+ interceptedResponse = await interceptor.onFulfilled(interceptedResponse);
252
+ }
253
+ }
254
+ return interceptedResponse;
255
+ }
256
+ get(url, config) {
257
+ return this.request({ ...config, url, method: "GET" });
258
+ }
259
+ post(url, data, config) {
260
+ return this.request({ ...config, url, method: "POST", data });
261
+ }
262
+ put(url, data, config) {
263
+ return this.request({ ...config, url, method: "PUT", data });
264
+ }
265
+ delete(url, config) {
266
+ return this.request({ ...config, url, method: "DELETE" });
267
+ }
268
+ patch(url, data, config) {
269
+ return this.request({ ...config, url, method: "PATCH", data });
270
+ }
271
+ async runRejectedInterceptors(error) {
272
+ let currentError = error;
273
+ for (const interceptor of this.interceptors.response.handlers) {
274
+ if (interceptor?.onRejected) {
275
+ try {
276
+ await interceptor.onRejected(currentError);
277
+ }
278
+ catch (interceptedError) {
279
+ currentError =
280
+ interceptedError instanceof Error
281
+ ? interceptedError
282
+ : new Error(String(interceptedError));
283
+ }
284
+ }
285
+ }
286
+ return currentError;
287
+ }
288
+ }
289
+ function safeRequestSummary(config) {
290
+ return Object.freeze({
291
+ method: config.method || "GET",
292
+ url: redactUrl(config.url),
293
+ timeout: config.timeout ?? DEFAULT_TIMEOUT_MS,
294
+ });
295
+ }
296
+ function hasHeader(headers, name) {
297
+ if (!headers)
298
+ return false;
299
+ const expected = name.toLowerCase();
300
+ if (headers instanceof Headers)
301
+ return headers.has(name);
302
+ if (Array.isArray(headers)) {
303
+ return headers.some(([key]) => key.toLowerCase() === expected);
304
+ }
305
+ return Object.keys(headers).some((key) => key.toLowerCase() === expected);
306
+ }
307
+ async function readResponseText(response, limit, summary) {
308
+ const declaredLength = Number(response.headers.get("content-length"));
309
+ if (Number.isFinite(declaredLength) && declaredLength > limit) {
310
+ throw new ResponseSizeLimitError("Response body exceeded the configured size limit", summary);
311
+ }
312
+ if (!response.body) {
313
+ return "";
314
+ }
315
+ const reader = response.body.getReader();
316
+ const chunks = [];
317
+ let total = 0;
318
+ while (true) {
319
+ const { done, value } = await reader.read();
320
+ if (done)
321
+ break;
322
+ if (!value)
323
+ continue;
324
+ total += value.byteLength;
325
+ if (total > limit) {
326
+ await reader.cancel();
327
+ throw new ResponseSizeLimitError("Response body exceeded the configured size limit", summary);
328
+ }
329
+ chunks.push(value);
330
+ }
331
+ const body = new Uint8Array(total);
332
+ let offset = 0;
333
+ for (const chunk of chunks) {
334
+ body.set(chunk, offset);
335
+ offset += chunk.byteLength;
336
+ }
337
+ return new TextDecoder().decode(body);
338
+ }
339
+ function parseResponseBody(responseText, contentType) {
340
+ if (!responseText)
341
+ return null;
342
+ if (contentType?.includes("application/json")) {
343
+ try {
344
+ return JSON.parse(responseText);
345
+ }
346
+ catch {
347
+ return responseText;
348
+ }
349
+ }
350
+ return responseText;
351
+ }
352
+ function sensitiveHeaderValues(headers) {
353
+ if (!headers)
354
+ return [];
355
+ const sensitiveNames = new Set([
356
+ "authorization",
357
+ "ocp-apim-subscription-key",
358
+ "cookie",
359
+ "set-cookie",
360
+ "x-api-key",
361
+ "api-key",
362
+ ]);
363
+ return Object.entries(headers)
364
+ .filter(([name]) => sensitiveNames.has(name.toLowerCase()))
365
+ .map(([, value]) => value)
366
+ .filter(Boolean);
367
+ }
368
+ function redactValues(value, secrets = []) {
369
+ let redacted = redactSensitiveText(value);
370
+ for (const secret of secrets) {
371
+ redacted = redacted.split(secret).join("[redacted]");
372
+ }
373
+ return redacted;
374
+ }
375
+ export function createHttpClient(config) {
376
+ return new HttpClient(config);
377
+ }
378
+ //# sourceMappingURL=httpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
- export type { Payment, PaymentRequest } from "./collections";
2
- export type { Transfer, TransferRequest } from "./disbursements";
3
- export type { Withdrawal, WithdrawalRequest, Deposit, DepositRequest, Refund, RefundRequest, CashTransfer, CashTransferRequest, } from "./common";
4
- export * from "./errors";
5
- export { PartyIdType as PayerType, TransactionStatus as Status, Environment, } from "./common";
6
- export type { ApiUserInfo, Party as Payer, Balance, FailureReason, GlobalConfig, ProductConfig, BasicUserInfo, BcAuthorizeRequest, BcAuthorizeResponse, OAuth2TokenRequest, OAuth2TokenResponse, ConsentKycResponse, DeliveryNotification, } from "./common";
7
- import Collections from "./collections";
8
- import Disbursements from "./disbursements";
9
- import Remittance from "./remittance";
10
- import Users from "./users";
11
- import type { GlobalConfig, ProductConfig, SubscriptionConfig } from "./common";
1
+ export type { Payment, PaymentRequest } from "./collections.js";
2
+ export type { Transfer, TransferRequest } from "./disbursements.js";
3
+ export type { Withdrawal, WithdrawalRequest, Deposit, DepositRequest, Refund, RefundRequest, CashTransfer, CashTransferRequest, } from "./common.js";
4
+ export * from "./errors.js";
5
+ export { generateReferenceId, type FinancialOperationOptions, } from "./security.js";
6
+ export { PartyIdType as PayerType, TransactionStatus as Status, Environment, } from "./common.js";
7
+ export type { ApiUserInfo, Party as Payer, Balance, FailureReason, GlobalConfig, ProductConfig, BasicUserInfo, BcAuthorizeRequest, BcAuthorizeResponse, OAuth2TokenRequest, OAuth2TokenResponse, ConsentKycResponse, DeliveryNotification, } from "./common.js";
8
+ import Collections from "./collections.js";
9
+ import Disbursements from "./disbursements.js";
10
+ import Remittance from "./remittance.js";
11
+ import Users from "./users.js";
12
+ import type { GlobalConfig, ProductConfig, SubscriptionConfig } from "./common.js";
12
13
  export interface MomoClient {
13
14
  Collections(productConfig: ProductConfig): Collections;
14
15
  Disbursements(productConfig: ProductConfig): Disbursements;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,MAAM,EACN,aAAa,EACb,YAAY,EACZ,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,WAAW,IAAI,SAAS,EACxB,iBAAiB,IAAI,MAAM,EAC3B,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,WAAW,EACX,KAAK,IAAI,KAAK,EACd,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAIlB,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,SAAS,CAAC;AAgB5B,OAAO,KAAK,EAEV,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CAAC;IACvD,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,CAAC;IAC3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAAC;IACrD,KAAK,CAAC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC;CAChD;AAOD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU,CAoE7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,MAAM,EACN,aAAa,EACb,YAAY,EACZ,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,IAAI,SAAS,EACxB,iBAAiB,IAAI,MAAM,EAC3B,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,WAAW,EACX,KAAK,IAAI,KAAK,EACd,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,MAAM,YAAY,CAAC;AAgB/B,OAAO,KAAK,EAEV,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CAAC;IACvD,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,CAAC;IAC3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAAC;IACrD,KAAK,CAAC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC;CAChD;AAOD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU,CAoE7D"}
package/lib/esm/index.js CHANGED
@@ -1,13 +1,14 @@
1
- export * from "./errors";
2
- export { PartyIdType as PayerType, TransactionStatus as Status, Environment, } from "./common";
3
- import Collections from "./collections";
4
- import Disbursements from "./disbursements";
5
- import Remittance from "./remittance";
6
- import Users from "./users";
7
- import { authorizeCollections, authorizeDisbursements, authorizeRemittance, createTokenRefresher, } from "./auth";
8
- import { createAuthClient, createClient } from "./client";
9
- import { validateGlobalConfig, validateProductConfig, validateSubscriptionConfig, } from "./validate";
10
- import { Environment } from "./common";
1
+ export * from "./errors.js";
2
+ export { generateReferenceId, } from "./security.js";
3
+ export { PartyIdType as PayerType, TransactionStatus as Status, Environment, } from "./common.js";
4
+ import Collections from "./collections.js";
5
+ import Disbursements from "./disbursements.js";
6
+ import Remittance from "./remittance.js";
7
+ import Users from "./users.js";
8
+ import { authorizeCollections, authorizeDisbursements, authorizeRemittance, createTokenRefresher, } from "./auth.js";
9
+ import { createAuthClient, createClient } from "./client.js";
10
+ import { validateGlobalConfig, validateProductConfig, validateSubscriptionConfig, } from "./validate.js";
11
+ import { Environment } from "./common.js";
11
12
  const defaultGlobalConfig = {
12
13
  baseUrl: "https://sandbox.momodeveloper.mtn.com",
13
14
  environment: Environment.SANDBOX,
@@ -58,7 +59,7 @@ export function create(globalConfig) {
58
59
  ...subscriptionConfig,
59
60
  };
60
61
  const client = createClient(config);
61
- return new Users(client);
62
+ return new Users(client, config.environment ?? Environment.SANDBOX);
62
63
  },
63
64
  };
64
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,WAAW,IAAI,SAAS,EACxB,iBAAiB,IAAI,MAAM,EAC3B,WAAW,GACZ,MAAM,UAAU,CAAC;AAmBlB,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAevC,MAAM,mBAAmB,GAAiB;IACxC,OAAO,EAAE,uCAAuC;IAChD,WAAW,EAAE,WAAW,CAAC,OAAO;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,YAA0B;IAC/C,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEnC,OAAO;QACL,WAAW,CAAC,aAA4B;YACtC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,MAAM,MAAM,GAAW;gBACrB,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,aAAa;aACjB,CAAC;YAEF,MAAM,MAAM,GAAkB,gBAAgB,CAC5C,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAClD,YAAY,CAAC,MAAM,CAAC,CACrB,CAAC;YACF,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,aAAa,CAAC,aAA4B;YACxC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,MAAM,MAAM,GAAW;gBACrB,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,aAAa;aACjB,CAAC;YAEF,MAAM,MAAM,GAAkB,gBAAgB,CAC5C,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,EACpD,YAAY,CAAC,MAAM,CAAC,CACrB,CAAC;YAEF,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,UAAU,CAAC,aAA4B;YACrC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,MAAM,MAAM,GAAW;gBACrB,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,aAAa;aACjB,CAAC;YAEF,MAAM,MAAM,GAAkB,gBAAgB,CAC5C,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,EACjD,YAAY,CAAC,MAAM,CAAC,CACrB,CAAC;YAEF,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,kBAAsC;YAC1C,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAsC;gBAChD,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,kBAAkB;aACtB,CAAC;YAEF,MAAM,MAAM,GAAkB,YAAY,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,mBAAmB,GAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,IAAI,SAAS,EACxB,iBAAiB,IAAI,MAAM,EAC3B,WAAW,GACZ,MAAM,aAAa,CAAC;AAmBrB,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe1C,MAAM,mBAAmB,GAAiB;IACxC,OAAO,EAAE,uCAAuC;IAChD,WAAW,EAAE,WAAW,CAAC,OAAO;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,YAA0B;IAC/C,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEnC,OAAO;QACL,WAAW,CAAC,aAA4B;YACtC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,MAAM,MAAM,GAAW;gBACrB,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,aAAa;aACjB,CAAC;YAEF,MAAM,MAAM,GAAe,gBAAgB,CACzC,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAClD,YAAY,CAAC,MAAM,CAAC,CACrB,CAAC;YACF,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,aAAa,CAAC,aAA4B;YACxC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,MAAM,MAAM,GAAW;gBACrB,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,aAAa;aACjB,CAAC;YAEF,MAAM,MAAM,GAAe,gBAAgB,CACzC,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,EACpD,YAAY,CAAC,MAAM,CAAC,CACrB,CAAC;YAEF,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,UAAU,CAAC,aAA4B;YACrC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,MAAM,MAAM,GAAW;gBACrB,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,aAAa;aACjB,CAAC;YAEF,MAAM,MAAM,GAAe,gBAAgB,CACzC,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,EACjD,YAAY,CAAC,MAAM,CAAC,CACrB,CAAC;YAEF,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,kBAAsC;YAC1C,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAsC;gBAChD,GAAG,mBAAmB;gBACtB,GAAG,YAAY;gBACf,GAAG,kBAAkB;aACtB,CAAC;YAEF,MAAM,MAAM,GAAe,YAAY,CAAC,MAAM,CAAC,CAAC;YAEhD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,14 +1,14 @@
1
- import type { AxiosInstance } from "axios";
2
- import type { Balance, BasicUserInfo, BcAuthorizeRequest, BcAuthorizeResponse, CashTransfer, CashTransferRequest, ConsentKycResponse, OAuth2TokenRequest, OAuth2TokenResponse } from "./common";
3
- import { PartyIdType } from "./common";
4
- import type { Config } from "./common";
1
+ import type { HttpClient } from "./httpClient.js";
2
+ import type { Balance, BasicUserInfo, BcAuthorizeRequest, BcAuthorizeResponse, CashTransfer, CashTransferRequest, ConsentKycResponse, OAuth2TokenRequest, OAuth2TokenResponse } from "./common.js";
3
+ import { PartyIdType } from "./common.js";
4
+ import type { Config } from "./common.js";
5
5
  /**
6
6
  * Remittance product for cross-border money transfers with optional OAuth2 consent flows
7
7
  */
8
8
  export default class Remittance {
9
9
  private readonly client;
10
10
  private readonly config;
11
- constructor(client: AxiosInstance, config: Config);
11
+ constructor(client: HttpClient, config: Config);
12
12
  /**
13
13
  * Send money across borders to a beneficiary
14
14
  * @param request - The cash transfer request details (amount, currency, beneficiary, etc.)
@@ -53,7 +53,7 @@ export default class Remittance {
53
53
  * Requires prior OAuth2 user consent/login flow to obtain authorization
54
54
  * @returns A promise that resolves to the user's information and KYC consent details
55
55
  */
56
- getUserInfoWithConsent(): Promise<ConsentKycResponse>;
56
+ getUserInfoWithConsent(consentToken: string): Promise<ConsentKycResponse>;
57
57
  /**
58
58
  * Request Biometric Consent (BC) authorization.
59
59
  * This initiates the BC authorization flow for enhanced security.
@@ -1 +1 @@
1
- {"version":3,"file":"remittance.d.ts","sourceRoot":"","sources":["../../src/remittance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAqB,WAAW,EAAE,MAAM,UAAU,CAAC;AAG1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;IAKjD;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B7D;;;;OAIG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAahE;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC;;;;;OAKG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,WAAgC,GAC5C,OAAO,CAAC,OAAO,CAAC;IAcnB;;;;;;OAMG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQhE;;;;;OAKG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/D;;;;OAIG;IACI,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAM5D;;;;;;OAMG;IACI,WAAW,CAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IA2B/B;;;;;;OAMG;IACI,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BlE;;;;;OAKG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYlE;;;;;OAKG;IACI,cAAc,CACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;CAahC"}
1
+ {"version":3,"file":"remittance.d.ts","sourceRoot":"","sources":["../../src/remittance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAG7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAW1C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IAK9C;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B7D;;;;OAIG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAahE;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC;;;;;OAKG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,WAAgC,GAC5C,OAAO,CAAC,OAAO,CAAC;IAqBnB;;;;;;OAMG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAShE;;;;;OAKG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ/D;;;;OAIG;IACI,sBAAsB,CAC3B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAW9B;;;;;;OAMG;IACI,WAAW,CAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IA2B/B;;;;;;OAMG;IACI,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BlE;;;;;OAKG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAclE;;;;;OAKG;IACI,cAAc,CACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;CAehC"}