@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
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_RESPONSE_BYTES = exports.MAX_TIMEOUT_MS = exports.DEFAULT_MAX_RESPONSE_BYTES = exports.DEFAULT_TIMEOUT_MS = void 0;
|
|
4
|
+
exports.generateReferenceId = generateReferenceId;
|
|
5
|
+
exports.requireUuidV4 = requireUuidV4;
|
|
6
|
+
exports.resolveReferenceId = resolveReferenceId;
|
|
7
|
+
exports.pathUuid = pathUuid;
|
|
8
|
+
exports.pathCurrency = pathCurrency;
|
|
9
|
+
exports.pathPartyType = pathPartyType;
|
|
10
|
+
exports.pathPartyId = pathPartyId;
|
|
11
|
+
exports.validateParty = validateParty;
|
|
12
|
+
exports.encodeStrictPathSegment = encodeStrictPathSegment;
|
|
13
|
+
exports.validateFinancialAmount = validateFinancialAmount;
|
|
14
|
+
exports.validateCurrency = validateCurrency;
|
|
15
|
+
exports.validateAccessToken = validateAccessToken;
|
|
16
|
+
exports.normalizeBaseUrl = normalizeBaseUrl;
|
|
17
|
+
exports.validateGlobalSecurityConfig = validateGlobalSecurityConfig;
|
|
18
|
+
exports.redactSensitiveText = redactSensitiveText;
|
|
19
|
+
exports.redactUrl = redactUrl;
|
|
20
|
+
const uuid_1 = require("uuid");
|
|
21
|
+
const common_js_1 = require("./common.js");
|
|
22
|
+
const UUID_V4 = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
23
|
+
const POSITIVE_DECIMAL = /^(?:0|[1-9]\d*)(?:\.\d+)?$/;
|
|
24
|
+
const CURRENCY = /^[A-Z]{3}$/;
|
|
25
|
+
const MSISDN = /^\+?[0-9]{5,15}$/;
|
|
26
|
+
const EMAIL = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
27
|
+
const CONTROL_CHARACTER = /[\u0000-\u001f\u007f]/;
|
|
28
|
+
const FORBIDDEN_PATH_CHARACTER = /[\/\\?#]/;
|
|
29
|
+
const ENCODED_PATH_SEPARATOR = /%(?:2f|5c)/i;
|
|
30
|
+
exports.DEFAULT_TIMEOUT_MS = 30000;
|
|
31
|
+
exports.DEFAULT_MAX_RESPONSE_BYTES = 1024 * 1024;
|
|
32
|
+
exports.MAX_TIMEOUT_MS = 120000;
|
|
33
|
+
exports.MAX_RESPONSE_BYTES = 10 * 1024 * 1024;
|
|
34
|
+
function generateReferenceId() {
|
|
35
|
+
return (0, uuid_1.v4)();
|
|
36
|
+
}
|
|
37
|
+
function requireUuidV4(value, name = "referenceId") {
|
|
38
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
39
|
+
throw new TypeError(`${name} is required`);
|
|
40
|
+
}
|
|
41
|
+
if (!UUID_V4.test(value)) {
|
|
42
|
+
throw new TypeError(`${name} must be a valid uuid v4`);
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
function resolveReferenceId(referenceId) {
|
|
47
|
+
return referenceId === undefined
|
|
48
|
+
? generateReferenceId()
|
|
49
|
+
: requireUuidV4(referenceId);
|
|
50
|
+
}
|
|
51
|
+
function pathUuid(value, name = "referenceId") {
|
|
52
|
+
return encodeURIComponent(requireUuidV4(value, name));
|
|
53
|
+
}
|
|
54
|
+
function pathCurrency(value) {
|
|
55
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
56
|
+
throw new TypeError("currency is required");
|
|
57
|
+
}
|
|
58
|
+
if (!CURRENCY.test(value)) {
|
|
59
|
+
throw new TypeError("currency must be a 3-letter uppercase ISO 4217 code");
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
function pathPartyType(value) {
|
|
64
|
+
if (value !== common_js_1.PartyIdType.MSISDN &&
|
|
65
|
+
value !== common_js_1.PartyIdType.EMAIL &&
|
|
66
|
+
value !== common_js_1.PartyIdType.PARTY_CODE) {
|
|
67
|
+
throw new TypeError("partyIdType must be MSISDN, EMAIL, or PARTY_CODE");
|
|
68
|
+
}
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
function pathPartyId(type, value) {
|
|
72
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
73
|
+
throw new TypeError("partyId is required");
|
|
74
|
+
}
|
|
75
|
+
if (type === common_js_1.PartyIdType.MSISDN && !MSISDN.test(value)) {
|
|
76
|
+
throw new TypeError("MSISDN partyId must contain 5 to 15 digits");
|
|
77
|
+
}
|
|
78
|
+
if (type === common_js_1.PartyIdType.EMAIL && !EMAIL.test(value)) {
|
|
79
|
+
throw new TypeError("EMAIL partyId must be a valid email address");
|
|
80
|
+
}
|
|
81
|
+
if (type === common_js_1.PartyIdType.PARTY_CODE) {
|
|
82
|
+
requireUuidV4(value, "PARTY_CODE partyId");
|
|
83
|
+
}
|
|
84
|
+
return encodeStrictPathSegment(value, "partyId");
|
|
85
|
+
}
|
|
86
|
+
function validateParty(party, name) {
|
|
87
|
+
if (!party) {
|
|
88
|
+
throw new TypeError(`${name} is required`);
|
|
89
|
+
}
|
|
90
|
+
if (typeof party.partyId !== "string" || party.partyId.length === 0) {
|
|
91
|
+
throw new TypeError(`${name}.partyId is required`);
|
|
92
|
+
}
|
|
93
|
+
if (!party.partyIdType) {
|
|
94
|
+
throw new TypeError(`${name}.partyIdType is required`);
|
|
95
|
+
}
|
|
96
|
+
const type = pathPartyType(party.partyIdType);
|
|
97
|
+
pathPartyId(type, party.partyId);
|
|
98
|
+
}
|
|
99
|
+
function encodeStrictPathSegment(value, name) {
|
|
100
|
+
if (typeof value !== "string" &&
|
|
101
|
+
typeof value !== "number" &&
|
|
102
|
+
typeof value !== "bigint") {
|
|
103
|
+
throw new TypeError(`${name} must be a supported primitive`);
|
|
104
|
+
}
|
|
105
|
+
const segment = String(value);
|
|
106
|
+
if (!segment) {
|
|
107
|
+
throw new TypeError(`${name} is required`);
|
|
108
|
+
}
|
|
109
|
+
if (CONTROL_CHARACTER.test(segment)) {
|
|
110
|
+
throw new TypeError(`${name} contains control characters`);
|
|
111
|
+
}
|
|
112
|
+
if (segment === "." ||
|
|
113
|
+
segment === ".." ||
|
|
114
|
+
FORBIDDEN_PATH_CHARACTER.test(segment) ||
|
|
115
|
+
ENCODED_PATH_SEPARATOR.test(segment)) {
|
|
116
|
+
throw new TypeError(`${name} contains unsafe path characters`);
|
|
117
|
+
}
|
|
118
|
+
let decoded = segment;
|
|
119
|
+
try {
|
|
120
|
+
decoded = decodeURIComponent(segment);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
throw new TypeError(`${name} contains invalid percent encoding`);
|
|
124
|
+
}
|
|
125
|
+
if (decoded === "." ||
|
|
126
|
+
decoded === ".." ||
|
|
127
|
+
FORBIDDEN_PATH_CHARACTER.test(decoded) ||
|
|
128
|
+
CONTROL_CHARACTER.test(decoded)) {
|
|
129
|
+
throw new TypeError(`${name} contains unsafe path characters`);
|
|
130
|
+
}
|
|
131
|
+
return encodeURIComponent(segment);
|
|
132
|
+
}
|
|
133
|
+
function validateFinancialAmount(amount, name = "amount") {
|
|
134
|
+
if (typeof amount !== "string" || amount.length === 0) {
|
|
135
|
+
throw new TypeError(`${name} is required`);
|
|
136
|
+
}
|
|
137
|
+
if (!POSITIVE_DECIMAL.test(amount)) {
|
|
138
|
+
throw new TypeError(`${name} must be a number`);
|
|
139
|
+
}
|
|
140
|
+
if (/^0+(?:\.0+)?$/.test(amount)) {
|
|
141
|
+
throw new TypeError(`${name} must be greater than zero`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function validateCurrency(currency) {
|
|
145
|
+
pathCurrency(currency);
|
|
146
|
+
}
|
|
147
|
+
function validateAccessToken(token, name = "consentToken") {
|
|
148
|
+
if (typeof token !== "string" ||
|
|
149
|
+
token.length === 0 ||
|
|
150
|
+
/\s/.test(token) ||
|
|
151
|
+
CONTROL_CHARACTER.test(token)) {
|
|
152
|
+
throw new TypeError(`${name} must be a non-empty bearer token`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function normalizeBaseUrl(baseUrl, environment) {
|
|
156
|
+
let url;
|
|
157
|
+
try {
|
|
158
|
+
url = new URL(baseUrl);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
throw new TypeError("baseUrl must be a valid absolute URL");
|
|
162
|
+
}
|
|
163
|
+
if (url.username || url.password) {
|
|
164
|
+
throw new TypeError("baseUrl must not contain embedded credentials");
|
|
165
|
+
}
|
|
166
|
+
if (url.search || url.hash) {
|
|
167
|
+
throw new TypeError("baseUrl must not contain a query string or fragment");
|
|
168
|
+
}
|
|
169
|
+
const loopback = url.hostname === "127.0.0.1" ||
|
|
170
|
+
url.hostname === "localhost" ||
|
|
171
|
+
url.hostname === "::1" ||
|
|
172
|
+
url.hostname === "[::1]";
|
|
173
|
+
const testLoopback = environment === common_js_1.Environment.SANDBOX &&
|
|
174
|
+
process.env.NODE_ENV === "test" &&
|
|
175
|
+
loopback &&
|
|
176
|
+
url.protocol === "http:";
|
|
177
|
+
if (url.protocol !== "https:" && !testLoopback) {
|
|
178
|
+
const scope = environment === common_js_1.Environment.PRODUCTION ? "production " : "";
|
|
179
|
+
throw new TypeError(`${scope}baseUrl must use https`);
|
|
180
|
+
}
|
|
181
|
+
return url.toString().replace(/\/+$/, "");
|
|
182
|
+
}
|
|
183
|
+
function validateGlobalSecurityConfig(config) {
|
|
184
|
+
const environment = config.environment ?? common_js_1.Environment.SANDBOX;
|
|
185
|
+
if (environment !== common_js_1.Environment.SANDBOX &&
|
|
186
|
+
environment !== common_js_1.Environment.PRODUCTION) {
|
|
187
|
+
throw new TypeError("environment must be sandbox or production");
|
|
188
|
+
}
|
|
189
|
+
const baseUrl = config.baseUrl ?? "https://sandbox.momodeveloper.mtn.com";
|
|
190
|
+
normalizeBaseUrl(baseUrl, environment);
|
|
191
|
+
if (config.timeoutMs !== undefined &&
|
|
192
|
+
(!Number.isInteger(config.timeoutMs) ||
|
|
193
|
+
config.timeoutMs <= 0 ||
|
|
194
|
+
config.timeoutMs > exports.MAX_TIMEOUT_MS)) {
|
|
195
|
+
throw new TypeError(`timeoutMs must be an integer between 1 and ${exports.MAX_TIMEOUT_MS}`);
|
|
196
|
+
}
|
|
197
|
+
if (config.maxResponseBytes !== undefined &&
|
|
198
|
+
(!Number.isInteger(config.maxResponseBytes) ||
|
|
199
|
+
config.maxResponseBytes < 1024 ||
|
|
200
|
+
config.maxResponseBytes > exports.MAX_RESPONSE_BYTES)) {
|
|
201
|
+
throw new TypeError(`maxResponseBytes must be an integer between 1024 and ${exports.MAX_RESPONSE_BYTES}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function redactSensitiveText(value) {
|
|
205
|
+
return value
|
|
206
|
+
.replace(/\b(Basic|Bearer)\s+\S+/gi, "$1 [redacted]")
|
|
207
|
+
.replace(/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi, "[redacted]")
|
|
208
|
+
.replace(/\+?\d{7,15}/g, "[redacted]");
|
|
209
|
+
}
|
|
210
|
+
const SAFE_PATH_PARTS = new Set([
|
|
211
|
+
"",
|
|
212
|
+
"collection",
|
|
213
|
+
"disbursement",
|
|
214
|
+
"remittance",
|
|
215
|
+
"v1_0",
|
|
216
|
+
"v2_0",
|
|
217
|
+
"oauth2",
|
|
218
|
+
"token",
|
|
219
|
+
"requesttopay",
|
|
220
|
+
"requesttowithdraw",
|
|
221
|
+
"transfer",
|
|
222
|
+
"cashtransfer",
|
|
223
|
+
"deposit",
|
|
224
|
+
"refund",
|
|
225
|
+
"account",
|
|
226
|
+
"balance",
|
|
227
|
+
"accountholder",
|
|
228
|
+
"active",
|
|
229
|
+
"basicuserinfo",
|
|
230
|
+
"userinfo",
|
|
231
|
+
"bc-authorize",
|
|
232
|
+
"deliverynotification",
|
|
233
|
+
"apiuser",
|
|
234
|
+
"apikey",
|
|
235
|
+
]);
|
|
236
|
+
function redactUrl(value) {
|
|
237
|
+
try {
|
|
238
|
+
const url = new URL(value);
|
|
239
|
+
url.username = "";
|
|
240
|
+
url.password = "";
|
|
241
|
+
url.search = "";
|
|
242
|
+
url.hash = "";
|
|
243
|
+
url.pathname = url.pathname
|
|
244
|
+
.split("/")
|
|
245
|
+
.map((part) => (SAFE_PATH_PARTS.has(part) ? part : "[redacted]"))
|
|
246
|
+
.join("/");
|
|
247
|
+
return url.toString();
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return "[invalid-url]";
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/security.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/users.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type
|
|
1
|
+
import type { HttpClient } from "./httpClient.js";
|
|
2
|
+
import { Environment, type ApiUserInfo, type Credentials } from "./common.js";
|
|
3
3
|
export default class Users {
|
|
4
4
|
private client;
|
|
5
|
-
|
|
5
|
+
private environment;
|
|
6
|
+
constructor(client: HttpClient, environment?: Environment);
|
|
6
7
|
/**
|
|
7
8
|
* Used to create an API user in the sandbox target environment
|
|
8
9
|
* @param host The provider callback host
|
|
@@ -18,5 +19,6 @@ export default class Users {
|
|
|
18
19
|
* @param referenceId API user reference id (X-Reference-Id used at creation)
|
|
19
20
|
*/
|
|
20
21
|
getApiUser(referenceId: string): Promise<ApiUserInfo>;
|
|
22
|
+
private assertSandbox;
|
|
21
23
|
}
|
|
22
24
|
//# sourceMappingURL=users.d.ts.map
|
package/lib/cjs/users.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAO9E,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAc;gBAG/B,MAAM,EAAE,UAAU,EAClB,WAAW,GAAE,WAAiC;IAMhD;;;OAGG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB5C;;;OAGG;IACI,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOlD;;;OAGG;IACI,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO5D,OAAO,CAAC,aAAa;CAKtB"}
|
package/lib/cjs/users.js
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const common_js_1 = require("./common.js");
|
|
4
|
+
const security_js_1 = require("./security.js");
|
|
4
5
|
class Users {
|
|
5
|
-
constructor(client) {
|
|
6
|
+
constructor(client, environment = common_js_1.Environment.SANDBOX) {
|
|
6
7
|
this.client = client;
|
|
8
|
+
this.environment = environment;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* Used to create an API user in the sandbox target environment
|
|
10
12
|
* @param host The provider callback host
|
|
11
13
|
*/
|
|
12
14
|
create(host) {
|
|
13
|
-
|
|
15
|
+
this.assertSandbox();
|
|
16
|
+
const safeHost = (0, security_js_1.encodeStrictPathSegment)(host, "host");
|
|
17
|
+
const userId = (0, security_js_1.generateReferenceId)();
|
|
14
18
|
return this.client
|
|
15
|
-
.post("/v1_0/apiuser", { providerCallbackHost:
|
|
19
|
+
.post("/v1_0/apiuser", { providerCallbackHost: decodeURIComponent(safeHost) }, {
|
|
16
20
|
headers: {
|
|
17
21
|
"X-Reference-Id": userId,
|
|
18
22
|
},
|
|
@@ -24,8 +28,9 @@ class Users {
|
|
|
24
28
|
* @param userId
|
|
25
29
|
*/
|
|
26
30
|
login(userId) {
|
|
31
|
+
this.assertSandbox();
|
|
27
32
|
return this.client
|
|
28
|
-
.post(`/v1_0/apiuser/${userId}/apikey`)
|
|
33
|
+
.post(`/v1_0/apiuser/${(0, security_js_1.pathUuid)(userId, "userId")}/apikey`)
|
|
29
34
|
.then((response) => response.data);
|
|
30
35
|
}
|
|
31
36
|
/**
|
|
@@ -33,10 +38,16 @@ class Users {
|
|
|
33
38
|
* @param referenceId API user reference id (X-Reference-Id used at creation)
|
|
34
39
|
*/
|
|
35
40
|
getApiUser(referenceId) {
|
|
41
|
+
this.assertSandbox();
|
|
36
42
|
return this.client
|
|
37
|
-
.get(`/v1_0/apiuser/${referenceId}`)
|
|
43
|
+
.get(`/v1_0/apiuser/${(0, security_js_1.pathUuid)(referenceId)}`)
|
|
38
44
|
.then((response) => response.data);
|
|
39
45
|
}
|
|
46
|
+
assertSandbox() {
|
|
47
|
+
if (this.environment !== common_js_1.Environment.SANDBOX) {
|
|
48
|
+
throw new Error("API user provisioning is only available in sandbox");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
40
51
|
}
|
|
41
52
|
exports.default = Users;
|
|
42
53
|
//# sourceMappingURL=users.js.map
|
package/lib/cjs/users.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/users.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/users.ts"],"names":[],"mappings":";;AAEA,2CAA8E;AAC9E,+CAIuB;AAEvB,MAAqB,KAAK;IAIxB,YACE,MAAkB,EAClB,cAA2B,uBAAW,CAAC,OAAO;QAE9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAA,qCAAuB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAA,iCAAmB,GAAE,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM;aACf,IAAI,CACH,eAAe,EACf,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EACtD;YACE,OAAO,EAAE;gBACP,gBAAgB,EAAE,MAAM;aACzB;SACF,CACF;aACA,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAc;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM;aACf,IAAI,CAAc,iBAAiB,IAAA,sBAAQ,EAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;aACvE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,WAAmB;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAc,iBAAiB,IAAA,sBAAQ,EAAC,WAAW,CAAC,EAAE,CAAC;aAC1D,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,WAAW,KAAK,uBAAW,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AA5DD,wBA4DC"}
|
package/lib/cjs/validate.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { PaymentRequest } from "./collections";
|
|
2
|
-
import type
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export declare function validateRequestToPay(paymentRequest: PaymentRequest): Promise<void>;
|
|
1
|
+
import type { PaymentRequest } from "./collections.js";
|
|
2
|
+
import { type CashTransferRequest, type DepositRequest, type GlobalConfig, type ProductConfig, type RefundRequest, type SubscriptionConfig, type UserConfig, type WithdrawalRequest } from "./common.js";
|
|
3
|
+
import type { TransferRequest } from "./disbursements.js";
|
|
4
|
+
export declare function validateRequestToPay(request: PaymentRequest): Promise<void>;
|
|
6
5
|
export declare function validateWithdrawalRequest(request: WithdrawalRequest): Promise<void>;
|
|
7
6
|
export declare function validateDepositRequest(request: DepositRequest): Promise<void>;
|
|
8
7
|
export declare function validateRefundRequest(request: RefundRequest): Promise<void>;
|
|
9
|
-
export declare function validateTransfer(
|
|
8
|
+
export declare function validateTransfer(request: TransferRequest): Promise<void>;
|
|
9
|
+
export declare function validateCashTransferRequest(request: CashTransferRequest): Promise<void>;
|
|
10
10
|
export declare function validateGlobalConfig(config: GlobalConfig): void;
|
|
11
11
|
export declare function validateProductConfig(config: ProductConfig): void;
|
|
12
12
|
export declare function validateSubscriptionConfig(config: SubscriptionConfig): void;
|
|
13
|
-
export declare function validateUserConfig(
|
|
13
|
+
export declare function validateUserConfig(config: UserConfig): void;
|
|
14
14
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgB1D,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAW/D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAGjE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAI3D"}
|
package/lib/cjs/validate.js
CHANGED
|
@@ -5,107 +5,90 @@ exports.validateWithdrawalRequest = validateWithdrawalRequest;
|
|
|
5
5
|
exports.validateDepositRequest = validateDepositRequest;
|
|
6
6
|
exports.validateRefundRequest = validateRefundRequest;
|
|
7
7
|
exports.validateTransfer = validateTransfer;
|
|
8
|
+
exports.validateCashTransferRequest = validateCashTransferRequest;
|
|
8
9
|
exports.validateGlobalConfig = validateGlobalConfig;
|
|
9
10
|
exports.validateProductConfig = validateProductConfig;
|
|
10
11
|
exports.validateSubscriptionConfig = validateSubscriptionConfig;
|
|
11
12
|
exports.validateUserConfig = validateUserConfig;
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
const common_js_1 = require("./common.js");
|
|
14
|
+
const security_js_1 = require("./security.js");
|
|
15
|
+
function requireString(value, name) {
|
|
16
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
17
|
+
throw new TypeError(`${name} is required`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async function validateRequestToPay(request) {
|
|
21
|
+
const { amount, currency, payer, referenceId } = request || {};
|
|
22
|
+
(0, security_js_1.validateFinancialAmount)(amount);
|
|
23
|
+
(0, security_js_1.validateCurrency)(currency);
|
|
24
|
+
(0, security_js_1.validateParty)(payer, "payer");
|
|
25
|
+
if (referenceId !== undefined)
|
|
26
|
+
(0, security_js_1.requireUuidV4)(referenceId);
|
|
27
|
+
}
|
|
28
|
+
async function validateWithdrawalRequest(request) {
|
|
29
|
+
const { amount, currency, payee, referenceId } = request || {};
|
|
30
|
+
(0, security_js_1.validateFinancialAmount)(amount);
|
|
31
|
+
(0, security_js_1.validateCurrency)(currency);
|
|
32
|
+
(0, security_js_1.validateParty)(payee, "payee");
|
|
33
|
+
if (referenceId !== undefined)
|
|
34
|
+
(0, security_js_1.requireUuidV4)(referenceId);
|
|
25
35
|
}
|
|
26
|
-
function
|
|
27
|
-
const { amount, currency, payee } = request || {};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
(0,
|
|
33
|
-
(0, assert_1.strictEqual)(isTruthy(payee?.partyId), true, "payee.partyId is required");
|
|
34
|
-
(0, assert_1.strictEqual)(isTruthy(payee?.partyIdType), true, "payee.partyIdType is required");
|
|
35
|
-
(0, assert_1.strictEqual)(isString(currency), true, "currency must be a string");
|
|
36
|
-
});
|
|
36
|
+
async function validateDepositRequest(request) {
|
|
37
|
+
const { amount, currency, payee, referenceId } = request || {};
|
|
38
|
+
(0, security_js_1.validateFinancialAmount)(amount);
|
|
39
|
+
(0, security_js_1.validateCurrency)(currency);
|
|
40
|
+
(0, security_js_1.validateParty)(payee, "payee");
|
|
41
|
+
if (referenceId !== undefined)
|
|
42
|
+
(0, security_js_1.requireUuidV4)(referenceId);
|
|
37
43
|
}
|
|
38
|
-
function
|
|
39
|
-
const { amount, currency,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
(0,
|
|
45
|
-
(0, assert_1.strictEqual)(isTruthy(payee?.partyId), true, "payee.partyId is required");
|
|
46
|
-
(0, assert_1.strictEqual)(isTruthy(payee?.partyIdType), true, "payee.partyIdType is required");
|
|
47
|
-
(0, assert_1.strictEqual)(isString(currency), true, "currency must be a string");
|
|
48
|
-
});
|
|
44
|
+
async function validateRefundRequest(request) {
|
|
45
|
+
const { amount, currency, referenceIdToRefund, referenceId } = request || {};
|
|
46
|
+
(0, security_js_1.pathUuid)(referenceIdToRefund, "referenceIdToRefund");
|
|
47
|
+
(0, security_js_1.validateFinancialAmount)(amount);
|
|
48
|
+
(0, security_js_1.validateCurrency)(currency);
|
|
49
|
+
if (referenceId !== undefined)
|
|
50
|
+
(0, security_js_1.requireUuidV4)(referenceId);
|
|
49
51
|
}
|
|
50
|
-
function
|
|
51
|
-
const { amount, currency,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
(0,
|
|
57
|
-
(0, assert_1.strictEqual)(isTruthy(currency), true, "currency is required");
|
|
58
|
-
(0, assert_1.strictEqual)(isString(currency), true, "currency must be a string");
|
|
59
|
-
});
|
|
52
|
+
async function validateTransfer(request) {
|
|
53
|
+
const { amount, currency, payee, referenceId } = request || {};
|
|
54
|
+
(0, security_js_1.validateFinancialAmount)(amount);
|
|
55
|
+
(0, security_js_1.validateCurrency)(currency);
|
|
56
|
+
(0, security_js_1.validateParty)(payee, "payee");
|
|
57
|
+
if (referenceId !== undefined)
|
|
58
|
+
(0, security_js_1.requireUuidV4)(referenceId);
|
|
60
59
|
}
|
|
61
|
-
function
|
|
62
|
-
const { amount, currency, payee, referenceId } =
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
(0,
|
|
68
|
-
|
|
69
|
-
(0,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
(0,
|
|
73
|
-
}
|
|
60
|
+
async function validateCashTransferRequest(request) {
|
|
61
|
+
const { amount, currency, payee, referenceId } = request || {};
|
|
62
|
+
(0, security_js_1.validateFinancialAmount)(amount);
|
|
63
|
+
(0, security_js_1.validateCurrency)(currency);
|
|
64
|
+
(0, security_js_1.validateParty)(payee, "payee");
|
|
65
|
+
if (referenceId !== undefined)
|
|
66
|
+
(0, security_js_1.requireUuidV4)(referenceId);
|
|
67
|
+
if (request.originalAmount !== undefined) {
|
|
68
|
+
(0, security_js_1.validateFinancialAmount)(request.originalAmount, "originalAmount");
|
|
69
|
+
}
|
|
70
|
+
if (request.originalCurrency !== undefined) {
|
|
71
|
+
(0, security_js_1.validateCurrency)(request.originalCurrency);
|
|
72
|
+
}
|
|
74
73
|
}
|
|
75
74
|
function validateGlobalConfig(config) {
|
|
76
|
-
|
|
77
|
-
(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
(0, assert_1.strictEqual)(isString(baseUrl), true, "baseUrl must be a string");
|
|
75
|
+
requireString(config?.callbackHost, "callbackHost");
|
|
76
|
+
if (config.environment === common_js_1.Environment.PRODUCTION &&
|
|
77
|
+
config.baseUrl === undefined) {
|
|
78
|
+
throw new TypeError("baseUrl is required if environment is not sandbox");
|
|
81
79
|
}
|
|
80
|
+
(0, security_js_1.validateGlobalSecurityConfig)(config);
|
|
82
81
|
}
|
|
83
82
|
function validateProductConfig(config) {
|
|
84
83
|
validateSubscriptionConfig(config);
|
|
85
84
|
validateUserConfig(config);
|
|
86
85
|
}
|
|
87
86
|
function validateSubscriptionConfig(config) {
|
|
88
|
-
|
|
89
|
-
(0, assert_1.strictEqual)(isTruthy(primaryKey), true, "primaryKey is required");
|
|
90
|
-
(0, assert_1.strictEqual)(isString(primaryKey), true, "primaryKey must be a string");
|
|
91
|
-
}
|
|
92
|
-
function validateUserConfig({ userId, userSecret }) {
|
|
93
|
-
(0, assert_1.strictEqual)(isTruthy(userId), true, "userId is required");
|
|
94
|
-
(0, assert_1.strictEqual)(isString(userId), true, "userId must be a string");
|
|
95
|
-
(0, assert_1.strictEqual)(isTruthy(userSecret), true, "userSecret is required");
|
|
96
|
-
(0, assert_1.strictEqual)(isString(userSecret), true, "userSecret must be a string");
|
|
97
|
-
(0, assert_1.strictEqual)(isUuid4(userId), true, "userId must be a valid uuid v4");
|
|
98
|
-
}
|
|
99
|
-
function isNumeric(value) {
|
|
100
|
-
return !isNaN(parseInt(value, 10));
|
|
101
|
-
}
|
|
102
|
-
function isTruthy(value) {
|
|
103
|
-
return !!value;
|
|
104
|
-
}
|
|
105
|
-
function isString(value) {
|
|
106
|
-
return typeof value === "string";
|
|
87
|
+
requireString(config?.primaryKey, "primaryKey");
|
|
107
88
|
}
|
|
108
|
-
function
|
|
109
|
-
|
|
89
|
+
function validateUserConfig(config) {
|
|
90
|
+
requireString(config?.userId, "userId");
|
|
91
|
+
requireString(config?.userSecret, "userSecret");
|
|
92
|
+
(0, security_js_1.requireUuidV4)(config.userId, "userId");
|
|
110
93
|
}
|
|
111
94
|
//# sourceMappingURL=validate.js.map
|
package/lib/cjs/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/auth.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { AccessToken, Config, UserConfig } from "./common";
|
|
1
|
+
import type { HttpClient } from "./httpClient.js";
|
|
2
|
+
import type { AccessToken, Config, UserConfig } from "./common.js";
|
|
3
3
|
export type TokenRefresher = () => Promise<string>;
|
|
4
4
|
export interface AuthorizerOptions {
|
|
5
5
|
grant_type?: string;
|
|
6
6
|
refresh_token?: string;
|
|
7
7
|
}
|
|
8
|
-
export type Authorizer = (config: Config, options?: AuthorizerOptions, client?:
|
|
8
|
+
export type Authorizer = (config: Config, options?: AuthorizerOptions, client?: HttpClient) => Promise<AccessToken & {
|
|
9
9
|
refresh_token?: string;
|
|
10
10
|
refresh_token_expired_in?: number;
|
|
11
11
|
}>;
|
package/lib/esm/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnE,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,UAAU,KAChB,OAAO,CAAC,WAAW,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAS1F,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,MAAM,GACb,cAAc,CA8DhB;AASD,eAAO,MAAM,oBAAoB,EAAE,UAalC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,UAapC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAajC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAI/D"}
|