awesome-node-checkout 2.0.0 → 2.1.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/CHANGELOG.md +35 -0
- package/README.md +280 -2
- package/dist/adapters/express/index.d.ts +69 -1
- package/dist/adapters/express/index.d.ts.map +1 -1
- package/dist/adapters/express/index.js +147 -2
- package/dist/adapters/express/index.js.map +1 -1
- package/dist/checkout-configurator.d.ts +106 -0
- package/dist/checkout-configurator.d.ts.map +1 -1
- package/dist/checkout-configurator.js +515 -0
- package/dist/checkout-configurator.js.map +1 -1
- package/dist/events/checkout-event-bus.d.ts +11 -1
- package/dist/events/checkout-event-bus.d.ts.map +1 -1
- package/dist/events/checkout-event-bus.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/mandate-provider.interface.d.ts +40 -0
- package/dist/interfaces/mandate-provider.interface.d.ts.map +1 -0
- package/dist/interfaces/mandate-provider.interface.js +18 -0
- package/dist/interfaces/mandate-provider.interface.js.map +1 -0
- package/dist/models/checkout-config.model.d.ts +16 -0
- package/dist/models/checkout-config.model.d.ts.map +1 -1
- package/dist/models/errors.d.ts +1 -1
- package/dist/models/errors.d.ts.map +1 -1
- package/dist/models/errors.js.map +1 -1
- package/dist/models/mandate.model.d.ts +166 -0
- package/dist/models/mandate.model.d.ts.map +1 -0
- package/dist/models/mandate.model.js +19 -0
- package/dist/models/mandate.model.js.map +1 -0
- package/dist/providers/nexi/nexi.provider.d.ts +125 -1
- package/dist/providers/nexi/nexi.provider.d.ts.map +1 -1
- package/dist/providers/nexi/nexi.provider.js +652 -10
- package/dist/providers/nexi/nexi.provider.js.map +1 -1
- package/dist/providers/paypal/paypal.provider.d.ts +44 -1
- package/dist/providers/paypal/paypal.provider.d.ts.map +1 -1
- package/dist/providers/paypal/paypal.provider.js +519 -0
- package/dist/providers/paypal/paypal.provider.js.map +1 -1
- package/dist/providers/satispay/satispay.provider.d.ts +86 -1
- package/dist/providers/satispay/satispay.provider.d.ts.map +1 -1
- package/dist/providers/satispay/satispay.provider.js +417 -0
- package/dist/providers/satispay/satispay.provider.js.map +1 -1
- package/dist/utils/redact.d.ts +15 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +60 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/url.d.ts +12 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +19 -0
- package/dist/utils/url.js.map +1 -0
- package/package.json +2 -2
|
@@ -3,6 +3,106 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CheckoutConfigurator = void 0;
|
|
4
4
|
const errors_1 = require("./models/errors");
|
|
5
5
|
const checkout_event_bus_1 = require("./events/checkout-event-bus");
|
|
6
|
+
const mandate_provider_interface_1 = require("./interfaces/mandate-provider.interface");
|
|
7
|
+
const mandate_model_1 = require("./models/mandate.model");
|
|
8
|
+
const money_1 = require("./utils/money");
|
|
9
|
+
const redact_1 = require("./utils/redact");
|
|
10
|
+
const CHARGE_STATUSES = new Set([
|
|
11
|
+
'succeeded',
|
|
12
|
+
'failed',
|
|
13
|
+
'unknown',
|
|
14
|
+
'requires_action',
|
|
15
|
+
]);
|
|
16
|
+
const CHARGE_EVENTS = {
|
|
17
|
+
succeeded: 'charge.succeeded',
|
|
18
|
+
failed: 'charge.failed',
|
|
19
|
+
unknown: 'charge.unknown',
|
|
20
|
+
requires_action: 'charge.requires_action',
|
|
21
|
+
};
|
|
22
|
+
const SETUP_MISMATCH = 'Mandate outcome does not match the pending setup';
|
|
23
|
+
const AMOUNT_MISMATCH = 'Charged amount does not match the request';
|
|
24
|
+
function isObject(value) {
|
|
25
|
+
return value !== null && typeof value === 'object';
|
|
26
|
+
}
|
|
27
|
+
function isNonEmptyString(value) {
|
|
28
|
+
return typeof value === 'string' && value.trim() !== '';
|
|
29
|
+
}
|
|
30
|
+
/** An absolute `http:` or `https:` URL (what `appendMandateRef` and the providers need). */
|
|
31
|
+
function isAbsoluteHttpUrl(value) {
|
|
32
|
+
if (typeof value !== 'string')
|
|
33
|
+
return false;
|
|
34
|
+
try {
|
|
35
|
+
const { protocol } = new URL(value);
|
|
36
|
+
return protocol === 'https:' || protocol === 'http:';
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Same amount in minor units (and same currency, when reported). Only present fields are compared. */
|
|
43
|
+
function chargedAmountMatches(result, amount, currency) {
|
|
44
|
+
if (result.currency != null) {
|
|
45
|
+
const expected = typeof currency === 'string' ? currency.trim().toUpperCase() : '';
|
|
46
|
+
if (typeof result.currency !== 'string' || expected === '')
|
|
47
|
+
return false;
|
|
48
|
+
if (result.currency.trim().toUpperCase() !== expected)
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (result.amount != null) {
|
|
52
|
+
try {
|
|
53
|
+
return (0, money_1.toMinorUnits)(result.amount, currency) === (0, money_1.toMinorUnits)(amount, currency);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// An invalid reported amount never matches; never throw after money may have moved
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* `pending.amount` / `pending.currency` (returned by the provider) equal the setup request's.
|
|
64
|
+
* Unlike `chargedAmountMatches`, both fields are required: a missing or invalid one is a mismatch.
|
|
65
|
+
*/
|
|
66
|
+
function pendingAmountMatches(pending, request) {
|
|
67
|
+
if (typeof pending.currency !== 'string')
|
|
68
|
+
return false;
|
|
69
|
+
const currency = pending.currency.trim().toUpperCase();
|
|
70
|
+
if (currency === '' || currency !== request.currency.trim().toUpperCase())
|
|
71
|
+
return false;
|
|
72
|
+
try {
|
|
73
|
+
return (0, money_1.toMinorUnits)(pending.amount, currency) === (0, money_1.toMinorUnits)(request.amount, currency);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The ids scrubbed from every event of a terminal setup outcome (`mandate.created` or
|
|
81
|
+
* `mandate.setup_failed`, and the first charge's `charge.*`):
|
|
82
|
+
* - the mandate's `providerMandateId`, taken from the provider's outcome (a dropped mandate's id
|
|
83
|
+
* may still be inside `raw`);
|
|
84
|
+
* - `pending.providerRef`, which is the providerMandateId itself for Satispay (token id) and can
|
|
85
|
+
* reach `raw` or `error` even when the setup failed and no mandate is returned. It is kept when
|
|
86
|
+
* it is the app's own `orderId` or `mandateRef` (Nexi `codTrans`), or the verified first
|
|
87
|
+
* charge's `providerPaymentId` (the PayPal order id, which refunds the charge), unless it is
|
|
88
|
+
* also the providerMandateId.
|
|
89
|
+
*/
|
|
90
|
+
function setupEventSecrets(pending, providerOutcome, outcome) {
|
|
91
|
+
const secrets = [];
|
|
92
|
+
const providerMandateId = isObject(providerOutcome) && isObject(providerOutcome.mandate)
|
|
93
|
+
? providerOutcome.mandate.providerMandateId
|
|
94
|
+
: undefined;
|
|
95
|
+
if (isNonEmptyString(providerMandateId))
|
|
96
|
+
secrets.push(providerMandateId);
|
|
97
|
+
const providerRef = pending.providerRef;
|
|
98
|
+
if (isNonEmptyString(providerRef) &&
|
|
99
|
+
providerRef !== pending.orderId &&
|
|
100
|
+
providerRef !== pending.mandateRef &&
|
|
101
|
+
providerRef !== outcome.firstCharge.providerPaymentId) {
|
|
102
|
+
secrets.push(providerRef);
|
|
103
|
+
}
|
|
104
|
+
return secrets;
|
|
105
|
+
}
|
|
6
106
|
/**
|
|
7
107
|
* Main entry point for awesome-node-checkout.
|
|
8
108
|
*
|
|
@@ -226,6 +326,421 @@ class CheckoutConfigurator {
|
|
|
226
326
|
});
|
|
227
327
|
return result;
|
|
228
328
|
}
|
|
329
|
+
// ---------------------------------------------------------------------------
|
|
330
|
+
// Recurring payments (mandates)
|
|
331
|
+
// ---------------------------------------------------------------------------
|
|
332
|
+
/**
|
|
333
|
+
* True when the provider implements `IMandateProvider`.
|
|
334
|
+
* @throws CheckoutError('PROVIDER_NOT_FOUND') if the provider is not registered.
|
|
335
|
+
*/
|
|
336
|
+
supportsMandates(providerName) {
|
|
337
|
+
return (0, mandate_provider_interface_1.isMandateProvider)(this.getProvider(providerName));
|
|
338
|
+
}
|
|
339
|
+
/** Resolves a provider that implements mandates, or throws MANDATES_NOT_SUPPORTED. */
|
|
340
|
+
getMandateProvider(providerName) {
|
|
341
|
+
const provider = this.getProvider(providerName);
|
|
342
|
+
if (!(0, mandate_provider_interface_1.isMandateProvider)(provider)) {
|
|
343
|
+
throw new errors_1.CheckoutError(`Provider '${providerName}' does not support recurring payments (mandates)`, 'MANDATES_NOT_SUPPORTED', providerName);
|
|
344
|
+
}
|
|
345
|
+
return provider;
|
|
346
|
+
}
|
|
347
|
+
invalidMandate(message, providerName) {
|
|
348
|
+
return new errors_1.CheckoutError(message, 'INVALID_MANDATE_REQUEST', providerName);
|
|
349
|
+
}
|
|
350
|
+
/** A persisted mandate passed back by the app: it must belong to this provider. */
|
|
351
|
+
assertMandate(providerName, mandate) {
|
|
352
|
+
if (!isObject(mandate) || mandate.provider !== providerName) {
|
|
353
|
+
throw this.invalidMandate(`Mandate does not belong to provider '${providerName}'`, providerName);
|
|
354
|
+
}
|
|
355
|
+
if (!isNonEmptyString(mandate.mandateRef)) {
|
|
356
|
+
throw this.invalidMandate('Mandate has no mandateRef', providerName);
|
|
357
|
+
}
|
|
358
|
+
if (!isNonEmptyString(mandate.providerMandateId)) {
|
|
359
|
+
throw this.invalidMandate('Mandate has no providerMandateId', providerName);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Event payloads never carry the credential-like `providerMandateId`, nor a setup's
|
|
364
|
+
* `pending.providerRef` (the future Satispay token id): every `secrets` entry is scrubbed from
|
|
365
|
+
* the whole payload (`raw`, `data`, `error`). Nexi's contract number is the app's own
|
|
366
|
+
* `mandateRef`, which is not a credential and is part of every payload, so it is never scrubbed.
|
|
367
|
+
*
|
|
368
|
+
* Used only after a mandate provider call has completed (confirm, charge, revoke): an error
|
|
369
|
+
* raised while emitting (a throwing listener) never rejects the caller, because money may
|
|
370
|
+
* already have moved. It goes to `config.onListenerError` instead (see `reportListenerError`).
|
|
371
|
+
*/
|
|
372
|
+
async emitMandateEvent(event, payload, secrets, mandateRef) {
|
|
373
|
+
try {
|
|
374
|
+
await this.emit(event, (0, redact_1.redactSecret)(payload, secrets.filter((s) => s !== mandateRef)));
|
|
375
|
+
}
|
|
376
|
+
catch (err) {
|
|
377
|
+
await this.reportListenerError(err, event);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/** `config.onListenerError`, or `console.error` without it. Never throws. */
|
|
381
|
+
async reportListenerError(err, event) {
|
|
382
|
+
const hook = this.config.onListenerError;
|
|
383
|
+
if (typeof hook === 'function') {
|
|
384
|
+
try {
|
|
385
|
+
await hook(err, event);
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
catch (hookErr) {
|
|
389
|
+
console.error('[awesome-node-checkout] onListenerError threw', hookErr);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
console.error('[awesome-node-checkout]', err);
|
|
393
|
+
}
|
|
394
|
+
async emitChargeEvent(providerName, mandateRef, result, secrets) {
|
|
395
|
+
await this.emitMandateEvent(CHARGE_EVENTS[result.status], {
|
|
396
|
+
provider: providerName,
|
|
397
|
+
paymentId: result.providerPaymentId,
|
|
398
|
+
orderId: result.chargeRef,
|
|
399
|
+
status: result.status,
|
|
400
|
+
error: result.error,
|
|
401
|
+
verified: result.verified,
|
|
402
|
+
data: {
|
|
403
|
+
mandateRef,
|
|
404
|
+
amount: result.amount,
|
|
405
|
+
currency: result.currency,
|
|
406
|
+
providerCode: result.providerCode,
|
|
407
|
+
mandateUnusable: result.mandateUnusable,
|
|
408
|
+
},
|
|
409
|
+
raw: result.raw,
|
|
410
|
+
}, secrets, mandateRef);
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Charge normalization (fail closed). Returns a new object, never mutates the provider's:
|
|
414
|
+
* - `chargeRef` is always the request's;
|
|
415
|
+
* - an unknown status becomes `unknown`;
|
|
416
|
+
* - `succeeded` without `verified: true` becomes `unknown` (never `failed`: an unauthenticated
|
|
417
|
+
* "success" means we do not know);
|
|
418
|
+
* - a verified `succeeded` whose reported amount or currency differs from the request becomes
|
|
419
|
+
* `unknown` with error 'Charged amount does not match the request'. Absent fields are not
|
|
420
|
+
* compared (Nexi's charge response carries no amount).
|
|
421
|
+
*/
|
|
422
|
+
normalizeCharge(result, chargeRef, amount, currency) {
|
|
423
|
+
const normalized = isObject(result)
|
|
424
|
+
? { ...result }
|
|
425
|
+
: { status: 'unknown', verified: false, chargeRef, error: 'Provider returned no charge result' };
|
|
426
|
+
normalized.chargeRef = chargeRef;
|
|
427
|
+
normalized.verified = normalized.verified === true;
|
|
428
|
+
if (!CHARGE_STATUSES.has(normalized.status)) {
|
|
429
|
+
normalized.status = 'unknown';
|
|
430
|
+
}
|
|
431
|
+
if (normalized.status === 'succeeded') {
|
|
432
|
+
if (!normalized.verified) {
|
|
433
|
+
normalized.status = 'unknown';
|
|
434
|
+
normalized.error = normalized.error ?? 'Charge outcome could not be verified';
|
|
435
|
+
}
|
|
436
|
+
else if (!chargedAmountMatches(normalized, amount, currency)) {
|
|
437
|
+
normalized.status = 'unknown';
|
|
438
|
+
normalized.error = AMOUNT_MISMATCH;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return normalized;
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Starts a mandate setup (customer present). The setup always includes the first charge
|
|
445
|
+
* (`chargeRef = request.orderId`).
|
|
446
|
+
*
|
|
447
|
+
* Validates the request first and throws `CheckoutError('INVALID_MANDATE_REQUEST')` (or
|
|
448
|
+
* `'INVALID_AMOUNT'` from `toMinorUnits`) without calling the provider. `returnUrl` and
|
|
449
|
+
* `cancelUrl` (and `notifyUrl`, when set) must be absolute http(s) URLs. A successful start whose
|
|
450
|
+
* `pending` does not match the request (provider, mandateRef, orderId, amount in minor units,
|
|
451
|
+
* currency) is returned as `success: false`. Persist `pending` before sending the customer to
|
|
452
|
+
* `approvalUrl`. Emits `mandate.setup_started` (`verified: false`) when the start succeeded, with
|
|
453
|
+
* `pending.providerRef` scrubbed from its payload (unless it is the orderId or the mandateRef).
|
|
454
|
+
* A listener error on that event propagates: no money has moved yet.
|
|
455
|
+
*
|
|
456
|
+
* @throws CheckoutError('MANDATES_NOT_SUPPORTED') if the provider does not implement mandates.
|
|
457
|
+
*/
|
|
458
|
+
async createMandate(providerName, request) {
|
|
459
|
+
const provider = this.getMandateProvider(providerName);
|
|
460
|
+
if (!isObject(request)) {
|
|
461
|
+
throw this.invalidMandate('Invalid mandate setup request', providerName);
|
|
462
|
+
}
|
|
463
|
+
if (typeof request.mandateRef !== 'string' || !mandate_model_1.MANDATE_REF_PATTERN.test(request.mandateRef)) {
|
|
464
|
+
throw this.invalidMandate('Invalid mandateRef: expected /^[A-Za-z0-9_-]{5,30}$/', providerName);
|
|
465
|
+
}
|
|
466
|
+
if (typeof request.orderId !== 'string' || !mandate_model_1.CHARGE_REF_PATTERN.test(request.orderId)) {
|
|
467
|
+
throw this.invalidMandate('Invalid orderId: expected /^[A-Za-z0-9-]{2,30}$/', providerName);
|
|
468
|
+
}
|
|
469
|
+
if (!isNonEmptyString(request.currency)) {
|
|
470
|
+
throw this.invalidMandate('currency is required', providerName);
|
|
471
|
+
}
|
|
472
|
+
(0, money_1.toMinorUnits)(request.amount, request.currency);
|
|
473
|
+
if (typeof request.description !== 'string' ||
|
|
474
|
+
request.description.length < 1 ||
|
|
475
|
+
request.description.length > 127) {
|
|
476
|
+
throw this.invalidMandate('Invalid description: 1-127 characters are required', providerName);
|
|
477
|
+
}
|
|
478
|
+
if (!isNonEmptyString(request.returnUrl) || !isNonEmptyString(request.cancelUrl)) {
|
|
479
|
+
throw this.invalidMandate('returnUrl and cancelUrl are required', providerName);
|
|
480
|
+
}
|
|
481
|
+
if (!isAbsoluteHttpUrl(request.returnUrl) || !isAbsoluteHttpUrl(request.cancelUrl)) {
|
|
482
|
+
throw this.invalidMandate('returnUrl and cancelUrl must be absolute http(s) URLs', providerName);
|
|
483
|
+
}
|
|
484
|
+
if (request.notifyUrl != null && !isAbsoluteHttpUrl(request.notifyUrl)) {
|
|
485
|
+
throw this.invalidMandate('notifyUrl must be an absolute http(s) URL', providerName);
|
|
486
|
+
}
|
|
487
|
+
const start = await provider.createMandate(request);
|
|
488
|
+
let result;
|
|
489
|
+
if (!isObject(start) || start.success !== true) {
|
|
490
|
+
result = {
|
|
491
|
+
...(isObject(start) ? start : {}),
|
|
492
|
+
success: false,
|
|
493
|
+
approvalUrl: undefined,
|
|
494
|
+
pending: undefined,
|
|
495
|
+
error: (isObject(start) ? start.error : undefined) ?? 'Mandate setup could not be started',
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
const pending = start.pending;
|
|
500
|
+
// The first charge's amount check in confirmMandate trusts `pending`: bind it to the request
|
|
501
|
+
const matches = isObject(pending) &&
|
|
502
|
+
pending.provider === providerName &&
|
|
503
|
+
pending.mandateRef === request.mandateRef &&
|
|
504
|
+
pending.orderId === request.orderId &&
|
|
505
|
+
pendingAmountMatches(pending, request);
|
|
506
|
+
result = matches
|
|
507
|
+
? { ...start, pending: { ...pending } }
|
|
508
|
+
: {
|
|
509
|
+
...start,
|
|
510
|
+
success: false,
|
|
511
|
+
approvalUrl: undefined,
|
|
512
|
+
pending: undefined,
|
|
513
|
+
error: 'Mandate setup does not match the request',
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
if (result.success) {
|
|
517
|
+
// `pending.providerRef` may become the credential-like providerMandateId (Satispay token
|
|
518
|
+
// id): scrub it from the event's payload. Not when it is the app's own orderId or
|
|
519
|
+
// mandateRef (Nexi), which are part of every payload anyway.
|
|
520
|
+
const providerRef = result.pending?.providerRef;
|
|
521
|
+
const secret = isNonEmptyString(providerRef) && providerRef !== request.orderId && providerRef !== request.mandateRef
|
|
522
|
+
? providerRef
|
|
523
|
+
: undefined;
|
|
524
|
+
// No money has moved yet: a throwing listener propagates, like every non-mandate event
|
|
525
|
+
await this.emit('mandate.setup_started', (0, redact_1.redactSecret)({
|
|
526
|
+
provider: providerName,
|
|
527
|
+
orderId: request.orderId,
|
|
528
|
+
status: 'started',
|
|
529
|
+
// A setup start reports no outcome: nothing has been authenticated yet
|
|
530
|
+
verified: false,
|
|
531
|
+
data: { mandateRef: request.mandateRef },
|
|
532
|
+
raw: result.raw,
|
|
533
|
+
}, secret));
|
|
534
|
+
}
|
|
535
|
+
return result;
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Confirms a mandate setup from a provider callback (redirect or server notification), against
|
|
539
|
+
* the persisted `pending` state. Idempotent: it may be called twice for the same setup.
|
|
540
|
+
*
|
|
541
|
+
* Normalization (fail closed):
|
|
542
|
+
* - an unverified outcome is `success: false`, `terminal: false`, has no `mandate`, and a first
|
|
543
|
+
* charge reported `succeeded` becomes `unknown`;
|
|
544
|
+
* - a verified outcome whose `firstCharge.chargeRef` is not `pending.orderId`, or whose `mandate`
|
|
545
|
+
* does not match `pending` (mandateRef, provider), becomes an unverified, non-terminal failure
|
|
546
|
+
* 'Mandate outcome does not match the pending setup';
|
|
547
|
+
* - `terminal` is the provider's value AND `verified`; it is always `true` with `success: true`.
|
|
548
|
+
*
|
|
549
|
+
* Events are emitted only for terminal outcomes: `mandate.created` (success) or
|
|
550
|
+
* `mandate.setup_failed`, then `charge.*` for the first charge. A non-terminal outcome emits
|
|
551
|
+
* nothing, so a forged callback never looks like a failed setup. Events can repeat for the
|
|
552
|
+
* same setup (redirect and notification, replays): listeners must be idempotent on `orderId`.
|
|
553
|
+
* A throwing listener never rejects this method: the error goes to `config.onListenerError`
|
|
554
|
+
* and the outcome is returned, so `onOutcome` can persist it.
|
|
555
|
+
*
|
|
556
|
+
* A terminal outcome can carry a first charge reported `unknown` (even with `success: true`).
|
|
557
|
+
* Resolve it by calling this method again from a job with the persisted (consumed) `pending` and
|
|
558
|
+
* an empty `input` (`{}`), never with `chargeMandate` and `chargeRef = pending.orderId`. The
|
|
559
|
+
* re-run is terminal again, so its events repeat.
|
|
560
|
+
*
|
|
561
|
+
* @throws CheckoutError('INVALID_MANDATE_REQUEST') if `pending.provider` is not `providerName`.
|
|
562
|
+
*/
|
|
563
|
+
async confirmMandate(providerName, pending, input = {}) {
|
|
564
|
+
const provider = this.getMandateProvider(providerName);
|
|
565
|
+
if (!isObject(pending) || pending.provider !== providerName) {
|
|
566
|
+
throw this.invalidMandate(`Pending mandate setup does not belong to provider '${providerName}'`, providerName);
|
|
567
|
+
}
|
|
568
|
+
if (typeof pending.mandateRef !== 'string' || !mandate_model_1.MANDATE_REF_PATTERN.test(pending.mandateRef)) {
|
|
569
|
+
throw this.invalidMandate('Invalid pending mandateRef', providerName);
|
|
570
|
+
}
|
|
571
|
+
if (typeof pending.orderId !== 'string' || !mandate_model_1.CHARGE_REF_PATTERN.test(pending.orderId)) {
|
|
572
|
+
throw this.invalidMandate('Invalid pending orderId', providerName);
|
|
573
|
+
}
|
|
574
|
+
const providerOutcome = await provider.confirmMandate(pending, input ?? {});
|
|
575
|
+
const outcome = this.normalizeSetupOutcome(providerName, pending, providerOutcome);
|
|
576
|
+
if (outcome.terminal) {
|
|
577
|
+
const secrets = setupEventSecrets(pending, providerOutcome, outcome);
|
|
578
|
+
await this.emitMandateEvent(outcome.success ? 'mandate.created' : 'mandate.setup_failed', {
|
|
579
|
+
provider: providerName,
|
|
580
|
+
orderId: pending.orderId,
|
|
581
|
+
status: outcome.success ? 'active' : 'failed',
|
|
582
|
+
error: outcome.error,
|
|
583
|
+
verified: outcome.verified,
|
|
584
|
+
data: { mandateRef: pending.mandateRef },
|
|
585
|
+
raw: outcome.raw,
|
|
586
|
+
}, secrets, pending.mandateRef);
|
|
587
|
+
await this.emitChargeEvent(providerName, pending.mandateRef, outcome.firstCharge, secrets);
|
|
588
|
+
}
|
|
589
|
+
return outcome;
|
|
590
|
+
}
|
|
591
|
+
normalizeSetupOutcome(providerName, pending, out) {
|
|
592
|
+
const source = isObject(out) ? out : {};
|
|
593
|
+
const providerCharge = isObject(source.firstCharge) ? source.firstCharge : undefined;
|
|
594
|
+
if (source.verified !== true) {
|
|
595
|
+
// Like normalizeOutcome: an unauthenticated callback provides no identities and no amounts
|
|
596
|
+
const firstCharge = providerCharge
|
|
597
|
+
? {
|
|
598
|
+
...providerCharge,
|
|
599
|
+
chargeRef: pending.orderId,
|
|
600
|
+
verified: false,
|
|
601
|
+
providerPaymentId: undefined,
|
|
602
|
+
amount: undefined,
|
|
603
|
+
currency: undefined,
|
|
604
|
+
}
|
|
605
|
+
: { status: 'unknown', verified: false, chargeRef: pending.orderId };
|
|
606
|
+
if (!CHARGE_STATUSES.has(firstCharge.status))
|
|
607
|
+
firstCharge.status = 'unknown';
|
|
608
|
+
if (firstCharge.status === 'succeeded') {
|
|
609
|
+
firstCharge.status = 'unknown';
|
|
610
|
+
firstCharge.error = firstCharge.error ?? 'Charge outcome could not be verified';
|
|
611
|
+
}
|
|
612
|
+
return {
|
|
613
|
+
...source,
|
|
614
|
+
success: false,
|
|
615
|
+
verified: false,
|
|
616
|
+
terminal: false,
|
|
617
|
+
mandate: undefined,
|
|
618
|
+
firstCharge,
|
|
619
|
+
error: source.error ?? 'Mandate outcome could not be verified',
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
const mismatch = () => ({
|
|
623
|
+
success: false,
|
|
624
|
+
verified: false,
|
|
625
|
+
terminal: false,
|
|
626
|
+
firstCharge: { status: 'unknown', verified: false, chargeRef: pending.orderId, error: SETUP_MISMATCH },
|
|
627
|
+
error: SETUP_MISMATCH,
|
|
628
|
+
raw: source.raw,
|
|
629
|
+
});
|
|
630
|
+
if (!providerCharge || providerCharge.chargeRef !== pending.orderId)
|
|
631
|
+
return mismatch();
|
|
632
|
+
const mandate = source.mandate;
|
|
633
|
+
if (mandate !== undefined && mandate !== null) {
|
|
634
|
+
if (!isObject(mandate) || mandate.mandateRef !== pending.mandateRef || mandate.provider !== providerName) {
|
|
635
|
+
return mismatch();
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
const success = source.success === true;
|
|
639
|
+
if (success &&
|
|
640
|
+
(!isObject(mandate) || mandate.status !== 'active' || !isNonEmptyString(mandate.providerMandateId))) {
|
|
641
|
+
// success: true means an active mandate: anything else is a provider bug
|
|
642
|
+
return mismatch();
|
|
643
|
+
}
|
|
644
|
+
const firstCharge = this.normalizeCharge(providerCharge, pending.orderId, pending.amount, pending.currency);
|
|
645
|
+
return {
|
|
646
|
+
...source,
|
|
647
|
+
success,
|
|
648
|
+
verified: true,
|
|
649
|
+
terminal: success || source.terminal === true,
|
|
650
|
+
mandate: success && isObject(mandate) ? { ...mandate } : undefined,
|
|
651
|
+
firstCharge,
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
/**
|
|
655
|
+
* Merchant-initiated charge on an active mandate (customer absent). Never mounted as a route.
|
|
656
|
+
*
|
|
657
|
+
* Validates `chargeRef` (/^[A-Za-z0-9-]{2,30}$/, `INVALID_MANDATE_REQUEST`) and the amount
|
|
658
|
+
* (`INVALID_AMOUNT`). A `revoked` mandate returns `failed` with `mandateUnusable: true` without
|
|
659
|
+
* calling the provider. A provider that throws gives `unknown`, with `raw` reduced to the error's
|
|
660
|
+
* `{ name, message }`. See `normalizeCharge` for the rest. Emits `charge.succeeded`,
|
|
661
|
+
* `charge.failed`, `charge.unknown` or `charge.requires_action`; a throwing listener never
|
|
662
|
+
* rejects this method (the error goes to `config.onListenerError`), so a charge that moved
|
|
663
|
+
* money always returns its result.
|
|
664
|
+
*
|
|
665
|
+
* Retry an `unknown` charge with the SAME `chargeRef`; a dunning retry after `failed` is a new
|
|
666
|
+
* charge with a NEW `chargeRef`. The library never retries on its own. Never pass a setup's
|
|
667
|
+
* `orderId` as `chargeRef`: an `unknown` first charge is resolved with `confirmMandate(provider,
|
|
668
|
+
* pending, {})`, since this method starts a new charge (on PayPal, a new order).
|
|
669
|
+
*/
|
|
670
|
+
async chargeMandate(providerName, mandate, charge) {
|
|
671
|
+
const provider = this.getMandateProvider(providerName);
|
|
672
|
+
this.assertMandate(providerName, mandate);
|
|
673
|
+
if (!isObject(charge) || typeof charge.chargeRef !== 'string' || !mandate_model_1.CHARGE_REF_PATTERN.test(charge.chargeRef)) {
|
|
674
|
+
throw this.invalidMandate('Invalid chargeRef: expected /^[A-Za-z0-9-]{2,30}$/', providerName);
|
|
675
|
+
}
|
|
676
|
+
if (!isNonEmptyString(charge.currency)) {
|
|
677
|
+
throw this.invalidMandate('currency is required', providerName);
|
|
678
|
+
}
|
|
679
|
+
(0, money_1.toMinorUnits)(charge.amount, charge.currency);
|
|
680
|
+
let result;
|
|
681
|
+
if (mandate.status === 'revoked') {
|
|
682
|
+
result = {
|
|
683
|
+
status: 'failed',
|
|
684
|
+
verified: false,
|
|
685
|
+
chargeRef: charge.chargeRef,
|
|
686
|
+
error: 'Mandate is revoked',
|
|
687
|
+
mandateUnusable: true,
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
else {
|
|
691
|
+
let providerResult;
|
|
692
|
+
try {
|
|
693
|
+
providerResult = await provider.chargeMandate(mandate, charge);
|
|
694
|
+
}
|
|
695
|
+
catch (err) {
|
|
696
|
+
// The request may or may not have reached the provider: we do not know.
|
|
697
|
+
// Only name and message of the thrown value reach `raw` (and the charge.unknown event):
|
|
698
|
+
// SDK errors carry the request, its headers (bearer token) and its body as own properties
|
|
699
|
+
providerResult = {
|
|
700
|
+
status: 'unknown',
|
|
701
|
+
verified: false,
|
|
702
|
+
chargeRef: charge.chargeRef,
|
|
703
|
+
error: 'Charge outcome unknown: the provider call failed',
|
|
704
|
+
raw: err instanceof Error ? { name: err.name, message: err.message } : undefined,
|
|
705
|
+
};
|
|
706
|
+
}
|
|
707
|
+
result = this.normalizeCharge(providerResult, charge.chargeRef, charge.amount, charge.currency);
|
|
708
|
+
}
|
|
709
|
+
await this.emitChargeEvent(providerName, mandate.mandateRef, result, [mandate.providerMandateId]);
|
|
710
|
+
return result;
|
|
711
|
+
}
|
|
712
|
+
/** Re-reads the mandate's usability from the provider (`verified: false` when it cannot). */
|
|
713
|
+
async getMandate(providerName, mandate) {
|
|
714
|
+
const provider = this.getMandateProvider(providerName);
|
|
715
|
+
this.assertMandate(providerName, mandate);
|
|
716
|
+
const result = await provider.getMandate(mandate);
|
|
717
|
+
return { ...result, verified: result?.verified === true };
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Revokes the mandate at the provider, when the provider supports it, and emits
|
|
721
|
+
* `mandate.revoked` with `data: { mandateRef, revokedAtProvider }` (a throwing listener goes to
|
|
722
|
+
* `config.onListenerError` and never rejects). Mark your own copy revoked whatever the
|
|
723
|
+
* provider answers.
|
|
724
|
+
*/
|
|
725
|
+
async revokeMandate(providerName, mandate) {
|
|
726
|
+
const provider = this.getMandateProvider(providerName);
|
|
727
|
+
this.assertMandate(providerName, mandate);
|
|
728
|
+
const providerResult = await provider.revokeMandate(mandate);
|
|
729
|
+
const result = {
|
|
730
|
+
...(isObject(providerResult) ? providerResult : {}),
|
|
731
|
+
revokedAtProvider: isObject(providerResult) && providerResult.revokedAtProvider === true,
|
|
732
|
+
};
|
|
733
|
+
await this.emitMandateEvent('mandate.revoked', {
|
|
734
|
+
provider: providerName,
|
|
735
|
+
status: 'revoked',
|
|
736
|
+
error: result.error,
|
|
737
|
+
// The revoke result carries no authentication flag
|
|
738
|
+
verified: false,
|
|
739
|
+
data: { mandateRef: mandate.mandateRef, revokedAtProvider: result.revokedAtProvider },
|
|
740
|
+
raw: result.raw,
|
|
741
|
+
}, [mandate.providerMandateId], mandate.mandateRef);
|
|
742
|
+
return result;
|
|
743
|
+
}
|
|
229
744
|
}
|
|
230
745
|
exports.CheckoutConfigurator = CheckoutConfigurator;
|
|
231
746
|
//# sourceMappingURL=checkout-configurator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-configurator.js","sourceRoot":"","sources":["../src/checkout-configurator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkout-configurator.js","sourceRoot":"","sources":["../src/checkout-configurator.ts"],"names":[],"mappings":";;;AAIA,4CAAgD;AAChD,oEAAwG;AACxG,wFAA8F;AAC9F,0DAcgC;AAChC,yCAA6C;AAC7C,2CAA8C;AAE9C,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAe;IACjE,WAAW;IACX,QAAQ;IACR,SAAS;IACT,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,aAAa,GAA4C;IAC7D,SAAS,EAAE,kBAAkB;IAC7B,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,gBAAgB;IACzB,eAAe,EAAE,wBAAwB;CAC1C,CAAC;AAEF,MAAM,cAAc,GAAG,kDAAkD,CAAC;AAC1E,MAAM,eAAe,GAAG,2CAA2C,CAAC;AAEpE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED,4FAA4F;AAC5F,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,SAAS,oBAAoB,CAAC,MAAoB,EAAE,MAAc,EAAE,QAAgB;IAClF,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QACzE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAA,oBAAY,EAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAA,oBAAY,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;YACnF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,OAA4B,EAAE,OAA4B;IACtF,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAAE,OAAO,KAAK,CAAC;IACxF,IAAI,CAAC;QACH,OAAO,IAAA,oBAAY,EAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAA,oBAAY,EAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CACxB,OAA4B,EAC5B,eAAgD,EAChD,OAA4B;IAE5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GACrB,QAAQ,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC;QAC5D,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,iBAAiB;QAC3C,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,gBAAgB,CAAC,iBAAiB,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IACE,gBAAgB,CAAC,WAAW,CAAC;QAC7B,WAAW,KAAK,OAAO,CAAC,OAAO;QAC/B,WAAW,KAAK,OAAO,CAAC,UAAU;QAClC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,iBAAiB,EACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,oBAAoB;IAQ/B,YAA6B,SAAyB,EAAE;QAA3B,WAAM,GAAN,MAAM,CAAqB;QAPvC,cAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;QACrD,qBAAgB,GAAG,KAAK,CAAC;QACzB,kBAAa,GAAwB,IAAI,GAAG,EAAE,CAAC;QAEhE,wDAAwD;QAC/C,WAAM,GAAqB,IAAI,qCAAgB,EAAE,CAAC;IAEA,CAAC;IAE5D,0FAA0F;IAClF,eAAe,CAAC,SAAiB,EAAE,OAAe;QACxD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACxD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,8EAA8E;IACtE,KAAK,CAAC,IAAI,CAChB,KAAwB,EACxB,IAA6C;QAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAA0B;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAa,CACrB,aAAa,QAAQ,CAAC,IAAI,yBAAyB,EACnD,6BAA6B,EAC7B,QAAQ,CAAC,IAAI,CACd,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,IAAY;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,sBAAa,CACrB,qBAAqB,IAAI,+CAA+C,EACxE,oBAAoB,EACpB,IAAI,CACL,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oDAAoD;IACpD,sBAAsB;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACK,gBAAgB,CAA0C,MAAS;QACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC7B,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;YAC3B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,uCAAuC,CAAC;YACzE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO;gBACZ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;QAChG,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,OAAO,MAAmC,CAAC;IAC7C,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,OAAuB;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE;YACrE,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,2EAA2E;YAC3E,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAClB,YAAoB,EACpB,SAAiB,EACjB,IAA6B;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5D,IACE,MAAM,CAAC,QAAQ,KAAK,IAAI;YACxB,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS,KAAK,EAAE;YAChB,MAAM,CAAC,SAAS,KAAK,SAAS,EAC9B,CAAC;YACD,MAAM,GAAG;gBACP,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,uCAAuC;gBAC9C,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,EAAE;YACvE,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI;YAClC,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,iBAAiB,CAAC,YAAoB,EAAE,SAAiB;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,aAAa,CACjB,YAAoB,EACpB,SAAiB,EACjB,MAAe;QAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAClC,QAAQ,EAAE,YAAY;YACtB,SAAS;YACT,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI;YAClC,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,YAAoB,EACpB,IAA8B,EAC9B,UAAkC,EAAE,EACpC,KAA8B,EAC9B,OAAuE;QAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAa,CACrB,aAAa,YAAY,qCAAqC,EAC9D,uBAAuB,EACvB,YAAY,CACb,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAClC,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,IAAI,IAAI,KAAK;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,YAAoB,EACpB,KAA6B;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC7B,MAAM,IAAI,sBAAa,CACrB,aAAa,YAAY,sCAAsC,EAC/D,wBAAwB,EACxB,YAAY,CACb,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,EAAE;YACvE,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI;YAClC,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,gCAAgC;IAChC,8EAA8E;IAE9E;;;OAGG;IACH,gBAAgB,CAAC,YAAoB;QACnC,OAAO,IAAA,8CAAiB,EAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,sFAAsF;IAC9E,kBAAkB,CAAC,YAAoB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,IAAA,8CAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,sBAAa,CACrB,aAAa,YAAY,kDAAkD,EAC3E,wBAAwB,EACxB,YAAY,CACb,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,cAAc,CAAC,OAAe,EAAE,YAAoB;QAC1D,OAAO,IAAI,sBAAa,CAAC,OAAO,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC;IAC7E,CAAC;IAED,mFAAmF;IAC3E,aAAa,CAAC,YAAoB,EAAE,OAAgB;QAC1D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,wCAAwC,YAAY,GAAG,EAAE,YAAY,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,cAAc,CAAC,kCAAkC,EAAE,YAAY,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,gBAAgB,CAC5B,KAAwB,EACxB,OAAgD,EAChD,OAAwC,EACxC,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAA,qBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,6EAA6E;IACrE,KAAK,CAAC,mBAAmB,CAAC,GAAY,EAAE,KAAwB;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACzC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,YAAoB,EACpB,UAAkB,EAClB,MAAoB,EACpB,OAAwC;QAExC,MAAM,IAAI,CAAC,gBAAgB,CACzB,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAC5B;YACE,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,MAAM,CAAC,iBAAiB;YACnC,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE;gBACJ,UAAU;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC;YACD,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,EACD,OAAO,EACP,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,eAAe,CACrB,MAAgC,EAChC,SAAiB,EACjB,MAAc,EACd,QAAgB;QAEhB,MAAM,UAAU,GAAiB,QAAQ,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE;YACf,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACnG,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACzB,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9B,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,sCAAsC,CAAC;YAChF,CAAC;iBAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC/D,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9B,UAAU,CAAC,KAAK,GAAG,eAAe,CAAC;YACrC,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,OAA4B;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,mCAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5F,MAAM,IAAI,CAAC,cAAc,CAAC,sDAAsD,EAAE,YAAY,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,kCAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,CAAC,cAAc,CAAC,kDAAkD,EAAE,YAAY,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,IAAA,oBAAY,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,IACE,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;YACvC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAC9B,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,EAChC,CAAC;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,oDAAoD,EAAE,YAAY,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,CAAC,cAAc,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,CAAC,cAAc,CAAC,uDAAuD,EAAE,YAAY,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,CAAC,cAAc,CAAC,2CAA2C,EAAE,YAAY,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,GAAG;gBACP,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,SAAS;gBACtB,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,oCAAoC;aAC3F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,6FAA6F;YAC7F,MAAM,OAAO,GACX,QAAQ,CAAC,OAAO,CAAC;gBACjB,OAAO,CAAC,QAAQ,KAAK,YAAY;gBACjC,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;gBACzC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;gBACnC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,GAAG,OAAO;gBACd,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE;gBACvC,CAAC,CAAC;oBACE,GAAG,KAAK;oBACR,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,0CAA0C;iBAClD,CAAC;QACR,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,yFAAyF;YACzF,kFAAkF;YAClF,6DAA6D;YAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;YAChD,MAAM,MAAM,GACV,gBAAgB,CAAC,WAAW,CAAC,IAAI,WAAW,KAAK,OAAO,CAAC,OAAO,IAAI,WAAW,KAAK,OAAO,CAAC,UAAU;gBACpG,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS,CAAC;YAChB,uFAAuF;YACvF,MAAM,IAAI,CAAC,IAAI,CACb,uBAAuB,EACvB,IAAA,qBAAY,EACV;gBACE,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,SAAS;gBACjB,uEAAuE;gBACvE,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;gBACxC,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,EACD,MAAM,CACP,CACF,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,cAAc,CAClB,YAAoB,EACpB,OAA4B,EAC5B,QAA8B,EAAE;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC5D,MAAM,IAAI,CAAC,cAAc,CACvB,sDAAsD,YAAY,GAAG,EACrE,YAAY,CACb,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,mCAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5F,MAAM,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,kCAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QAEnF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,IAAI,CAAC,gBAAgB,CACzB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,EAC5D;gBACE,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBAC7C,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;gBACxC,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,EACD,OAAO,EACP,OAAO,CAAC,UAAU,CACnB,CAAC;YACF,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,qBAAqB,CAC3B,YAAoB,EACpB,OAA4B,EAC5B,GAAoC;QAEpC,MAAM,MAAM,GAAiC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAErF,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,2FAA2F;YAC3F,MAAM,WAAW,GAAiB,cAAc;gBAC9C,CAAC,CAAC;oBACE,GAAG,cAAc;oBACjB,SAAS,EAAE,OAAO,CAAC,OAAO;oBAC1B,QAAQ,EAAE,KAAK;oBACf,iBAAiB,EAAE,SAAS;oBAC5B,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,SAAS;iBACpB;gBACH,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACvE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBAAE,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;YAC7E,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACvC,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC/B,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,sCAAsC,CAAC;YAClF,CAAC;YACD,OAAO;gBACL,GAAG,MAAM;gBACT,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,SAAS;gBAClB,WAAW;gBACX,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,uCAAuC;aAC/D,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,GAAwB,EAAE,CAAC,CAAC;YAC3C,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;YACtG,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO;YAAE,OAAO,QAAQ,EAAE,CAAC;QACvF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBACzG,OAAO,QAAQ,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;QACxC,IACE,OAAO;YACP,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EACnG,CAAC;YACD,yEAAyE;YACzE,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5G,OAAO;YACL,GAAG,MAAM;YACT,OAAO;YACP,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;YAClE,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,OAAgB,EAAE,MAAqB;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,kCAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5G,MAAM,IAAI,CAAC,cAAc,CAAC,oDAAoD,EAAE,YAAY,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,IAAA,oBAAY,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,MAAoB,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,GAAG;gBACP,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,oBAAoB;gBAC3B,eAAe,EAAE,IAAI;aACtB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,cAAwC,CAAC;YAC7C,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,wEAAwE;gBACxE,wFAAwF;gBACxF,0FAA0F;gBAC1F,cAAc,GAAG;oBACf,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,KAAK,EAAE,kDAAkD;oBACzD,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;iBACjF,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClG,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,OAAgB;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,OAAgB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAwB;YAClC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,iBAAiB,KAAK,IAAI;SACzF,CAAC;QACF,MAAM,IAAI,CAAC,gBAAgB,CACzB,iBAAiB,EACjB;YACE,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,mDAAmD;YACnD,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE;YACrF,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,EACD,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAC3B,OAAO,CAAC,UAAU,CACnB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAtuBD,oDAsuBC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type CheckoutEventName = 'payment.created' | 'payment.completed' | 'payment.failed' | 'payment.refunded' | 'webhook.received';
|
|
1
|
+
export type CheckoutEventName = 'payment.created' | 'payment.completed' | 'payment.failed' | 'payment.refunded' | 'webhook.received' | 'mandate.setup_started' | 'mandate.created' | 'mandate.setup_failed' | 'mandate.revoked' | 'charge.succeeded' | 'charge.failed' | 'charge.unknown' | 'charge.requires_action';
|
|
2
2
|
export interface CheckoutEventPayload {
|
|
3
3
|
provider: string;
|
|
4
4
|
paymentId?: string;
|
|
@@ -12,8 +12,18 @@ export interface CheckoutEventPayload {
|
|
|
12
12
|
* and for any outcome built from unauthenticated input. When false on
|
|
13
13
|
* `payment.completed` / `payment.failed` / `webhook.received`, `paymentId` and `orderId`
|
|
14
14
|
* are omitted.
|
|
15
|
+
*
|
|
16
|
+
* Mandate events: `mandate.setup_started` is always false; `mandate.created`,
|
|
17
|
+
* `mandate.setup_failed` and the first charge's `charge.*` are emitted only for terminal
|
|
18
|
+
* (hence verified) setup outcomes; a `charge.*` event carries the charge result's `verified`;
|
|
19
|
+
* `mandate.revoked` is always false (the revoke result carries no authentication flag).
|
|
15
20
|
*/
|
|
16
21
|
verified: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Event-specific data. Mandate and charge events carry `{ mandateRef, ... }` here; for charge
|
|
24
|
+
* events `paymentId` is the `providerPaymentId` and `orderId` is the `chargeRef`. The
|
|
25
|
+
* credential-like `providerMandateId` is never part of an event (it is scrubbed from `raw`).
|
|
26
|
+
*/
|
|
17
27
|
data?: any;
|
|
18
28
|
raw?: unknown;
|
|
19
29
|
timestamp: Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-event-bus.d.ts","sourceRoot":"","sources":["../../src/events/checkout-event-bus.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkout-event-bus.d.ts","sourceRoot":"","sources":["../../src/events/checkout-event-bus.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,sBAAsB,GACtB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,gBAAgB,GAChB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;OAYG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAEtB,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO;CAOrD;AAED,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7E;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsD;IAEhF,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAM3D,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAQtD,IAAI,CACR,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC;CAcjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-event-bus.js","sourceRoot":"","sources":["../../src/events/checkout-event-bus.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"checkout-event-bus.js","sourceRoot":"","sources":["../../src/events/checkout-event-bus.ts"],"names":[],"mappings":";;;AA6CA;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAM9C,YAAY,KAAwB,EAAE,KAAc;QAClD,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAbD,sDAaC;AAID;;;;;;;;;GASG;AACH,MAAa,gBAAgB;IAA7B;QACmB,cAAS,GAA4C,IAAI,GAAG,EAAE,CAAC;IAiClF,CAAC;IA/BC,EAAE,CAAC,KAAwB,EAAE,QAAuB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAwB,EAAE,QAAuB;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAAwB,EACxB,OAAgD;QAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,WAAW,GAAyB,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QAChF,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,yEAAyE;gBACzE,MAAM,IAAI,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAlCD,4CAkCC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export { CheckoutConfigurator } from './checkout-configurator';
|
|
2
2
|
export type { IPaymentProvider, PaymentFlow } from './interfaces/payment-provider.interface';
|
|
3
3
|
export type { ITransactionStore, TransactionData } from './interfaces/transaction-store.interface';
|
|
4
|
+
export type { IMandateProvider } from './interfaces/mandate-provider.interface';
|
|
5
|
+
export { isMandateProvider } from './interfaces/mandate-provider.interface';
|
|
4
6
|
export type { PaymentRequest } from './models/payment-request.model';
|
|
5
7
|
export type { PaymentResult, WebhookResult } from './models/payment-result.model';
|
|
6
8
|
export type { CheckoutConfig } from './models/checkout-config.model';
|
|
9
|
+
export type { MandateSetupRequest, MandatePendingState, MandateSetupStart, MandateStatus, Mandate, ChargeStatus, ChargeRequest, ChargeResult, MandateSetupOutcome, MandateCallbackInput, MandateStatusResult, MandateRevokeResult, } from './models/mandate.model';
|
|
10
|
+
export { MANDATE_REF_PATTERN, CHARGE_REF_PATTERN } from './models/mandate.model';
|
|
7
11
|
export { CheckoutError } from './models/errors';
|
|
8
12
|
export type { CheckoutErrorCode } from './models/errors';
|
|
9
13
|
export { BasePaymentProvider } from './abstract/base-payment-provider.abstract';
|
|
@@ -17,4 +21,5 @@ export type { NexiProviderConfig } from './providers/nexi/nexi.provider';
|
|
|
17
21
|
export { SatispayProvider } from './providers/satispay/satispay.provider';
|
|
18
22
|
export type { SatispayProviderConfig } from './providers/satispay/satispay.provider';
|
|
19
23
|
export { ISO_4217_ALPHA3_CODES } from './utils/parsing.util';
|
|
24
|
+
export { appendMandateRef } from './utils/url';
|
|
20
25
|
//# sourceMappingURL=index.d.ts.map
|