@adonis-agora/payments 0.5.0 → 0.7.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 +108 -0
- package/dist/commands/main.d.ts +4 -3
- package/dist/commands/main.d.ts.map +1 -1
- package/dist/commands/main.js +3 -1
- package/dist/commands/main.js.map +1 -1
- package/dist/commands/payments_renew.d.ts +33 -0
- package/dist/commands/payments_renew.d.ts.map +1 -0
- package/dist/commands/payments_renew.js +77 -0
- package/dist/commands/payments_renew.js.map +1 -0
- package/dist/providers/payments_provider.d.ts.map +1 -1
- package/dist/providers/payments_provider.js +6 -1
- package/dist/providers/payments_provider.js.map +1 -1
- package/dist/src/billing/billing_store.d.ts +50 -1
- package/dist/src/billing/billing_store.d.ts.map +1 -1
- package/dist/src/billing/billing_store.js.map +1 -1
- package/dist/src/billing/lucid_billing_store.d.ts +5 -1
- package/dist/src/billing/lucid_billing_store.d.ts.map +1 -1
- package/dist/src/billing/lucid_billing_store.js +72 -0
- package/dist/src/billing/lucid_billing_store.js.map +1 -1
- package/dist/src/billing/managed_subscriptions.d.ts +91 -0
- package/dist/src/billing/managed_subscriptions.d.ts.map +1 -0
- package/dist/src/billing/managed_subscriptions.js +208 -0
- package/dist/src/billing/managed_subscriptions.js.map +1 -0
- package/dist/src/billing/mixins/with_subscription.d.ts +41 -2
- package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_subscription.js +33 -0
- package/dist/src/billing/mixins/with_subscription.js.map +1 -1
- package/dist/src/billing/schema.d.ts.map +1 -1
- package/dist/src/billing/schema.js +23 -0
- package/dist/src/billing/schema.js.map +1 -1
- package/dist/src/define_config.d.ts +12 -0
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/driver.d.ts +112 -1
- package/dist/src/driver.d.ts.map +1 -1
- package/dist/src/drivers/asaas.d.ts +20 -2
- package/dist/src/drivers/asaas.d.ts.map +1 -1
- package/dist/src/drivers/asaas.js +60 -1
- package/dist/src/drivers/asaas.js.map +1 -1
- package/dist/src/drivers/woovi.d.ts +41 -5
- package/dist/src/drivers/woovi.d.ts.map +1 -1
- package/dist/src/drivers/woovi.js +137 -9
- package/dist/src/drivers/woovi.js.map +1 -1
- package/dist/src/index.d.ts +10 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/payments_manager.d.ts +32 -1
- package/dist/src/payments_manager.d.ts.map +1 -1
- package/dist/src/payments_manager.js +46 -0
- package/dist/src/payments_manager.js.map +1 -1
- package/dist/src/subscription_lifecycle.d.ts +21 -0
- package/dist/src/subscription_lifecycle.d.ts.map +1 -0
- package/dist/src/subscription_lifecycle.js +22 -0
- package/dist/src/subscription_lifecycle.js.map +1 -0
- package/dist/src/subscription_mode.d.ts +32 -0
- package/dist/src/subscription_mode.d.ts.map +1 -0
- package/dist/src/subscription_mode.js +13 -0
- package/dist/src/subscription_mode.js.map +1 -0
- package/dist/src/subscriptions_api.d.ts +93 -0
- package/dist/src/subscriptions_api.d.ts.map +1 -0
- package/dist/src/subscriptions_api.js +102 -0
- package/dist/src/subscriptions_api.js.map +1 -0
- package/dist/src/testing/in_memory_billing_store.d.ts +19 -2
- package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -1
- package/dist/src/testing/in_memory_billing_store.js +77 -0
- package/dist/src/testing/in_memory_billing_store.js.map +1 -1
- package/dist/src/types.d.ts +16 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments_manager.d.ts","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;;
|
|
1
|
+
{"version":3,"file":"payments_manager.d.ts","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAmB,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,mFAAmF;IACnF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,YAAY,CAAC;IAC3B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;;IAgB1B,YAAY,OAAO,EAAE,sBAAsB,EAW1C;IAED;;;OAGG;IACH,aAAa,IAAI,gBAAgB,CAoBhC;IAED;;;;;OAKG;IACH,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAEjD;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,cAAc,CAoChE;IAuGD;;;OAGG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,gDAOpB;IAED;;;OAGG;IACH,gBAAgB,CACd,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,kBAAkB,GACrF,IAAI,CAgBN;IAED;;;;;;;;;OASG;IACH,kCAAkC,CAChC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAON;CAsDF;AAED,4EAA4E;AAC5E,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAatC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { gatewayPerforms } from './subscription_lifecycle.js';
|
|
2
|
+
import { resolveSubscriptionMode } from './subscription_mode.js';
|
|
3
|
+
import { SubscriptionsApi } from './subscriptions_api.js';
|
|
1
4
|
import { PAYMENT_METHOD_NAMES } from './types.js';
|
|
2
5
|
export class PaymentsManager {
|
|
3
6
|
#drivers;
|
|
@@ -11,6 +14,9 @@ export class PaymentsManager {
|
|
|
11
14
|
* one's identity.
|
|
12
15
|
*/
|
|
13
16
|
#boundDrivers = new Map();
|
|
17
|
+
#subscriptionsConfig;
|
|
18
|
+
#store;
|
|
19
|
+
#subscriptionsApi;
|
|
14
20
|
constructor(options) {
|
|
15
21
|
this.#drivers = options.drivers;
|
|
16
22
|
this.#invoices = options.invoices;
|
|
@@ -20,6 +26,29 @@ export class PaymentsManager {
|
|
|
20
26
|
throw new Error('[payments] No drivers configured. Add a provider to config/payments.ts.');
|
|
21
27
|
}
|
|
22
28
|
this.#defaultName = options.defaultName ?? names[0];
|
|
29
|
+
this.#subscriptionsConfig = options.subscriptions;
|
|
30
|
+
this.#store = options.store;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create, cancel and re-price subscriptions without the caller branching on who owns the
|
|
34
|
+
* recurrence. See {@link SubscriptionsApi}.
|
|
35
|
+
*/
|
|
36
|
+
subscriptions() {
|
|
37
|
+
if (this.#subscriptionsApi === undefined) {
|
|
38
|
+
this.#subscriptionsApi = new SubscriptionsApi({
|
|
39
|
+
resolveDriver: (via) => this.driver(via),
|
|
40
|
+
store: () => {
|
|
41
|
+
const store = this.#store?.();
|
|
42
|
+
if (store === undefined) {
|
|
43
|
+
throw new Error("[payments] Managed subscriptions need the billing store, and none is configured. Enable `billing` in config/payments.ts, or use `subscriptions.mode: 'gateway'`.");
|
|
44
|
+
}
|
|
45
|
+
return store;
|
|
46
|
+
},
|
|
47
|
+
mode: (provider, managedOnCall) => resolveSubscriptionMode(this.#subscriptionsConfig, provider, managedOnCall),
|
|
48
|
+
assertGatewayCan: (driver, operation) => this.assertGatewaySubscriptionOperation(driver, operation),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return this.#subscriptionsApi;
|
|
23
52
|
}
|
|
24
53
|
/**
|
|
25
54
|
* Every configured driver, by the name it was configured under.
|
|
@@ -193,6 +222,23 @@ export class PaymentsManager {
|
|
|
193
222
|
`Supported capabilities: ${supported.join(', ') || '(none)'}.`);
|
|
194
223
|
}
|
|
195
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* Refuse a subscription operation the GATEWAY does not perform, naming the alternative.
|
|
227
|
+
*
|
|
228
|
+
* Separate from {@link assertCapability} because the answer is not a single boolean: a
|
|
229
|
+
* gateway can create subscriptions and be unable to cancel them (Woovi/OpenPix), so
|
|
230
|
+
* `subscriptions` alone cannot decide this call. And unlike a missing refund API, this
|
|
231
|
+
* limitation has a way out that costs nothing at the gateway — `subscriptions.mode:
|
|
232
|
+
* 'managed'`, where the library owns the recurrence — so the error says so rather than
|
|
233
|
+
* leaving the reader to conclude the feature is impossible.
|
|
234
|
+
*/
|
|
235
|
+
assertGatewaySubscriptionOperation(driver, operation) {
|
|
236
|
+
if (gatewayPerforms(driver, operation))
|
|
237
|
+
return;
|
|
238
|
+
throw new Error(`[payments] Gateway "${driver.provider}" cannot ${operation} a subscription through its API. ` +
|
|
239
|
+
`Set \`subscriptions.mode: 'managed'\` (globally, per provider, or \`managed: true\` on the ` +
|
|
240
|
+
`call) to have the library own the recurrence and make this a local operation.`);
|
|
241
|
+
}
|
|
196
242
|
#resolveName(methodOrName) {
|
|
197
243
|
if (methodOrName === undefined) {
|
|
198
244
|
const candidates = this.#methodsRoutedTo(this.#defaultName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments_manager.js","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"payments_manager.js","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PaymentsDriver } from './driver.js';
|
|
2
|
+
/** The three lifecycle operations a gateway either performs or does not. */
|
|
3
|
+
export type SubscriptionOperation = 'create' | 'update' | 'cancel';
|
|
4
|
+
/** What a gateway does itself, once defaults are applied. */
|
|
5
|
+
export interface ResolvedSubscriptionLifecycle {
|
|
6
|
+
create: boolean;
|
|
7
|
+
update: boolean;
|
|
8
|
+
cancel: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* What a driver's GATEWAY actually performs, reading `capabilities.subscriptionLifecycle`
|
|
12
|
+
* and falling back to the coarse `capabilities.subscriptions`.
|
|
13
|
+
*
|
|
14
|
+
* The fallback is what keeps this additive: a driver written before the finer flag existed
|
|
15
|
+
* said `subscriptions: true` and meant all three, so that is what it keeps meaning. Only a
|
|
16
|
+
* driver that spells out the exception gets a different answer.
|
|
17
|
+
*/
|
|
18
|
+
export declare function gatewaySubscriptionLifecycle(driver: PaymentsDriver): ResolvedSubscriptionLifecycle;
|
|
19
|
+
/** Whether the gateway behind `driver` performs `operation` itself. */
|
|
20
|
+
export declare function gatewayPerforms(driver: PaymentsDriver, operation: SubscriptionOperation): boolean;
|
|
21
|
+
//# sourceMappingURL=subscription_lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription_lifecycle.d.ts","sourceRoot":"","sources":["../../src/subscription_lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnE,6DAA6D;AAC7D,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,cAAc,GACrB,6BAA6B,CAQ/B;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAEjG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a driver's GATEWAY actually performs, reading `capabilities.subscriptionLifecycle`
|
|
3
|
+
* and falling back to the coarse `capabilities.subscriptions`.
|
|
4
|
+
*
|
|
5
|
+
* The fallback is what keeps this additive: a driver written before the finer flag existed
|
|
6
|
+
* said `subscriptions: true` and meant all three, so that is what it keeps meaning. Only a
|
|
7
|
+
* driver that spells out the exception gets a different answer.
|
|
8
|
+
*/
|
|
9
|
+
export function gatewaySubscriptionLifecycle(driver) {
|
|
10
|
+
const coarse = driver.capabilities?.subscriptions === true;
|
|
11
|
+
const fine = driver.capabilities?.subscriptionLifecycle;
|
|
12
|
+
return {
|
|
13
|
+
create: fine?.create ?? coarse,
|
|
14
|
+
update: fine?.update ?? coarse,
|
|
15
|
+
cancel: fine?.cancel ?? coarse,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Whether the gateway behind `driver` performs `operation` itself. */
|
|
19
|
+
export function gatewayPerforms(driver, operation) {
|
|
20
|
+
return gatewaySubscriptionLifecycle(driver)[operation];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=subscription_lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription_lifecycle.js","sourceRoot":"","sources":["../../src/subscription_lifecycle.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;IACxD,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM;QAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM;QAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM;KAC/B,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,MAAsB,EAAE,SAAgC;IACtF,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Who owns the recurrence: the gateway, or this library. */
|
|
2
|
+
export type SubscriptionMode = 'gateway' | 'managed';
|
|
3
|
+
/**
|
|
4
|
+
* Where subscriptions are driven from.
|
|
5
|
+
*
|
|
6
|
+
* Three levels because the honest answer differs per application AND per gateway inside one
|
|
7
|
+
* application. Plenty of teams want the gateway to own everything — the Stripe dashboard is
|
|
8
|
+
* the product, and nobody wants to rebuild dunning. Others want the plan, the price and the
|
|
9
|
+
* cancel button to live in their own app, and a gateway that only knows how to take money.
|
|
10
|
+
* Forcing either choice on the other is what makes a billing library something people rip
|
|
11
|
+
* out.
|
|
12
|
+
*
|
|
13
|
+
* It also stops being a preference the moment a gateway cannot do the job: Woovi/OpenPix
|
|
14
|
+
* cannot cancel or update a subscription at all, so `'managed'` is the only way to offer a
|
|
15
|
+
* cancel button — while the same app's card subscriptions can stay on Asaas, which does it
|
|
16
|
+
* fine. That is why the per-provider level exists and is not redundant with the global one.
|
|
17
|
+
*/
|
|
18
|
+
export interface SubscriptionsConfig {
|
|
19
|
+
/** Default for every provider. Defaults to `'gateway'` — today's behaviour. */
|
|
20
|
+
mode?: SubscriptionMode;
|
|
21
|
+
/** Per-provider override, keyed by the name used in `providers`. */
|
|
22
|
+
providers?: Record<string, SubscriptionMode>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The mode for one call: `managed` on the call, else the provider's setting, else the global
|
|
26
|
+
* default, else `'gateway'`.
|
|
27
|
+
*
|
|
28
|
+
* Narrowest wins, and the default is the old behaviour so upgrading changes nothing until
|
|
29
|
+
* someone asks it to.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveSubscriptionMode(config: SubscriptionsConfig | undefined, provider: string, managedOnCall?: boolean): SubscriptionMode;
|
|
32
|
+
//# sourceMappingURL=subscription_mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription_mode.d.ts","sourceRoot":"","sources":["../../src/subscription_mode.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,OAAO,GACtB,gBAAgB,CAGlB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mode for one call: `managed` on the call, else the provider's setting, else the global
|
|
3
|
+
* default, else `'gateway'`.
|
|
4
|
+
*
|
|
5
|
+
* Narrowest wins, and the default is the old behaviour so upgrading changes nothing until
|
|
6
|
+
* someone asks it to.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveSubscriptionMode(config, provider, managedOnCall) {
|
|
9
|
+
if (managedOnCall !== undefined)
|
|
10
|
+
return managedOnCall ? 'managed' : 'gateway';
|
|
11
|
+
return config?.providers?.[provider] ?? config?.mode ?? 'gateway';
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=subscription_mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription_mode.js","sourceRoot":"","sources":["../../src/subscription_mode.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAuC,EACvC,QAAgB,EAChB,aAAuB;IAEvB,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,MAAM,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { BillingStore } from './billing/billing_store.js';
|
|
2
|
+
import { type RenewalOutcome } from './billing/managed_subscriptions.js';
|
|
3
|
+
import type { CreateSubscriptionInput, PaymentsDriver } from './driver.js';
|
|
4
|
+
import { resolveSubscriptionMode, type SubscriptionMode } from './subscription_mode.js';
|
|
5
|
+
import type { Payment } from './types.js';
|
|
6
|
+
/** Creating a subscription, either way. */
|
|
7
|
+
export interface CreateSubscriptionRequest extends CreateSubscriptionInput {
|
|
8
|
+
/** Payment method or provider name, resolved exactly like `payments.driver(...)`. */
|
|
9
|
+
via?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Force the mode for this one call, overriding config. `true` means the library owns the
|
|
12
|
+
* recurrence; `false` means the gateway does.
|
|
13
|
+
*/
|
|
14
|
+
managed?: boolean;
|
|
15
|
+
currency?: string;
|
|
16
|
+
}
|
|
17
|
+
/** What a caller gets back, whichever side owns the recurrence. */
|
|
18
|
+
export interface SubscriptionHandle {
|
|
19
|
+
/** The id to cancel/update with. The local row in managed mode, the gateway id otherwise. */
|
|
20
|
+
id: string;
|
|
21
|
+
mode: SubscriptionMode;
|
|
22
|
+
provider: string;
|
|
23
|
+
status: string;
|
|
24
|
+
/** `null` in managed mode — no gateway subscription exists. */
|
|
25
|
+
gatewayId: string | null;
|
|
26
|
+
currentPeriodStart?: Date;
|
|
27
|
+
currentPeriodEnd?: Date;
|
|
28
|
+
/** Managed mode only: the first cycle's charge, so a Pix QR code is available at once. */
|
|
29
|
+
charge?: Payment;
|
|
30
|
+
}
|
|
31
|
+
export interface SubscriptionsApiDeps {
|
|
32
|
+
resolveDriver: (via?: string) => PaymentsDriver;
|
|
33
|
+
/** Lazy: the store exists only after the provider has booted the billing layer. */
|
|
34
|
+
store: () => BillingStore;
|
|
35
|
+
mode: (provider: string, managedOnCall?: boolean) => SubscriptionMode;
|
|
36
|
+
assertGatewayCan: (driver: PaymentsDriver, op: 'create' | 'update' | 'cancel') => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* One place to create, cancel and re-price a subscription, whoever owns the recurrence.
|
|
40
|
+
*
|
|
41
|
+
* The two modes are genuinely different products — one is a gateway object you administer in
|
|
42
|
+
* the gateway's dashboard, the other is rows in your database and a charge per cycle — and
|
|
43
|
+
* teams legitimately want either. What they should not have to write is the branch between
|
|
44
|
+
* them at every call site, because that branch is where "Woovi cannot cancel" ends up
|
|
45
|
+
* hard-coded into an application that should never have heard of Woovi.
|
|
46
|
+
*/
|
|
47
|
+
export declare class SubscriptionsApi {
|
|
48
|
+
#private;
|
|
49
|
+
constructor(deps: SubscriptionsApiDeps);
|
|
50
|
+
create(request: CreateSubscriptionRequest): Promise<SubscriptionHandle>;
|
|
51
|
+
/**
|
|
52
|
+
* Cancel by the id `create` returned.
|
|
53
|
+
*
|
|
54
|
+
* In managed mode this never reaches the gateway, which is the entire reason the mode
|
|
55
|
+
* exists: it works on gateways that cannot cancel a subscription at all.
|
|
56
|
+
*/
|
|
57
|
+
cancel(id: string, options?: {
|
|
58
|
+
via?: string;
|
|
59
|
+
managed?: boolean;
|
|
60
|
+
atPeriodEnd?: boolean;
|
|
61
|
+
}): Promise<void>;
|
|
62
|
+
/** Re-price or re-describe. In managed mode it takes effect on the next cycle. */
|
|
63
|
+
update(id: string, patch: {
|
|
64
|
+
amount?: number;
|
|
65
|
+
description?: string | null;
|
|
66
|
+
cycle?: string;
|
|
67
|
+
}, options?: {
|
|
68
|
+
via?: string;
|
|
69
|
+
managed?: boolean;
|
|
70
|
+
}): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Managed subscriptions due at or before `now`, WITHOUT charging anything.
|
|
73
|
+
*
|
|
74
|
+
* What `payments:renew --dry-run` reads. It runs the same store query the real pass does,
|
|
75
|
+
* so the preview cannot disagree with what would actually happen.
|
|
76
|
+
*/
|
|
77
|
+
due(options?: {
|
|
78
|
+
now?: Date;
|
|
79
|
+
limit?: number;
|
|
80
|
+
}): Promise<{
|
|
81
|
+
id: string;
|
|
82
|
+
}[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Charge every managed subscription whose cycle is due. Drive it from `payments:renew`
|
|
85
|
+
* (a cron, a durable schedule) — nothing renews on its own.
|
|
86
|
+
*/
|
|
87
|
+
renewDue(options?: {
|
|
88
|
+
now?: Date;
|
|
89
|
+
limit?: number;
|
|
90
|
+
}): Promise<RenewalOutcome[]>;
|
|
91
|
+
}
|
|
92
|
+
export { resolveSubscriptionMode };
|
|
93
|
+
//# sourceMappingURL=subscriptions_api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions_api.d.ts","sourceRoot":"","sources":["../../src/subscriptions_api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,2CAA2C;AAC3C,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACxE,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,cAAc,CAAC;IAChD,mFAAmF;IACnF,KAAK,EAAE,MAAM,YAAY,CAAC;IAC1B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,gBAAgB,CAAC;IACtE,gBAAgB,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;CACxF;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;;IAG3B,YAAY,IAAI,EAAE,oBAAoB,EAErC;IAEK,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+B5E;IAED;;;;;OAKG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GACvE,OAAO,CAAC,IAAI,CAAC,CAef;IAED,kFAAkF;IAC5E,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACvE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAChD,OAAO,CAAC,IAAI,CAAC,CAcf;IAED;;;;;OAKG;IACG,GAAG,CAAC,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAKjF;IAED;;;OAGG;IACG,QAAQ,CAAC,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAMtF;CACF;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { cancelManagedSubscription, createManagedSubscription, renewDueManagedSubscriptions, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
2
|
+
import { resolveSubscriptionMode } from './subscription_mode.js';
|
|
3
|
+
/**
|
|
4
|
+
* One place to create, cancel and re-price a subscription, whoever owns the recurrence.
|
|
5
|
+
*
|
|
6
|
+
* The two modes are genuinely different products — one is a gateway object you administer in
|
|
7
|
+
* the gateway's dashboard, the other is rows in your database and a charge per cycle — and
|
|
8
|
+
* teams legitimately want either. What they should not have to write is the branch between
|
|
9
|
+
* them at every call site, because that branch is where "Woovi cannot cancel" ends up
|
|
10
|
+
* hard-coded into an application that should never have heard of Woovi.
|
|
11
|
+
*/
|
|
12
|
+
export class SubscriptionsApi {
|
|
13
|
+
#deps;
|
|
14
|
+
constructor(deps) {
|
|
15
|
+
this.#deps = deps;
|
|
16
|
+
}
|
|
17
|
+
async create(request) {
|
|
18
|
+
const { via, managed, currency, ...input } = request;
|
|
19
|
+
const driver = this.#deps.resolveDriver(via);
|
|
20
|
+
const mode = this.#deps.mode(driver.provider, managed);
|
|
21
|
+
if (mode === 'gateway') {
|
|
22
|
+
this.#deps.assertGatewayCan(driver, 'create');
|
|
23
|
+
const subscription = await driver.createSubscription(input);
|
|
24
|
+
return {
|
|
25
|
+
id: subscription.gatewayId,
|
|
26
|
+
mode,
|
|
27
|
+
provider: driver.provider,
|
|
28
|
+
status: subscription.status,
|
|
29
|
+
gatewayId: subscription.gatewayId,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const result = await createManagedSubscription(driver, this.#deps.store(), {
|
|
33
|
+
...input,
|
|
34
|
+
...(currency !== undefined ? { currency } : {}),
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
id: result.id,
|
|
38
|
+
mode,
|
|
39
|
+
provider: driver.provider,
|
|
40
|
+
status: result.status,
|
|
41
|
+
gatewayId: null,
|
|
42
|
+
currentPeriodStart: result.currentPeriodStart,
|
|
43
|
+
currentPeriodEnd: result.currentPeriodEnd,
|
|
44
|
+
charge: result.charge,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Cancel by the id `create` returned.
|
|
49
|
+
*
|
|
50
|
+
* In managed mode this never reaches the gateway, which is the entire reason the mode
|
|
51
|
+
* exists: it works on gateways that cannot cancel a subscription at all.
|
|
52
|
+
*/
|
|
53
|
+
async cancel(id, options = {}) {
|
|
54
|
+
const driver = this.#deps.resolveDriver(options.via);
|
|
55
|
+
const mode = this.#deps.mode(driver.provider, options.managed);
|
|
56
|
+
if (mode === 'gateway') {
|
|
57
|
+
this.#deps.assertGatewayCan(driver, 'cancel');
|
|
58
|
+
await driver.cancelSubscription(id, {
|
|
59
|
+
...(options.atPeriodEnd !== undefined ? { atPeriodEnd: options.atPeriodEnd } : {}),
|
|
60
|
+
});
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
await cancelManagedSubscription(this.#deps.store(), id, {
|
|
64
|
+
...(options.atPeriodEnd !== undefined ? { atPeriodEnd: options.atPeriodEnd } : {}),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Re-price or re-describe. In managed mode it takes effect on the next cycle. */
|
|
68
|
+
async update(id, patch, options = {}) {
|
|
69
|
+
const driver = this.#deps.resolveDriver(options.via);
|
|
70
|
+
const mode = this.#deps.mode(driver.provider, options.managed);
|
|
71
|
+
if (mode === 'gateway') {
|
|
72
|
+
this.#deps.assertGatewayCan(driver, 'update');
|
|
73
|
+
await driver.updateSubscription(id, {
|
|
74
|
+
...(patch.amount !== undefined ? { amount: patch.amount } : {}),
|
|
75
|
+
...(patch.description != null ? { description: patch.description } : {}),
|
|
76
|
+
});
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
await updateManagedSubscription(this.#deps.store(), id, patch);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Managed subscriptions due at or before `now`, WITHOUT charging anything.
|
|
83
|
+
*
|
|
84
|
+
* What `payments:renew --dry-run` reads. It runs the same store query the real pass does,
|
|
85
|
+
* so the preview cannot disagree with what would actually happen.
|
|
86
|
+
*/
|
|
87
|
+
async due(options = {}) {
|
|
88
|
+
const rows = await this.#deps
|
|
89
|
+
.store()
|
|
90
|
+
.listDueManagedSubscriptions(options.now ?? new Date(), options.limit ?? 100);
|
|
91
|
+
return rows.map((row) => ({ id: row.id }));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Charge every managed subscription whose cycle is due. Drive it from `payments:renew`
|
|
95
|
+
* (a cron, a durable schedule) — nothing renews on its own.
|
|
96
|
+
*/
|
|
97
|
+
async renewDue(options = {}) {
|
|
98
|
+
return renewDueManagedSubscriptions((provider) => this.#deps.resolveDriver(provider), this.#deps.store(), options);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export { resolveSubscriptionMode };
|
|
102
|
+
//# sourceMappingURL=subscriptions_api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions_api.js","sourceRoot":"","sources":["../../src/subscriptions_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AuditEventCountQuery, type AuditEventListItem, type AuditEventQuery, type BillingCountQuery, type BillingListQuery, type BillingStore, type CustomerListItem, type CustomerListQuery, type DisputeDeadlineQuery, type DisputeListItem, type OpenDisputeQuery, type PaymentListItem, type PaymentListQuery, type SubscriptionListItem, type WebhookEventBreakdownLine, type WebhookEventListItem, type WebhookEventListQuery } from '../billing/billing_store.js';
|
|
1
|
+
import { type AuditEventCountQuery, type AuditEventListItem, type AuditEventQuery, type BillingCountQuery, type BillingListQuery, type BillingStore, type CustomerListItem, type CustomerListQuery, type DisputeDeadlineQuery, type DisputeListItem, type ManagedSubscriptionInput, type ManagedSubscriptionPatch, type OpenDisputeQuery, type PaymentListItem, type PaymentListQuery, type SubscriptionListItem, type WebhookEventBreakdownLine, type WebhookEventListItem, type WebhookEventListQuery } from '../billing/billing_store.js';
|
|
2
2
|
/** A plain in-memory customer-mapping row (mirrors the Lucid model's columns). */
|
|
3
3
|
export interface InMemoryCustomerRow {
|
|
4
4
|
id: string;
|
|
@@ -16,7 +16,8 @@ export interface InMemoryCustomerRow {
|
|
|
16
16
|
/** A minimal in-memory row shape (mirrors the Lucid models' columns). */
|
|
17
17
|
export interface InMemorySubscriptionRow {
|
|
18
18
|
id: string;
|
|
19
|
-
|
|
19
|
+
/** `null` on a managed subscription — nothing was created at the gateway. */
|
|
20
|
+
gatewayId: string | null;
|
|
20
21
|
provider: string;
|
|
21
22
|
customerId: string;
|
|
22
23
|
status: string;
|
|
@@ -26,6 +27,17 @@ export interface InMemorySubscriptionRow {
|
|
|
26
27
|
payload: Record<string, unknown>;
|
|
27
28
|
/** Insertion timestamp — the Lucid row has one, and the list query orders by it. */
|
|
28
29
|
createdAt: Date;
|
|
30
|
+
managed?: boolean | null;
|
|
31
|
+
amount?: number | null;
|
|
32
|
+
currency?: string | null;
|
|
33
|
+
cycle?: string | null;
|
|
34
|
+
method?: string | null;
|
|
35
|
+
description?: string | null;
|
|
36
|
+
externalReference?: string | null;
|
|
37
|
+
currentPeriodStart?: Date | null;
|
|
38
|
+
currentPeriodEnd?: Date | null;
|
|
39
|
+
nextChargeAt?: Date | null;
|
|
40
|
+
cancelAtPeriodEnd?: boolean | null;
|
|
29
41
|
}
|
|
30
42
|
export interface InMemoryPaymentRow {
|
|
31
43
|
id: string;
|
|
@@ -148,6 +160,11 @@ export declare class InMemoryBillingStore implements BillingStore<InMemorySubscr
|
|
|
148
160
|
listSubscriptions(query: BillingListQuery): Promise<SubscriptionListItem[]>;
|
|
149
161
|
countSubscriptions(query: BillingCountQuery): Promise<number>;
|
|
150
162
|
findSubscriptionByGatewayId(gatewayId: string): Promise<InMemorySubscriptionRow | null>;
|
|
163
|
+
managedSubscriptions: Map<string, InMemorySubscriptionRow>;
|
|
164
|
+
createManagedSubscription(sub: ManagedSubscriptionInput): Promise<InMemorySubscriptionRow>;
|
|
165
|
+
findSubscriptionById(id: string): Promise<InMemorySubscriptionRow | null>;
|
|
166
|
+
updateManagedSubscription(id: string, patch: ManagedSubscriptionPatch): Promise<InMemorySubscriptionRow | null>;
|
|
167
|
+
listDueManagedSubscriptions(now: Date, limit: number): Promise<InMemorySubscriptionRow[]>;
|
|
151
168
|
savePayment(payment: {
|
|
152
169
|
gatewayId: string;
|
|
153
170
|
provider: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in_memory_billing_store.d.ts","sourceRoot":"","sources":["../../../src/testing/in_memory_billing_store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"in_memory_billing_store.d.ts","sourceRoot":"","sources":["../../../src/testing/in_memory_billing_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -219,6 +219,83 @@ export class InMemoryBillingStore {
|
|
|
219
219
|
async findSubscriptionByGatewayId(gatewayId) {
|
|
220
220
|
return this.subscriptions.get(gatewayId) ?? null;
|
|
221
221
|
}
|
|
222
|
+
// ── Managed subscriptions ──────────────────────────────────────────────────────────
|
|
223
|
+
//
|
|
224
|
+
// Kept in their own map because `subscriptions` is keyed by GATEWAY id, and these have
|
|
225
|
+
// none. Keying them by a made-up one would make `findSubscriptionByGatewayId` answer for a
|
|
226
|
+
// subscription no gateway has ever heard of.
|
|
227
|
+
managedSubscriptions = new Map();
|
|
228
|
+
async createManagedSubscription(sub) {
|
|
229
|
+
const row = {
|
|
230
|
+
id: `sub_${this.#nextId++}`,
|
|
231
|
+
gatewayId: null,
|
|
232
|
+
provider: sub.provider,
|
|
233
|
+
customerId: sub.customerId,
|
|
234
|
+
status: sub.status,
|
|
235
|
+
planId: sub.planId,
|
|
236
|
+
trialEndsAt: null,
|
|
237
|
+
endsAt: null,
|
|
238
|
+
payload: sub.payload ?? {},
|
|
239
|
+
createdAt: new Date(),
|
|
240
|
+
managed: true,
|
|
241
|
+
amount: sub.amount,
|
|
242
|
+
currency: sub.currency,
|
|
243
|
+
cycle: sub.cycle,
|
|
244
|
+
method: sub.method ?? null,
|
|
245
|
+
description: sub.description ?? null,
|
|
246
|
+
externalReference: sub.externalReference ?? null,
|
|
247
|
+
currentPeriodStart: sub.currentPeriodStart,
|
|
248
|
+
currentPeriodEnd: sub.currentPeriodEnd,
|
|
249
|
+
nextChargeAt: sub.nextChargeAt,
|
|
250
|
+
cancelAtPeriodEnd: false,
|
|
251
|
+
};
|
|
252
|
+
this.managedSubscriptions.set(row.id, row);
|
|
253
|
+
return row;
|
|
254
|
+
}
|
|
255
|
+
async findSubscriptionById(id) {
|
|
256
|
+
const managed = this.managedSubscriptions.get(id);
|
|
257
|
+
if (managed !== undefined)
|
|
258
|
+
return managed;
|
|
259
|
+
for (const row of this.subscriptions.values()) {
|
|
260
|
+
if (row.id === id)
|
|
261
|
+
return row;
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
async updateManagedSubscription(id, patch) {
|
|
266
|
+
const row = this.managedSubscriptions.get(id);
|
|
267
|
+
if (row === undefined)
|
|
268
|
+
return null;
|
|
269
|
+
if (patch.status !== undefined)
|
|
270
|
+
row.status = patch.status;
|
|
271
|
+
if (patch.amount !== undefined)
|
|
272
|
+
row.amount = patch.amount;
|
|
273
|
+
if (patch.description !== undefined)
|
|
274
|
+
row.description = patch.description;
|
|
275
|
+
if (patch.cycle !== undefined)
|
|
276
|
+
row.cycle = patch.cycle;
|
|
277
|
+
if (patch.currentPeriodStart !== undefined)
|
|
278
|
+
row.currentPeriodStart = patch.currentPeriodStart;
|
|
279
|
+
if (patch.currentPeriodEnd !== undefined)
|
|
280
|
+
row.currentPeriodEnd = patch.currentPeriodEnd;
|
|
281
|
+
// `null` means "stop renewing", so absence is the only thing that means "leave alone".
|
|
282
|
+
if (patch.nextChargeAt !== undefined)
|
|
283
|
+
row.nextChargeAt = patch.nextChargeAt;
|
|
284
|
+
if (patch.cancelAtPeriodEnd !== undefined)
|
|
285
|
+
row.cancelAtPeriodEnd = patch.cancelAtPeriodEnd;
|
|
286
|
+
if (patch.endsAt !== undefined)
|
|
287
|
+
row.endsAt = patch.endsAt;
|
|
288
|
+
return row;
|
|
289
|
+
}
|
|
290
|
+
async listDueManagedSubscriptions(now, limit) {
|
|
291
|
+
return [...this.managedSubscriptions.values()]
|
|
292
|
+
.filter((row) => row.status === 'active' &&
|
|
293
|
+
row.nextChargeAt !== null &&
|
|
294
|
+
row.nextChargeAt !== undefined &&
|
|
295
|
+
row.nextChargeAt.getTime() <= now.getTime())
|
|
296
|
+
.sort((a, b) => (a.nextChargeAt.getTime() < b.nextChargeAt.getTime() ? -1 : 1))
|
|
297
|
+
.slice(0, limit);
|
|
298
|
+
}
|
|
222
299
|
async savePayment(payment) {
|
|
223
300
|
const existing = this.payments.get(payment.gatewayId);
|
|
224
301
|
const row = {
|