@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.
Files changed (73) hide show
  1. package/dist/constants/business.d.ts +7 -0
  2. package/dist/constants/business.d.ts.map +1 -1
  3. package/dist/constants/business.js +7 -0
  4. package/dist/constants/business.js.map +1 -1
  5. package/dist/constants/retention.d.ts +0 -4
  6. package/dist/constants/retention.d.ts.map +1 -1
  7. package/dist/constants/retention.js +0 -5
  8. package/dist/constants/retention.js.map +1 -1
  9. package/dist/doc-schemas/commissions.d.ts +4 -4
  10. package/dist/doc-schemas/index.d.ts +1 -0
  11. package/dist/doc-schemas/index.d.ts.map +1 -1
  12. package/dist/doc-schemas/index.js +1 -0
  13. package/dist/doc-schemas/index.js.map +1 -1
  14. package/dist/doc-schemas/messaging.d.ts +16 -16
  15. package/dist/doc-schemas/messaging.d.ts.map +1 -1
  16. package/dist/doc-schemas/messaging.js +8 -2
  17. package/dist/doc-schemas/messaging.js.map +1 -1
  18. package/dist/doc-schemas/moderation.d.ts +4 -4
  19. package/dist/doc-schemas/operational.d.ts +4 -4
  20. package/dist/doc-schemas/payments.d.ts +200 -0
  21. package/dist/doc-schemas/payments.d.ts.map +1 -0
  22. package/dist/doc-schemas/payments.js +94 -0
  23. package/dist/doc-schemas/payments.js.map +1 -0
  24. package/dist/doc-schemas/registry.d.ts +209 -136
  25. package/dist/doc-schemas/registry.d.ts.map +1 -1
  26. package/dist/doc-schemas/registry.js +9 -6
  27. package/dist/doc-schemas/registry.js.map +1 -1
  28. package/dist/doc-schemas/report-docs.d.ts +27 -27
  29. package/dist/doc-schemas/report-docs.d.ts.map +1 -1
  30. package/dist/doc-schemas/report-docs.js +2 -0
  31. package/dist/doc-schemas/report-docs.js.map +1 -1
  32. package/dist/doc-schemas/social.d.ts +0 -66
  33. package/dist/doc-schemas/social.d.ts.map +1 -1
  34. package/dist/doc-schemas/social.js +4 -26
  35. package/dist/doc-schemas/social.js.map +1 -1
  36. package/dist/doc-schemas/work-project.d.ts +0 -61
  37. package/dist/doc-schemas/work-project.d.ts.map +1 -1
  38. package/dist/doc-schemas/work-project.js +0 -10
  39. package/dist/doc-schemas/work-project.js.map +1 -1
  40. package/dist/media/pending-media.d.ts +8 -8
  41. package/dist/paths/collections.d.ts +5 -4
  42. package/dist/paths/collections.d.ts.map +1 -1
  43. package/dist/paths/collections.js +6 -4
  44. package/dist/paths/collections.js.map +1 -1
  45. package/dist/paths/path-builders.d.ts +5 -4
  46. package/dist/paths/path-builders.d.ts.map +1 -1
  47. package/dist/paths/path-builders.js +11 -4
  48. package/dist/paths/path-builders.js.map +1 -1
  49. package/dist/schemas/admin.d.ts +3 -3
  50. package/dist/schemas/admin.d.ts.map +1 -1
  51. package/dist/schemas/admin.js +2 -0
  52. package/dist/schemas/admin.js.map +1 -1
  53. package/dist/schemas/payments.d.ts +0 -3
  54. package/dist/schemas/payments.d.ts.map +1 -1
  55. package/dist/schemas/payments.js +2 -3
  56. package/dist/schemas/payments.js.map +1 -1
  57. package/dist/schemas/work-project-management.d.ts +4 -4
  58. package/dist/types/audit.d.ts +1 -1
  59. package/dist/types/audit.d.ts.map +1 -1
  60. package/dist/types/index.d.ts +1 -0
  61. package/dist/types/index.d.ts.map +1 -1
  62. package/dist/types/index.js +1 -0
  63. package/dist/types/index.js.map +1 -1
  64. package/dist/types/payments.d.ts +12 -0
  65. package/dist/types/payments.d.ts.map +1 -0
  66. package/dist/types/payments.js +6 -0
  67. package/dist/types/payments.js.map +1 -0
  68. package/dist/types/social.d.ts +1 -1
  69. package/dist/types/social.d.ts.map +1 -1
  70. package/dist/types/work-project.d.ts +1 -1
  71. package/dist/types/work-project.d.ts.map +1 -1
  72. package/dist/types/work-project.js.map +1 -1
  73. 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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"}