@ttt-productions/ttt-core 0.9.0 → 0.10.1
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/dist/constants/business.d.ts +7 -0
- package/dist/constants/business.d.ts.map +1 -1
- package/dist/constants/business.js +7 -0
- package/dist/constants/business.js.map +1 -1
- package/dist/constants/retention.d.ts +0 -4
- package/dist/constants/retention.d.ts.map +1 -1
- package/dist/constants/retention.js +0 -5
- package/dist/constants/retention.js.map +1 -1
- package/dist/doc-schemas/commissions.d.ts +4 -4
- package/dist/doc-schemas/index.d.ts +1 -0
- package/dist/doc-schemas/index.d.ts.map +1 -1
- package/dist/doc-schemas/index.js +1 -0
- package/dist/doc-schemas/index.js.map +1 -1
- package/dist/doc-schemas/messaging.d.ts +16 -16
- package/dist/doc-schemas/messaging.d.ts.map +1 -1
- package/dist/doc-schemas/messaging.js +8 -2
- package/dist/doc-schemas/messaging.js.map +1 -1
- package/dist/doc-schemas/moderation.d.ts +4 -4
- package/dist/doc-schemas/operational.d.ts +4 -4
- package/dist/doc-schemas/payments.d.ts +200 -0
- package/dist/doc-schemas/payments.d.ts.map +1 -0
- package/dist/doc-schemas/payments.js +94 -0
- package/dist/doc-schemas/payments.js.map +1 -0
- package/dist/doc-schemas/registry.d.ts +209 -136
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/registry.js +9 -6
- package/dist/doc-schemas/registry.js.map +1 -1
- package/dist/doc-schemas/report-docs.d.ts +27 -27
- package/dist/doc-schemas/report-docs.d.ts.map +1 -1
- package/dist/doc-schemas/report-docs.js +2 -0
- package/dist/doc-schemas/report-docs.js.map +1 -1
- package/dist/doc-schemas/social.d.ts +0 -66
- package/dist/doc-schemas/social.d.ts.map +1 -1
- package/dist/doc-schemas/social.js +4 -26
- package/dist/doc-schemas/social.js.map +1 -1
- package/dist/doc-schemas/work-project.d.ts +0 -61
- package/dist/doc-schemas/work-project.d.ts.map +1 -1
- package/dist/doc-schemas/work-project.js +0 -10
- package/dist/doc-schemas/work-project.js.map +1 -1
- package/dist/media/pending-media.d.ts +8 -8
- package/dist/paths/collections.d.ts +5 -4
- package/dist/paths/collections.d.ts.map +1 -1
- package/dist/paths/collections.js +6 -4
- package/dist/paths/collections.js.map +1 -1
- package/dist/paths/path-builders.d.ts +5 -4
- package/dist/paths/path-builders.d.ts.map +1 -1
- package/dist/paths/path-builders.js +11 -4
- package/dist/paths/path-builders.js.map +1 -1
- package/dist/schemas/admin.d.ts +3 -3
- package/dist/schemas/admin.d.ts.map +1 -1
- package/dist/schemas/admin.js +2 -0
- package/dist/schemas/admin.js.map +1 -1
- package/dist/schemas/payments.d.ts +0 -3
- package/dist/schemas/payments.d.ts.map +1 -1
- package/dist/schemas/payments.js +2 -3
- package/dist/schemas/payments.js.map +1 -1
- package/dist/schemas/work-project-management.d.ts +4 -4
- package/dist/types/audit.d.ts +1 -1
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/payments.d.ts +12 -0
- package/dist/types/payments.d.ts.map +1 -0
- package/dist/types/payments.js +6 -0
- package/dist/types/payments.js.map +1 -0
- package/dist/types/social.d.ts +1 -1
- package/dist/types/social.d.ts.map +1 -1
- package/dist/types/work-project.d.ts +1 -1
- package/dist/types/work-project.d.ts.map +1 -1
- package/dist/types/work-project.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Payment / pledge Firestore document SCHEMAS — the public-safe pledge ledger and its
|
|
2
|
+
// server-only companions: provider refs (Stripe IDs), the idempotency sentinel, the
|
|
3
|
+
// independent integrity trail, and the paid-event quarantine queue. Types inferred via
|
|
4
|
+
// z.infer. Money data lives here, never in social.ts.
|
|
5
|
+
// See docs/design/donation-payment-system.md and docs/PHASE_6_STRIPE.md.
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// pledgePayments/{pledgePaymentId} — public-safe canonical money record. One doc per completed
|
|
8
|
+
// pledge; never deleted/archived. No Stripe IDs, no supporter message. Auth-readable; server-only
|
|
9
|
+
// writes. netAmount = max(0, amount - refundedAmount - disputeLostAmount) is the sum() target.
|
|
10
|
+
// At launch refundedAmount/disputeLostAmount are 0 so netAmount === amount.
|
|
11
|
+
// (functions/src/payments/runProcessStripePledgeEvent.ts)
|
|
12
|
+
export const PledgePaymentSchema = z.object({
|
|
13
|
+
pledgePaymentId: z.string(),
|
|
14
|
+
userId: z.string(),
|
|
15
|
+
amount: z.number(), // gross cents charged (Stripe-confirmed amount_total)
|
|
16
|
+
refundedAmount: z.number(), // cumulative refunded cents; LAUNCH default 0
|
|
17
|
+
disputeLostAmount: z.number(), // cents withdrawn on a lost dispute; LAUNCH default 0
|
|
18
|
+
netAmount: z.number(), // max(0, amount - refundedAmount - disputeLostAmount); sum() target
|
|
19
|
+
currency: z.string(), // "usd"
|
|
20
|
+
paymentInstrument: z.literal('card'),
|
|
21
|
+
status: z.literal('completed'),
|
|
22
|
+
refundState: z.enum(['none', 'partial', 'full']), // LAUNCH always 'none'
|
|
23
|
+
disputeState: z.enum(['none', 'underReview', 'won', 'lost']), // LAUNCH always 'none'
|
|
24
|
+
createdAt: z.number(),
|
|
25
|
+
updatedAt: z.number(),
|
|
26
|
+
});
|
|
27
|
+
// pledgePaymentProviderRefs/{pledgePaymentId} — server-only Stripe references for reconciliation
|
|
28
|
+
// and (post-launch) refund/dispute lookup. Rule is permanently `if false` (Admin SDK only) so no
|
|
29
|
+
// Stripe IDs ever sit on an auth-readable doc. One doc per pledge (singular). refundIds/disputeId
|
|
30
|
+
// are refund-ready, defaulted ([] / null) at launch — zero migration when handlers ship.
|
|
31
|
+
// (functions/src/payments/runProcessStripePledgeEvent.ts)
|
|
32
|
+
export const PledgePaymentProviderRefSchema = z.object({
|
|
33
|
+
pledgePaymentId: z.string(),
|
|
34
|
+
userId: z.string(),
|
|
35
|
+
stripeSessionId: z.string(),
|
|
36
|
+
paymentIntentId: z.string(),
|
|
37
|
+
latestChargeId: z.string().nullable(), // resolved when known; null at launch if not fetched
|
|
38
|
+
refundIds: z.array(z.string()), // post-launch; LAUNCH default []
|
|
39
|
+
disputeId: z.string().nullable(), // post-launch; LAUNCH default null
|
|
40
|
+
createdAt: z.number(),
|
|
41
|
+
updatedAt: z.number(),
|
|
42
|
+
});
|
|
43
|
+
// processedStripeEvents/{stripeEventId} — idempotency sentinel, one doc per processed Stripe
|
|
44
|
+
// event.id, kept forever. Checked + written in the same transaction as the side effect so a
|
|
45
|
+
// redelivered event (completion, expiry, failure, or quarantine) produces no duplicate.
|
|
46
|
+
// pledgePaymentId is set only when the event created a pledge. (runProcessStripePledgeEvent.ts)
|
|
47
|
+
export const ProcessedStripeEventSchema = z.object({
|
|
48
|
+
eventId: z.string(),
|
|
49
|
+
eventType: z.string(),
|
|
50
|
+
processedAt: z.number(),
|
|
51
|
+
pledgePaymentId: z.string().nullable(),
|
|
52
|
+
});
|
|
53
|
+
// pledgePaymentLedgerEvents/{ledgerId} — independent integrity record from the onPledgePaymentWritten
|
|
54
|
+
// trigger (mirrors stakeShareAuditEvents). before/after are raw doc snapshots (null on create/delete)
|
|
55
|
+
// kept as permissive bags so a malformed/anomalous write is still captured forensically.
|
|
56
|
+
// (functions/src/audit/runPledgePaymentLedgerAudit.ts)
|
|
57
|
+
export const PledgePaymentLedgerEventSchema = z.object({
|
|
58
|
+
ledgerId: z.string(),
|
|
59
|
+
pledgePaymentId: z.string(),
|
|
60
|
+
subtype: z.string(), // e.g. 'created' | 'anomaly'
|
|
61
|
+
reason: z.string(),
|
|
62
|
+
before: z.record(z.string(), z.unknown()).nullable(),
|
|
63
|
+
after: z.record(z.string(), z.unknown()).nullable(),
|
|
64
|
+
source: z.literal('firestore-trigger'),
|
|
65
|
+
createdAt: z.number(),
|
|
66
|
+
});
|
|
67
|
+
// paymentWebhookQuarantine/{stripeEventId} — admin-readable repair queue for paid-but-malformed
|
|
68
|
+
// events (e.g. missing metadata) that must NOT make Stripe retry. Redaction rule: never store raw
|
|
69
|
+
// payloads, card/billing data, customer email, addresses, or receipt URLs — IDs + a short redacted
|
|
70
|
+
// rawSafeSummary only. (functions/src/payments/runProcessStripePledgeEvent.ts)
|
|
71
|
+
export const PaymentWebhookQuarantineSchema = z.object({
|
|
72
|
+
eventId: z.string(),
|
|
73
|
+
eventType: z.string(),
|
|
74
|
+
livemode: z.boolean(),
|
|
75
|
+
reason: z.string(),
|
|
76
|
+
recoverable: z.boolean(),
|
|
77
|
+
stripeObjectIds: z.object({
|
|
78
|
+
sessionId: z.string().optional(),
|
|
79
|
+
paymentIntentId: z.string().optional(),
|
|
80
|
+
chargeId: z.string().optional(),
|
|
81
|
+
}),
|
|
82
|
+
pledgePaymentId: z.string().optional(),
|
|
83
|
+
userId: z.string().optional(),
|
|
84
|
+
amount: z.number().optional(),
|
|
85
|
+
currency: z.string().optional(),
|
|
86
|
+
rawSafeSummary: z.string(),
|
|
87
|
+
status: z.enum(['open', 'resolved', 'ignored']),
|
|
88
|
+
adminTaskId: z.string().optional(),
|
|
89
|
+
createdAt: z.number(),
|
|
90
|
+
resolvedAt: z.number().optional(),
|
|
91
|
+
resolvedBy: z.string().optional(),
|
|
92
|
+
resolutionNote: z.string().optional(),
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=payments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/doc-schemas/payments.ts"],"names":[],"mappings":"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"}
|