@fantastic.dev/better-stripe 0.28.2 → 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 +12 -0
- package/README.md +5 -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/payoutExecutionTestHelpers.js +1 -1
- package/dist/client/connect/payoutExecutionTestHelpers.js.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 +118 -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/deadline.d.ts +10 -0
- package/dist/component/payoutRelease/deadline.d.ts.map +1 -0
- package/dist/component/payoutRelease/deadline.js +20 -0
- package/dist/component/payoutRelease/deadline.js.map +1 -0
- package/dist/component/payoutRelease/helpers.d.ts +10 -0
- package/dist/component/payoutRelease/helpers.d.ts.map +1 -1
- package/dist/component/payoutRelease/planning.d.ts +1 -0
- package/dist/component/payoutRelease/planning.d.ts.map +1 -1
- package/dist/component/payoutRelease/planning.js +5 -2
- package/dist/component/payoutRelease/planning.js.map +1 -1
- package/dist/component/payoutRelease/preview.d.ts +7 -1
- package/dist/component/payoutRelease/preview.d.ts.map +1 -1
- package/dist/component/payoutRelease/preview.js +5 -1
- package/dist/component/payoutRelease/preview.js.map +1 -1
- package/dist/component/payoutRelease/queries.d.ts +2 -0
- package/dist/component/payoutRelease/queries.d.ts.map +1 -1
- package/dist/component/payoutWorker/mutations.d.ts.map +1 -1
- package/dist/component/payoutWorker/mutations.js +12 -4
- package/dist/component/payoutWorker/mutations.js.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/PayoutSettings.d.ts.map +1 -1
- package/dist/react/workflows/PayoutSettings.js +1 -1
- package/dist/react/workflows/PayoutSettings.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 +42 -7
- package/dist/react/workflows/payout-progress-state.js.map +1 -1
- package/docs/react-workflows.md +14 -0
- package/docs/settlement.md +50 -0
- package/package.json +1 -1
- package/src/client/connect/payoutDeadline.test.ts +238 -0
- package/src/client/connect/payoutExecutionTestHelpers.ts +1 -1
- 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 +4 -0
- package/src/component/_generated/component.ts +145 -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/component/payoutRelease/deadline.ts +24 -0
- package/src/component/payoutRelease/planning.ts +5 -2
- package/src/component/payoutRelease/preview.ts +5 -0
- package/src/component/payoutWorker/mutations.ts +20 -4
- package/src/react/workflows/PayoutProgress.test.tsx +65 -0
- package/src/react/workflows/PayoutProgress.tsx +25 -1
- package/src/react/workflows/PayoutSettings.tsx +4 -1
- package/src/react/workflows/payout-progress-state.ts +60 -8
|
@@ -42,10 +42,23 @@ export type PayoutProgressState = {
|
|
|
42
42
|
nextAttemptAt: number | null;
|
|
43
43
|
holdDeadline: number | null;
|
|
44
44
|
observedAt: number | null;
|
|
45
|
+
recovery?: {
|
|
46
|
+
status: NonNullable<PayoutPolicy["holdingExpiry"]>["status"];
|
|
47
|
+
balances?: {
|
|
48
|
+
currency: string;
|
|
49
|
+
available: number;
|
|
50
|
+
pending: number;
|
|
51
|
+
availableLabel: string;
|
|
52
|
+
pendingLabel: string;
|
|
53
|
+
}[];
|
|
54
|
+
};
|
|
45
55
|
};
|
|
46
56
|
export type PayoutProgressProps = {
|
|
47
57
|
policy:
|
|
48
|
-
| Pick<
|
|
58
|
+
| Pick<
|
|
59
|
+
PayoutPolicy,
|
|
60
|
+
"mode" | "status" | "thresholds" | "holdDeadline" | "holdingExpiry"
|
|
61
|
+
>
|
|
49
62
|
| null
|
|
50
63
|
| undefined;
|
|
51
64
|
preview?: PayoutPreview | null;
|
|
@@ -104,6 +117,33 @@ export function payoutProgressState({
|
|
|
104
117
|
state.status = "changing";
|
|
105
118
|
state.message =
|
|
106
119
|
"Payout settings are being verified. Eligibility is unavailable until the change completes.";
|
|
120
|
+
} else if (
|
|
121
|
+
policy?.holdingExpiry &&
|
|
122
|
+
policy.holdingExpiry.status !== "no_held_balance"
|
|
123
|
+
) {
|
|
124
|
+
const expiry = policy.holdingExpiry;
|
|
125
|
+
state.status = "unavailable";
|
|
126
|
+
state.reason = "holding_expiry_unresolved";
|
|
127
|
+
state.holdDeadline = expiry.deadline;
|
|
128
|
+
state.observedAt = expiry.observedAt ?? null;
|
|
129
|
+
state.message =
|
|
130
|
+
"The holding deadline has passed. Schedule restoration does not confirm disbursement. " +
|
|
131
|
+
(expiry.status === "unverified"
|
|
132
|
+
? "Stripe balance verification is unavailable. "
|
|
133
|
+
: "Stripe balances or payout claims still require recovery. ") +
|
|
134
|
+
"Contact platform support; automatic recovery checks will retry.";
|
|
135
|
+
state.recovery = {
|
|
136
|
+
status: expiry.status,
|
|
137
|
+
...(expiry.balances
|
|
138
|
+
? {
|
|
139
|
+
balances: expiry.balances.map((b) => ({
|
|
140
|
+
...b,
|
|
141
|
+
availableLabel: formatPrice(b.available, b.currency, locale),
|
|
142
|
+
pendingLabel: formatPrice(b.pending, b.currency, locale),
|
|
143
|
+
})),
|
|
144
|
+
}
|
|
145
|
+
: {}),
|
|
146
|
+
};
|
|
107
147
|
} else if (!policy || policy.mode === "stripe_managed") {
|
|
108
148
|
state.status = "stripe_managed";
|
|
109
149
|
state.message =
|
|
@@ -123,24 +163,36 @@ export function payoutProgressState({
|
|
|
123
163
|
if (
|
|
124
164
|
preview.currency !== currency ||
|
|
125
165
|
!configured ||
|
|
126
|
-
configured.amount !== preview.threshold
|
|
166
|
+
configured.amount !== preview.threshold ||
|
|
167
|
+
(preview.minimumWaived &&
|
|
168
|
+
preview.holdDeadline !== policy.holdDeadline)
|
|
127
169
|
)
|
|
128
170
|
throw new Error(
|
|
129
171
|
"Payout progress currency or policy does not match the assessment.",
|
|
130
172
|
);
|
|
131
173
|
state.status = "assessed";
|
|
132
174
|
state.reason = preview.reason ?? null;
|
|
133
|
-
state.message =
|
|
134
|
-
|
|
175
|
+
state.message = preview.minimumWaived
|
|
176
|
+
? "The holding deadline is approaching. The application minimum is waived for final automatic attempts; provider limits and all balance checks still apply. " +
|
|
177
|
+
(preview.status === "qualified"
|
|
178
|
+
? "The worker will verify eligibility again before any payout."
|
|
179
|
+
: (reasons[preview.reason ?? ""] ??
|
|
180
|
+
"Automatic payout remains on hold. Contact support before the deadline."))
|
|
181
|
+
: preview.status === "qualified"
|
|
135
182
|
? "The combined balance qualified at the assessment time. The automatic worker will verify it again before any payout."
|
|
136
183
|
: (reasons[preview.reason ?? ""] ??
|
|
137
184
|
"Automatic payout is on hold. Refresh or contact support.");
|
|
138
185
|
state.observedAt = preview.observedAt;
|
|
139
186
|
state.accounting = preview.accounting;
|
|
140
|
-
state.progress =
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
187
|
+
state.progress = preview.minimumWaived
|
|
188
|
+
? null
|
|
189
|
+
: {
|
|
190
|
+
value: Math.max(
|
|
191
|
+
0,
|
|
192
|
+
Math.min(preview.threshold, preview.matureUnpaid),
|
|
193
|
+
),
|
|
194
|
+
max: preview.threshold,
|
|
195
|
+
};
|
|
144
196
|
const definitions = [
|
|
145
197
|
["qualifying", "Combined qualifying balance", preview.matureUnpaid],
|
|
146
198
|
["pending", "Pending settlement", preview.pendingCredits],
|