@fantastic.dev/better-stripe 0.28.3 → 0.28.4
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 +6 -0
- package/README.md +3 -1
- package/dist/client/connect/payoutAdoptionTestHelpers.d.ts +96 -2
- package/dist/client/connect/payoutAdoptionTestHelpers.d.ts.map +1 -1
- package/dist/client/connect/payoutExecutionTestHelpers.d.ts +48 -1
- package/dist/client/connect/payoutExecutionTestHelpers.d.ts.map +1 -1
- package/dist/client/connect/payoutExpiry.d.ts +42 -0
- package/dist/client/connect/payoutExpiry.d.ts.map +1 -0
- package/dist/client/connect/payoutExpiry.js +93 -0
- package/dist/client/connect/payoutExpiry.js.map +1 -0
- package/dist/client/connect/payoutSyncTestHelpers.d.ts +38 -1
- package/dist/client/connect/payoutSyncTestHelpers.d.ts.map +1 -1
- package/dist/client/payoutPolicy.d.ts +18 -2
- package/dist/client/payoutPolicy.d.ts.map +1 -1
- package/dist/client/payoutPolicy.js +3 -25
- package/dist/client/payoutPolicy.js.map +1 -1
- package/dist/component/_generated/component.d.ts +116 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/core/resetSafety.d.ts.map +1 -1
- package/dist/component/core/resetSafety.js +7 -1
- package/dist/component/core/resetSafety.js.map +1 -1
- package/dist/component/earnings/triggers.d.ts +22 -2
- package/dist/component/earnings/triggers.d.ts.map +1 -1
- package/dist/component/payoutPolicy/expiry.d.ts +78 -0
- package/dist/component/payoutPolicy/expiry.d.ts.map +1 -0
- package/dist/component/payoutPolicy/expiry.js +57 -0
- package/dist/component/payoutPolicy/expiry.js.map +1 -0
- package/dist/component/payoutPolicy/helpers.d.ts +10 -0
- package/dist/component/payoutPolicy/helpers.d.ts.map +1 -1
- package/dist/component/payoutPolicy/mutations.d.ts +77 -0
- package/dist/component/payoutPolicy/mutations.d.ts.map +1 -1
- package/dist/component/payoutPolicy/mutations.js +36 -3
- package/dist/component/payoutPolicy/mutations.js.map +1 -1
- package/dist/component/payoutPolicy/queries.d.ts +20 -0
- package/dist/component/payoutPolicy/queries.d.ts.map +1 -1
- package/dist/component/payoutPolicy/schema.d.ts +139 -2
- package/dist/component/payoutPolicy/schema.d.ts.map +1 -1
- package/dist/component/payoutPolicy/schema.js +12 -0
- package/dist/component/payoutPolicy/schema.js.map +1 -1
- package/dist/component/payoutRelease/helpers.d.ts +10 -0
- package/dist/component/payoutRelease/helpers.d.ts.map +1 -1
- package/dist/component/payoutWorker/queries.d.ts +20 -0
- package/dist/component/payoutWorker/queries.d.ts.map +1 -1
- package/dist/component/schema.d.ts +38 -1
- package/dist/react/workflows/PayoutProgress.d.ts.map +1 -1
- package/dist/react/workflows/PayoutProgress.js +2 -2
- package/dist/react/workflows/PayoutProgress.js.map +1 -1
- package/dist/react/workflows/payout-progress-state.d.ts +11 -1
- package/dist/react/workflows/payout-progress-state.d.ts.map +1 -1
- package/dist/react/workflows/payout-progress-state.js +26 -0
- package/dist/react/workflows/payout-progress-state.js.map +1 -1
- package/docs/react-workflows.md +11 -0
- package/docs/settlement.md +31 -3
- package/package.json +1 -1
- package/src/client/connect/payoutDeadline.test.ts +70 -0
- package/src/client/connect/payoutExpiry.ts +132 -0
- package/src/client/payoutPolicy.test.ts +196 -0
- package/src/client/payoutPolicy.ts +9 -23
- package/src/component/_generated/api.ts +2 -0
- package/src/component/_generated/component.ts +143 -0
- package/src/component/core/resetSafety.ts +49 -33
- package/src/component/payout-reset-safety.test.ts +28 -0
- package/src/component/payoutPolicy/expiry.ts +80 -0
- package/src/component/payoutPolicy/mutations.ts +47 -2
- package/src/component/payoutPolicy/schema.ts +17 -0
- package/src/react/workflows/PayoutProgress.test.tsx +42 -0
- package/src/react/workflows/PayoutProgress.tsx +25 -1
- package/src/react/workflows/payout-progress-state.ts +41 -1
package/CHANGELOG.md
CHANGED
|
@@ -26,6 +26,12 @@
|
|
|
26
26
|
- Remove internal tracker references from public documentation and add a
|
|
27
27
|
regression check that prevents their reintroduction.
|
|
28
28
|
|
|
29
|
+
## [0.28.4](https://github.com/FantasticDevHQ/better-stripe/compare/v0.28.3...v0.28.4) (2026-10-15)
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
- **payouts:** retain unresolved recovery after holding expiry ([#216](https://github.com/FantasticDevHQ/better-stripe/issues/216)) ([3ccb39a](https://github.com/FantasticDevHQ/better-stripe/commit/3ccb39adef0f4352cf2992ab73f20a93c84db75d))
|
|
34
|
+
|
|
29
35
|
## [0.28.3](https://github.com/FantasticDevHQ/better-stripe/compare/v0.28.2...v0.28.3) (2026-10-15)
|
|
30
36
|
|
|
31
37
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -70,7 +70,7 @@ claim execution are completed.
|
|
|
70
70
|
|
|
71
71
|
## Status
|
|
72
72
|
|
|
73
|
-
**Version**: `0.28.
|
|
73
|
+
**Version**: `0.28.4` <!-- x-release-please-version --> (pre-1.0). API may change between minor versions until 1.0.
|
|
74
74
|
|
|
75
75
|
Used in production by its authors. Webhook pipeline is covered by unit tests and a live E2E harness (`npm run e2e:webhooks`) that fires real Stripe-signed events and asserts the ledger.
|
|
76
76
|
|
|
@@ -1736,3 +1736,5 @@ cursors, exact currency summaries, legacy backfill, payout failure details, and
|
|
|
1736
1736
|
published-version adoption requirements.
|
|
1737
1737
|
|
|
1738
1738
|
Custom recipient payout minimums are waived during the final day before the verified holding deadline. Provider limits and all financial checks still apply. See [settlement and deadline handling](docs/settlement.md) for worker cadence, retries and expiry limitations.
|
|
1739
|
+
|
|
1740
|
+
Holding-expiry recovery remains visible and retryable after schedule restoration. The package preserves unresolved provider balances and payout claims, and prevents reset or custom reactivation from erasing them. See [expiry recovery](docs/settlement.md) for operator handling.
|
|
@@ -618,6 +618,16 @@ export declare function setup(amounts?: number[], currency?: string): Promise<{
|
|
|
618
618
|
accountId: string;
|
|
619
619
|
country: string;
|
|
620
620
|
holdDeadline?: number | undefined;
|
|
621
|
+
holdingExpiry?: {
|
|
622
|
+
balances?: {
|
|
623
|
+
available: number;
|
|
624
|
+
currency: string;
|
|
625
|
+
pending: number;
|
|
626
|
+
}[] | undefined;
|
|
627
|
+
deadline: number;
|
|
628
|
+
observedAt?: number | undefined;
|
|
629
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
630
|
+
} | undefined;
|
|
621
631
|
mode: "custom" | "stripe_managed";
|
|
622
632
|
operationKey: string;
|
|
623
633
|
ownerKey: string;
|
|
@@ -660,7 +670,34 @@ export declare function setup(amounts?: number[], currency?: string): Promise<{
|
|
|
660
670
|
monthlyDays: import("convex/values").VArray<number[] | undefined, import("convex/values").VFloat64<number, "required">, "optional">;
|
|
661
671
|
}, "optional", "interval" | "monthlyDays" | "weeklyDays">;
|
|
662
672
|
holdDeadline: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
663
|
-
|
|
673
|
+
holdingExpiry: import("convex/values").VObject<{
|
|
674
|
+
balances?: {
|
|
675
|
+
available: number;
|
|
676
|
+
currency: string;
|
|
677
|
+
pending: number;
|
|
678
|
+
}[] | undefined;
|
|
679
|
+
deadline: number;
|
|
680
|
+
observedAt?: number | undefined;
|
|
681
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
682
|
+
} | undefined, {
|
|
683
|
+
deadline: import("convex/values").VFloat64<number, "required">;
|
|
684
|
+
status: import("convex/values").VUnion<"balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified", [import("convex/values").VLiteral<"unverified", "required">, import("convex/values").VLiteral<"balance_remaining", "required">, import("convex/values").VLiteral<"claims_unresolved", "required">, import("convex/values").VLiteral<"no_held_balance", "required">], "required", never>;
|
|
685
|
+
observedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
686
|
+
balances: import("convex/values").VArray<{
|
|
687
|
+
available: number;
|
|
688
|
+
currency: string;
|
|
689
|
+
pending: number;
|
|
690
|
+
}[] | undefined, import("convex/values").VObject<{
|
|
691
|
+
available: number;
|
|
692
|
+
currency: string;
|
|
693
|
+
pending: number;
|
|
694
|
+
}, {
|
|
695
|
+
currency: import("convex/values").VString<string, "required">;
|
|
696
|
+
available: import("convex/values").VFloat64<number, "required">;
|
|
697
|
+
pending: import("convex/values").VFloat64<number, "required">;
|
|
698
|
+
}, "required", "available" | "currency" | "pending">, "optional">;
|
|
699
|
+
}, "optional", "balances" | "deadline" | "observedAt" | "status">;
|
|
700
|
+
}, "required", "accountId" | "country" | "holdDeadline" | "holdingExpiry" | "holdingExpiry.balances" | "holdingExpiry.deadline" | "holdingExpiry.observedAt" | "holdingExpiry.status" | "mode" | "operationKey" | "ownerKey" | "previousSchedule" | "previousSchedule.interval" | "previousSchedule.monthlyDays" | "previousSchedule.weeklyDays" | "revision" | "status" | "thresholds">, {
|
|
664
701
|
by_account: ["accountId", "_creationTime"];
|
|
665
702
|
by_deadline: ["holdDeadline", "_creationTime"];
|
|
666
703
|
by_mode_status: ["mode", "status", "_creationTime"];
|
|
@@ -1758,6 +1795,16 @@ export declare function setup(amounts?: number[], currency?: string): Promise<{
|
|
|
1758
1795
|
accountId: string;
|
|
1759
1796
|
country: string;
|
|
1760
1797
|
holdDeadline?: number | undefined;
|
|
1798
|
+
holdingExpiry?: {
|
|
1799
|
+
balances?: {
|
|
1800
|
+
available: number;
|
|
1801
|
+
currency: string;
|
|
1802
|
+
pending: number;
|
|
1803
|
+
}[] | undefined;
|
|
1804
|
+
deadline: number;
|
|
1805
|
+
observedAt?: number | undefined;
|
|
1806
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
1807
|
+
} | undefined;
|
|
1761
1808
|
mode: "custom" | "stripe_managed";
|
|
1762
1809
|
operationKey: string;
|
|
1763
1810
|
ownerKey: string;
|
|
@@ -2413,6 +2460,16 @@ export declare function historical(currency?: string): Promise<{
|
|
|
2413
2460
|
accountId: string;
|
|
2414
2461
|
country: string;
|
|
2415
2462
|
holdDeadline?: number | undefined;
|
|
2463
|
+
holdingExpiry?: {
|
|
2464
|
+
balances?: {
|
|
2465
|
+
available: number;
|
|
2466
|
+
currency: string;
|
|
2467
|
+
pending: number;
|
|
2468
|
+
}[] | undefined;
|
|
2469
|
+
deadline: number;
|
|
2470
|
+
observedAt?: number | undefined;
|
|
2471
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
2472
|
+
} | undefined;
|
|
2416
2473
|
mode: "custom" | "stripe_managed";
|
|
2417
2474
|
operationKey: string;
|
|
2418
2475
|
ownerKey: string;
|
|
@@ -2455,7 +2512,34 @@ export declare function historical(currency?: string): Promise<{
|
|
|
2455
2512
|
monthlyDays: import("convex/values").VArray<number[] | undefined, import("convex/values").VFloat64<number, "required">, "optional">;
|
|
2456
2513
|
}, "optional", "interval" | "monthlyDays" | "weeklyDays">;
|
|
2457
2514
|
holdDeadline: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
2458
|
-
|
|
2515
|
+
holdingExpiry: import("convex/values").VObject<{
|
|
2516
|
+
balances?: {
|
|
2517
|
+
available: number;
|
|
2518
|
+
currency: string;
|
|
2519
|
+
pending: number;
|
|
2520
|
+
}[] | undefined;
|
|
2521
|
+
deadline: number;
|
|
2522
|
+
observedAt?: number | undefined;
|
|
2523
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
2524
|
+
} | undefined, {
|
|
2525
|
+
deadline: import("convex/values").VFloat64<number, "required">;
|
|
2526
|
+
status: import("convex/values").VUnion<"balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified", [import("convex/values").VLiteral<"unverified", "required">, import("convex/values").VLiteral<"balance_remaining", "required">, import("convex/values").VLiteral<"claims_unresolved", "required">, import("convex/values").VLiteral<"no_held_balance", "required">], "required", never>;
|
|
2527
|
+
observedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
2528
|
+
balances: import("convex/values").VArray<{
|
|
2529
|
+
available: number;
|
|
2530
|
+
currency: string;
|
|
2531
|
+
pending: number;
|
|
2532
|
+
}[] | undefined, import("convex/values").VObject<{
|
|
2533
|
+
available: number;
|
|
2534
|
+
currency: string;
|
|
2535
|
+
pending: number;
|
|
2536
|
+
}, {
|
|
2537
|
+
currency: import("convex/values").VString<string, "required">;
|
|
2538
|
+
available: import("convex/values").VFloat64<number, "required">;
|
|
2539
|
+
pending: import("convex/values").VFloat64<number, "required">;
|
|
2540
|
+
}, "required", "available" | "currency" | "pending">, "optional">;
|
|
2541
|
+
}, "optional", "balances" | "deadline" | "observedAt" | "status">;
|
|
2542
|
+
}, "required", "accountId" | "country" | "holdDeadline" | "holdingExpiry" | "holdingExpiry.balances" | "holdingExpiry.deadline" | "holdingExpiry.observedAt" | "holdingExpiry.status" | "mode" | "operationKey" | "ownerKey" | "previousSchedule" | "previousSchedule.interval" | "previousSchedule.monthlyDays" | "previousSchedule.weeklyDays" | "revision" | "status" | "thresholds">, {
|
|
2459
2543
|
by_account: ["accountId", "_creationTime"];
|
|
2460
2544
|
by_deadline: ["holdDeadline", "_creationTime"];
|
|
2461
2545
|
by_mode_status: ["mode", "status", "_creationTime"];
|
|
@@ -3553,6 +3637,16 @@ export declare function historical(currency?: string): Promise<{
|
|
|
3553
3637
|
accountId: string;
|
|
3554
3638
|
country: string;
|
|
3555
3639
|
holdDeadline?: number | undefined;
|
|
3640
|
+
holdingExpiry?: {
|
|
3641
|
+
balances?: {
|
|
3642
|
+
available: number;
|
|
3643
|
+
currency: string;
|
|
3644
|
+
pending: number;
|
|
3645
|
+
}[] | undefined;
|
|
3646
|
+
deadline: number;
|
|
3647
|
+
observedAt?: number | undefined;
|
|
3648
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
3649
|
+
} | undefined;
|
|
3556
3650
|
mode: "custom" | "stripe_managed";
|
|
3557
3651
|
operationKey: string;
|
|
3558
3652
|
ownerKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payoutAdoptionTestHelpers.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutAdoptionTestHelpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvD,eAAO,MAAM,SAAS,EAIN,SAAS,CAAC;AAC1B,eAAO,MAAM,KAAK;IAChB,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,sBAAsB;CACvB,CAAC;AACF,wBAAsB,KAAK,CAAC,OAAO,WAAa,EAAE,QAAQ,SAAQ
|
|
1
|
+
{"version":3,"file":"payoutAdoptionTestHelpers.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutAdoptionTestHelpers.ts"],"names":[],"mappings":"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D,wBAAsB,UAAU,CAAC,QAAQ,SAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YArJ3C,oBAAoB;;;;;;;;;;;YAapB,QAAQ,6BAAmB,MAAM;;;;;;;;;YAYjC,aAAa;;;;;;YAGb,QAAQ,6BAAmB,MAAM;;;;;;;;;;;YAcjC,IAAI,iCAAuB;gBAAE,MAAM,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE;;;;;;;;;;;;;;;;YAM9D,QAAQ,6BAAmB,MAAM;;;;;;;;;;;;;;;YAKjC,QAAQ;;;;;wBAQA,IAAI;;;;;;;YAUZ,IAAI;;;;YAIJ,QAAQ,8BAAoB,MAAM;YAGlC,MAAM,iCACW;gBACb,MAAM,EAAE,MAAM,CAAC;gBACf,QAAQ,EAAE,MAAM,CAAC;gBACjB,QAAQ,EAAE,MAAM,CAAC;aAClB;;;;gBA2CG,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDrB"}
|
|
@@ -619,6 +619,16 @@ export declare function setup(amounts?: number[]): Promise<{
|
|
|
619
619
|
accountId: string;
|
|
620
620
|
country: string;
|
|
621
621
|
holdDeadline?: number | undefined;
|
|
622
|
+
holdingExpiry?: {
|
|
623
|
+
balances?: {
|
|
624
|
+
available: number;
|
|
625
|
+
currency: string;
|
|
626
|
+
pending: number;
|
|
627
|
+
}[] | undefined;
|
|
628
|
+
deadline: number;
|
|
629
|
+
observedAt?: number | undefined;
|
|
630
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
631
|
+
} | undefined;
|
|
622
632
|
mode: "custom" | "stripe_managed";
|
|
623
633
|
operationKey: string;
|
|
624
634
|
ownerKey: string;
|
|
@@ -661,7 +671,34 @@ export declare function setup(amounts?: number[]): Promise<{
|
|
|
661
671
|
monthlyDays: import("convex/values").VArray<number[] | undefined, import("convex/values").VFloat64<number, "required">, "optional">;
|
|
662
672
|
}, "optional", "interval" | "monthlyDays" | "weeklyDays">;
|
|
663
673
|
holdDeadline: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
664
|
-
|
|
674
|
+
holdingExpiry: import("convex/values").VObject<{
|
|
675
|
+
balances?: {
|
|
676
|
+
available: number;
|
|
677
|
+
currency: string;
|
|
678
|
+
pending: number;
|
|
679
|
+
}[] | undefined;
|
|
680
|
+
deadline: number;
|
|
681
|
+
observedAt?: number | undefined;
|
|
682
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
683
|
+
} | undefined, {
|
|
684
|
+
deadline: import("convex/values").VFloat64<number, "required">;
|
|
685
|
+
status: import("convex/values").VUnion<"balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified", [import("convex/values").VLiteral<"unverified", "required">, import("convex/values").VLiteral<"balance_remaining", "required">, import("convex/values").VLiteral<"claims_unresolved", "required">, import("convex/values").VLiteral<"no_held_balance", "required">], "required", never>;
|
|
686
|
+
observedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
687
|
+
balances: import("convex/values").VArray<{
|
|
688
|
+
available: number;
|
|
689
|
+
currency: string;
|
|
690
|
+
pending: number;
|
|
691
|
+
}[] | undefined, import("convex/values").VObject<{
|
|
692
|
+
available: number;
|
|
693
|
+
currency: string;
|
|
694
|
+
pending: number;
|
|
695
|
+
}, {
|
|
696
|
+
currency: import("convex/values").VString<string, "required">;
|
|
697
|
+
available: import("convex/values").VFloat64<number, "required">;
|
|
698
|
+
pending: import("convex/values").VFloat64<number, "required">;
|
|
699
|
+
}, "required", "available" | "currency" | "pending">, "optional">;
|
|
700
|
+
}, "optional", "balances" | "deadline" | "observedAt" | "status">;
|
|
701
|
+
}, "required", "accountId" | "country" | "holdDeadline" | "holdingExpiry" | "holdingExpiry.balances" | "holdingExpiry.deadline" | "holdingExpiry.observedAt" | "holdingExpiry.status" | "mode" | "operationKey" | "ownerKey" | "previousSchedule" | "previousSchedule.interval" | "previousSchedule.monthlyDays" | "previousSchedule.weeklyDays" | "revision" | "status" | "thresholds">, {
|
|
665
702
|
by_account: ["accountId", "_creationTime"];
|
|
666
703
|
by_deadline: ["holdDeadline", "_creationTime"];
|
|
667
704
|
by_mode_status: ["mode", "status", "_creationTime"];
|
|
@@ -1750,6 +1787,16 @@ export declare function setup(amounts?: number[]): Promise<{
|
|
|
1750
1787
|
accountId: string;
|
|
1751
1788
|
country: string;
|
|
1752
1789
|
holdDeadline?: number | undefined;
|
|
1790
|
+
holdingExpiry?: {
|
|
1791
|
+
balances?: {
|
|
1792
|
+
available: number;
|
|
1793
|
+
currency: string;
|
|
1794
|
+
pending: number;
|
|
1795
|
+
}[] | undefined;
|
|
1796
|
+
deadline: number;
|
|
1797
|
+
observedAt?: number | undefined;
|
|
1798
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
1799
|
+
} | undefined;
|
|
1753
1800
|
mode: "custom" | "stripe_managed";
|
|
1754
1801
|
operationKey: string;
|
|
1755
1802
|
ownerKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payoutExecutionTestHelpers.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutExecutionTestHelpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvD,eAAO,MAAM,SAAS,EAIN,SAAS,CAAC;AAC1B,eAAO,MAAM,KAAK;IAChB,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,sBAAsB;CACvB,CAAC;AACF,wBAAsB,KAAK,CAAC,OAAO,WAAa
|
|
1
|
+
{"version":3,"file":"payoutExecutionTestHelpers.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutExecutionTestHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type Stripe from "stripe";
|
|
2
|
+
import type { Infer } from "convex/values";
|
|
3
|
+
import type { Component, RunCtx } from "../helpers.js";
|
|
4
|
+
import type { policyDoc } from "../../component/payoutPolicy/schema.js";
|
|
5
|
+
type Scope = {
|
|
6
|
+
accountId: string;
|
|
7
|
+
ownerKey: string;
|
|
8
|
+
};
|
|
9
|
+
type Policy = Infer<typeof policyDoc>;
|
|
10
|
+
/** Restore controls, then separately verify remaining balances and durable claims. Never creates a payout. */
|
|
11
|
+
export declare function expirePayoutPolicy<R extends {
|
|
12
|
+
status: string;
|
|
13
|
+
}, P extends {
|
|
14
|
+
status: string;
|
|
15
|
+
}>(stripe: Stripe, component: Component, ctx: RunCtx, scope: Scope, client: {
|
|
16
|
+
get(ctx: RunCtx, scope: Scope): Promise<Policy | null>;
|
|
17
|
+
apply(ctx: RunCtx, args: Scope & {
|
|
18
|
+
operationKey: string;
|
|
19
|
+
}): Promise<R>;
|
|
20
|
+
prepare(ctx: RunCtx, args: Scope & {
|
|
21
|
+
operationKey: string;
|
|
22
|
+
expectedRevision: number;
|
|
23
|
+
mode: "stripe_managed";
|
|
24
|
+
thresholds: [];
|
|
25
|
+
}): Promise<P>;
|
|
26
|
+
}): Promise<P | R | {
|
|
27
|
+
status: "not_due";
|
|
28
|
+
} | {
|
|
29
|
+
status: "expiry_unresolved";
|
|
30
|
+
holdingExpiry: {
|
|
31
|
+
balances?: {
|
|
32
|
+
available: number;
|
|
33
|
+
currency: string;
|
|
34
|
+
pending: number;
|
|
35
|
+
}[] | undefined;
|
|
36
|
+
deadline: number;
|
|
37
|
+
observedAt?: number | undefined;
|
|
38
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
39
|
+
};
|
|
40
|
+
}>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=payoutExpiry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payoutExpiry.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutExpiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACxE,KAAK,KAAK,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACrD,KAAK,MAAM,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AA6BtC,8GAA8G;AAC9G,wBAAsB,kBAAkB,CACtC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC5B,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAE5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE;IACN,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,CACL,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,GAAG;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,IAAI,EAAE,gBAAgB,CAAC;QACvB,UAAU,EAAE,EAAE,CAAC;KAChB,GACA,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;YAKkB,SAAS;;YAqClB,mBAAmB;;;;;;;;;;;GAgC9B"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { runMutationOrThrow } from "../helpers.js";
|
|
2
|
+
import { componentRef } from "../webhooks/helpers.js";
|
|
3
|
+
function expiryBalances(balance) {
|
|
4
|
+
const values = new Map();
|
|
5
|
+
for (const type of ["available", "pending"]) {
|
|
6
|
+
const seen = new Set();
|
|
7
|
+
for (const row of balance[type]) {
|
|
8
|
+
if (!/^[a-z]{3}$/.test(row.currency) ||
|
|
9
|
+
!Number.isSafeInteger(row.amount) ||
|
|
10
|
+
seen.has(row.currency))
|
|
11
|
+
throw new Error("Invalid expiry balance.");
|
|
12
|
+
seen.add(row.currency);
|
|
13
|
+
const value = values.get(row.currency) ?? {
|
|
14
|
+
currency: row.currency,
|
|
15
|
+
available: 0,
|
|
16
|
+
pending: 0,
|
|
17
|
+
};
|
|
18
|
+
value[type] = row.amount;
|
|
19
|
+
values.set(row.currency, value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return [...values.values()].sort((a, b) => a.currency.localeCompare(b.currency));
|
|
23
|
+
}
|
|
24
|
+
/** Restore controls, then separately verify remaining balances and durable claims. Never creates a payout. */
|
|
25
|
+
export async function expirePayoutPolicy(stripe, component, ctx, scope, client) {
|
|
26
|
+
scope = { accountId: scope.accountId, ownerKey: scope.ownerKey };
|
|
27
|
+
let policy = await client.get(ctx, scope);
|
|
28
|
+
if (!policy?.holdDeadline || policy.holdDeadline > Date.now())
|
|
29
|
+
return { status: "not_due" };
|
|
30
|
+
if (policy.mode === "custom")
|
|
31
|
+
policy = (await runMutationOrThrow(ctx, componentRef(component, "payoutPolicy/mutations/beginHoldingExpiry"), scope));
|
|
32
|
+
if (policy.status === "changing") {
|
|
33
|
+
const result = await client.apply(ctx, {
|
|
34
|
+
...scope,
|
|
35
|
+
operationKey: policy.operationKey,
|
|
36
|
+
});
|
|
37
|
+
if (result.status !== "ready")
|
|
38
|
+
return result;
|
|
39
|
+
policy = await client.get(ctx, scope);
|
|
40
|
+
}
|
|
41
|
+
if (!policy)
|
|
42
|
+
return { status: "not_due" };
|
|
43
|
+
if (policy.mode === "custom") {
|
|
44
|
+
const operationKey = `bs:payout-expiry:${scope.accountId}:${policy.revision}`;
|
|
45
|
+
const prepared = await client.prepare(ctx, {
|
|
46
|
+
...scope,
|
|
47
|
+
operationKey,
|
|
48
|
+
expectedRevision: policy.revision,
|
|
49
|
+
mode: "stripe_managed",
|
|
50
|
+
thresholds: [],
|
|
51
|
+
});
|
|
52
|
+
if (prepared.status !== "prepared")
|
|
53
|
+
return prepared;
|
|
54
|
+
const applied = await client.apply(ctx, { ...scope, operationKey });
|
|
55
|
+
if (applied.status !== "ready")
|
|
56
|
+
return applied;
|
|
57
|
+
policy = await client.get(ctx, scope);
|
|
58
|
+
}
|
|
59
|
+
if (!policy?.holdingExpiry ||
|
|
60
|
+
policy.mode !== "stripe_managed" ||
|
|
61
|
+
policy.status !== "ready")
|
|
62
|
+
return { status: "not_due" };
|
|
63
|
+
const unresolved = {
|
|
64
|
+
status: "expiry_unresolved",
|
|
65
|
+
holdingExpiry: policy.holdingExpiry,
|
|
66
|
+
};
|
|
67
|
+
let balances;
|
|
68
|
+
const observedAt = Date.now();
|
|
69
|
+
try {
|
|
70
|
+
balances = expiryBalances(await stripe.balance.retrieve(undefined, {
|
|
71
|
+
stripeAccount: scope.accountId,
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return unresolved;
|
|
76
|
+
}
|
|
77
|
+
if (Date.now() - observedAt > 30000)
|
|
78
|
+
return unresolved;
|
|
79
|
+
const observed = (await runMutationOrThrow(ctx, componentRef(component, "payoutPolicy/mutations/observeHoldingExpiry"), {
|
|
80
|
+
...scope,
|
|
81
|
+
expectedRevision: policy.revision,
|
|
82
|
+
deadline: policy.holdingExpiry.deadline,
|
|
83
|
+
observedAt,
|
|
84
|
+
balances,
|
|
85
|
+
}));
|
|
86
|
+
if (observed.holdingExpiry.status !== "no_held_balance")
|
|
87
|
+
return {
|
|
88
|
+
status: "expiry_unresolved",
|
|
89
|
+
holdingExpiry: observed.holdingExpiry,
|
|
90
|
+
};
|
|
91
|
+
return client.apply(ctx, { ...scope, operationKey: policy.operationKey });
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=payoutExpiry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payoutExpiry.js","sourceRoot":"","sources":["../../../src/client/connect/payoutExpiry.ts"],"names":[],"mappings":"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"}
|
|
@@ -623,6 +623,16 @@ export declare function setup(scope?: Scope): Promise<{
|
|
|
623
623
|
accountId: string;
|
|
624
624
|
country: string;
|
|
625
625
|
holdDeadline?: number | undefined;
|
|
626
|
+
holdingExpiry?: {
|
|
627
|
+
balances?: {
|
|
628
|
+
available: number;
|
|
629
|
+
currency: string;
|
|
630
|
+
pending: number;
|
|
631
|
+
}[] | undefined;
|
|
632
|
+
deadline: number;
|
|
633
|
+
observedAt?: number | undefined;
|
|
634
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
635
|
+
} | undefined;
|
|
626
636
|
mode: "custom" | "stripe_managed";
|
|
627
637
|
operationKey: string;
|
|
628
638
|
ownerKey: string;
|
|
@@ -665,7 +675,34 @@ export declare function setup(scope?: Scope): Promise<{
|
|
|
665
675
|
monthlyDays: import("convex/values").VArray<number[] | undefined, import("convex/values").VFloat64<number, "required">, "optional">;
|
|
666
676
|
}, "optional", "interval" | "monthlyDays" | "weeklyDays">;
|
|
667
677
|
holdDeadline: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
668
|
-
|
|
678
|
+
holdingExpiry: import("convex/values").VObject<{
|
|
679
|
+
balances?: {
|
|
680
|
+
available: number;
|
|
681
|
+
currency: string;
|
|
682
|
+
pending: number;
|
|
683
|
+
}[] | undefined;
|
|
684
|
+
deadline: number;
|
|
685
|
+
observedAt?: number | undefined;
|
|
686
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
687
|
+
} | undefined, {
|
|
688
|
+
deadline: import("convex/values").VFloat64<number, "required">;
|
|
689
|
+
status: import("convex/values").VUnion<"balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified", [import("convex/values").VLiteral<"unverified", "required">, import("convex/values").VLiteral<"balance_remaining", "required">, import("convex/values").VLiteral<"claims_unresolved", "required">, import("convex/values").VLiteral<"no_held_balance", "required">], "required", never>;
|
|
690
|
+
observedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
691
|
+
balances: import("convex/values").VArray<{
|
|
692
|
+
available: number;
|
|
693
|
+
currency: string;
|
|
694
|
+
pending: number;
|
|
695
|
+
}[] | undefined, import("convex/values").VObject<{
|
|
696
|
+
available: number;
|
|
697
|
+
currency: string;
|
|
698
|
+
pending: number;
|
|
699
|
+
}, {
|
|
700
|
+
currency: import("convex/values").VString<string, "required">;
|
|
701
|
+
available: import("convex/values").VFloat64<number, "required">;
|
|
702
|
+
pending: import("convex/values").VFloat64<number, "required">;
|
|
703
|
+
}, "required", "available" | "currency" | "pending">, "optional">;
|
|
704
|
+
}, "optional", "balances" | "deadline" | "observedAt" | "status">;
|
|
705
|
+
}, "required", "accountId" | "country" | "holdDeadline" | "holdingExpiry" | "holdingExpiry.balances" | "holdingExpiry.deadline" | "holdingExpiry.observedAt" | "holdingExpiry.status" | "mode" | "operationKey" | "ownerKey" | "previousSchedule" | "previousSchedule.interval" | "previousSchedule.monthlyDays" | "previousSchedule.weeklyDays" | "revision" | "status" | "thresholds">, {
|
|
669
706
|
by_account: ["accountId", "_creationTime"];
|
|
670
707
|
by_deadline: ["holdDeadline", "_creationTime"];
|
|
671
708
|
by_mode_status: ["mode", "status", "_creationTime"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payoutSyncTestHelpers.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutSyncTestHelpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvD,eAAO,MAAM,SAAS,EAIN,SAAS,CAAC;AAC1B,MAAM,MAAM,KAAK,GACf;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAClE,KAAK,IAAI,GAAG,CACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,KAC3C,OAAO,CAAC,OAAO,CAAC,CAAC;AACtB,wBAAsB,SAAS,kBAU9B;AACD,wBAAsB,KAAK,CACzB,KAAK,GAAE,KAAsD
|
|
1
|
+
{"version":3,"file":"payoutSyncTestHelpers.d.ts","sourceRoot":"","sources":["../../../src/client/connect/payoutSyncTestHelpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvD,eAAO,MAAM,SAAS,EAIN,SAAS,CAAC;AAC1B,MAAM,MAAM,KAAK,GACf;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAClE,KAAK,IAAI,GAAG,CACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,KAC3C,OAAO,CAAC,OAAO,CAAC,CAAC;AACtB,wBAAsB,SAAS,kBAU9B;AACD,wBAAsB,KAAK,CACzB,KAAK,GAAE,KAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkCzC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQtC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { holdingExpiry as payoutHoldingExpiryValidator } from "../component/payoutPolicy/schema.js";
|
|
1
2
|
import { type PayoutPreviewOptions } from "./connect/payoutPreview.js";
|
|
2
3
|
export type * from "./connect/payoutPreview.js";
|
|
3
4
|
export { previewResult as payoutPreviewValidator } from "../component/payoutRelease/preview.js";
|
|
@@ -156,6 +157,23 @@ export declare class PayoutPolicyClient {
|
|
|
156
157
|
} | PayoutPolicyLimitation>;
|
|
157
158
|
/** A host cron must page due() and call expire(); payout execution is a separate boundary. */
|
|
158
159
|
expire(ctx: RunCtx, scope: PayoutPolicyScope): Promise<PayoutPolicyLimitation | {
|
|
160
|
+
status: "not_due";
|
|
161
|
+
} | {
|
|
162
|
+
status: "expiry_unresolved";
|
|
163
|
+
holdingExpiry: {
|
|
164
|
+
balances?: {
|
|
165
|
+
available: number;
|
|
166
|
+
currency: string;
|
|
167
|
+
pending: number;
|
|
168
|
+
}[] | undefined;
|
|
169
|
+
deadline: number;
|
|
170
|
+
observedAt?: number | undefined;
|
|
171
|
+
status: "balance_remaining" | "claims_unresolved" | "no_held_balance" | "unverified";
|
|
172
|
+
};
|
|
173
|
+
} | {
|
|
174
|
+
status: "prepared";
|
|
175
|
+
operation: PayoutPolicyOperation;
|
|
176
|
+
} | {
|
|
159
177
|
status: "ready";
|
|
160
178
|
operation: PayoutPolicyOperation;
|
|
161
179
|
} | {
|
|
@@ -163,8 +181,6 @@ export declare class PayoutPolicyClient {
|
|
|
163
181
|
} | {
|
|
164
182
|
status: "canceled";
|
|
165
183
|
operation: PayoutPolicyOperation;
|
|
166
|
-
} | {
|
|
167
|
-
status: "not_due";
|
|
168
184
|
}>;
|
|
169
185
|
}
|
|
170
186
|
//# sourceMappingURL=payoutPolicy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payoutPolicy.d.ts","sourceRoot":"","sources":["../../src/client/payoutPolicy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"payoutPolicy.d.ts","sourceRoot":"","sources":["../../src/client/payoutPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { holdingExpiry as payoutHoldingExpiryValidator } from "../component/payoutPolicy/schema.js";
|
|
2
|
+
import { expirePayoutPolicy } from "./connect/payoutExpiry.js";
|
|
1
3
|
import { previewRecipientPayout, } from "./connect/payoutPreview.js";
|
|
2
4
|
export { previewResult as payoutPreviewValidator } from "../component/payoutRelease/preview.js";
|
|
3
5
|
import { PayoutWorkerClient } from "./connect/payoutWorker.js";
|
|
@@ -334,31 +336,7 @@ export class PayoutPolicyClient {
|
|
|
334
336
|
}
|
|
335
337
|
/** A host cron must page due() and call expire(); payout execution is a separate boundary. */
|
|
336
338
|
async expire(ctx, scope) {
|
|
337
|
-
|
|
338
|
-
if (!policy?.holdDeadline || policy.holdDeadline > Date.now())
|
|
339
|
-
return { status: "not_due" };
|
|
340
|
-
if (policy.status === "changing") {
|
|
341
|
-
const result = await this.apply(ctx, {
|
|
342
|
-
...scope,
|
|
343
|
-
operationKey: policy.operationKey,
|
|
344
|
-
});
|
|
345
|
-
if (result.status !== "ready")
|
|
346
|
-
return result;
|
|
347
|
-
policy = await this.get(ctx, scope);
|
|
348
|
-
}
|
|
349
|
-
if (!policy || policy.mode !== "custom")
|
|
350
|
-
return { status: "not_due" };
|
|
351
|
-
const operationKey = `bs:payout-expiry:${scope.accountId}:${policy.revision}`;
|
|
352
|
-
const prepared = await this.prepare(ctx, {
|
|
353
|
-
...scope,
|
|
354
|
-
operationKey,
|
|
355
|
-
expectedRevision: policy.revision,
|
|
356
|
-
mode: "stripe_managed",
|
|
357
|
-
thresholds: [],
|
|
358
|
-
});
|
|
359
|
-
if (prepared.status !== "prepared")
|
|
360
|
-
return prepared;
|
|
361
|
-
return this.apply(ctx, { ...scope, operationKey });
|
|
339
|
+
return expirePayoutPolicy(this.provider(), this.component, ctx, scope, this);
|
|
362
340
|
}
|
|
363
341
|
}
|
|
364
342
|
//# sourceMappingURL=payoutPolicy.js.map
|